
var chart;
var dataProvider;
var chartData = [];
var newValueAxis;
var addAxis;


$(document).ready(function(){

	<!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. -->
	var swfVersionStr = "10.1.0";
	var playerVersion = swfobject.getFlashPlayerVersion();

	
	if(swfobject.hasFlashPlayerVersion(swfVersionStr))
	{
		// Load Flash chart
		loadFlashChart();		
	}
	else
	{
		// mobiles dont get the chart (they get the image embedded in the page), 
		// iOS get the javascript version
		if(is_mobile && !is_ios)
		{
			return;	
		}
		
		
		// JS Chart
		createChart();
		loadCSV('/assets/dynamic/DC/data/spotprice/spdr.spotprice.3months.bundle.csv');
	
	}

	
});


// compose chart with various settings
function loadFlashChart() {
		  var flashMovie;
		  var flashvars = {
			  "chart_id": "SPDR-home",
			  "settings_file": encodeURIComponent("/assets/static/DC/XML/GLD/SPDR-home.xml?1234")
		  };
		  var params = {};
		  params.wmode = "opaque";
		  var attributes = {};
		  attributes.id = "SPDR-home";
		  swfobject.embedSWF("/common/js/amcharts_2.2.1/amcharts/amstock/amstock.swf", "homeSpotChartArea", "390px", "160px", "9.0.0", false, flashvars, params, attributes);
}		  

// compose chart with various settings
function createChart() {

			//generateChartData();
			
			chart = new AmCharts.AmSerialChart();
			chart.panEventsEnabled = true;
			chart.pathToImages = "/common/js/amcharts_2.2.1/amcharts/javascript/images/";
			chart.addListener("dataUpdated", zoom);
			chart.marginTop = 0;
			chart.marginLeft = 0;
			chart.marginRight = 0;
			
			//chart.dataProvider = chartData;
			
			chart.categoryField = "date";
			chart.categoryAxis.parseDates = true;

			var valAxis1 = new AmCharts.ValueAxis();
			valAxis1.axisColor = "#000000";
			valAxis1.axisThickness = 1;
            //valAxis1.unit = "%";
            valAxis1.step = 20;
			valAxis1.alpha = 0;
			valAxis1.axisColor = "#FFFFFF";
			valAxis1.inside = true;
            valAxis1.gridCount = 5;
            valAxis1.gridAlpha = 1;
            valAxis1.integersOnly = true;
            valAxis1.recalculateToPercents = true;

			chart.addValueAxis(valAxis1);

			var graph1 = new AmCharts.AmGraph();
			graph1.valueAxis = valAxis1;
            graph1.lineColor = "#999999";
			graph1.lineThickness = 2;
			graph1.valueField = "usd";
            graph1.balloonText = "USD [[value]]";
			chart.addGraph(graph1);

			var graph2 = new AmCharts.AmGraph();
			graph2.valueAxis = valAxis1;
			graph2.valueField = "jpy";
            graph2.lineColor = "#BA9A3C";
			graph2.lineThickness = 2;
            graph2.balloonText = "JPY [[value]]";
			chart.addGraph(graph2);

			var graph3 = new AmCharts.AmGraph();
            graph3.valueAxis = valAxis1;
			graph3.valueField = "hkd";
            graph3.lineColor = "#000000";
			graph3.lineThickness = 2;
            graph3.balloonText = "HKD [[value]]";
			chart.addGraph(graph3);

			var chartCursor = new AmCharts.ChartCursor();
            chartCursor.cursorColor = "#bf9835";
			chart.addChartCursor(chartCursor);

			var catAxis = chart.categoryAxis;
			catAxis.gridPosition = "start";
			catAxis.dashLength = 5;
            catAxis.gridColor = "#000000";

            //var axisBase = catAxis.AxisBase;
            //console.log(catAxis);

			//var chartScrollbar = new AmCharts.ChartScrollbar();
			//chartScrollbar.graph = graph1;
			//chart.addChartScrollbar(chartScrollbar);

			chart.write("homeSpotChartArea");
}

// loads XHR data csv bundle
function loadCSV(file) {
    if (window.XMLHttpRequest) {
        // IE7+, Firefox, Chrome, Opera, Safari
        var request = new XMLHttpRequest();
    }
    else {
        // code for IE6, IE5
        var request = new ActiveXObject('Microsoft.XMLHTTP');
    }
    // load
    request.open('GET', file, false);
    request.send();
    parseCSV(request.responseText);
}

// method which parses csv data
function parseCSV(data){
    
    //replace UNIX new lines
    data = data.replace (/\r\n/g, "\n");
    //replace MAC new lines
    data = data.replace (/\r/g, "\n");
    //split into rows
    var rows = data.split("\n");
    // create array which will hold our data:
    dataProvider = [];

    // loop through all rows	
    for (var i = 0; i < rows.length; i++){
        // this line helps to skip empty rows
        if (rows[i]) {
			
            // our columns are separated by comma
            var column = rows[i].split(",");

			var myDate = parseDate(column[0])
            var usd = column[1];
            var jpy = column[2];
            var hkd = column[3];

			var dataObject = {date:myDate, usd:usd, jpy:jpy, hkd:hkd};
				
            // add object to dataProvider array
            dataProvider.push(dataObject);
        }
    }

	$("#homeSpotChartArea img").remove();
    // set data provider to the chart
    chart.dataProvider = dataProvider;
    // this will force chart to rebuild using new data
    chart.validateData();
	
}

// parse date string into Date object
function parseDate(dateString) {            
	//2011-07-05 format plu JS motnh starts with 0 (not 1)
    var dateArray = dateString.split("-");                        
    var date = new Date(Number(dateArray[0]) , Number(dateArray[1])-1 , Number(dateArray[2]), 18, 0, 0 );

    return date;
}


		// generate some random data, quite different range
		function generateChartData(){
			var firstDate = new Date();
			firstDate.setDate(firstDate.getDate() - 100);

			for(var i = 0; i < 100; i++){
				var newDate = new Date(firstDate);
				newDate.setDate(newDate.getDate() + i);

				var visits = Math.round(Math.random() * 40) + 100;
				var hits   = Math.round(Math.random() * 80) + 500;
				var views   = Math.round(Math.random() * 6000);

				chartData.push({date:newDate, usd:visits, jpy:hits, hkd:views});
			}
		}

function zoom(){
    //chart.zoomToIndexes(0,10);
}

