/*********************************************************************
File:		functions.js
Type:		Utility javascript.
Author:		Chris McHugh
Version:	1.0

This script provides all functions for calculator.
**********************************************************************/

var fn_txt = "first name";
var ln_txt = "last name";
var em_txt = "email address";
var curr_totals_row = 0;
var thetotals = new Array();
var do_auto_fetch = false;
var country = null;
var urlroot = '/'

function fieldFocus(el) {
	switch (el.id) {
		case "form_firstname":
			var test = fn_txt;
			break;
		case "form_lastname":
			var test = ln_txt;
			break;
		case "form_email":
			var test = em_txt;
			break;
	}
	if (el.value == test) {
		el.value = "";
		el.style.color = "#503f43";
	}
}

function fieldBlur(el) {
	switch (el.id) {
		case "form_firstname":
			var test = fn_txt;
			break;
		case "form_lastname":
			var test = ln_txt;
			break;
		case "form_email":
			var test = em_txt;
			break;
	}
	if (el.value == "") {
		el.value = test;
		el.style.color = "#b3a1a1";
	}
	
}

function checkKey(e) {
	if (e.keyCode == 13) submitForm();
}

function submitForm() {
	var first = encodeURIComponent(document.getElementById('form_firstname').value);
	var last = encodeURIComponent(document.getElementById('form_lastname').value);
	var teste = document.getElementById('form_email').value;
	var email = encodeURIComponent(teste);
	var alerts = "";
	var err = false;
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (first == "" || first == fn_txt) {
		alerts += "Please provide your first name.\n";
		err = true;
	}
	if (last == "" || last == ln_txt) {
		alerts += "Please provide your last name.\n";
		err = true;
	}
	if (teste == "" || teste == em_txt || !filter.test(teste)) {
		alerts += "Please provide a valid email address.\n";
		err = true;
	}
	if (!err) {
		document.getElementById('form_firstname').disabled = true;
		document.getElementById('form_lastname').disabled = true;
		document.getElementById('form_email').disabled = true;
		document.getElementById('form_firstname').blur();
		document.getElementById('form_lastname').blur();
		document.getElementById('form_email').blur();
		var req = "action=signup&firstname=" + first + "&lastname=" + last + "&email=" + email;
		//alert(ajax_root + 'sendemail.php?'+req);
		enqueueRequest(ajax_root + 'sendemail.php',req,"formResult");
	} else {
		alert(alerts);
	}
}

function formResult() {
	if (http.responseText) {
		if (http.responseText == "success") {
			alert("Thank you for joining the Sustain Our Planet community!\n\nWe will email you when we are ready to launch!");
			document.getElementById('form_firstname').value = fn_txt;
			document.getElementById('form_lastname').value = ln_txt;
			document.getElementById('form_email').value = em_txt;
			document.getElementById('form_firstname').style.color = "#b3a1a1";
			document.getElementById('form_lastname').style.color = "#b3a1a1";
			document.getElementById('form_email').style.color = "#b3a1a1";
			document.getElementById('form_firstname').disabled = false;
			document.getElementById('form_lastname').disabled = false;
			document.getElementById('form_email').disabled = false;
		}
		queueJump();
	}
}

function collapeTabs() {
	if (country && document.getElementById('calculationid').value == "") {
		startCalculation();
	}
	document.getElementById('countryArea').style.display = "none";
	document.getElementById('carForm').style.display = "none";
	document.getElementById('elecForm').style.display = "none";
	document.getElementById('flightsForm').style.display = "none";
	document.getElementById('naturalGasForm').style.display = "none";
	
	document.getElementById('defaultTab').style.display = "none";
	document.getElementById('calcElectricTab').style.display = "none";
	document.getElementById('calcFlightsTab').style.display = "none";
	document.getElementById('calcNaturalGasTab').style.display = "none";
	document.getElementById('calcVehiclesTab').style.display = "none";
}

function setCountry(c) {
	country = c;
	if (c=='uk') {
		document.getElementById('gasHead').innerHTML="Calculate Natural Gas";
	}
	if (selected_tab) {
		switch(selected_tab) {
			case "cars": openCarsCalc(); break;
			case "electric": openElecCalc(); break;
			case "flights": openFlightsCalc(); break;
			case "gas": openNGasCalc(); break;
		}
	} else {
		openCarsCalc();
	}
	
	switch(c) {
		case "uk":
			document.getElementById('avgCalcUk').style.display = 'block';
			break;
		case "us":
			document.getElementById('avgCalcUs').style.display = 'block';
			break;
	}
}

function openCountrySelect() {
	collapeTabs();
	document.getElementById('countryArea').style.display = "block";
	document.getElementById('countryArea').style.overflow = "auto";
	document.getElementById('countryArea').style.height = "auto";
}

var selected_tab;

function openCarsCalc() {
	collapeTabs();
	if (!country) {
		selected_tab = "cars";
		openCountrySelect();
		return;
	}
	document.getElementById('carForm').style.display = "block";
	document.getElementById('carForm').style.overflow = "auto";
	document.getElementById('carForm').style.height = "auto";
	document.getElementById('calcVehiclesTab').style.display = "block";
	// We have to get the available years for the selected country.
	getCarYears();
	chooseCarCalcMethod('monthly');
}

function openFlightsCalc() {
	collapeTabs();
	if (!country) {
		selected_tab = "flights";
		openCountrySelect();
		return;
	}
	document.getElementById('flightsForm').style.display = "block";
	document.getElementById('flightsForm').style.overflow = "auto";
	document.getElementById('flightsForm').style.height = "auto";
	document.getElementById('calcFlightsTab').style.display = "block";
}

function openElecCalc() {
	collapeTabs();
	if (!country) {
		selected_tab = "electric";
		openCountrySelect();
		return;
	}
	if (country == 'us') {
		showDiv('calcElecStateRow');
	}
	document.getElementById('elecForm').style.display = "block";
	document.getElementById('elecForm').style.overflow = "auto";
	document.getElementById('elecForm').style.height = "auto";
	document.getElementById('calcElectricTab').style.display = "block";
}

function openNGasCalc() {
	collapeTabs();
	if (!country) {
		selected_tab = "gas";
		openCountrySelect();
		return;
	}
	if (country == 'uk') {
		hideDiv('calcNGGasTypeRow');
		chooseGasFuel("NG");
	} else {
		showDiv('calcNGGasTypeRow');
	}
	document.getElementById('naturalGasForm').style.display = "block";
	document.getElementById('naturalGasForm').style.overflow = "auto";
	document.getElementById('naturalGasForm').style.height = "auto";
	document.getElementById('calcNaturalGasTab').style.display = "block";
}

function refreshCars() {
	collapeTabs();
	setTimeout("openCarsCalc()",225);
}

function swapFlag(el, country, way) {
	el.src = img + "/button_" + country + "Flag" + way + ".jpg";
}

//Carbon Calculator 

// We need to create a new select to populate AJAX
// driven options with, and then replace the select that
// is sitting as a place-holder. This compensates for a
// FF2 bug that made the newly populates selects unusable.
function createNewSelect(cbf) {
	var sel = document.createElement('SELECT');
	sel.id = 'select_temp';
	if (document.attachEvent) {
		sel.attachEvent("onchange", eval(cbf));
	} else {
		sel.addEventListener("change", eval(cbf), false);
	}
	sel.className = "calcFormField";
	return sel;
}

function startCalculation() {
	clearCurrentDataSet();
	var req = "action=startcalc&country=" + country;
	//alert(ajax_root + 'carbon_calc.php?' + req);
	enqueueRequest(ajax_root + 'carbon_calc.php',req,"startCalculationRes");
}

function startCalculationRes() {
	//alert(http.responseText);
	if (http.responseText) {
		var resp = processResult();
		if (resp.status == "success") {
			document.getElementById('calculationNameMarquee').innerHTML = "My New Calculation";
			document.getElementById('calculationid').value = resp.calculationid;
		}
	}
}

function addNationalAvg(fld, usval, ukval) {
	document.getElementById(fld).value = (country == 'us') ? usval : ukval;
}

function removeEmission(el,type) {
	switch(type) {
		case "car":
			var fld = document.getElementById('totalCarCO2Value');
			var blk = document.getElementById('carTotalsRows');
			var ft  = document.getElementById('carTotalsFoot');
			var txt = "Vehicles";
			break;
		case "flight":
			var fld = document.getElementById('totalFlightCO2Value');
			var blk = document.getElementById('flightTotalsRows');
			var ft  = document.getElementById('flightTotalsFoot');
			var txt = "Air Travel";
			break;
		case "elec":
			var fld = document.getElementById('totalElecCO2Value');
			var blk = document.getElementById('elecTotalsRows');
			var ft  = document.getElementById('elecTotalsFoot');
			var txt = "Electricity";
			break;
		case "gas":
			var fld = document.getElementById('totalGasCO2Value');
			var blk = document.getElementById('gasTotalsRows');
			var ft  = document.getElementById('gasTotalsFoot');
			var txt = "Natural Gas";
			break;
	}
	var rind = el.parentNode.parentNode.id.split("-")[1];
	var todrop = thetotals[rind];
	var remoteid = document.getElementById('remotedata-' + rind).value;
	var calc_id = document.getElementById('calculationid').value;
	var req = "action=removeCalc&type=" + type + "&rid=" + remoteid + "&calc_id=" + calc_id;
	//alert(ajax_root + 'carbon_calc.php?' + req);
	enqueueRequest(ajax_root + 'carbon_calc.php',req,"doNothing");

	var curr_total_co2 = fld.value;
	var new_total_co2 = (curr_total_co2 * 1) - (todrop * 1);
	new_total_co2 = new_total_co2.toFixed(3);
	fld.value = new_total_co2;
	ft.innerHTML = "Total Emissions From " + txt + ": <strong>" + new_total_co2 + " Tons</strong>";
	blk.removeChild(el.parentNode.parentNode);
	addUpTotalCO2();
}

function addUpTotalCO2() {
	var flightTotal = document.getElementById('totalFlightCO2Value').value * 1;
	var carTotal = document.getElementById('totalCarCO2Value').value * 1;
	var elecTotal = document.getElementById('totalElecCO2Value').value * 1;
	var gasTotal = document.getElementById('totalGasCO2Value').value * 1;
	var currTotalCO2 = flightTotal + carTotal + elecTotal + gasTotal;
	
	if (currTotalCO2 > 0) {
		document.getElementById('footprintTotalBox').style.background = "url( /images/total_emissions_box_color.jpg ) no-repeat";
		var carPct = Math.round((carTotal / currTotalCO2) * 100);
		var elecPct = Math.round((elecTotal / currTotalCO2) * 100);
		var flightPct = Math.round((flightTotal / currTotalCO2) * 100);
		var gasPct = Math.round((gasTotal / currTotalCO2) * 100);
	} else {
		document.getElementById('footprintTotalBox').style.background = "url( /images/total_emissions_box_grey.jpg ) no-repeat";
		var carPct = 0;
		var elecPct = 0;
		var flightPct = 0;
		var gasPct = 0;
	}
	
	document.getElementById('carPct').innerHTML = carPct;
	document.getElementById('elecPct').innerHTML = elecPct;
	document.getElementById('flightPct').innerHTML = flightPct;
	document.getElementById('gasPct').innerHTML = gasPct;

	document.getElementById('footprint_Cars').style.backgroundPosition = "0px " + (100 - carPct) + "px";
	document.getElementById('footprint_Electric').style.backgroundPosition = "0px " + (100 - elecPct) + "px";
	document.getElementById('footprint_Flights').style.backgroundPosition = "0px " + (100 - flightPct) + "px";
	document.getElementById('footprint_NaturalGas').style.backgroundPosition = "0px " + (100 - gasPct) + "px";
	
	currTotalCO2 = currTotalCO2.toFixed(2);
	document.getElementById('currTotalCO2').value = currTotalCO2;
	setTotalText('footprint',currTotalCO2);
}

// The folowing function clear all form data for the respective
// calculation.
function submitSaveDataCreateAccountForm() {
	var fn = document.getElementById('save_firstname').value;
	var ln = document.getElementById('save_lastname').value;
	var em = document.getElementById('savelogin_username').value;
	var pw = document.getElementById('savelogin_password').value;
	var req = "action=createaccount&first_name=" + fn + "&last_name=" + ln + "&email=" + em + "&password=" + pw;
	//alert(ajax_root + 'register.php?'+req);
	enqueueRequest(ajax_root + 'register.php',req,"saveDataCreateAccountResult");
}

function saveDataCreateAccountResult() {
	if (http.responseText) {
		//alert(http.responseText);
		var resp = processResult();
		if (resp.status == "success") {
			hideDiv('saveCalcLoginDiv');
			showDiv('saveCalcSaveButtonDiv');
			//document.getElementById('loginName').innerHTML = "Welcome back, " + resp.name;
			document.getElementById('loginBox').innerHTML = "<a href=\"" + urlroot + "/greenaccount/\" class=\"vanillaLink\">Green Account</a>  <span style='color:#dedede'>|</span> <span onClick='logoutUser();' style='cursor:pointer'>Logout</span>";
			document.getElementById('userid').value = resp.user_id;
		}
	}
}


function saveDataCreateAccountResultRefresh() {
	if (http.responseText) {
		//alert(http.responseText);
		var resp = processResult();
		if (resp.status == "success") {
			location.reload(true);
		} else {
			alert("There was an error creating your account. An account with this email address already exists");
		}
	}
}

function submitSaveDataLoginForm() {
	var un = document.getElementById('savelogin_username').value;
	var pw = document.getElementById('savelogin_password').value;
	var req = "action=loginuser&username=" + un + "&password=" + pw;
	//alert(ajax_root + 'login.php?'+req);
	enqueueRequest(ajax_root + 'login.php',req,"saveDataLoginResult");
}

function saveDataLoginResult() {
	if (http.responseText) {
		//alert(http.responseText);
		var resp = processResult();
		if (resp.status == "success") {
			hideDiv('saveCalcLoginDiv');
			showDiv('saveCalcSaveButtonDiv');
			//document.getElementById('loginName').innerHTML = "Welcome back, " + resp.name;
			document.getElementById('loginBox').innerHTML = "<a href=\"" + urlroot + "/greenaccount/\" class=\"vanillaLink\">Green Account</a>  <span style='color:#dedede'>|</span> <span onClick='logoutUser();' style='cursor:pointer'>Logout</span>";
			document.getElementById('userid').value = resp.userid;
		} else {
			if (resp.msg) {
				alert (resp.msg);
			} else {
				alert("There was an error while attempting to log you in.\n\nPlease check your username and password and try again.");
			}
		}
	}
}

function keyCheck(e, key, func) {
	if (e.keyCode == key) func();
}

function submitLoginForm() {
	var un = document.getElementById('login_username').value;
	var pw = document.getElementById('login_password').value;
	var req = "action=loginuser&username=" + un + "&password=" + pw;
	//alert(ajax_root + 'login.php?'+req);
	enqueueRequest(ajax_root + 'login.php',req,"loginResult");
}

function loginResult() {
	if (http.responseText) {
		//alert(http.responseText);
		var resp = processResult();
		if (resp.status == "success") {
			hideDiv('loginDiv');
			//document.getElementById('loginName').innerHTML = "Welcome back, " + resp.name;
			document.getElementById('loginBox').innerHTML = "<a href=\"" + urlroot + "/greenaccount/\" class=\"vanillaLink\">Green Account</a>  <span style='color:#dedede'>|</span> <span onClick='logoutUser();' style='cursor:pointer'>Logout</span>";
			document.getElementById('userid').value = resp.userid;
		} else {
			alert("There was an error while attempting to log you in.\n\nPlease check your username and password and try again.");
		}
	}
}

function submitRegisterForm() {
	var fn = document.getElementById('reg_fname').value;
	var ln = document.getElementById('reg_lname').value;
	var em = document.getElementById('reg_email').value;
	var pw = document.getElementById('reg_pword').value;
	var pwchk = document.getElementById('reg_pwordchk').value;
	if (pw!=pwchk) { alert("Passwords do not match! Please try again."); return(false); }	
	var req = "action=createaccount&first_name=" + fn + "&last_name=" + ln + "&email=" + em + "&password=" + pw;
	//alert(ajax_root + 'register.php?'+req);
	enqueueRequest(ajax_root + 'register.php',req,"registerResult");
}

function registerResult() {
	if (http.responseText) {
		//alert(http.responseText);
		var resp = processResult();
		if (resp.status == "success") {
			hideDiv('registerDiv');
			document.getElementById('loginBox').innerHTML = "Welcome " + resp.name + " <span style='color:#dedede'>|</span> <span onClick='logoutUser();' style='cursor:pointer'>Logout</span>";
		} else {
			alert("There was an error, seems the email provided is already registered at Sustain Our Planet.");
		}
	}
}

function logoutUser() {
	var req = "action=logoutuser";
	//alert(ajax_root + 'login.php?'+req);
	enqueueRequest(ajax_root + 'login.php',req,"logoutResult");
}

function logoutResult() {
	if (http.responseText) {
		//alert(http.responseText);
		var resp = processResult();
		if (resp.status == "success") {
			document.getElementById('loginBox').innerHTML = "<span onClick=\"showDiv('loginDiv');\" style='cursor:pointer'>Login</span> <span style='color:#dedede'>|</span> <span onClick=\"showDiv('registerDiv');\" style='cursor:pointer'>Create Account</span>";
			document.getElementById('userid').value = "";
			location.href="/index.php";
		}
	}
}

function saveCalculation() {
	if (document.getElementById('calc_name').value != "") {
		var calc_id = document.getElementById('calculationid').value;
		var tonnage = document.getElementById('currTotalCO2').value;
		var calc_name = document.getElementById('calc_name').value;
		var req = "action=saveCalculation&calc_id=" + calc_id + "&tonnage=" + tonnage + "&calc_name=" + calc_name;
		//alert(ajax_root + 'carbon_calc.php?' + req);
		enqueueRequest(ajax_root + 'carbon_calc.php',req,"saveCalculationRes");
	}
}

function saveCalculationRes() {
	if (http.responseText) {
		//alert(http.responseText);
		var resp = processResult();
		if (resp.status == "success") {
			document.getElementById('calc_name').value = resp.calculation_name;
			document.getElementById('calculationNameMarquee').innerHTML = resp.calculation_name;
			if (document.getElementById("btnOffset").enabled==false) { 
				goOffset(); 
			} else {
				hideDiv('savedataDiv');					
				alert("You have saved the calculation data.");
			}
		}
	}
}

function startLoadData() {
	if (document.getElementById('userid').value != "") {
		var req = "action=startLoadData";
		//alert(ajax_root + 'carbon_calc.php?' + req);
		enqueueRequest(ajax_root + 'carbon_calc.php',req,"startLoadDataRes");
	} else {
		showDiv('loginDiv');
		fieldFocus('login_username');
	}
}

function startLoadDataRes() {
	if (http.responseText) {
		//alert(http.responseText);
		var resp = processResult();
		if (resp.status == "success") {
			document.getElementById('loadDataList').innerHTML = "";
			for (var i=0; i < resp.result.length; i++) {
				document.getElementById('loadDataList').innerHTML += "<div class='loadDataListItem'><strong>" + resp.result[i].calculation_name + "</strong> - " + resp.result[i].tonnage + " tons - " + resp.result[i].creation_date + " &nbsp; <span class='linky' onClick=\"loadDataSet(" + resp.result[i].calculation_id + ", '" + resp.result[i].country + "')\">Load</span></div>";
			}
			showDiv('loadDataDiv');
		} else {
			alert (resp.msg);
		}
	}
}

function cancelLoadSavedDialog() {
	hideDiv('loadDataDiv');
}

function clearCurrentDataSet() {
	document.getElementById('totalCarCO2Value').value = "";
	document.getElementById('totalFlightCO2Value').value = "";
	document.getElementById('totalElecCO2Value').value = "";
	document.getElementById('totalGasCO2Value').value = "";
	document.getElementById('currTotalCO2').value = "";
	document.getElementById('footprintTotalBox').innerHTML = "0.00";
	document.getElementById('carTotalsRows').innerHTML = "";
	document.getElementById('elecTotalsRows').innerHTML = "";
	document.getElementById('flightTotalsRows').innerHTML = "";
	document.getElementById('gasTotalsRows').innerHTML = "";
	document.getElementById('calculationid').value = "";
	document.getElementById('calculation_name').value = "";
	document.getElementById('calc_name').value = "";
	
	document.getElementById('elec_state').selectedIndex = 0;
	document.getElementById('elec_kwh_total').value = "";
	document.getElementById('airport1').value = "";
	document.getElementById('airport2').value = "";
	document.getElementById('airportcode1').value = "";
	document.getElementById('airportcode2').value = "";
	document.getElementById('layoversRow').innerHTML = "";
	document.getElementById('quantity').value = "1";
	document.getElementById('seatclass').selectedIndex = 0;
	document.getElementById('car_year').options.length = 0;
	document.getElementById('car_manufacturer').options.length = 0;
	document.getElementById('car_model').options.length = 0;
	document.getElementById('car_trans').options.length = 0;
	document.getElementById('car_fuel').options.length = 0;
	
	document.getElementById('car_miles_permonth').value = "";
	document.getElementById('car_miles_months').value = "12";
	document.getElementById('car_miles_peryear').value = "";
	document.getElementById('car_miles_years').value = "1";
	document.getElementById('car_miles_total').value = "";
	
	document.getElementById('car_year').disabled = true;
	document.getElementById('car_manufacturer').disabled = true;
	document.getElementById('car_model').disabled = true;
	document.getElementById('car_trans').disabled = true;
	document.getElementById('car_fuel').disabled = true;
	
	document.getElementById('footprintTotalBox').style.background = "url( /images/total_emissions_box_grey.jpg ) no-repeat";
	document.getElementById('carPct').innerHTML = "0";
	document.getElementById('elecPct').innerHTML = "0";
	document.getElementById('flightPct').innerHTML = "0";
	document.getElementById('gasPct').innerHTML = "0";

	document.getElementById('footprint_Cars').style.backgroundPosition = "0px 100px";
	document.getElementById('footprint_Electric').style.backgroundPosition = "0px 100px";
	document.getElementById('footprint_Flights').style.backgroundPosition = "0px 100px";
	document.getElementById('footprint_NaturalGas').style.backgroundPosition = "0px 100px";
	
	setTotalText("cars",0);
	setTotalText("elec",0);
	setTotalText("flight",0);
	setTotalText("gas",0);
	
	thetotals.length = 0;
	curr_totals_row = 0;
	flight_legs = 2;
}

function loadDataSet(id, c) {
	country = c;
	var req = "action=loadDataSet&calc_id=" + id;
	//alert(ajax_root + 'carbon_calc.php?' + req);
	enqueueRequest(ajax_root + 'carbon_calc.php',req,"loadDataSetRes");
	
	
	switch(c) {
		case "uk":
			document.getElementById('avgCalcUk').style.display = 'block';
			document.getElementById('avgCalcUs').style.display = 'none';
			break;
		case "us":
			document.getElementById('avgCalcUs').style.display = 'block';
			document.getElementById('avgCalcUk').style.display = 'none';
			break;
	}	
}

function loadDataSetRes() {
	if (http.responseText) {
		hideDiv('loadDataDiv');
		document.getElementById('loadDataList').innerHTML = "";
		//alert(http.responseText);
		var resp = processResult();
		if (resp.status == "success") {
			clearCurrentDataSet();
			var car_added = false;
			var elec_added = false;
			var flight_added = false;
			var gas_added = false;
			document.getElementById('calculationNameMarquee').innerHTML = resp.calc[0].calculation_name;
			document.getElementById('calculationid').value = resp.calc[0].calculation_id;
			document.getElementById('calculation_name').value = resp.calc[0].calculation_name;
			if (resp.car_calcs && resp.car_calcs.length) {
				car_added = true;
				for (var i=0; i < resp.car_calcs.length; i++) {
					var r = resp.car_calcs[i];
					addCarResult(r.cc_id,r.year,r.make,r.model,r.miles,r.tonnage);
				}
			}
			if (resp.elec_calcs && resp.elec_calcs.length) {
				elec_added = true;
				for (var i=0; i < resp.elec_calcs.length; i++) {
					var r = resp.elec_calcs[i];
					addElectricResult(r.ec_id,r.state,r.kwh,r.tonnage);
				}
			}
			if (resp.flight_calcs && resp.flight_calcs.length) {
				flight_added = true;
				for (var i=0; i < resp.flight_calcs.length; i++) {
					var r = resp.flight_calcs[i];
					addFlightResult(r.fc_id,r.journey,r.roundtrip,r.quantity,r.tonnage);
				}
			}
			if (resp.gas_calcs && resp.gas_calcs.length) {
				gas_added = true;
				for (var i=0; i < resp.gas_calcs.length; i++) {
					var r = resp.gas_calcs[i];
					addGasResult(r.gc_id,r.gas_type,r.gas_usage,r.gas_unit,r.tonnage);
				}
			}
			
			if (car_added) {
				openCarsCalc();
			} else if (elec_added) {
				openElecCalc();
			} else if (flight_added) {
				openFlightsCalc();
			} else if (gas_added) {
				openNGasCalc();
			}
		}
	}
}

function showSaveCalcDiv() {
	if (document.getElementById('calculationid').value != "") {
		if (document.getElementById('calculation_name').value != "") document.getElementById('calc_name').value = document.getElementById('calculation_name').value;
		showDiv('savedataDiv');
		fieldFocus('calc_name');
		if (!document.getElementById('userid').value || document.getElementById('userid').value == "") {
			hideDiv('saveCalcSaveButtonDiv');
			showDiv('saveCalcLoginDiv');
		} else {
			hideDiv('saveCalcLoginDiv');
			showDiv('saveCalcSaveButtonDiv');
		}
	} else {
		alert("You have not started a calculation.");
		if (document.getElementById("btnOffset")) document.getElementById("btnOffset").value='Offset';
		if (document.getElementById("btnOffset")) document.getElementById("btnOffset").enabled=true;		
	}
}

function showSaveDialogCreateAccount() {
	showDiv('saveDialogCreateAccountDiv');
	hideDiv('saveLoginButtons');
	showDiv('saveCreateAccountButtons');
	hideDiv('saveDataLoginInstr');
	showDiv('saveDataCreateInstr');
	fieldFocus('save_firstname');
}

function showSaveDialogLogin() {
	hideDiv('saveDialogCreateAccountDiv');
	hideDiv('saveCreateAccountButtons');
	showDiv('saveLoginButtons');
	hideDiv('saveDataCreateInstr');
	showDiv('saveDataLoginInstr');
}

function fieldFocus(d) {
	document.getElementById(d).focus();
}

function hideDiv(d) {
	//alert(d);
	document.getElementById(d).style.display = "none";
	if (d=='savedataDiv') {
	if (document.getElementById("btnOffset")) document.getElementById("btnOffset").value='Offset';
	if (document.getElementById("btnOffset")) document.getElementById("btnOffset").enabled=true;
	}
}

function showDiv(d) {
	//console.log(d);
	document.getElementById(d).style.display = "block";
}

function showHowDiv(el, d) {
	var xy = getXYLoc(el.id);
	//alert(elid);
	var xCompensation = 0;
	var yCompensation = 0;
	if (isIE7) {
		xCompensation = -120;
		yCompensation = 0;
	}
	document.getElementById('theHowDiv').style.left = (xy[0] + xCompensation) + "px";
	document.getElementById('theHowDiv').style.top = (xy[1] + 15) + "px";
	document.getElementById('theHowDiv').innerHTML = document.getElementById(d).innerHTML;
	showDiv('theHowDiv');
}

function hideHowDiv(el, d) {
	hideDiv('theHowDiv');
	document.getElementById('theHowDiv').innerHTML = "";
}

function setTotalText(type,tons) {
	switch(type) {
		case "cars":
			document.getElementById('carTotalsFoot').innerHTML = "Total Emissions From Vehicles: <strong>" + tons + " Tons</strong>";
			break;
		case "elec":
			document.getElementById('elecTotalsFoot').innerHTML = "Total Emissions From Electricity: <strong>" + tons + " Tons</strong>";
			break;
		case "flight":
			document.getElementById('flightTotalsFoot').innerHTML = "Total Emissions From Air Travel: <strong>" + tons + " Tons</strong>";
			break;
		case "gas":
			document.getElementById('gasTotalsFoot').innerHTML = "Total Emissions From Natural Gas: <strong>" + tons + " Tons</strong>";
			break;
		case "footprint":
			document.getElementById('footprintTotalBox').innerHTML = tons;
			break;
	}
}

// Page position detection.
function getXYLoc(id) {
	var offstx = 0;
	var offsty = 0;
	//var offstx = 0 + getScrollLeft();
	//var offsty = 0 + getScrollTop();
	//alert(offstx + ", " + offsty);
	var parent = document.getElementById(id);
	while (parent != null) {
		offstx += parent.offsetLeft;
		offsty += parent.offsetTop;
		parent = parent.offsetParent;
	}
	return new Array(offstx,offsty);
}

function getScrollXY(id) {
	var offstx = 0 + getScrollLeft();
	var offsty = 0 + getScrollTop();
	var parent = document.getElementById(id);
	while (parent != null) {
		offstx += parent.offsetLeft;
		offsty += parent.offsetTop;
		parent = parent.offsetParent;
	}
	return new Array(offstx,offsty);
}

// getScrollTop() finds the true scroll offset of the window
// for the Y axis.
function getScrollTop() {
	var st;
	var st1 = document.documentElement.scrollTop;
	var st2 = document.body.scrollTop;
	var st3 = window.pageYOffset;
	if (st1 + st2 + st3 != 0) {
		if (st1 && st1 != 0) {
			st = st1;
		} else if (st2 && st2 != 0) {
			st = st2;
		} else if (st3 && st3 != 0) {
			st = st3;
		}
	} else {
		st = 0;
	}
	return st;
}

// getScrollLeft() finds the true scroll offset of the window
// for the X axis.
function getScrollLeft() {
	var sl;
	var sl1 = document.documentElement.scrollLeft;
	var sl2 = document.body.scrollLeft;
	var sl3 = window.pageXOffset;
	if (sl1 + sl2 + sl3 != 0) {
		if (sl1 && sl1 != 0) {
			sl = sl1;
		} else if (sl2 && sl2 != 0) {
			sl = sl2;
		} else if (sl3 && sl3 != 0) {
			sl = sl3;
		}
	} else {
		sl = 0;
	}
	return sl;
}

//Sends us to the offset page from the calc page.
function goOffset() {
	if ((document.getElementById('calculationNameMarquee').innerHTML != "My New Calculation") && (document.getElementById('calculationNameMarquee').innerHTML != "")) {
		window.location.href = "offset.php";
	} else {
		document.getElementById("btnOffset").value='Please Save...';
		document.getElementById("btnOffset").enabled=false;	
		showSaveCalcDiv();
	}	
}

function toggleState() {
	if (document.getElementById("country").selectedIndex == 1) {
		document.getElementById("stateSelect").style.display = "none";
	} else {
		document.getElementById("stateSelect").style.display = "block";
	}
}

//Form validation for offset page.
function verify() {
	var numericExpression = /^[0-9]+$/;
	var phne = document.form.phone.value.replace(/-/g,"");
	
	var themessage = "Please check the following fields: ";
	if (document.form.fullName.value=="") {
		themessage = themessage + " - Your Name";
	}
	if (document.form.address.value=="") {
		themessage = themessage + " -  Address";
	}
	if (document.form.city.value=="") {
		themessage = themessage + " -  City";
	}
	if ((document.form.zipCode.value=="") || (!document.form.zipCode.value.match(numericExpression))) {
		themessage = themessage + " -  Zip Code";
	}
	if ((document.form.phone.value=="") || (!phne.match(numericExpression))) {
		themessage = themessage + " -  Phone";
	}
	if ((document.form.email.value=="") || (document.form.email.value.indexOf('@')==-1) || (document.form.email.value.indexOf('.')==-1)) {
		themessage = themessage + " -  Valid E-Mail";
	}
	if ((document.form.state.selectedIndex==0) && (document.form.country.selectedIndex==0)) {
		themessage = themessage + " -  State";
	}
	if ((document.form.cardNumber.value=="") || (!document.form.cardNumber.value.match(numericExpression))) {
		themessage = themessage + " -  Valid Card Number";
	}
	if ((document.form.cardType[0].checked==0) && (document.form.cardType[1].checked==0) && (document.form.cardType[2].checked==0) && (document.form.cardType[3].checked==0)) {
		themessage = themessage + " -  Card Type";
	}
	if ((document.form.cardSecurityCode.value=="") || (!document.form.cardSecurityCode.value.match(numericExpression))) {
		themessage = themessage + " -  Valid Card Security Code";
	}
	
	//alert if fields are empty and cancel form submit
	if (themessage == "Please check the following fields: ") {
		document.form.submit();
	}
	else {
		alert(themessage);
		return false;
	}
}

function goSubmit() {
	pwd=document.getElementById("pwd").value;
	pwdchk=document.getElementById("pwdchk").value;
	if (pwd!=pwdchk) { alert("Passwords do not match!"); return(false); } else { return(true); }
}


function howIs(w) {
	window.open(urlroot + "/howis.php?w=" + w, "HowIs","width=450,height=600,scrollbars=yes");
}