﻿//NF new needed for yAxis title
var _dataSource;
var _chartSize;

function loadDataMain(_request, lId, __chartSize)
{
    var mychart;
    _dataSource = _request;
    _chartSize = __chartSize;
    
    YAHOO.widget.Chart.SWFURL = "/js/yui/charts/assets/charts.swf";

	var callbacks = {
	  success: function(o) {
	    var __dailyFinancials = [];
	    try {
	        __dailyFinancials = YAHOO.lang.JSON.parse(o.responseText).d;
	      var dailyFinancials = __dailyFinancials["dailyFinancials"];
	      var DEFINE_LANGUAGE = __dailyFinancials["DEFINE_LANGUAGE"];
	      var displayName = __dailyFinancials["displayName"];
	      var yearDateArray = __dailyFinancials["yearDateArray"];

	      continueScript(dailyFinancials, DEFINE_LANGUAGE, displayName, yearDateArray);
	    }
	    catch (x) {
	      //alert("JSON Parse failed! " + x);
	      return;
	    }
	  }
	};	
    var params = YAHOO.lang.JSON.stringify({"Type":_request, "LId":lId});
	YAHOO.util.Connect.setDefaultPostHeader(false);
	YAHOO.util.Connect.initHeader("Content-Type", "application/json; charset=utf-8");
	YAHOO.util.Connect.asyncRequest('POST', "/ws/MarketData.asmx/Get", callbacks, params);

}
//continue once we have the data
function continueScript(dailyFinancials, DEFINE_LANGUAGE, displayName, yearDateArray)
{
	//new might be worth putting through a pass thrrough function for chart dependant settings?
	var yAxisTitle = "p/kg";
	var lineSize = 0;
	
	if (_dataSource == "myDataSource_sheep_2")
	{
		yAxisTitle = "£/head";
	}
	if(_chartSize == "large")
	{
		lineSize = 5;
	}
	var myDataSource = new YAHOO.util.DataSource(convertDate(dailyFinancials));

	myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSARRAY;
	var seriesDef = [
		{
			displayName:displayName['displayName_1'],
			yField:"path1",
			style:
			{
				color:0xBF002A,
				lineColor:0xBF002A,
				size: lineSize
			}
		},
		{
			displayName:displayName['displayName_2'],
			yField:"path2",
			style:
			{
				color:0x7FB0F5,
				lineColor:0x7FB0F5,
				size: lineSize
			}
		},
		{
			displayName:displayName['displayName_3'],
			yField:"path3",
			style:
			{
				color:0x9AC231,
				lineColor:0x9AC231,
				size: lineSize
			}
		}
	];
	var styleDef =
	{
		xAxis:
		{
			majorTicks:
			{
				display: "none",
				length:1
			},
			minorTicks:
			{
				display: "none",
				length:1
			}
		},
		yAxis:
		{
			showLabels: true,
			titleRotation: -90,
			zeroGridLine:
			{
				color:0xff0000
			}
		},
		dataTip:
		{
			background:
			{
				color: 0x1E2320
			},
			border:
			{
				size: 0
			},
			font:
	        {
	            name: "Arial",
	            color: 0xffffff,
	            size: 10
	        }
		},
		legend:
		{
			//display: "bottom"
		},
		padding: 0,
        animationEnabled: true,
        font:
        {
            name: "Arial",
            color: 0x363532,
            size: 10
        }
	}
	YAHOO.example.formatTimeData = function(value, major)
	{
		var formattedData = YAHOO.util.Date.format(new Date(value), {format:"%b"}, DEFINE_LANGUAGE);
		return formattedData.toString();
	}
	YAHOO.example.formatCurrencyAxisLabel = function( value )
	{
		return YAHOO.util.Number.format( value,
		{
			prefix: "",
			thousandsSeparator: ",",
			decimalPlaces: 0
		});
	}
	YAHOO.example.formatDataTipText = function(item, index, series)
	{
		var _date = '';
		switch (series.yField)
		{
			case 'path1':
				_date =  yearDateArray['year1Dates'][index];
			break;
			case 'path2':
				_date =  yearDateArray['year2Dates'][index];
			break;
			case 'path3':
				_date =  yearDateArray['year3Dates'][index];
			break;
		}
		var str = "Value for w/e " + _date + " was " + item[series.yField];
		return str;
	}
	var myTimeAxis = new YAHOO.widget.TimeAxis();
	myTimeAxis.labelFunction = YAHOO.example.formatTimeData;
	myTimeAxis.majorTimeUnit = "month";

	myCurrencyAxis = new YAHOO.widget.NumericAxis();
	//myCurrencyAxis.minimum = getLowestMarketPrice(dailyFinancials);
	myCurrencyAxis.minimum = getLowestMarketPriceMatch(_dataSource, dailyFinancials);
	myCurrencyAxis.labelFunction = YAHOO.example.formatCurrencyAxisLabel;
	myCurrencyAxis.title = yAxisTitle;
	
	if(!init)
	{
		mychart = new YAHOO.widget.LineChart("chart", myDataSource,
		{
			series: seriesDef,
			style: styleDef,
			xField: "date",
			xAxis: myTimeAxis,
			yAxis: myCurrencyAxis,
			dataTipFunction:YAHOO.example.formatDataTipText,
			expressInstall: "/assets/expressinstall.swf",
			wmode: "opaque"
		});	
		
		init = true;
	}
	else
	{
		mychart.set("xAxis", myTimeAxis);
		mychart.set("yAxis", myCurrencyAxis);
		mychart.set("dataSource", myDataSource);
	}
}
		
		
