// registier update handlers for chart drawing
$(document).ready(function() {

	function updateChart() {
		
		var emissionKeys = [];
		var emissionValues = [];
		//emissionKeys[0] = "SUM";
		//emissionValues[0] = 0;
		
		$($(".emissionValue").get().reverse()).each(function(index) {
			
			if (this.value && functions[this.id]) {
				emissionKeys[index] = this.id;
				emissionValues[index] = functions[this.id](this.value);
			} else {
				emissionKeys[index] = this.id;
				emissionValues[index] = 0;
			}
		});
		// calculate sum value
		/*if(emissionValues.length > 0 && emissionKeys.length > 0){
			var sum = 0;
			var count = 0;
			for ( var i = 1; i <= emissionValues.length; i++) {
				if (emissionValues[i] > 0) {
					sum += emissionValues[i];
					count++;
				}
			}
			if(pageName != "activity"){
				if(sum > 0 && count > 0){
					sum = sum / count;
					emissionValues[0] = sum;
				}
			}else{
				if(sum > 0){
					sum = sum / emissionValues.length;
					emissionValues[0] = sum;
				}
			}
		}*/
		
		// calculate max value
		var maxValue = 0;
		for ( var i = 0; i < emissionValues.length; i++) {
			if (Number(emissionValues[i]) > maxValue) {
				maxValue = emissionValues[i];
			}
		}
		// calculate min value
		var minValue = Number.MAX_VALUE;
		for ( var i = 0; i < emissionValues.length; i++) {
			if (Number(emissionValues[i]) < minValue) {
				minValue = emissionValues[i];
			}
		}
		var seriesArray = [];
		var yTicksArray = [];
		for ( var i = 0; i < emissionValues.length; i++) {
			var ev = emissionValues[i];
			var col = "rgb(118,176, 67)";
			if (ev == maxValue) {
				col = "rgb(204,51, 0)";
			}
			seriesArray[i] = {
				data : [ [ 0, i ], [ Number(emissionValues[i]), i ] ],
				color : col
			}
			yTicksArray[i] = [i, emissionNames[emissionKeys[i]]];
		}
		var options = {
			series : {
				bars : {
					show : true,
					align : 'center',
					horizontal : true
				},
				lines: {
					show: false
				}
			},
			grid : {
				show: true
			},
			xaxis: {
	            ticks: 0
			},
			yaxis: {
				  ticks: yTicksArray
	        },
			valueLabels: {
				show: true,
				showAsHtml: false,
				showLastValue: true
			}
		};

		if(pageName == "food"){
			document.getElementById("foodEmissions").firstChild.nodeValue = Math.round(emissionValues[0]) + " kg";
		}else{
			$.plot($("#chartArea"), seriesArray, options);
		}
	}
	// register onchange handlers
	$('.emissionValue').change(function() {
		updateChart();
	});
	// update on load
	updateChart();
});
