var EmissionsCalculatorPlasticBags = function(tagidOfValueField, tagIdOfTotalField, tagIdOfTotalFieldMetric) {
	this._saveStateCookieName = "ecPlasticBags",
	this._tagidOfValueField = (hasData(tagidOfValueField) ? tagidOfValueField : "ecBags"),
	this._tagidOfTotalField = (hasData(tagIdOfTotalField) ? tagIdOfTotalField : "ecTotal"),
	this._tagidOfTotalFieldMetric = (hasData(tagIdOfTotalFieldMetric) ? tagIdOfTotalFieldMetric : "ecTotalMetric"),
	this._alwaysDisplayTotal = true,

	this.loadState = function() {
		var str = GACookies.getCookie(this._saveStateCookieName);
		if(hasData(str)) {
			setElementValue(this._tagidOfValueField, str);
			return true;
		}

		return false;
	},
	this.saveState = function() {
		var str = '';
		str += getElementValue(this._tagidOfValueField);
		//alert(str);
		return GACookies.setCookie(this._saveStateCookieName, str);
	},
	
	this.resetButton = function() {
		this.displayTotal();
	},

	this.calculate = function()	{
		var x = getElementValueInt(this._tagidOfValueField);
		x *= 8;	// 8g per bag

		return MetricConversion.getKgLbFromKg(x / 1000);
	},
	
	this.displayTotal = function(total) {
		var total = this.calculate();

		this.displayTotalMetric();

		var str = addCommas(total.toFixed(2));
		setInnerHTML(this._tagidOfTotalField, str);
		
		return total;
	},

	this.displayTotalMetric = function() {
	//	setElementsText("co2perYear", " Kilograms of CO<sub>2</sub>/year");
		var str = '&nbsp;';
		str += MetricConversion.getKgLbText(true);
		str += ' of CO<sub>2</sub>/year';
		return setInnerHTML(this._tagidOfTotalFieldMetric, str);
	}
}

var EmissionsCalculator = function() {
	this.tagidOfTotalField = "ecTotal",
	this.tagidOfRadioBoxMetricName = "ecrdoMetric",
	this.tagidOfRadioBoxStandardName = "ecrdoStandard",
	this._saveStateCookieName = "ecSaveState",
	this.showGrade = true,
	this.alwaysDisplayTotal = true,
	this._calcItems = Array(),
	
	this.addCalcItem = function(ecalcItem) {
		if(!ecalcItem)
			return false;
	
		this._calcItems.push(ecalcItem);
		return true;
	},

	this.resetButton = function() {
		setInnerHTML('total', '');
		setInnerHTML('tons', '');
		//document.getElementById("acres").innerHTML = ''
		//document.getElementById("trees").innerHTML = ''
		//document.getElementById("tips").innerHTML = ''
		setInnerHTML('grade', '');
		setInnerHTML('grades', '');

		if(document.getElementById(this.tagidOfRadioBoxStandardName)) {
			if(getChecked(this.tagidOfRadioBoxStandardName))
				this.goStandard();
			else
				this.goMetric();
		}

		for (var i = 0; i < this._calcItems.length; i++) {
			var calcItem = this._calcItems[i];
			if(calcItem != null && calcItem.resetButton)
				calcItem.resetButton();
		}
		
		return true;
	},

this.calcPeople = function()
{
	var total = 0;
	total += this.calcElectric();
	total += this.calcGas();
	total += this.calcFuelOil();
	
	return total;
},

this.convertKgLbFromLbWithCommas = function(num) {
	return MetricConversion.convertKgLbFromLbWithCommas(num);
},

this.calculateElectric = function()
{
	var w = getElementValue("number_of_people").replace(/\,/g,'');
	var x = getElementValue("electric_bill").replace(/\,/g,'');
	var y = getElementValue("electric_price").replace(/\,/g,'');

	var lbs = ((x/w)/y)*1.37*12;
	return lbs;
},
this.calcElectric = function()
{
	var lbs = this.calculateElectric();
	var convertedCO2 = this.convertKgLbFromLbWithCommas(lbs);
//	alert('Number of people: ' + x + '\nElectric bill: ' + x + '\nElectric Price: ' + y + '\nTotal: ' + z + '\nConverted CO2: ' + convertedCO2 + ' ' + MetricConversion.getKgLbText(true) + '.');
	setInnerHTML("electric_co2", convertedCO2);
//	setElementValue("electric_co2", z.toFixed(0));
	this.calcTotalHome();
},

this.calculateGas = function()
{
	var gasbill = getElementValue("gas_bill").replace(/\,/g,'');
	var w = getElementValue("number_of_people").replace(/\,/g,'');
	var x = MetricConversion.getFt3FromM3Ft3(gasbill);
	var y = getElementValue("gas_price").replace(/\,/g,'');
//	For thousand cubics... Moved to therms
//	var z = ((x/w)/y)*120.61*12;
	var lbs = ((x/w)/y)*12.061*12;
	return lbs;
},
this.calcGas = function()
{
	var lbs = this.calculateGas();
	var convertedCO2 = this.convertKgLbFromLbWithCommas(lbs);
//	alert('Gas bill: ' + gasbill + '\nNum People: ' + w + '\nConverted Gas bill: ' + x + '\nGas Price: ' + y + '\nTotal: ' + z + '\nConverted CO2: ' + convertedCO2 + ' ' + MetricConversion.getKgLbText(true) + '.');
	setInnerHTML("gas_co2", convertedCO2);
	this.calcTotalHome();
},

this.calculateFuelOil = function()
{
	var w = getElementValue("number_of_people").replace(/\,/g,'');
	var x = MetricConversion.getGFromLG(getElementValue("fuel_oil_bill").replace(/\,/g,''));
	var y = getElementValue("fuel_oil_price").replace(/\,/g,'');

	var lbs = ((x/w)/y)*22.28*12;
	return lbs;
},
this.calcFuelOil = function()
{
	var lbs = this.calculateFuelOil();
	setInnerHTML("fuel_oil_co2", this.convertKgLbFromLbWithCommas(lbs));
//	setElementValue("fuel_oil_co2", z.toFixed(0));
	this.calcTotalHome();
},

this.calculateTotalHome = function()
{
	var v = this.calculateElectric();
	var w = this.calculateGas();
	var x = this.calculateFuelOil();
	var y = 0; //Math.round(getInnerHTML("total_waste-recycling").replace(/\,/g,''))
	var lbs = (v + w + x + y)*1
	
	return lbs;
},
this.calcTotalHome = function()
{
//	var v = Math.round(getInnerHTML("electric_co2").replace(/\,/g,''))
//	var w = Math.round(getInnerHTML("gas_co2").replace(/\,/g,''))
//	var x = Math.round(getInnerHTML("fuel_oil_co2").replace(/\,/g,''))
//	var y = 0; //Math.round(getInnerHTML("total_waste-recycling").replace(/\,/g,''))
//	var lbs = (v + w + x + y)*1

	var lbs = this.calculateTotalHome();
	setInnerHTML("total_home", addCommas(lbs.toFixed(0)))
	
	if(this.alwaysDisplayTotal)
		this.displayTotal();
},

this.calculateWaste = function()
{
	// All calculations are in pounds, so we must do some fancy conversioning.
	var x = 1010;
	var lbs = 0;
	if(getChecked("waste0"))	{lbs = 0;}
	if(getChecked("waste1"))	{lbs = x*(1/4);}
	if(getChecked("waste2"))	{lbs = x*(1/2);}
	if(getChecked("waste3"))	{lbs = x;}
	if(getChecked("waste4"))	{lbs = x*(4/2);}
	if(getChecked("waste5"))	{lbs = x*(5/2);}
	
	return lbs;
},
this.calcWaste = function()
{
	var lbs = this.calculateWaste();
	//document.getElementById("total_waste").value = z.toFixed(0)
	setInnerHTML("total_waste", this.convertKgLbFromLbWithCommas(lbs));

	this.calcRecycleReduction();
},

this.calculateRecycleReduction = function()
{
	// All calculations are in pounds, so we must do some fancy conversioning.
	var x = 0.4181;
//	var waste = getInnerHTML("total_waste").replace(/\,/g,'');
//	var y = MetricConversion.getLbFromKgLb(waste);
	var waste = this.calculateWaste();
	var lbs = 0;
	if(getChecked("recycle1"))	{lbs = (waste * (x));}
	if(getChecked("recycle2"))	{lbs = (waste * (x*(3/4)));}
	if(getChecked("recycle3"))	{lbs = (waste * (x*(2/4)));}
	if(getChecked("recycle4"))	{lbs = (waste * (x*(1/4)));}
	if(getChecked("recycle5"))	{lbs = (waste * (x*0));}
	
	lbs = waste - lbs;
	
	return lbs;
},
this.calcRecycleReduction = function()
{
	var lbsRecycle = this.calculateRecycleReduction();
	var waste = this.calculateWaste();
	setInnerHTML("kglbrecycling", this.convertKgLbFromLbWithCommas(waste - lbsRecycle));

	if(lbsRecycle<0) {
		setInnerHTML("total_waste-recycling", 0);
	}
	else {
		setInnerHTML("total_waste-recycling", this.convertKgLbFromLbWithCommas(lbsRecycle));
	}

//	this.calcTotalHome()
	
	if(this.alwaysDisplayTotal)
		this.displayTotal();
},

this.calculateVehicle = function()
{
	var x = MetricConversion.getMiFromKmMi(getElementValue("miles_driven").replace(/\,/g,''));
	var y = MetricConversion.getMiFromKmMi(getElementValue("fuel_economy").replace(/\,/g,''));
	if(y==0)
	{
		y=1;
		if (x!=0)
		{
			setElementValue("fuel_economy", 1);
		}
	}

	//var z = (x/y)*(19.4*(100/95));
	var lbs = ((x*(19.4*(100/95)))/y);
	return lbs;
},
this.calcVehicle = function()
{
	var lbs = this.calculateVehicle();
	var convertedCO2 = this.convertKgLbFromLbWithCommas(lbs);
	//alert('Miles driven: ' + x + ' miles.\nFuel economy: ' + y + ' miles.\nTotal CO2: ' + lbs + ' pounds\nConverted CO2: ' + convertedCO2 + ' ' + MetricConversion.getKgLbText(true) + '.');
	setInnerHTML("vehicle_co2", convertedCO2);
	
	if(this.alwaysDisplayTotal)
		this.displayTotal();
},

this.calculateAir = function()
{
	// All calculations are in miles, so we must do some fancy conversioning.
	var y = MetricConversion.getMiFromKmMi(getElementValue("miles_flown").replace(/\,/g,''));
	var lbs = y*0.4395;
	
	return lbs;
},
this.calcAir = function()
{
	var lbs = this.calculateAir();
	//setElementValue("air_co2", lbs.toFixed(0));
	setInnerHTML("air_co2", this.convertKgLbFromLbWithCommas(lbs));
	
	if(this.alwaysDisplayTotal)
		this.displayTotal();
},
this.calculateAirInMiles = function(miles)
{
	var z = miles*0.4395;
	return z.toFixed(0);
},

this.calculateMeat = function()
{
//if(getChecked("meat1"))	{z = 0}
//if(getChecked("meat2"))	{z = 3274}
	var x = 3274;
	var lbs = 0;
	if(getChecked("meat0"))	{lbs = 0;}
	if(getChecked("meat1"))	{lbs = x*(1/4);}
	if(getChecked("meat2"))	{lbs = x*(1/2);}
	if(getChecked("meat3"))	{lbs = x;}
	if(getChecked("meat4"))	{lbs = x*(4/2);}
	if(getChecked("meat5"))	{lbs = x*(5/2);}

	return lbs;
},
this.calcMeat = function()
{
	var lbs = this.calculateMeat();
//setElementValue("total_meat", lbs.toFixed(0));
	setInnerHTML("total_meat", this.convertKgLbFromLbWithCommas(lbs));
	
	if(this.alwaysDisplayTotal)
		this.displayTotal();
},

this.calculateTotal = function()
{
	var lbs = this.calculateTotalHome();
	lbs += this.calculateMeat();
	lbs += this.calculateRecycleReduction();
	lbs += this.calculateVehicle();
	lbs += this.calculateAir();
	
	alert(lbs);
	return lbs;
},

this.calcTotal = function()
{
var n = getElementValue("number_of_people").replace(/\,/g,'')
var o = Math.round(getInnerHTML("electric_co2").replace(/\,/g,''))
var p = Math.round(getInnerHTML("gas_co2").replace(/\,/g,''))
var q = Math.round(getInnerHTML("fuel_oil_co2").replace(/\,/g,''))
var r = Math.round(getInnerHTML("total_waste").replace(/\,/g,''))
var s = Math.round(getInnerHTML("total_waste-recycling").replace(/\,/g,''))

var t = Math.round(getInnerHTML("total_home").replace(/\,/g,''))
var u = Math.round(getElementValue("miles_driven").replace(/\,/g,''))
var v = Math.round(getElementValue("fuel_economy").replace(/\,/g,''))
var w = Math.round(getInnerHTML("vehicle_co2").replace(/\,/g,''))
var x = Math.round(getInnerHTML("air_co2").replace(/\,/g,''))
var y = Math.round(getInnerHTML("total_meat").replace(/\,/g,''))
var z = (t + w + x + y)*1

var tons = z*0.0005
var trees = tons/(0.039*7)
var acres = tons/1.2
var barrels = tons/0.43
var gallons = tons/0.00878
var hectares = acres/2.471

setInnerHTML("total", '<input type="hidden" name="total" value="' + addCommas(z.toFixed(0))+'">')
setInnerHTML("tons", '<input type="hidden" name="tons" value="' + addCommas(tons.toFixed(2))+'">')
var s1=0;
if(getChecked("recycle1"))	{s1 = 1}
if(getChecked("recycle2"))	{s1 = 2}
if(getChecked("recycle3"))	{s1 = 3}
if(getChecked("recycle4"))	{s1 = 4}
if(getChecked("recycle5"))	{s1 = 5}

//document.getElementById("equivalent").innerHTML = 'This is equivalent to burning <span class="total">'+addCommas(barrels.toFixed(2))+'</span> barrels of oil, or <span class="total">'+addCommas(gallons.toFixed(2))+'</span> gallons of gasoline'
//document.getElementById("acres").innerHTML = '<span class="total">Preserving '+addCommas(acres.toFixed(2))+' acres ('+hectares.toFixed(2)+' hectares) of established pine or fir trees, every year.</span><br>From one year of growth, these trees will have offset your one year of CO2 emissions.'
//document.getElementById("trees").innerHTML = '<span class="total">Planting '+addCommas(Math.round(trees))+' pine or fir tree seedlings, every year.</span><br>Over their lifespan of about 70 years, these trees will have offset your one year of CO2 emissions.'
//document.getElementById("tips").innerHTML = '<a href="tips_to_reduce_impact.php?n='+z+'&o='+o+'&p='+p+'&q='+q+'&r='+r+'&s='+s+'&s1='+s1+'&t='+t+'&u='+u+'&v='+v+'&w='+w+'&x='+x+'&y='+y+'" class="style9">Click here to find out more ways to reduce your impact</a>'
// TODO: calcGrade needs to consider Metric Conversions
this.calcGrade(n,o,p,q,r,s,s1,t,u,v,w,x,y,z.toFixed(0))

var moreTips=document.getElementById("more_tips");
if(moreTips)
	moreTips.focus()
},

// TODO: calcGrade needs to consider Metric Conversions
this.calcGrade = function(n,o,p,q,r,s,s1,t,u,v,w,x,y,z)
{
//based on 2.59 people
//total = 32,528 lbs CO2
//total = 16.26 tons CO2
//13.55 acres of trees (5.48 hectares)
//60 seedlings

//A+ = 0 - 4,333
//A = 4,333 - 8,666
//A- = 8,666 - 12,999
//B+ = 12,999 - 17,333
//B = 17,333 - 21,666
//B- = 21,666 - 25,999
//C+ = 25,999 - 30,333
//C = 30,333 - 34,666
//C- = 34,666 - 38,999
//D+ = 38,999 - 43,333
//D = 43,333 - 47,666
//D- = 47,666 - 51,999
//F = > 51,999

//27500 ***************
//A+ = 0 - 3,666
//A = 3,666 - 7,333
//A- = 7,333 - 10,999
//B+ = 10,999 - 14,666
//B = 14,666 - 18,333
//B- = 18,333 - 21,999
//C+ = 21,999 - 25,666
//C = 25,666 - 29,333
//C- = 29,333 - 32,999
//D+ = 32,999 - 36,666
//D = 36,666 - 40,333
//D- = 40,333 - 43,999
//F = > 43,999
//*********************

electric_co2 = o
gas_co2 = p
fuel_oil_co2 = q
total_waste = r
total_waste_after_recycling = s
recycling = s1
total_home = t
miles_driven = u
mpg = v
vehicle_co2 = w
air_co2 = x
total_meat = y
total_all = z

var grade_message = ''
var z = ''
var grades = ''

switch (true)
{
case (total_all < 3666):
  z = 'A+'
  grade_message = 'Seriously? This is very impressive!'
  break
case ((total_all >= 3666)&&(total_all < 7333)):
  z = 'A'
  grade_message = 'Excellent! Keep it up!'
  break
case ((total_all >= 7333)&&(total_all < 10999)):
  z = 'A-'
  grade_message = 'Good job! Don\'t stop now!'
  break
case ((total_all >= 10999)&&(total_all < 14666)):
  z = 'B+'
  grade_message = 'Just need a little extra effort for that A!'
  break
case ((total_all >= 14666)&&(total_all < 18333)):
  z = 'B'
  grade_message = 'Not bad, you\'re almost there!'
  break
case ((total_all >= 18333)&&(total_all < 21999)):
  z = 'B-'
  grade_message = 'Pretty good, but just barely above average.'
  break
case ((total_all >= 21999)&&(total_all < 25666)):
  z = 'C+'
  grade_message = 'Still average. Not really bad, but definitely not good.'
  break
case ((total_all >= 25666)&&(total_all < 29333)):
  z = 'C'
  grade_message = 'Average. You can definitely do better than average.'
  break
case ((total_all >= 29333)&&(total_all < 32999)):
  z = 'C-'
  grade_message = 'Not quite a D, but you are close. Can you try a little harder?'
  break
case ((total_all >= 328999)&&(total_all < 36666)):
  z = 'D+'
  grade_message = 'Not your best effort.'
  break
case ((total_all >= 36666)&&(total_all < 40333)):
  z = 'D'
  grade_message = 'You are officially below average.'
  break
case ((total_all >= 40333)&&(total_all < 43999)):
  z = 'D-'
  grade_message = 'You don\'t have an F, but it\'s still just as bad.'
  break
case (total_all >= 43999):
  z = 'F'
  grade_message = 'Hmmm. You must not be trying too hard.'
  break
default:
  setInnerHTML('grade', '')
}
setInnerHTML('grade', '<input type="hidden" name="grade" value="'+z+'">')

if ((electric_co2 >= 0)&&(electric_co2 < 6500/n)) {
  	grade_electric = "A";
} else if ((electric_co2 >= 6500/n)&&(electric_co2 < 13000/n)) {
  	grade_electric = "B";
} else if ((electric_co2 >= 13000/n)&&(electric_co2 < 19500/n)) {
  	grade_electric = "C";
} else if ((electric_co2 >= 19500/n)&&(electric_co2 < 26000/n)) {
  	grade_electric = "D";
} else if (electric_co2 >= 26000/n) {
  	grade_electric = "F";
} else {
	grade_electric = "N/A";
}

if ((gas_co2 >= 0)&&(gas_co2 < 4500/n)) {
  	grade_gas = "A";
} else if ((gas_co2 >= 4500/n)&&(gas_co2 < 9000/n)) {
  	grade_gas = "B";
} else if ((gas_co2 >= 9000/n)&&(gas_co2 < 13500/n)) {
  	grade_gas = "C";
} else if ((gas_co2 >= 13500/n)&&(gas_co2 < 18000/n)) {
  	grade_gas = "D";
} else if (gas_co2 >= 18000/n) {
  	grade_gas = "F";
} else {
	grade_gas = "N/A";
}

if ((fuel_oil_co2 >= 0)&&(fuel_oil_co2 < 6000/n)) {
  	grade_fuel_oil = "A";
} else if ((fuel_oil_co2 >= 6000/n)&&(fuel_oil_co2 < 12000/n)) {
  	grade_fuel_oil = "B";
} else if ((fuel_oil_co2 >= 12000/n)&&(fuel_oil_co2 < 18000/n)) {
  	grade_fuel_oil = "C";
} else if ((fuel_oil_co2 >= 18000/n)&&(fuel_oil_co2 < 24000/n)) {
  	grade_fuel_oil = "D";
} else if (fuel_oil_co2 >= 24000/n) {
  	grade_fuel_oil = "F";
} else {
	grade_fuel_oil = "N/A";
}

if (total_waste == 0) {
  	grade_waste = "A";
} else if (total_waste == 253) {
  	grade_waste = "A";
} else if (total_waste == 505) {
  	grade_waste = "B";
} else if (total_waste == 1010) {
  	grade_waste = "C";
} else if (total_waste == 2020) {
  	grade_waste = "D";
} else if (total_waste == 2525) {
  	grade_waste = "F";
} else {
	grade_waste = "N/A";
}

if (recycling == 1) {
  	grade_recycling = "A";
} else if (recycling == 2) {
  	grade_recycling = "B";
} else if (recycling == 3) {
  	grade_recycling = "C";
} else if (recycling == 4) {
  	grade_recycling = "D";
} else if (recycling == 5) {
  	grade_recycling = "F";
} else {
	grade_recycling = "N/A";
}

if ((miles_driven >= 0)&&(miles_driven < 4500)) {
  	grade_miles_driven = "A";
} else if ((miles_driven >= 4500)&&(miles_driven < 9000)) {
  	grade_miles_driven = "B";
} else if ((miles_driven >= 9000)&&(miles_driven < 13500)) {
  	grade_miles_driven = "C";
} else if ((miles_driven >= 13500)&&(miles_driven < 18000)) {
  	grade_miles_driven = "D";
} else if (miles_driven >= 18000) {
  	grade_miles_driven = "F";
} else {
	grade_miles_driven = "N/A";
}

if (mpg >= 36) {
  	grade_mpg = "A";
} else if ((mpg >= 27)&&(mpg < 36)) {
  	grade_mpg = "B";
} else if ((mpg >= 18)&&(mpg < 27)) {
  	grade_mpg = "C";
} else if ((mpg >= 9)&&(mpg < 18)) {
  	grade_mpg = "D";
} else if ((mpg > 0)&&(mpg < 9)) {
  	grade_mpg = "F";
} else if (mpg == 0) {
  	grade_mpg = "N/A";
} else {
	grade_mpg = "N/A";
}

if ((vehicle_co2 >= 0)&&(vehicle_co2 < 4500)) {
  	grade_driving = "A";
} else if ((vehicle_co2 >= 4500)&&(vehicle_co2 < 9000)) {
  	grade_driving = "B";
} else if ((vehicle_co2 >= 9000)&&(vehicle_co2 < 13500)) {
  	grade_driving = "C";
} else if ((vehicle_co2 >= 13500)&&(vehicle_co2 < 18000)) {
  	grade_driving = "D";
} else if (vehicle_co2 >= 18000) {
  	grade_driving = "F";
} else {
	grade_driving = "N/A";
}

if ((air_co2 >= 0)&&(air_co2 < 175)) {
  	grade_flying = "A";
} else if ((air_co2 >= 175)&&(air_co2 < 350)) {
  	grade_flying = "B";
} else if ((air_co2 >= 350)&&(air_co2 < 525)) {
  	grade_flying = "C";
} else if ((air_co2 >= 525)&&(air_co2 < 700)) {
  	grade_flying = "D";
} else if (air_co2 >= 700) {
  	grade_flying = "F";
} else {
	grade_flying = "N/A";
}

if (total_meat == 0) {
  	grade_eating = "A";
} else if (total_meat == 819) {
  	grade_eating = "A";
} else if (total_meat == 1637) {
  	grade_eating = "B";
} else if (total_meat == 3274) {
  	grade_eating = "C";
} else if (total_meat == 6548) {
  	grade_eating = "D";
} else if (total_meat == 8185) {
  	grade_eating = "F";
} else {
	grade_eating = "N/A";
}


grades = '<input type="hidden" name="grade_electric" value="'+grade_electric+'">'
grades = grades+'<input type="hidden" name="grade_miles_driven" value="'+grade_miles_driven+'">'
grades = grades+'<input type="hidden" name="grade_gas" value="'+grade_gas+'">'
grades = grades+'<input type="hidden" name="grade_mpg" value="'+grade_mpg+'">'
grades = grades+'<input type="hidden" name="grade_fuel_oil" value="'+grade_fuel_oil+'">'
grades = grades+'<input type="hidden" name="grade_driving" value="'+grade_driving+'">'
grades = grades+'<input type="hidden" name="grade_waste" value="'+grade_waste+'">'
grades = grades+'<input type="hidden" name="grade_flying" value="'+grade_flying+'">'
grades = grades+'<input type="hidden" name="grade_recycling" value="'+grade_recycling+'">'
grades = grades+'<input type="hidden" name="grade_eating" value="'+grade_eating+'">'
setInnerHTML("grades", grades)
},

this.swapMetricElementKmMi = function(elementName) {
	var element = document.getElementById(elementName);
	if(element) {
		if(MetricConversion.isMetric())
			element.value = MetricConversion.convertMiToKm(element.value.replace(/\,/g,'')).toFixed(0);
		else
			element.value = MetricConversion.convertKmToMi(element.value.replace(/\,/g,'')).toFixed(0);
	}
},

this.swapMetricElementM3Ft3 = function(elementName) {
	var element = document.getElementById(elementName);
	if(element) {
		if(MetricConversion.isMetric())
			element.value = MetricConversion.convertFt3ToM3(element.value.replace(/\,/g,'')).toFixed(0);
		else
			element.value = MetricConversion.convertM3ToFt3(element.value.replace(/\,/g,'')).toFixed(0);
	}
},

this.swapMetricElementLG = function(elementName) {
	var element = document.getElementById(elementName);
	if(element) {
		if(MetricConversion.isMetric())
			element.value = MetricConversion.convertGToL(element.value.replace(/\,/g,'')).toFixed(0);
		else
			element.value = MetricConversion.convertLToG(element.value.replace(/\,/g,'')).toFixed(0);
	}
},

this.localUpdateDisplay = function(isOnLoad) {
	if(isOnLoad == null)
		isOnLoad = false;
	
	if(!isOnLoad) {
		this.swapMetricElementKmMi("miles_driven");
		this.swapMetricElementKmMi("fuel_economy");
		this.swapMetricElementKmMi("miles_flown");
		this.swapMetricElementM3Ft3("gas_bill");
		this.swapMetricElementLG("fuel_oil_bill");
	}

	this.calcElectric();
	this.calcGas();
	this.calcFuelOil();
	this.calcWaste();
	this.calcVehicle();
	this.calcAir();
	this.calcMeat();
	
	//var strTotal = getInnerHTML("total");
	//if(hasData(strTotal))
	this.displayTotal();
},

this.goMetric = function() {
	setChecked(this.tagidOfRadioBoxMetricName, true);

	MetricConversion.setMetric();

//	setElementsText("co2perYear", " Kilograms of CO<sub>2</sub>/year");
	var str = "&nbsp;Kilograms of CO<sub>2</sub>/year";
	setInnerHTML("kglbElectric", str);
	setInnerHTML("kglbGas", str);
	setInnerHTML("kglbFuelOil", str);
	setInnerHTML("kglbWaste", str);
	setInnerHTML("kglbRecycle", str);
	setInnerHTML("kglbRecycling", str);
	setInnerHTML("kglbHome", str);
	setInnerHTML("kglbVehicle", str);
	setInnerHTML("kglbAir", str);
	setInnerHTML("kglbMeat", str);

	setInnerHTML("miles", "kilometers");
	setInnerHTML("miles2", "kilometers");
	setInnerHTML("miles3", "kilometers");
	setInnerHTML("gallon", "litre");
//	setInnerHTML("feet", "meters");
	setInnerHTML("feet", "hundred cubic meters");
	setInnerHTML("zeroPound", "0 kg");
	setInnerHTML("eighthPound", "1/16 kg");
	setInnerHTML("quarterPound", "1/8 kg");
	setInnerHTML("halfPound", "1/4 kg");
	setInnerHTML("onePound", "1/2 kg");
	setInnerHTML("oneandaquarterPound", "3/4 kg");

	setInnerHTML("zeroPound2", "0 kg");
	setInnerHTML("sevenPound", "3 kg");
	setInnerHTML("fifteenPound", "7 kg");
	setInnerHTML("thirtyPound", "15 kg");
	setInnerHTML("sixtyPound", "30 kg");
	setInnerHTML("seventyfivePound", "40 kg");

	this.localUpdateDisplay();
},
this.goStandard = function() {
	setChecked(this.tagidOfRadioBoxStandardName, true);

	MetricConversion.setStandard();

	var str = "&nbsp;Pounds of CO<sub>2</sub>/year";
//	setElementsText("co2perYear", " Pounds of CO<sub>2</sub>/year");
	setInnerHTML("kglbElectric", str);
	setInnerHTML("kglbGas", str);
	setInnerHTML("kglbFuelOil", str);
	setInnerHTML("kglbWaste", str);
	setInnerHTML("kglbRecycle", str);
	setInnerHTML("kglbRecycling", str);
	setInnerHTML("kglbHome", str);
	setInnerHTML("kglbVehicle", str);
	setInnerHTML("kglbAir", str);
	setInnerHTML("kglbMeat", str);

	setInnerHTML("miles", "miles");
	setInnerHTML("miles2", "miles");
	setInnerHTML("miles3", "miles");
	setInnerHTML("gallon", "gallon");
//	setInnerHTML("feet", "feet");
	setInnerHTML("feet", "therm (hundred cubic feet)");
	setInnerHTML("zeroPound", "0 lb");
	setInnerHTML("eighthPound", "1/8 lb");
	setInnerHTML("quarterPound", "1/4 lb");
	setInnerHTML("halfPound", "1/2 lb");
	setInnerHTML("onePound", "1 lb");
	setInnerHTML("oneandaquarterPound", "1 1/4 lb");

	setInnerHTML("zeroPound2", "0 lb");
	setInnerHTML("sevenPound", "7.5 lb");
	setInnerHTML("fifteenPound", "15 lb");
	setInnerHTML("thirtyPound", "30 lb");
	setInnerHTML("sixtyPound", "60 lb");
	setInnerHTML("seventyfivePound", "75 lb");

	this.localUpdateDisplay();
},

this.setDivTotal = function(str) {
	var mapInfo = '';
	if (hasData(str)) {
		mapInfo = '<table align="center" class="tblTotal">';
		mapInfo += '<tr><td class="header">Your Total Carbon Footprint</td></tr>';
		mapInfo += '<tr><td>';
		mapInfo += str;
		mapInfo += '</td></tr></table>';
	}

	setInnerHTML("total", mapInfo);
},

this.displayTotal = function() {
	var msg = 'Your annual CO<sub>2</sub> emissions are ';
	var total = 0;
	total += parseInt(getInnerHTML('electric_co2').replace(/\,/g,''));
//	alert('.' + getElementValue('electric_co2') + '.');
	total += parseInt(getInnerHTML('gas_co2').replace(/\,/g,''));
	total += parseInt(getInnerHTML('fuel_oil_co2').replace(/\,/g,''));
	total += parseInt(getInnerHTML('total_waste-recycling').replace(/\,/g,''));
	total += parseInt(getInnerHTML('vehicle_co2').replace(/\,/g,''));
	total += parseInt(getInnerHTML('air_co2').replace(/\,/g,''));
	total += parseInt(getInnerHTML('total_meat').replace(/\,/g,''));

	for (var i = 0; i < this._calcItems.length; i++) {
		var calcItem = this._calcItems[i];
		if(calcItem != null)
			total += calcItem.displayTotal();
	}

	msg += addCommas(total.toFixed(0));
	msg += ' ';
	msg += MetricConversion.getKgLbText(true);
	msg += '.';
	
	setInnerHTML(this.tagidOfTotalField, msg);
	
	return false;
},

	this.loadState = function() {
		var loadedState = false;
		var i = 0;
		var str = '';
		var calcitems = GACookies.getCookie(this._saveStateCookieName);
		var items = calcitems.split('|');
		//alert(items);
		if(items && items.length > 0) {
			loadedState = true;
			for (i=0; i < items.length-1; i++) {
				switch(i) {
				case 0:
					setElementValue("number_of_people", items[i]);
					break;
				case 1:
					setElementValue("electric_bill", items[i]);
					break;
				case 2:
					setElementValue("electric_price", items[i]);
					break;
				case 3:
					setElementValue("gas_bill", items[i]);
					break;
				case 4:
					setElementValue("gas_price", items[i]);
					break;
				case 5:
					setElementValue("fuel_oil_bill", items[i]);
					break;
				case 6:
					setElementValue("fuel_oil_price", items[i]);
					break;
				case 7:
					setRadioCheckedValue(document.frmMain.meat, items[i]);
					break;
				case 8:
					setRadioCheckedValue(document.frmMain.waste, items[i]);
					break;
				case 9:
					setRadioCheckedValue(document.frmMain.recycle, items[i]);
					break;
				case 10:
					setElementValue("miles_driven", items[i]);
					break;
				case 11:
					setElementValue("fuel_economy", items[i]);
					break;
				case 12:
					setElementValue("miles_flown", items[i]);
					break;
				}
			}
		}

		for (i = 0; i < this._calcItems.length; i++) {
			var calcItem = this._calcItems[i];
			if(calcItem != null && calcItem.loadState) {
				calcItem.loadState();
				loadedState = true;
			}
		}

		return loadedState;
	},
	this.saveState = function() {
		var str = '';
		str += getElementValue("number_of_people");
		if(hasData(str)) {
			str += "|";
			str += getElementValue("electric_bill");
			str += "|";
			str += getElementValue("electric_price");
			str += "|";
			str += getElementValue("gas_bill");
			str += "|";
			str += getElementValue("gas_price");
			str += "|";
			str += getElementValue("fuel_oil_bill");
			str += "|";
			str += getElementValue("fuel_oil_price");
			str += "|";
			str += getRadioCheckedValue(document.frmMain.meat);
			str += "|";
			str += getRadioCheckedValue(document.frmMain.waste);
			str += "|";
			str += getRadioCheckedValue(document.frmMain.recycle);
			str += "|";
			str += getElementValue("miles_driven");
			str += "|";
			str += getElementValue("fuel_economy");
			str += "|";
			str += getElementValue("miles_flown");
			str += "|";
			
			//alert(str);
			GACookies.setCookie(this._saveStateCookieName, str);
		}

		for (var i = 0; i < this._calcItems.length; i++) {
			var calcItem = this._calcItems[i];
			if(calcItem != null && calcItem.saveState)
				calcItem.saveState();
		}
		
		return str;
	},

	this.onloadLocal = function() {
		var rdostandard = document.getElementById(this.tagidOfRadioBoxStandardName);
		if(rdostandard != null) {
			if(MetricConversion.isMetric())
				this.goMetric();
		
			this.loadState();
			this.localUpdateDisplay(true);
			if(this.alwaysDisplayTotal)
				this.displayTotal();
		}
	},
	this.onunloadLocal = function() {
		this.saveState();
	}
};

var ecalculator = new EmissionsCalculator();
addLoadEvent(function() {ecalculator.onloadLocal();});
addEvent(window, "onunload", function() {ecalculator.onunloadLocal();});

