// set globals
var fieldIds = ["washAt30","spinHigh","airDry","cutDownOnFoodWaste","donateToOxfam","signUpMSEnergy","signUpPaperless","replace5Bulbs","MSEnergyReward","annualLoyalty","boilKettleLess","switchOffLights","thermostatDown","economicalDriving"];
var values = [];
var results = [];
var extraResultsIds = ["subTotalWashResult","subTotalEnergyResult","subTotalHomeResult","totalSaving"];
var engeryFieldIds = ["signUpPaperless","annualLoyalty"];
var cleanupFieldIds = ["washAt30","spinHigh","cutDownOnFoodWaste","switchOffLights"];
var firstAmend = false;

// hide submit button, form is all ajaxy init.
//var submitButton = document.getElementById("submit");
//there was an error being generated
document.getElementById("submit").style.display = "none";

function updateForm()
{
	// track first interaction
	if(!firstAmend)
	{
		pageTracker._trackPageview("waytosavecalculator/firstInteraction");
		firstAmend = true;
	}
	
	cleanUpValues();
	getValues();
	
	// work out results
	results["washAt30"] = Math.round((11/100) * values["washAt30"]);
	results["airDry"] = Math.round((values["airDry"]/12)*50);
	results["spinHigh"] = Math.round(((50-results["airDry"])/100)*(20*(values["spinHigh"]/100)));
	
	results["subTotalWashResult"] = results["washAt30"] + results["airDry"] + results["spinHigh"];
	
	results["cutDownOnFoodWaste"] = (600/100) * values["cutDownOnFoodWaste"];
	results["donateToOxfam"] = (5*values["donateToOxfam"]);
	
	
	results["signUpMSEnergy"] = (values["signUpMSEnergy"]=="Electricity and gas")? 20 : (values["signUpMSEnergy"]=="Electricity") ? 10 : 0 ;
	

	if(values["replace5Bulbs"] == "no")
	{
		element = document.getElementById("MSEnergyReward");
		element.selectedIndex = 1;
		values["replace5Bulbs"] = "no";
		results["MSEnergyReward"] = 0;
		values["MSEnergyReward"] = "no";
	}
	
	if(values["replace5Bulbs"] == "yes")
	{
		element = document.getElementById("MSEnergyReward");
		element.selectedIndex = 0;
		values["replace5Bulbs"] = "yes";
		values["MSEnergyReward"] = "yes";
		
		if(values["signUpMSEnergy"]=="Electricity")
		{
			results["MSEnergyReward"] = 5;
		}
		else if (values["signUpMSEnergy"]=="Electricity and gas")
		{
			results["MSEnergyReward"] = 15;
		}
	}
	
	
	if(values["signUpMSEnergy"]=="no")
	{
		setEnergyFieldsToNo();
		results["signUpPaperless"] = 0;
		results["annualLoyalty"] = 0;
	}
	else if(values["signUpMSEnergy"]=="Electricity")
	{
		results["signUpPaperless"] = (values["signUpPaperless"]=="yes") ? 5 : 0;
		results["annualLoyalty"] = (values["annualLoyalty"]=="yes") ? 5 : 0;
	}
	else if(values["signUpMSEnergy"]=="Electricity and gas")
	{
		results["signUpPaperless"] = (values["signUpPaperless"]=="yes") ? 10 : 0;
		results["annualLoyalty"] = (values["annualLoyalty"]=="yes") ? 10 : 0;
	}
		
	results["replace5Bulbs"] = (values["replace5Bulbs"]=="yes") ? 120 : 0;
	
	results["subTotalEnergyResult"] = results["signUpMSEnergy"] + results["signUpPaperless"] + results["annualLoyalty"] + results["replace5Bulbs"] + results["MSEnergyReward"] ;
	
	
	results["boilKettleLess"] = (7/100) * values["boilKettleLess"];
	results["switchOffLights"] = (3/100) * values["switchOffLights"];
	results["thermostatDown"] = (values["thermostatDown"]=="yes") ? 57 : 0;
	
	results["subTotalHomeResult"] = results["boilKettleLess"] + results["switchOffLights"] + results["thermostatDown"];
	
	results["economicalDriving"] = (values["economicalDriving"]=="yes") ? 230 : 0;
	
	// work out total savings
	results["totalSaving"] = 0;
	for(i in fieldIds)
	{
		results["totalSaving"] += results[fieldIds[i]];
	}
	
	//results["totalSaving"] += (results["cutDownOnFoodWaste"]*12);
	
	setResults();
}

/*
	Test for:
		Numerical values
		cleanupFieldIds are percentages, so check they are below 100%
*/
function cleanUpValues()
{
	for(i in cleanupFieldIds)
	{
		field = document.getElementById(cleanupFieldIds[i]);
		if(isNaN(field.value))
		{
			field.value = "0";
		}
		if(field.value>100)
		{
			field.value = "100";
		}
	}
}

function getValues()
{
	for(i in fieldIds)
	{
		values[fieldIds[i]] = document.getElementById(fieldIds[i]).value;
	}
}

function setResults()
{
	for(i in fieldIds)
	{
		resultElement = document.getElementById(fieldIds[i]+"Result");
		resultElement.innerHTML = formatMoney(results[fieldIds[i]]);
	}
	// results for sub and final totals
	for(i in extraResultsIds)
	{
		resultElement = document.getElementById(extraResultsIds[i]);
		resultElement.innerHTML = formatMoney(results[extraResultsIds[i]]);
	}
}

function setEnergyFieldsToNo()
{
	for(i in engeryFieldIds)
	{
		element = document.getElementById(engeryFieldIds[i]);
		element.selectedIndex = 1;
	}
}

function formatMoney(num)
{
	if(isNaN(num))
	{
		num = "0";
	}
	num = Math.floor(num*100+0.50000000001);
	pence = num%100;
	num = Math.floor(num/100).toString();
	if(pence<10)
	{
		pence = "0" + pence;
	}
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	{
		num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
	}
	//return (num + '.' + pence);
	
	return (num);
}
