// constants
var MAXSTAPPEN = 10;
var BGCOLOR_NAVIGATION = "#99cc66";
var BGCOLOR_ACTIVE = "#009900";
var MAX_VEHICLES = 3;
var g_ActieveStap = 1;

// interface

// testwaarden invullen
function testScenario()
{
	document.co2test.aardgasJaar.value = 1000;
	document.co2test.stookolieJaar.value = 1000;

	/*
	document.co2test.auto1KmJaar.value = 10000;
	document.co2test.auto1Brandstof.value = 1000;
	document.co2test.auto1Verbruik.value = 10;

	document.co2test.motor1KmJaar.value = 10000;
	document.co2test.motor1Verbruik.value = 10;

	document.co2test.brommer1KmJaar.value = 1000;
	document.co2test.brommer1Verbruik.value = 10;
	*/

	document.co2test.treinWeek.value = 4;
	document.co2test.busWeek.value = 4;
	document.co2test.metroWeek.value = 4;

	document.co2test.vluchtenEuropa.value = 1;
	document.co2test.vluchtenAmerika.value = 1;
	document.co2test.vluchtenAzie.value = 1;
	document.co2test.vluchtenAustralie.value = 1;

	document.co2test.vakantieTreinJaar.value = 50;
	document.co2test.vakantieBusJaar.value = 60;
	document.co2test.vakantieBootJaar.value = 70;

	document.co2test.windcooperaties.value = 1000;
	document.co2test.zonneEnergie.value = 1000;
	document.co2test.groenfondsen.value = 1000;
	document.co2test.windfonds.value = 1000;
	document.co2test.groeneStroom.checked = true;

	document.co2test.groenSparen.value = 1000;
	document.co2test.milieufondsen.value = 1000;
	document.co2test.vliegtax.checked = true;

	document.co2test.treefund.value = 1000;
	document.co2test.synergy.value = 1000;
	document.co2test.trees4travel.checked = true;
}

function saveTestValues()
{
	var i;
	var values = "";
	var vehicles = new Array("auto", "motor", "brommer");
	var fields = new Array("KmJaar", "Verbruik", "Brandstof");
	var strOut = "";
	var separator = ":";
	var fieldSeparator = "/";
	
	// gegenereerde velden zitten niet in de elements collection 
	// dus moeten we ze hier handmatig toevoegen

	for (vehicle in vehicles)
		for (i=0; i<MAX_VEHICLES; i++)
			for (field in fields)
			{
				var fieldName = vehicles[vehicle] + parseInt(i+1) + fields[field];
				strOut += fieldName + separator;
				strOut += getTestValue(fieldName) + "\n";
				// haal de waarde uit het cookie als het niet in het form staat
				if (!xGet(fieldName))
				{
					value = getTestValue(fieldName);
					if (value!="0")
						values += fieldName + separator + getTestValue(fieldName) + fieldSeparator;
				}
			}
	//alert(strOut);
	// maximaal 20 cookies, dus zetten we alles in 1 string
	// format wordt groensparen:on/zonneEnergie:100/wind:1000 etc...
	with (document.co2test)
		for (i=0 ; i < elements.length ; i++)
			values += elements[i].name + separator + elements[i].value + fieldSeparator;
	setCookie("values", values, 365);
	//alert(values);
}

function getTestValue(field)
{
	var i;
	var fields;
	var name;
	var result;
	var found;
	
	found = false;
	result = "0";
	if (getCookie("values"))
	{
		fields = getCookie("values").split("/");
		for (i=0 ; i < fields.length && !found; i++)
		{
			name = fields[i].split(":")[0];
			value = fields[i].split(":")[1];
			if (name==field)
			{
				result = value;
				found = true;
			}
		}
	}
	return result;
}

function getTestValues()
{
	var i;
	var fields;
	var name;

	if (getCookie("values"))
		with (document.co2test)
		{
			fields = getCookie("values").split("/");
			for (i=0 ; i < fields.length; i++)
			{
				name = fields[i].split(":")[0];
				value = fields[i].split(":")[1];
				if (name && elements[name])
					if (value)
						elements[name].value = value;
					else
						elements[name].value = 0;
			}
		}
}


// laat de verschillende stappen zien van de test
function show(nr)
{
	var i;
	if (nr < 1 || nr > MAXSTAPPEN) 
		return;
	
	for ( i = 1 ; i <= MAXSTAPPEN ; i++)
		xHide("stap" + i );
	xShow("stap" + nr);

	setActieveStap(nr);
	/* Voor stap3 invullen van gegevens van motoren, brommers en auto's */
	if (nr==3) 
		GenererenInvoerVelden();
	if (g_ActieveStap==MAXSTAPPEN) {
		xHide("grafiekButton");
		if (VehiclesExist())
			maakGrafiek();
		else
			alert ("U moet eerst stap 3 invullen.")
	}
	else
		xShow("grafiekButton");
	getTestValues();
	markNavigationStep(g_ActieveStap);
}

function VehiclesExist (){
		/*
			Autos. Als de gebruiker meer dan 1 auto heeft aangeven moeten de waarden van kmjaar 
			worden ingevuld en moeten bestaan bij aanroep van maakGrafiek.
		*/
		var bVehiclesExist;
		var nAutos = parseInt(document.co2test.aantalAutos.value);
		var i;
		bVehiclesExist = true;
		if (nAutos > 0) 
			for (i=1; i <= nAutos; i++) 
				if (!xGet("auto" + i + "KmJaar"))
					bVehiclesExist = false;
		
		/*
			Motoren. Als de gebruiker meer dan 1 motor heeft aangeven moeten de waarden van kmjaar 
			worden ingevuld en moeten bestaan bij aanroep van maakGrafiek.
		*/
		var nMotors = parseInt(document.co2test.aantalMotoren.value);
		if (nMotors > 0)
			for (i=1; i <= nMotors; i++)
				if (!xGet("motor" + i + "KmJaar"))
					bVehiclesExist = false;

		/*
			Brommer. Als de gebruiker meer dan 1 brommer heeft aangeven moeten de waarden van kmjaar 
			worden ingevuld en moeten bestaan bij aanroep van maakGrafiek.
		*/
		var nBrommers = parseInt(document.co2test.aantalBrommers.value);
		if (nBrommers > 0)
			for (i=1; i <= nBrommers; i++) 
				if (!xGet("brommer" + i + "KmJaar"))
					bVehiclesExist = false;
			
		return bVehiclesExist;
}

function showNext() {
	if (g_ActieveStap < MAXSTAPPEN) {
		setActieveStap(g_ActieveStap+1);
		show(g_ActieveStap);		
	}
}

function markNavigationStep (stapnr) {
	if (stapnr < MAXSTAPPEN)
	{
		for (var i=1; i<MAXSTAPPEN; i++)  	//alle stappen normaal
			xGet("nav" + i ).style.backgroundColor = BGCOLOR_NAVIGATION;
		xGet("nav" + stapnr ).style.backgroundColor = BGCOLOR_ACTIVE;
	}
}

function showPrevious() {
	if (g_ActieveStap > 1) {
		setActieveStap(g_ActieveStap - 1);		
		show(g_ActieveStap);
	}
}

function setActieveStap(nr){
	if (nr!=1)
		saveTestValues();
	g_ActieveStap = nr;
}

function berekenMaximum()
{
	var max = 1;

	// niet ingevulde waarden op 0 zetten
	for (s in secties)
		if (isNaN(secties[s]))
			secties[s] = 0;

	// zoek maximum
	for (s in secties)
		if (secties[s] > max)
			max = secties[s];

	return max;
}

function maakGrafiek()
{

	var eenheid = " kg CO<font size=\"-3\">2</font>"
	var uitstootTotaal;
	var investeringTotaal;
	var barWidth = 200;
	var nCategories = 2;
	var maxUitstoot = 0;

	// berekeningen

	berekenDebet();
	berekenCredit();
	uitstootTotaal = berekenTotaalDebet();
	investeringTotaal = berekenTotaalCredit();
	maxUitstoot = berekenMaximum();

	// afbeelden
	for (s in secties)
	{
		document.images["sectie" + s].style.width = Math.round(secties[s] / maxUitstoot * barWidth);
		xGet("sectie" + s + "Value").innerHTML = Math.round(secties[s]) + eenheid;
	}

	// totaal uitstoot
	document.images["uitstootTotaal"].width = Math.round(uitstootTotaal / maxUitstoot * barWidth / nCategories);
	xGet("uitstootTotaalValue").innerHTML = Math.round(uitstootTotaal) + eenheid;

	// totaal investering
	document.images["investeringTotaal"].width = Math.round(investeringTotaal / maxUitstoot * barWidth / nCategories);
	xGet("investeringTotaalValue").innerHTML = Math.round(investeringTotaal) + eenheid;
}

function GenererenInvoerVelden () {
	var tCars = parseInt( document.co2test.aantalAutos.value);
	var tMotors = parseInt( document.co2test.aantalMotoren.value);
	var tBrommer = parseInt( document.co2test.aantalBrommers.value);
	var nColumns = 1;

	var i;
	var HTMLvoorInvoer = "<tr>";
	var countItems = 0;
	for ( i = 1 ; i <= tCars; i++) {
		 HTMLvoorInvoer = HTMLvoorInvoer + AutoSnippet(i);
		 countItems++;
		 if (countItems % nColumns == 0)
		 	HTMLvoorInvoer = HTMLvoorInvoer + "</tr> <tr>";
	}
	for ( i = 1 ; i <= tMotors; i++) {
		 HTMLvoorInvoer = HTMLvoorInvoer + MotorSnippet(i);
		 countItems++;
		 if (countItems % nColumns == 0)
		 	HTMLvoorInvoer = HTMLvoorInvoer + "</tr> <tr>";
	}
	for ( i = 1 ; i <= tBrommer; i++) {
		 HTMLvoorInvoer = HTMLvoorInvoer + BrommerSnippet (i);
		 countItems++;
		 if (countItems % nColumns == 0)
		 	HTMLvoorInvoer = HTMLvoorInvoer + "</tr> <tr>";
	}

	HTMLvoorInvoer = HTMLvoorInvoer +"</tr>";
	xGet("stap3inhoud").innerHTML = "<table cellpadding=\"1\" cellspacing=\"0\" align=\"center\" >" + HTMLvoorInvoer  +"</table>" ;
}

function AutoSnippet (nr) {
		// waardes ophalen uit het formulier
		var kmTagName = "auto"+nr+"KmJaar";
		var verbruikTagName = "auto"+nr+"Verbruik";
		var brandstofTagName = "auto"+nr+"Brandstof";
		var kmTag = xGet(kmTagName);
		var verbruikTag = xGet(verbruikTagName);
		var brandstofTag = xGet(brandstofTagName);
		var km = 0;
		var verbruik = 0;
		var brandstof = "benzine";
		var benzineSelected = "";
		var dieselSelected = "";
		var lpgSelected = "";

		// waarde opzoeken in cookie
		km = getTestValue(kmTagName);
		verbruik = getTestValue(verbruikTagName);
		brandstof = getTestValue(brandstofTagName);
		// selected value voor select tag brandstof
		switch (brandstof)
		{
			case "benzine":
				benzineSelected = "selected";
				break;
			case "diesel":
				dieselSelected = "selected";
				break;
			case "lpg":
				lpgSelected = "selected";
				break;
		}

		var snippet =  "	<td align=\"right\"><b>Auto   "+nr+":</b></td>" +
		"		<td>km per jaar</td>	" +
		"		<td><input type=\"text\" name=\"auto" + nr +"KmJaar\" id=\"auto" + nr +"KmJaar\" value=\"" + km + "\"></td>" +
		"		<td>Verbruik (1 op)</td>" +
		"		<td><input type=\"text\" name=\"auto"+ nr +"Verbruik\" id=\"auto"+ nr +"Verbruik\" value=\"" + verbruik + "\"></td>" +
		"		<td>Brandstof</td>" +
		"		<td>" +
		"				<select style=\"width:80px;\" name=\"auto"+ nr+"Brandstof\" id=\"auto"+ nr+"Brandstof\">" +
		"					<option " + benzineSelected + " value=\"benzine\">benzine</option>" +
		"					<option " + dieselSelected + " value=\"diesel\">diesel</option>" +
		"					<option " + lpgSelected + " value=\"lpg\">LPG</option>" +
		"				</select>" +
		"		</td>";
		return snippet;
}

function MotorSnippet (nr) {
		// waardes ophalen uit het formulier
		var kmTag = xGet("motor"+nr+"KmJaar");
		var verbruikTag = xGet("motor"+nr+"Verbruik");
		var km = 0;
		var verbruik = 0;

		// waarde opzoeken als tag bekend is
		if (kmTag)
			km = kmTag.value;
		if (verbruikTag)
			verbruik = verbruikTag.value;

		var snippet = "<td align=\"right\"><b>Motor   "+nr+":</b></td>" +
		"		<td>km per jaar</td>	" +
		"		<td><input type=\"text\" name=\"motor" + nr +"KmJaar\" value=\"" + km + "\"></td>" +
		"		<td>Verbruik (1 op)</td>" +
		"		<td><input type=\"text\" name=\"motor"+ nr +"Verbruik\" value=\"" + verbruik + "\"></td>" ;
	return snippet;
}


function BrommerSnippet (nr) {
		var kmTag = xGet("brommer"+nr+"KmJaar");
		var verbruikTag = xGet("brommer"+nr+"Verbruik");
		var km = 0;
		var verbruik = 0;

		var snippet = "<td align=\"right\"><b>Brommer  "+nr+":</b></td>" +
		"		<td>km per jaar</td>	" +
		"		<td><input type=\"text\" name=\"brommer" + nr +"KmJaar\" value=\"" + km + "\"></td>" +
		"		<td>Verbruik (1 op)</td>" +
		"		<td><input type=\"text\" name=\"brommer"+ nr +"Verbruik\" value=\"" + verbruik + "\"></td>";
		return snippet;
}