var NUMBER_OF_POINTS = 401;

var torquelabel;
var torquelabel2;
var timeoutvar;
var drawtorqueA = true;
var drawtorqueB = true;
var drawpowerA = true;
var drawpowerB = true;
var drawgradeloadA = true;
var drawgradeloadB = true;
var drawefficiencyA = true;
var drawefficiencyB = true;

var torque1num, torque2num, power1num, power2num, gradeload1num, gradeload2num, eff1num, eff2num;


// Set up a global object to hold calculation results
var operatingValues = (function (my) {
    var object_array = ["dutyCycle", "torque", "power", "pIn", "load", "efficiency", "speed", "grade", "motorCurrent", "batteryVoltage", "batteryCurrent", "whKm", "range", "overheatIn", "acceleration"]
    for (var i = 0; i < object_array.length; i++) {
        var o_name = object_array[i];
        my[o_name] = new Array(NUMBER_OF_POINTS);
        //my["old"+o_name] = new Array(NUMBER_OF_POINTS);
    }
    return my;
})({});

var operatingValues_2 = (function (my) {
    var object_array_2 = ["dutyCycle", "torque", "power", "pIn", "load", "efficiency", "speed", "grade", "motorCurrent", "batteryVoltage", "batteryCurrent", "whKm", "range", "overheatIn", "acceleration"]
    for (var i = 0; i < object_array_2.length; i++) {
        var o_name_2 = object_array_2[i];
        my[o_name_2] = new Array(NUMBER_OF_POINTS);
        //my["old"+o_name_2] = new Array(NUMBER_OF_POINTS);
    }
    return my;
})({});

var comparing_against_something = false;

//var exampleMotor;
//var exampleBattery;
//var exampleWheelSize;
//var exampleController;
//var exampleThrottle;



function draw_all_charts() {
	

	drawChart1();
	chartdrawdone = true;
	document.forms[0].submitbutton.disabled = false;
	clearTimeout(timeoutvar);
	document.getElementById('submitbutton').className='clear';

	$("#chart000000").click(function()
	{
		if(chartdrawdone == true)
		{
			if(drawgradeloadA) { drawgradeloadA = false; $("#chart000000").attr("src", "img/dot_000000off.gif") }
			else { drawgradeloadA = true; $("#chart000000").attr("src", "img/dot_000000.gif") }
			redrawchart();
		}
	});
	$("#chart0000FF").click(function()
	{
		if(chartdrawdone == true)
		{
			if(drawtorqueA) { drawtorqueA = false; $("#chart0000FF").attr("src", "img/dot_0000FFoff.gif") } 
			else { drawtorqueA = true; $("#chart0000FF").attr("src", "img/dot_0000FF.gif") } 
			redrawchart();
		}
	});
	$("#chartFF0000").click(function()
	{
		if(chartdrawdone == true)
		{
			if(drawpowerA) { drawpowerA = false; $("#chartFF0000").attr("src", "img/dot_FF0000off.gif") } 
			else { drawpowerA = true; $("#chartFF0000").attr("src", "img/dot_FF0000.gif") } 
			redrawchart();
		}
	});
	$("#chart008000").click(function()
	{
		if(chartdrawdone == true)
		{
			if(drawefficiencyA) { drawefficiencyA = false; $("#chart008000").attr("src", "img/dot_008000off.gif") } 
			else { drawefficiencyA = true; $("#chart008000").attr("src", "img/dot_008000.gif") } 
			redrawchart();
		}
	});
	
	if(comparisonchart)
	{
		$("#chart888888").click(function()
		{
			if(chartdrawdone == true)
			{
				if(drawgradeloadB) { drawgradeloadB = false; $("#chart888888").attr("src", "img/dot_888888off.gif") }
				else { drawgradeloadB = true; $("#chart888888").attr("src", "img/dot_888888.gif") }
				redrawchart();
			}
		});
		$("#chart6F6FFF").click(function()
		{
			if(chartdrawdone == true)
			{
				if(drawtorqueB) { drawtorqueB = false; $("#chart6F6FFF").attr("src", "img/dot_6F6FFFoff.gif") } 
				else { drawtorqueB = true; $("#chart6F6FFF").attr("src", "img/dot_6F6FFF.gif") } 
				redrawchart();
			}
		});
		$("#chartFF6F6F").click(function()
		{
			if(chartdrawdone == true)
			{
				if(drawpowerB) { drawpowerB = false; $("#chartFF6F6F").attr("src", "img/dot_FF6F6Foff.gif") } 
				else { drawpowerB = true; $("#chartFF6F6F").attr("src", "img/dot_FF6F6F.gif") } 
				redrawchart();
			}
		});
		$("#chart6FFF6F").click(function()
		{
			if(chartdrawdone == true)
			{
				if(drawefficiencyB) { drawefficiencyB = false; $("#chart6FFF6F").attr("src", "img/dot_6FFF6Foff.gif") } 
				else { drawefficiencyB = true; $("#chart6FFF6F").attr("src", "img/dot_6FFF6F.gif") } 
				redrawchart();
			}
		});
	}
	
	//c.draw();
}

function drawChart1() {
	var c = new Chart(document.getElementById('chart1'));
	c.setDefaultType(CHART_LINE);
	// The grid density will be overridden anyhow.
	c.setGridDensity(parseInt(11, 11)); // NUMBER_OF_POINTS / 5
	var zeroArray = new Array(NUMBER_OF_POINTS);
	var efficiencyCapArray = new Array(NUMBER_OF_POINTS);
	for (i = 0; i < NUMBER_OF_POINTS; i++)
	{
		zeroArray[i] = 0;
		efficiencyCapArray[i] = 1;
	}
	c.setLabelPrecision(0);
	c.setShowLegend(true);
	c.setDoubleAxis(true);
	
	if($("#torqueUnitFlag").val() == "N-m") { torqueLabel = 'Torque A'; torqueLabel2 = 'Torque B'; }
	else {torqueLabel = 'Thrust A'; torqueLabel2 = 'Thrust B';}
	
	if(drawtorqueA) c.add(torqueLabel, '#0000FF', operatingValues["torque"]); //formerly 'blue'
	else  c.add(torqueLabel, 'transparent', operatingValues["torque"]);
	
	if(drawpowerA) c.add('Power A', '#FF0000', operatingValues["power"]); //Formerly 'red'
	else c.add('Power A', 'transparent', operatingValues["power"]);
	
	if($("#gradeloadflag").val() == "grade")
	{
		$("#aboveChart0").html("% Grade");
		if(drawgradeloadA) c.add('Grade A','#000000', operatingValues["grade"]);
		else c.add('Grade A','transparent', operatingValues["grade"]);
		$('#gradeloadlabel').html("% Grade");
		document.getElementById("sliderValue2h").disabled = true;
	}
	else
	{
		$("#aboveChart0").html("");
		if(drawgradeloadA) c.add('Load A','#000000', operatingValues["load"]);
		else c.add('Load A','transparent', operatingValues["load"]);
		$('#gradeloadlabel').html("Load");
		document.getElementById("sliderValue2h").disabled = false;
	}
	
	if(drawefficiencyA) c.add('Efficiency A', '#008000', operatingValues["efficiency"]); //formerly 'green'
	else c.add('Efficiency A', 'transparent', operatingValues["efficiency"]);

	if (comparisonchart) {
		$("#legendHolder").css({height: 30});
    	if(drawtorqueB) c.add(torqueLabel2, '#6F6FFF', operatingValues_2["torque"]);
    	else  c.add(torqueLabel2, 'transparent', operatingValues_2["torque"]);
		if(drawpowerB) c.add('Power B', '#FF6F6F', operatingValues_2["power"]);
		else c.add('Power B', 'transparent', operatingValues_2["power"]);
    	
		if($("#gradeloadflag").val() == "grade")
		{
			if(drawgradeloadB) c.add('Grade B','#888888', operatingValues_2["grade"]);
			else c.add('Grade B','transparent', operatingValues_2["grade"]);
			document.getElementById("sliderValue4h").disabled = true;
		}
		else
		{
			if(drawgradeloadB) c.add('Load B','#888888', operatingValues_2["load"]);
			else c.add('Load B','transparent', operatingValues_2["load"]);
			document.getElementById("sliderValue4h").disabled = false;
		}
	
		if(drawefficiencyB) c.add('Efficiency B', '#6FFF6F', operatingValues_2["efficiency"]);
		else c.add('Efficiency B', 'transparent', operatingValues_2["efficiency"]);
    }
	else
	{
	$("#legendHolder").css({height: 15});
	}
	
	if(!comparisonchart)
	{
		c.setHorizontalLabels(operatingValues["speed"]); 
	}
	else
	{
		c.setHorizontalLabels(operatingValues_2["speed"]); 
	}
	// Re-think how to do the "cap" array that sets the ceiling.
	c.add('','green', efficiencyCapArray);
	c.add('','#000000', zeroArray);
	chartaxesadjust(c); //Defined in motor_specifics.js

	c.draw();

}

