// new namespace for features javascript
YAHOO.namespace('stats');
// Namespace 3, ratings
YAHOO.stats.main = {
	YE: YAHOO.util.Event,
	Dom: YAHOO.util.Dom,
	$: YAHOO.util.Dom.get,
	genNo: 0,

	init: function(){
		// Get the chart swf file
		YAHOO.widget.Chart.SWFURL = "http://yui.yahooapis.com/2.7.0/build/charts/assets/charts.swf";

		stats.stat_page = stats.$('chart-ex');
		if(stats.stat_page){
			stats.puppies = [
				{ name: "Ashley", breed: "German Shepherd", age: 12 },
			   { name: "Dirty Harry", breed: "Norwich Terrier", age: 5 },
			   { name: "Emma", breed: "Labrador Retriever", age: 9 },
			   { name: "Oscar", breed: "Yorkshire Terrier", age: 6 },
			   { name: "Riley", breed: "Golden Retriever", age: 6 },
			   { name: "Shannon", breed: "Greyhound", age: 12 },
			   { name: "Washington" ,breed: "English Bulldog", age: 8 },
			   { name: "Zoe", breed: "Labrador Retriever", age: 3 }
			];
			// Get the data from the page
			var myDataSource = new YAHOO.util.DataSource(stats.puppies);
			myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
			myDataSource.responseSchema = {
			    fields: [ "name","breed","age" ]
			};

			var myChart = new YAHOO.widget.ColumnChart(stats.stat_page, myDataSource, {
			    xField: "name",
			    yField: "age"
			});

			stats.genNo++;
			stats.fin_chart = stats.$('financial-chart');
			if(stats.fin_chart){
				stats.create_finance_chart(stats.fin_chart, 'Month', 'Costs', 500);
			}
		}
	},

	create_finance_chart: function(elRef, xTitle, yTitle, chartHeight){

		// Create a new charts instance
		var chartView = [];

		var statTr = elRef.getElementsByTagName('tr');
		var statTrLen = statTr.length;
		var j = 0;
		var field = [];
		for(var i=1;i<statTrLen;i++){
			var statTd = statTr[i].getElementsByTagName('td');

			var theMonth = statTd[0].innerHTML;
			var income = parseFloat(statTd[1].innerHTML);
			var mortgage = parseFloat(statTd[2].innerHTML);
			var utilities = parseFloat(statTd[3].innerHTML);
			var finance = parseFloat(statTd[4].innerHTML);
			var other = parseFloat(statTd[5].innerHTML);
			var net = income + (mortgage + utilities + finance + other);
			chartView[j] = {
				field1: theMonth,
				field2: income,
				field3: mortgage,
				field4: utilities,
				field5: finance,
				field6: other,
				field7: net
			};
			j++;
		}

		// Get the data from the page
		myDataSource = new YAHOO.util.DataSource(chartView);
		myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;

		myDataSource.responseSchema =
			{
				resultsList: "Results",
			    fields: ["field1", "field2", "field3", "field4", "field5", "field6", "field7"]
			};
		var seriesDef =
			[
				{
					yField: "field2",
					displayName: "Income",
					style: {
						lineColor:0x666666,
			            lineAlpha:.5,
			            borderColor:0xD4C198,
			            fillColor:0xD1AF75
					}
				},
				{
					yField: "field3",
					displayName: "Mortgage",
					style: {
						lineColor:0xEC0289,
			            lineAlpha:.5,
			            borderColor:0xD4C198,
			            fillColor:0xD1BF75
					}
				},
				{
					yField: "field4",
					displayName: "Utilities",
					style: {
						lineColor:0x68BF28,
			            lineAlpha:.6,
			            borderColor:0xD4C198,
			            fillColor:0xD1CE75
					}
				},
				{
					yField: "field5",
					displayName: "Finance",
					style: {
						lineColor:0x98292B,
			            lineAlpha:.6,
			            borderColor:0xD4C198,
			            fillColor:0xC5D175
					}
				},
				{
					yField: "field6",
					displayName: "Other",
					style: {
						lineColor:0xB7C553,
			            lineAlpha:.6,
			            borderColor:0xD4C198,
			            fillColor:0xB5D175
					}
				},
				{
					type: "line",
					yField: "field7",
					displayName: "Net",
					style: {
						lineColor:0xF00F00,
			            lineAlpha:.6,
			            borderColor:0xD4C198,
			            fillColor:0xF00F00
					}
				}
			];
		var styleDef =
		{
			background:{color:0xFFFFFF},
			border: {size: 1, color:0x654495},
		    xAxis:
		    {
		        labelRotation:-90
		    },
		    yAxis:
		    {
		        titleRotation:-90
		    },
		    legend:
		    {
		        display: "bottom",
		        padding: 10,
		        spacing: 5,
		        background:{color:0xFFFFFF},
		        font:
		        {
		            color:0x666666,
		            family: "Arial",
		            size: 11
		        }
		    }
		}

		formatCurrencyAxisLabel = function( value ){
		    return YAHOO.util.Number.format( value,
		    {
		        prefix: "",
		        thousandsSeparator: ",",
		        decimalPlaces: 0
		    });
		}
		//DataTip function for the chart
		formatDataTipText = function(item, index, series){
		    var str = series.displayName + " for " + item.field1;
		    str += "\n£" + formatCurrencyAxisLabel(item[(series.yField)]);
		    return str;
		}

		var countAxis = new YAHOO.widget.NumericAxis();
		countAxis.title = yTitle;

		var dateAxis = new YAHOO.widget.CategoryAxis();
		dateAxis.title = xTitle;

		var mychart = new YAHOO.widget.ColumnChart(elRef, myDataSource,
			{
				series: seriesDef,
				xField: "field1",
				yAxis: countAxis,
				xAxis: dateAxis,
				wmode: "transparent",
				dataTipFunction:formatDataTipText,
				style: styleDef/*,
				polling: 50000 ,
   				dataTipFunction: getDataTipText*/
			});
		stats.$('yuigen'+stats.genNo).style.height = chartHeight + 'px';
		stats.genNo++;
	}
}

stats = YAHOO.stats.main;
stats.YE.onDOMReady(stats.init);