
// JavaScript Document
// JavaScript Document
function InitializeCookies(Force){
	var cookieContent;
	//******* house section (include air mile section)
	if (! ExistCookie("houseinput") || Force==true){
		cookieContent = ":";
		cookieContent += "member:0:";
		cookieContent += "heatmethod:1:";	//default to natural gas. 1: natural gas; 2:electric heat; 3: oil
		cookieContent += "electricbill:0:";
		cookieContent += "gasbill:0:";
		cookieContent += "fueloilbill:0:";
		cookieContent += "newspaper:false:";
		cookieContent += "magazine:false:";
		cookieContent += "glass:false:";
		cookieContent += "plastic:false:";
		cookieContent += "aluminum:false:";
		SetCookie("houseinput",cookieContent); 
	}
	//******* end of house section (include air mile section)
	
	//******* house reduce section
	if (! ExistCookie("housereduce") || Force==true){
		cookieContent = ":";
		cookieContent += "heatingthermo:0:";
		cookieContent += "bulbs:0:";
		cookieContent += "refri:false:";
		cookieContent += "furnace:false:";
		cookieContent += "acthermo:0:";
		cookieContent += "window:false:";
		cookieContent += "material:false:";
		cookieContent += "plant:false:";
		SetCookie("housereduce",cookieContent);
	}
	//******* end of house reduce section
	
	//******* for vehicles
	if (! ExistCookie("carinfo") || Force==true){
		cookieContent = ":";
		cookieContent += "carno:1:";
		cookieContent += "car1:0|0|1|0|0|0|0:";	//vehicle type index, actual gas mileage/gallon, No of vehicles, annual driving miles, no of vehicles to be replaced by efficient vehicles, improvement of gas mileage/gallon, few miles to drive
		cookieContent += "carlessmile:0:";
		SetCookie("carinfo",cookieContent);
	}
	//******* end of vehicles
	
	//**** air
	if (! ExistCookie("airinfo") || Force==true){
		cookieContent = ":";
		cookieContent += "airmile:0:";
		SetCookie("airinfo",cookieContent);
	}
	//**** end of air
}

function removeZeroInTextBox(){
	var textBoxes = document.getElementsByTagName("input");
	var i;
	var aBox;
	for(i=0;i<textBoxes.length;i++){
		aBox = textBoxes[i];
		if (aBox.type == "text"){
			if(aBox.value == "0"){
				aBox.value="";
			}
		}
	}
}
function ClearAllInput(){
	DeleteCookie('houseinput');
	DeleteCookie('housereduce');
	var aTable = document.getElementById("carTable");
	if (aTable != null){
		//delete all car rows except the firt row
		var CarNo = ToNumericValue(GetVariableFromCookie("carinfo","carno"));
		var firstCarRow = ReturnFirstCarRowIndex();
		for(i=2;i<=CarNo;i++){
			aTable.deleteRow(firstCarRow+1);
		}
	}
	DeleteCookie('carinfo');
	DeleteCookie('airinfo');
}
function ClearCarInput(){
	var aTable = document.getElementById("carTable");
	if (aTable != null){
		//delete all car rows except the firt row
		var CarNo = ToNumericValue(GetVariableFromCookie("carinfo","carno"));
		var firstCarRow = ReturnFirstCarRowIndex();
		for(i=2;i<=CarNo;i++){
			aTable.deleteRow(firstCarRow+1);
		}
	}
	DeleteCookie('carinfo');
}
function ClearCarActionInput(){
	var CarNo = ToNumericValue(GetVariableFromCookie("carinfo","carno"));
	var ss;
	var thisCarInfo;
	var i;
	var k;
	var aComponent;
	SetVariableToCookie("carinfo","carlessmile","0");
	for (i=1;i<=CarNo;i++){
		thisCarInfo = GetVariableFromCookie("carinfo","car"+i)
		//vehicle type index, 
		//actual gas mileage/gallon, 
		//No of vehicles, 
		//annual driving miles, 
		//no of vehicles to be replaced by efficient vehicles, 
		//improvement of gas mileage/gallon
		//few miles to drive
		ss = thisCarInfo.split("|");
		ss[4] = "1";
		ss[5] = "0";
		ss[6] = "0"
		thisCarInfo = ss[0];
		for(k=1;k<ss.length;k++){
			thisCarInfo += "|"+ss[k];
		}
		SetVariableToCookie("carinfo","car"+i,thisCarInfo);
	}
	InitializePageComponents();
}
function InitializePageComponents(){
	InitializeCookies(false);
	var aComponent;
	//*******house section
	aComponent = document.getElementById("resHouseMember");
	if (aComponent != null) aComponent.value = GetVariableFromCookie("houseinput","member");
	aComponent = document.getElementById("resHouseHeatMethod");
	if (aComponent != null) aComponent.value = GetVariableFromCookie("houseinput","heatmethod");
	aComponent = document.getElementById("resElectricBill");
	if (aComponent != null) aComponent.value = GetVariableFromCookie("houseinput","electricbill");
	aComponent = document.getElementById("resGasBill");
	if (aComponent != null) aComponent.value = GetVariableFromCookie("houseinput","gasbill");
	aComponent = document.getElementById("resFuelOilBill");
	if (aComponent != null) aComponent.value = GetVariableFromCookie("houseinput","fueloilbill");
	aComponent = document.getElementById("resNewsPaper");
	if (aComponent != null) aComponent.checked = ToBooleanValue(GetVariableFromCookie("houseinput","newspaper"));
	aComponent = document.getElementById("resMagazine");
	if (aComponent != null) aComponent.checked = ToBooleanValue(GetVariableFromCookie("houseinput","magazine"));
	aComponent = document.getElementById("resGlass");
	if (aComponent != null) aComponent.checked = ToBooleanValue(GetVariableFromCookie("houseinput","glass"));
	aComponent = document.getElementById("resPlastic");
	if (aComponent != null) aComponent.checked = ToBooleanValue(GetVariableFromCookie("houseinput","plastic"));
	aComponent = document.getElementById("resAluminum");
	if (aComponent != null) aComponent.checked = ToBooleanValue(GetVariableFromCookie("houseinput","aluminum"));
	//***** end of house section
	
	//**** house reduce section
	aComponent = document.getElementById("resReduceHeatingThermo");
	if (aComponent != null) aComponent.value = GetVariableFromCookie("housereduce","heatingthermo");
	aComponent = document.getElementById("resReduceBulbs");
	if (aComponent != null) aComponent.value = GetVariableFromCookie("housereduce","bulbs");
	if (ToBooleanValue(GetVariableFromCookie("housereduce","refri"))){
		aComponent = document.getElementById("resReduceRadioRefri1");
		if (aComponent != null) aComponent.checked = true;
	}else{
		aComponent = document.getElementById("resReduceRadioRefri2");
		if (aComponent != null) aComponent.checked = true;
	}
	if (ToBooleanValue(GetVariableFromCookie("housereduce","furnace"))){
		aComponent = document.getElementById("resReduceRadioFurnace1");
		if (aComponent != null) aComponent.checked = true;
	}else{
		aComponent = document.getElementById("resReduceRadioFurnace2");
		if (aComponent != null) aComponent.checked = true;
	}
	aComponent = document.getElementById("resReduceACThermo");
	if (aComponent != null) aComponent.value = GetVariableFromCookie("housereduce","acthermo");
	if (ToBooleanValue(GetVariableFromCookie("housereduce","window"))){
		aComponent = document.getElementById("resReduceRadioWindow1");
		if (aComponent != null) aComponent.checked = true;
	}else{
		aComponent = document.getElementById("resReduceRadioWindow2");
		if (aComponent != null) aComponent.checked = true;
	}
	if (ToBooleanValue(GetVariableFromCookie("housereduce","material"))){
		aComponent = document.getElementById("resReduceRadioMaterial1");
		if (aComponent != null) aComponent.checked = true;
	}else{
		aComponent = document.getElementById("resReduceRadioMaterial2");
		if (aComponent != null) aComponent.checked = true;
	}
	if (ToBooleanValue(GetVariableFromCookie("housereduce","plant"))){
		aComponent = document.getElementById("resReduceRadioPlant1");
		if (aComponent != null) aComponent.checked = true;
	}else{
		aComponent = document.getElementById("resReduceRadioPlant2");
		if (aComponent != null) aComponent.checked = true;
	}
	//**** end of house reduce section
		
	//**** air mile section
	aComponent = document.getElementById("airMile");
	if (aComponent != null) aComponent.value = ToNumericValue(GetVariableFromCookie("airinfo","airmile"));
	//***** end of air mile section
	
	//***** car info
	{
		var CarNo = ToNumericValue(GetVariableFromCookie("carinfo","carno"));
		var i;
		var firstRowIndex;
		var aTable = document.getElementById("carTable");
		if (aTable != null){
			for (i=1; i<=CarNo;i++){
				//vehicle type index, 
				//actual gas mileage/gallon, 
				//No of vehicles, 
				//annual driving miles, 
				//no of vehicles to be replaced by efficient vehicles, 
				//improvement of gas mileage/gallon
				//few miles to drive
				if(i!=1){
					//add a car row
					InsertCarRow();
				}
				var myCarInfo = GetVariableFromCookie("carinfo","car"+i);
				firstRowIndex = ReturnFirstCarRowIndex();
				if (firstRowIndex != -1){
					SetCarRowValue(firstRowIndex+i-1,myCarInfo);
				}
			}
		}
	}
	//***** end of car info
	
	//***** car reduce info
	
	{
		//aComponent = document.getElementById("carLessMile");
		//if (aComponent != null) aComponent.value = GetVariableFromCookie("carinfo","carlessmile");
		var CarNo = ToNumericValue(GetVariableFromCookie("carinfo","carno"));
		var i;
		var firstRowIndex;
		var ss;
		for (i=1; i<=CarNo;i++){
				//vehicle type index, 
				//actual gas mileage/gallon, 
				//No of vehicles, 
				//annual driving miles, 
				//no of vehicles to be replaced by efficient vehicles, 
				//improvement of gas mileage/gallon
				//few miles to drive
			var myCarInfo = GetVariableFromCookie("carinfo","car"+i);
			ss = myCarInfo.split("|");
			aComponent = document.getElementById("carInfo1_"+i);
			if (aComponent != null) aComponent.innerHTML = "Vehicle Type:" + VehicleReferences[ss[0]][0] + "; Gas Mileage/Gallon:" + ss[1] + "; Annual Miles:" + ss[3];
			aComponent = document.getElementById("carLessMile"+i);
			if (aComponent != null) aComponent.value = ss[6];
			
			aComponent = document.getElementById("carInfo"+i);
			//if (aComponent != null) aComponent.innerHTML = "Vehicle Type:" + VehicleReferences[ss[0]][0] + "; Gas Mileage/Gallon:" + ss[1] + "; Number of Vehicles:" + ss[2] + "; Annual Miles / Vehicle:" + ss[3];
			if (aComponent != null) aComponent.innerHTML = "Vehicle Type:" + VehicleReferences[ss[0]][0] + "; Gas Mileage/Gallon:" + ss[1] + "; Annual Miles:" + ss[3];
			aComponent = document.getElementById("carReplacementNo"+i);
			if (aComponent != null) aComponent.value = ss[4];
			aComponent = document.getElementById("carReplacementPlusMileage"+i);
			if (aComponent != null) aComponent.value = ss[5];
			
		}
	}
	
	//***** car reduce info
	
	removeZeroInTextBox();
	CalculateEmission();
}

//****** house section page components events
function resHouseMemberChange(){
	//coming from change event 
	var aSelect = document.getElementById("resHouseMember");
	SetVariableToCookie("houseinput","member",aSelect.value);
	CalculateEmission();
}
function resHouseHeatMethodChange(){
	var aSelect = document.getElementById("resHouseHeatMethod");
	SetVariableToCookie("houseinput","heatmethod",aSelect.value);
	CalculateEmission();
}
function resElectricBillChange(e){
	if (e != null) {
		//coming from key up event
		if(e.keyCode != 13){
			// not the return key, so exit
			return 0;
		}
	}
	//coming from change event or keyup event of the return key
	var aSelect = document.getElementById("resElectricBill");
	SetVariableToCookie("houseinput","electricbill",aSelect.value);
	CalculateEmission();
}
function resGasBillChange(){
	var aSelect = document.getElementById("resGasBill");
	SetVariableToCookie("houseinput","gasbill",aSelect.value);
	CalculateEmission();
}
function resFuelOilBillChange(){
	var aSelect = document.getElementById("resFuelOilBill");
	SetVariableToCookie("houseinput","fueloilbill",aSelect.value);
	CalculateEmission();
}
function resNewsPaperClick(){
	var aSelect = document.getElementById("resNewsPaper");
	SetVariableToCookie("houseinput","newspaper",aSelect.checked);
	CalculateEmission();
}
function resMagazineClick(){
	var aSelect = document.getElementById("resMagazine");
	SetVariableToCookie("houseinput","magazine",aSelect.checked);
	CalculateEmission();
}
function resGlassClick(){
	var aSelect = document.getElementById("resGlass");
	SetVariableToCookie("houseinput","glass",aSelect.checked);
	CalculateEmission();
}
function resPlasticClick(){
	var aSelect = document.getElementById("resPlastic");
	SetVariableToCookie("houseinput","plastic",aSelect.checked);
	CalculateEmission();
}
function resAluminumClick(){
	var aSelect = document.getElementById("resAluminum");
	SetVariableToCookie("houseinput","aluminum",aSelect.checked);
	CalculateEmission();
}
//****** endof house section page components events

//***** house reduce section page components events
function resReduceHeatingThermoChange(){
	var aSelect = document.getElementById("resReduceHeatingThermo");
	SetVariableToCookie("housereduce","heatingthermo",aSelect.value);
	CalculateEmission();
}
function resReduceBulbsChange(){
	var aSelect = document.getElementById("resReduceBulbs");
	SetVariableToCookie("housereduce","bulbs",aSelect.value);
	CalculateEmission();
}
function resReduceRadioRefriClick(){
	var aSelect = document.getElementById("resReduceRadioRefri1");
	SetVariableToCookie("housereduce","refri",aSelect.checked);
	CalculateEmission();
}
function resReduceRadioFurnaceClick(){
	var aSelect = document.getElementById("resReduceRadioFurnace1");
	SetVariableToCookie("housereduce","furnace",aSelect.checked);
	CalculateEmission();
}
function resReduceACThermoChange(){
	var aSelect = document.getElementById("resReduceACThermo");
	SetVariableToCookie("housereduce","acthermo",aSelect.value);
	CalculateEmission();
}
function resReduceRadioWindowClick(){
	var aSelect = document.getElementById("resReduceRadioWindow1");
	SetVariableToCookie("housereduce","window",aSelect.checked);
	CalculateEmission();
}
function resReduceRadioMaterialClick(){
	var aSelect = document.getElementById("resReduceRadioMaterial1");
	SetVariableToCookie("housereduce","material",aSelect.checked);
	CalculateEmission();
}
function resReduceRadioPlantClick(){
	var aSelect = document.getElementById("resReduceRadioPlant1");
	SetVariableToCookie("housereduce","plant",aSelect.checked);
	CalculateEmission();
}
//***** end of house reduce section page components events

//****** air mile section page components events
function airMileChange(){
	var aSelect = document.getElementById("airMile");
	SetVariableToCookie("airinfo","airmile",aSelect.value);
	CalculateEmission();
}
//****** end of air mile section page components events

//******* for car event
function carRemoveClick(removeButton){
	DeleteCarRow(removeButton); 
	FormingCarCookie();
	CalculateEmission();
}
function carTypeChange(typeSelect){

	var i;
	var anIndex = ReturnCarRowIndex(typeSelect);
	var aTable = document.getElementById("carTable");
	var allRows = aTable.getElementsByTagName("tr");
	/*	//this column removed, so commented here
	var cpnts = allRows[anIndex].getElementsByTagName("div");
	for(i=0;i<cpnts.length;i++){
		if(cpnts[i].getAttribute('name')=="carAvgMileage"){
			cpnts[i].innerHTML = typeSelect.value;
		}
	}
	*/
	var cpnts = allRows[anIndex].getElementsByTagName("input");
	for(i=0;i<cpnts.length;i++){
		if(cpnts[i].getAttribute('name')=="carActualMileage"){
			//if (cpnts[i].value=="" || cpnts[i].value=="0"){
				cpnts[i].value = typeSelect.value;
			//}
		}
	}
	FormingCarCookie();
	CalculateEmission();
	
}
function carActualMileageChange(gasMileageTextBox){
	FormingCarCookie();
	CalculateEmission();
}
function carNumberChange(carNumberTextBox){
	FormingCarCookie();
	CalculateEmission();
}
function carDrivingMilesChange(carDrivingMilesTextBox){
	FormingCarCookie();
	CalculateEmission();
}
function carLessMileChange(aTextBox){
	//if (aTextBox != null){
	//	SetVariableToCookie("carinfo","carlessmile",aTextBox.value);
	//	CalculateEmission();
	//}
	
	//changed to this at 8/8/2007
	if (aTextBox != null){
		//id is carReplacementPlusMileage1, carReplacementPlusMileage2, etc
		var boxId = aTextBox.getAttribute("id");
		var anId = ToNumericValue(boxId.substr(11,boxId.length-11));
		var thisCarInfo = GetVariableFromCookie("carinfo","car"+anId);
		var i;
		//vehicle type index, 
		//actual gas mileage/gallon, 
		//No of vehicles, 
		//annual driving miles, 
		//no of vehicles to be replaced by efficient vehicles, 
		//improvement of gas mileage/gallon
		//few miles to drive
		var ss = thisCarInfo.split("|");
		if(ToNumericValue(aTextBox.value) == 0){
			aTextBox.value = "0";
		}
		if (ToNumericValue(aTextBox.value) > ToNumericValue(ss[3])){
			aTextBox.value = ss[3];
		}else{
			ss[6] = aTextBox.value;
		}
		thisCarInfo = ss[0];
		for(i=1;i<ss.length;i++){
			thisCarInfo += "|"+ss[i];
		}
		SetVariableToCookie("carinfo","car"+anId,thisCarInfo);
		CalculateEmission();
	}
}
function carReplacementNoChange(aTextBox){
	if (aTextBox != null){
		//id is carReplacementNo1, carReplacementNo2, etc
		var boxId = aTextBox.getAttribute("id");
		var anId = ToNumericValue(boxId.substr(16,boxId.length-16));
		var thisCarInfo = GetVariableFromCookie("carinfo","car"+anId);
		var i;
		//vehicle type index, 
		//actual gas mileage/gallon, 
		//No of vehicles, 
		//annual driving miles, 
		//no of vehicles to be replaced by efficient vehicles, 
		//improvement of gas mileage/gallon
		//few miles to drive
		var ss = thisCarInfo.split("|");
		if(ToNumericValue(aTextBox.value) == 0){
			aTextBox.value = "0";
		}
		if (ToNumericValue(aTextBox.value)>ToNumericValue(ss[2])){
			aTextBox.value = ToNumericValue(ss[2]);
			ss[4] = ss[2];
		}else{
			ss[4] = aTextBox.value;
		}
		thisCarInfo = ss[0];
		for(i=1;i<ss.length;i++){
			thisCarInfo += "|"+ss[i];
		}
		SetVariableToCookie("carinfo","car"+anId,thisCarInfo);
		CalculateEmission();
	}
}
function carReplacementPlusMileageChange(aTextBox){
	if (aTextBox != null){
		//id is carReplacementPlusMileage1, carReplacementPlusMileage2, etc
		var boxId = aTextBox.getAttribute("id");
		var anId = ToNumericValue(boxId.substr(25,boxId.length-25));
		var thisCarInfo = GetVariableFromCookie("carinfo","car"+anId);
		var i;
		//vehicle type index, 
		//actual gas mileage/gallon, 
		//No of vehicles, 
		//annual driving miles, 
		//no of vehicles to be replaced by efficient vehicles, 
		//improvement of gas mileage/gallon
		////few miles to drive
		var ss = thisCarInfo.split("|");
		if(ToNumericValue(aTextBox.value) == 0){
			aTextBox.value = "0";
		}
		ss[5] = aTextBox.value;
		thisCarInfo = ss[0];
		for(i=1;i<ss.length;i++){
			thisCarInfo += "|"+ss[i];
		}
		SetVariableToCookie("carinfo","car"+anId,thisCarInfo);
		CalculateEmission();
	}
}
//******* end of car event

function CalculateEmission(){
	var headTotalCO = 0;
	var headTotalDollar = 0;
	var aComponent;
	var anInput;
	var anEmission;
	var houseMembers;
	var houseHeatMethod;
	var houseEmission;
	var gasHeatingEmission;
	var electricHeatingEmission;
	var fueloilHeatingEmission;
	var carEmission;
	var carEmissionReduced;
	var aFlag;
	var tmpInput;
	var aMessage;
	
	//****** house section
	houseEmission = 0;
	//waste from house people number
	anInput = ToNumericValue(GetVariableFromCookie("houseinput","member"));
	houseMembers = anInput;	// for later use
	anEmission = anInput * NationRef_WasteCO2PerPerson;
	aComponent=document.getElementById("resHouseMemberCO");
	if (aComponent != null) aComponent.innerHTML ="";	// NumberToString(anEmission/2.20462262,0);
	aComponent=document.getElementById("resWasteCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	houseEmission += anEmission;
	headTotalCO += anEmission;
	
	anInput = ToNumericValue(GetVariableFromCookie("houseinput","heatmethod"));
	houseHeatMethod = anInput;	//for later use
	aComponent=document.getElementById("resHouseHeatMethodCO");
	if (aComponent != null) aComponent.innerHTML = "";
	
	//electric bill
	anInput = ToNumericValue(GetVariableFromCookie("houseinput","electricbill"));
	anEmission = ((anInput-CityRef_ElectricityMonthlyServiceCharge) / (CityRef_KwhPrice+CityRef_KwhDeliveryCharge)) * NationRef_ElectricityEmissionFactor * 12;
	if (anEmission < 0){
		anEmission = 0;
	}
	electricHeatingEmission = anEmission; // for later use
	aComponent=document.getElementById("resElectricBillCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	houseEmission += anEmission;
	headTotalCO += anEmission;
	//gas bill
	anInput = ToNumericValue(GetVariableFromCookie("houseinput","gasbill"));
	anEmission = (anInput / CityRef_NatGasPrice) * NationRef_NatGasEmissionFactor * 12;
	gasHeatingEmission = anEmission;	//for later use
	aComponent=document.getElementById("resGasBillCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	houseEmission += anEmission;
	headTotalCO += anEmission;
	//fuel oil bill
	anInput = ToNumericValue(GetVariableFromCookie("houseinput","fueloilbill"));
	anEmission = (anInput / CityRef_FuelOilPrice) * NationRef_FuelOilEmissionFactor * 12;
	fueloilHeatingEmission = anEmission; // for later use
	aComponent=document.getElementById("resFuelOilBillCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	houseEmission += anEmission;
	headTotalCO += anEmission;
	
	var recycleCO = 0;
	//recycling news paper
	anInput = ToBooleanValue(GetVariableFromCookie("houseinput","newspaper"));
	if (anInput == true){
		anEmission = - houseMembers * NationRef_CO2SavingRecycNewspaper;
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resNewsPaperCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	recycleCO += anEmission;
	headTotalCO += anEmission;
	//recycling magazines
	anInput = ToBooleanValue(GetVariableFromCookie("houseinput","magazine"));
	if (anInput == true){
		anEmission = - houseMembers * NationRef_CO2SavingRecycMagzine;
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resMagazineCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	recycleCO += anEmission;
	headTotalCO += anEmission;
	//recycling glass
	anInput = ToBooleanValue(GetVariableFromCookie("houseinput","glass"));
	if (anInput == true){
		anEmission = -houseMembers * NationRef_CO2SavingRecycGlass;
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resGlassCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	recycleCO += anEmission;
	headTotalCO += anEmission;
	//recycling plastic
	anInput = ToBooleanValue(GetVariableFromCookie("houseinput","plastic"));
	if (anInput == true){
		anEmission = -houseMembers * NationRef_CO2SavingRecycPlastic;
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resPlasticCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	recycleCO += anEmission;
	headTotalCO += anEmission;
	//recycling aluminum
	anInput = ToBooleanValue(GetVariableFromCookie("houseinput","aluminum"));
	if (anInput == true){
		anEmission = -houseMembers * NationRef_CO2SavingRecycAluminum;
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resAluminumCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	recycleCO += anEmission;
	headTotalCO += anEmission;
	
	houseEmission += recycleCO;
	aComponent=document.getElementById("resTotalCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(houseEmission/2.20462262,0)+((houseEmission!=0)?"<br>("+NumberToString(houseEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(houseEmission);
	//******* end of house section
	
	//**** house reduce section, this section must be in the end of all other sections to calculate the reduced total emission
	var houseReduceEmission=0;
	//heating thermometer.  variables used which are calculated: earliergasHeatingEmission,electricHeatingEmission,fueloilHeatingEmission;
	anInput = ToNumericValue(GetVariableFromCookie("housereduce","heatingthermo"));
	aMessage = "";
	if (houseHeatMethod == 1){
		//natural gas
		anEmission = gasHeatingEmission * anInput * CityRef_PercNatGasForHeating / 100 * CityRef_PercFuelOilConsumDecrease/100;
		if (anInput > 0 && gasHeatingEmission == 0){
			aMessage = "Enter your gas bill";
		}
	}else if(houseHeatMethod == 2){
		//electric
		anEmission = electricHeatingEmission * anInput * CityRef_PercElecForHeating / 100 * CityRef_PercFuelOilConsumDecrease/100;
		if (anInput > 0 && electricHeatingEmission == 0){
			aMessage = "Enter your electric bill";
		}
	}else{
		//oil
		anEmission = fueloilHeatingEmission * anInput * CityRef_PercFuelOilForHeating / 100 * CityRef_PercFuelOilConsumDecrease/100;
		if (anInput > 0 && fueloilHeatingEmission == 0){
			aMessage = "Enter your fuel oil bill";
		}
	}
	aComponent=document.getElementById("resReduceHeatingThermoCO");
	if (aMessage != ""){
		if (aComponent != null) aComponent.innerHTML = aMessage;
	}else{
		//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
		if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	}
	houseReduceEmission += anEmission;
	//replacing energy saving bulbs
	anInput = ToNumericValue(GetVariableFromCookie("housereduce","bulbs"));
	anEmission = anInput * NationRef_KwhSavingsPerLamp * NationRef_ElectricityEmissionFactor;
	aComponent=document.getElementById("resReduceBulbsCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	houseReduceEmission += anEmission;
	//replacing refrigirator true/false
	anInput = ToBooleanValue(GetVariableFromCookie("housereduce","refri"));
	if(anInput){
		anEmission = NationRef_KwhSavingsRefrigerator * NationRef_ElectricityEmissionFactor;
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resReduceRadioRefriCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	houseReduceEmission += anEmission;
	//replacing  furnace
	anInput = ToBooleanValue(GetVariableFromCookie("housereduce","furnace"));
	if(anInput){
		if (houseHeatMethod == 1){
			//natural gas
			anEmission = NationRef_BtuSavingsFurnace * NationRef_NatGasEmissionFactor;
		}else if(houseHeatMethod == 2){
			//electric
			anEmission = 0;
		}else{
			//oil
			anEmission = NationRef_BtuSavingsFurnace * NationRef_FuelOilEmissionFactor * (1000000/138874);
			//one gallon of fuel oil produces 138874 BTU
		}
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resReduceRadioFurnaceCO");
	if (anInput && houseHeatMethod == 2){
		if (aComponent != null) aComponent.innerHTML = "No saving from electric heating";
	}else{
		//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
		if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	}
	houseReduceEmission += anEmission;
	//air condition thermometer
	anInput = ToNumericValue(GetVariableFromCookie("housereduce","acthermo"));
	anEmission = anInput * electricHeatingEmission * CityRef_PercElecEmissForAirCond/100 *CityRef_PercAirCondDecrease/100 * CityRef_PercAirCondInUser/100;
	aComponent=document.getElementById("resReduceACThermoCO");
	if(anInput > 0 && electricHeatingEmission == 0){
		if (aComponent != null) aComponent.innerHTML = "Enter your electric bill";
	}else{
		//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
		if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	}
	houseReduceEmission += anEmission;
	//replacing sealed windows
	anInput = ToBooleanValue(GetVariableFromCookie("housereduce","window"));
	if(anInput){
		if (houseHeatMethod == 1){
			//natural gas, 1030466.73 BTU / thousand cubic feet
			anEmission = NationRef_BtuSavingsWindow /1030466.73 * NationRef_NatGasEmissionFactor;
		}else if(houseHeatMethod == 2){
			//electric, 3412.142 BTU/kw
			anEmission = NationRef_BtuSavingsWindow / 3412.142 * NationRef_ElectricityEmissionFactor;
		}else{
			//oil, 138874.158 BTU/gallon
			anEmission = NationRef_BtuSavingsWindow / 138874.158 * NationRef_FuelOilEmissionFactor;
		}
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resReduceRadioWindowCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	houseReduceEmission += anEmission;
	//recycle materials
	anInput = ToBooleanValue(GetVariableFromCookie("housereduce","material"));
	anEmission = 0;
	aFlag = 0;
	if(anInput){
		//check status of recycling news paper
		tmpInput = ToBooleanValue(GetVariableFromCookie("houseinput","newspaper"));
		if (tmpInput == false){
			aFlag ++;
			anEmission += houseMembers * NationRef_CO2SavingRecycNewspaper;
		}
		//check status of recycling magazine
		tmpInput = ToBooleanValue(GetVariableFromCookie("houseinput","magazine"));
		if (tmpInput == false){
			aFlag ++;
			anEmission += houseMembers * NationRef_CO2SavingRecycMagzine;
		}
		//check status of recycling glass
		tmpInput = ToBooleanValue(GetVariableFromCookie("houseinput","glass"));
		if (tmpInput == false){
			aFlag ++;
			anEmission += houseMembers * NationRef_CO2SavingRecycGlass;
		}
		//check status of recycling plastic
		tmpInput = ToBooleanValue(GetVariableFromCookie("houseinput","plastic"));
		if (tmpInput == false){
			aFlag ++;
			anEmission += houseMembers * NationRef_CO2SavingRecycPlastic;
		}
		//check status of recycling aluminum
		tmpInput = ToBooleanValue(GetVariableFromCookie("houseinput","aluminum"));
		if (tmpInput == false){
			aFlag ++;
			anEmission += houseMembers * NationRef_CO2SavingRecycAluminum;
		}
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resReduceRadioMaterialCO");
	if(anInput==true && aFlag == 0){
		if (aComponent != null) aComponent.innerHTML = "No saving since you already recyled all";
	}else{
		//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
		if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	}
	houseReduceEmission += anEmission;
	//plant a tree
	anInput = ToBooleanValue(GetVariableFromCookie("housereduce","plant"));
	if(anInput){
		anEmission = 955/57*2.20462262;
	}else{
		anEmission = 0;
	}
	aComponent=document.getElementById("resReduceRadioPlantCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	houseReduceEmission += anEmission;
		
	aComponent=document.getElementById("houseReduceEmissionCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(houseReduceEmission/2.20462262,0)+((houseReduceEmission!=0)?"<br>("+NumberToString(houseReduceEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(houseReduceEmission);
	aComponent=document.getElementById("houseReducedTotalEmissionCO");
	//if (aComponent != null) aComponent.innerHTML = "Metric Tons: " + NumberToString((houseEmission-houseReduceEmission+recycleCO)/2204.62262,3);
	if (aComponent != null) aComponent.innerHTML = "Tons: " + NumberToString((houseEmission-houseReduceEmission+recycleCO)/2000,3);
	
	aComponent=document.getElementById("offsetHouseHoldCertificates");
	//if (aComponent != null) aComponent.innerHTML = "Metric Tons: " + NumberToString((houseEmission-houseReduceEmission+recycleCO)/2204.62262,3);
	if (aComponent != null) aComponent.innerHTML = Math.ceil(Math.round((houseEmission-houseReduceEmission+recycleCO) / 2000 * 20) / 20);
	aComponent=document.getElementById("offsetHouseHold");
	//if (aComponent != null) aComponent.innerHTML = "Metric Tons: " + NumberToString((houseEmission-houseReduceEmission+recycleCO)/2204.62262,3);
	if (aComponent != null) aComponent.innerHTML = "$" + Math.round((houseEmission-houseReduceEmission+recycleCO) / 2000 * 20);
	
	headTotalCO -= houseReduceEmission;
	
	//set the head house emission dollars
	aComponent=document.getElementById("headHouseDollar");
	if (aComponent != null) aComponent.value = "$" + Math.round((houseEmission-houseReduceEmission) / 2000 * 20);
	//**** end of house reduce section
	
	//***** business section
	//set the head house emission dollars
	aComponent=document.getElementById("headBizDollar");
	if (aComponent != null) aComponent.value = "$0";
	//***** end of business section
	
	//**** car section
	carEmission = 0;
	carEmissionReduced = 0;
	{
		var CarNo = ToNumericValue(GetVariableFromCookie("carinfo","carno"));
		var i;
		var mVehicleTypeIndex;
		var mVehicleGasMileage;
		var mNoVehicle;
		var mDrivingMiles;
		var mNoVehicleReplacement;
		var mPlusGasMileage;
		var mLessMileDriving; // = ToNumericValue(GetVariableFromCookie("carinfo","carlessmile"));
		var myCarInfo;
		var firstRowIndex;
		var carEmissionReducedByLessMile=0;
		var carEmissionReducedByNewCar=0;
		var carMileAfterLessDriving;
		for (i=1; i<=CarNo;i++){
			anEmission = 0;
			//vehicle type index, actual gas mileage/gallon, No of vehicles, annual driving miles, no of vehicles to be replaced by efficient vehicles, improvement of gas mileage/gallon, few miles to drive
			var myCarInfo = GetVariableFromCookie("carinfo","car"+i);
			var infos = myCarInfo.split("|");
			mVehicleGasMileage = ToNumericValue(infos[1]);
			mNoVehicle = ToNumericValue(infos[2]);
			mDrivingMiles = ToNumericValue(infos[3]);
			mNoVehicleReplacement = ToNumericValue(infos[4]);
			mPlusGasMileage = ToNumericValue(infos[5]);
			mLessMileDriving = ToNumericValue(infos[6]);
			if (mVehicleGasMileage == 0){
				anEmission = 0;
			}else{
				anEmission = mNoVehicle * mDrivingMiles / mVehicleGasMileage * NationRef_CO2EmissionPerGasGallon * NationRef_NotCO2Emission;
			}
			carEmission += anEmission;
			//set calculated carbon emission by this car type
			firstRowIndex = ReturnFirstCarRowIndex();
			if (firstRowIndex != -1){
				//SetCarRowEmission(firstRowIndex+(i-1),NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":""));
				SetCarRowEmission(firstRowIndex+(i-1),Math.round(anEmission));
			}
			
			//calculate carEmissionReducedByLessMile, carEmissionReducedByNewCar here
			if (mLessMileDriving < mDrivingMiles){
				carMileAfterLessDriving = mDrivingMiles - mLessMileDriving;
				if (mVehicleGasMileage == 0){
					anEmission = 0;
				}else{
					anEmission = mNoVehicle * mLessMileDriving / mVehicleGasMileage * NationRef_CO2EmissionPerGasGallon * NationRef_NotCO2Emission;
				}
			}else{
				carMileAfterLessDriving = 0;
				if (mVehicleGasMileage == 0){
					anEmission = 0;
				}else{
					anEmission = mNoVehicle * mDrivingMiles / mVehicleGasMileage * NationRef_CO2EmissionPerGasGallon * NationRef_NotCO2Emission;
				}
			}
			aComponent=document.getElementById("carLessMileCO"+i);
			//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
			if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
			carEmissionReducedByLessMile += anEmission;
			if (mVehicleGasMileage == 0){
				anEmission = 0;
			}else{
				anEmission = ((mNoVehicleReplacement<mNoVehicle)?mNoVehicleReplacement:mNoVehicle) * carMileAfterLessDriving / (mVehicleGasMileage) * NationRef_CO2EmissionPerGasGallon * NationRef_NotCO2Emission;
			}
			if ((mVehicleGasMileage + mPlusGasMileage) != 0){
				anEmission -= ((mNoVehicleReplacement<mNoVehicle)?mNoVehicleReplacement:mNoVehicle) * carMileAfterLessDriving / (mVehicleGasMileage + mPlusGasMileage) * NationRef_CO2EmissionPerGasGallon * NationRef_NotCO2Emission;
			}
			carEmissionReducedByNewCar += anEmission;
			aComponent=document.getElementById("carReplacementSavingCO"+i);
			//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
			if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
		}
		aComponent=document.getElementById("carLessMileCO");
		//if (aComponent != null) aComponent.innerHTML = NumberToString(carEmissionReducedByLessMile/2.20462262,0)+((carEmissionReducedByLessMile!=0)?"<br>("+NumberToString(carEmissionReducedByLessMile,0)+" <em>lb</em>)":"");
		if (aComponent != null) aComponent.innerHTML = Math.round(carEmissionReducedByLessMile);
		carEmissionReduced = carEmissionReducedByLessMile + carEmissionReducedByNewCar;
		aComponent=document.getElementById("carReduceEmissionCO");
		//if (aComponent != null) aComponent.innerHTML = NumberToString(carEmissionReduced/2.20462262,0)+((carEmissionReduced!=0)?"<br>("+NumberToString(carEmissionReduced,0)+" <em>lb</em>)":"");
		if (aComponent != null) aComponent.innerHTML = Math.round(carEmissionReduced);
		aComponent=document.getElementById("carReducedTotalEmissionCO");
		//if (aComponent != null) aComponent.innerHTML = NumberToString((carTotalEmission-carEmissionReduced)/2.20462262,0) + (((carTotalEmission-carEmissionReduced)!=0)?"<br>("+NumberToString((carTotalEmission-carEmissionReduced),0)+" <em>lb</em>)":"");
		//if (aComponent != null) aComponent.innerHTML = NumberToString((carEmission-carEmissionReduced)/2.20462262,0) + (((carEmission-carEmissionReduced)!=0)?"<br>("+NumberToString((carEmission-carEmissionReduced),0)+" <em>lb</em>)":"");
		if (aComponent != null) aComponent.innerHTML = Math.round((carEmission-carEmissionReduced));
		
		aComponent=document.getElementById("carTotalEmission");
		//if (aComponent != null) aComponent.innerHTML = NumberToString(carEmission/2.20462262,0)+((carEmission!=0)?"<br>("+NumberToString(carEmission,0)+" <em>lb</em>)":"");
		if (aComponent != null) aComponent.innerHTML = Math.round(carEmission);
	}
	headTotalCO += carEmission-carEmissionReduced;
	
	aComponent=document.getElementById("offsetCarTravelCertificates");
	if (aComponent != null) aComponent.innerHTML = Math.ceil(Math.round((carEmission-carEmissionReduced) / 2000 * 20) / 20);
	aComponent=document.getElementById("offsetCarTravel");
	if (aComponent != null) aComponent.innerHTML = "$"+Math.round((carEmission-carEmissionReduced) / 2000 * 20);
	
	//set car head emission dollars
	aComponent=document.getElementById("headCarDollarCertificates");
	if (aComponent != null) aComponent.value = Math.ceil(Math.round((carEmission-carEmissionReduced) / 2000 * 20) / 20);
	aComponent=document.getElementById("headCarDollar");
	if (aComponent != null) aComponent.value = "$"+Math.round((carEmission-carEmissionReduced) / 2000 * 20);
	//**** end of car section
	
	//****** air mile section
	anInput = ToNumericValue(GetVariableFromCookie("airinfo","airmile"));
	anEmission = anInput * NationRef_AirTravEmisRatePerMile * NationRef_NotCO2Emission;
	aComponent=document.getElementById("airMileCO");
	//if (aComponent != null) aComponent.innerHTML = NumberToString(anEmission/2.20462262,0)+((anEmission!=0)?"<br>("+NumberToString(anEmission,0)+" <em>lb</em>)":"");
	if (aComponent != null) aComponent.innerHTML = Math.round(anEmission);
	
	aComponent=document.getElementById("offsetAirTravelCertificates");
	if (aComponent != null) aComponent.innerHTML = Math.ceil(Math.round(anEmission / 2000 * 20) / 20);
	aComponent=document.getElementById("offsetAirTravel");
	if (aComponent != null) aComponent.innerHTML = "$" + Math.round(anEmission / 2000 * 20);
	
	aComponent=document.getElementById("headAirDollar");
	if (aComponent != null) aComponent.value = "$" + Math.round(anEmission / 2000 * 20);
	
	headTotalCO += anEmission;
	//****** end of air mile section
	
	//convert to metric tons
	//headTotalCO = headTotalCO / 2204.62262;
	headTotalCO = headTotalCO / 2000;
	aComponent=document.getElementById("headTotalCO");
	if (aComponent != null) aComponent.value = NumberToString(headTotalCO,3);
	aComponent=document.getElementById("headTotalDollar");
	headTotalDollar = headTotalCO * 20;
	if (aComponent != null) aComponent.value = "$" + Math.round(headTotalDollar);// + NumberToString(headTotalDollar,0);
	
	aComponent=document.getElementById("offsetOneWeekCertificates");
	if (aComponent != null) aComponent.innerHTML = Math.ceil(Math.round(headTotalDollar / 52) / 20);
	aComponent=document.getElementById("offsetOneWeek");
	if (aComponent != null) aComponent.innerHTML = "$" + Math.round(headTotalDollar / 52);// + NumberToString(headTotalDollar,0);
	aComponent=document.getElementById("offsetOneMonthCertificates");
	if (aComponent != null) aComponent.innerHTML = Math.ceil(Math.round(headTotalDollar / 12) / 20);
	aComponent=document.getElementById("offsetOneMonth");
	if (aComponent != null) aComponent.innerHTML = "$" + Math.round(headTotalDollar / 12);// + NumberToString(headTotalDollar,0);
	aComponent=document.getElementById("offsetThreeMonthsCertificates");
	if (aComponent != null) aComponent.innerHTML = Math.ceil(Math.round(headTotalDollar / 4) / 20);
	aComponent=document.getElementById("offsetThreeMonths");
	if (aComponent != null) aComponent.innerHTML = "$" + Math.round(headTotalDollar / 4);// + NumberToString(headTotalDollar,0);
	aComponent=document.getElementById("offsetSixMonthsCertificates");
	if (aComponent != null) aComponent.innerHTML = Math.ceil(Math.round(headTotalDollar / 2) / 20);
	aComponent=document.getElementById("offsetSixMonths");
	if (aComponent != null) aComponent.innerHTML = "$" + Math.round(headTotalDollar / 2);// + NumberToString(headTotalDollar,0);
	aComponent=document.getElementById("offsetOneYearCertificates");
	if (aComponent != null) aComponent.innerHTML = Math.ceil(Math.round(headTotalDollar) / 20);
	aComponent=document.getElementById("offsetOneYear");
	if (aComponent != null) aComponent.innerHTML = "$" + Math.round(headTotalDollar);// + NumberToString(headTotalDollar,0);
	
}

//******** for car table
	function ReturnCarRowIndex(anElement){
		var aTable = document.getElementById("carTable");
		var allRows = aTable.getElementsByTagName("tr");
		var i;
		var j;
		var aRow;
		var allElements;
		for(i=0;i<allRows.length;i++){
			aRow = allRows[i];
			allElements = aRow.getElementsByTagName(anElement.tagName);
			for(j=0;j<allElements.length;j++){
				if(anElement == allElements[j]) return i;
			}
		}
		return -1;
	}
	function InsertCarRow(){
		var fromCarType = document.getElementById("carType1");
		if (fromCarType != null){
			var carOptions = "";
			var i;
			for(i=0;i<fromCarType.options.length;i++){
				if(i == 0){
					carOptions += '<option value="' + fromCarType.options[i].value + '" selected>' + fromCarType.options[i].text + '</option>';
				}else{
					carOptions += '<option value="' + fromCarType.options[i].value + '">' + fromCarType.options[i].text + '</option>';
				}
			}
			var aTable = document.getElementById("carTable");
			var allRows = aTable.getElementsByTagName("tr");
			var aRow = aTable.insertRow(aTable.getElementsByTagName("tr").length-3);
			aRow.className = GetCookie("gcityname").toLowerCase()+"_row_color";
			var aCell;
			aCell=aRow.insertCell(0);
			aCell.setAttribute("height","40");
			aCell.innerHTML='<select name="carType" onchange="carTypeChange(this)" class="'+GetCookie("gcityname").toLowerCase()+"_input_field"+'">' + carOptions + '</select>&nbsp;<a href="javascript:help(\'includes/app_help.cfm?helpID=21\');"><img src="images/help.gif" width="11" height="11" border="0" /></a>';
			aCell.className = GetCookie("gcityname").toLowerCase()+"_form_text";
			/* // this column removed, so commented here
			aCell = aRow.insertCell(1);
			aCell.setAttribute("height","40");
			aCell.innerHTML='<div name="carAvgMileage" align="center"></div>';
			aCell.className = GetCookie("gcityname").toLowerCase()+"_form_text";
			*/
			aCell = aRow.insertCell(1);
			aCell.setAttribute("height","40");
			aCell.innerHTML='<input type="text" name="carActualMileage" onkeyup="carActualMileageChange(this)" class="'+GetCookie("gcityname").toLowerCase()+"_input_field"+'" value="'+VehicleReferences[0][1]+'">';
			aCell = aRow.insertCell(2);
			aCell.setAttribute("height","40");
			//aCell.innerHTML='<input type="text" name="carNumber" value="1" onkeyup="carNumberChange()" class="'+GetCookie("gcityname").toLowerCase()+"_input_field"+'">';
			//aCell = aRow.insertCell(3);
			//aCell.setAttribute("height","40");
			aCell.innerHTML='<input type="text" name="carDrivingMiles" onkeyup="carDrivingMilesChange()" class="'+GetCookie("gcityname").toLowerCase()+"_input_field"+'">';
			aCell = aRow.insertCell(3);
			aCell.setAttribute("height","40");
			aCell.innerHTML='<div name="carEmission"></div>';
			aCell.className = GetCookie("gcityname").toLowerCase()+"_form_text";
			aCell = aRow.insertCell(4);
			aCell.setAttribute("height","40");
			aCell.innerHTML='<input type="button" name="carRemove" value="Remove" onclick="carRemoveClick(this)"><input type="hidden" name="carNumberEff" value="0"><input type="hidden" name="carPlusMileage" value="0">';
		}
	}
	function SetCarRowValue(rowIndex,aString){
		var aStrings = aString.split("|");
		//vehicle type index, actual gas mileage/gallon, No of vehicles, annual driving miles, no of vehicles to be replaced by efficient vehicles, improvement of gas mileage/gallon, few miles to drive
		var aTable = document.getElementById("carTable");
		var allRows = aTable.getElementsByTagName("tr");
		var aRow = allRows[rowIndex];
		var allComps;
		var i;
		var refMileage;
		//assign car type
		allComps = aRow.getElementsByTagName("select");
		allComps[0].selectedIndex = aStrings[0];
		refMileage = allComps[0].value;
		//assign car average mileage
		allComps = aRow.getElementsByTagName("div");
		for (i=0;i<allComps.length;i++){
			if (allComps[i].getAttribute('name') == "carAvgMileage"){
				allComps[i].innerHTML = refMileage;
			}
		}
		//assign others
		allComps = aRow.getElementsByTagName("input");
		for (i=0;i<allComps.length;i++){
			//assign actual mileage
			if (allComps[i].getAttribute('name') == "carActualMileage"){
				allComps[i].value = aStrings[1];
			}
			//assign no of vehicles
			if (allComps[i].getAttribute('name') == "carNumber"){
				allComps[i].value = aStrings[2];
			}
			//assign annual driving miles
			if (allComps[i].getAttribute('name') == "carDrivingMiles"){
				allComps[i].value = aStrings[3];
			}
			//assign car number for replacement
			if (allComps[i].getAttribute('name') == "carNumberEff"){
				allComps[i].value = aStrings[4];
			}
			//assign Plus mileage of the new replacing car
			if (allComps[i].getAttribute('name') == "carPlusMileage"){
				allComps[i].value = aStrings[5];
			}
			//assign fewer miles to drive
			if (allComps[i].getAttribute('name') == "carLessMile"){
				allComps[i].value = aStrings[6];
			}
		}
	}
	function ReturnFirstCarRowIndex(){
		var aTable = document.getElementById("carTable");
		if (aTable == null){
			return -1;
		}else{
		
			var allRows = aTable.getElementsByTagName("tr");
			var i;
			var cpnts;
			for (i=0;i<allRows.length;i++){
				aRow = allRows[i];
				cpnts = aRow.getElementsByTagName("select");
				if (cpnts.length > 0){
					return i;
				}
			}
			
		}
		
	}
	function SetCarRowEmission(rowIndex,aString){
		var aTable = document.getElementById("carTable");
		if (aTable != null){
			var allRows = aTable.getElementsByTagName("tr");
			var aRow = allRows[rowIndex];
			var allComps;
			var i;
			var refMileage;
			allComps = aRow.getElementsByTagName("div");
			for (i=0;i<allComps.length;i++){
				//assign actual mileage
				if (allComps[i].getAttribute('name') == "carEmission"){
					allComps[i].innerHTML = aString;
				}
			}
		}
	}
	function DeleteCarRow(removeButton){
		var anIndex = ReturnCarRowIndex(removeButton);
		if (anIndex > -1){
			document.getElementById("carTable").deleteRow(anIndex);
		}
	}
	function FormingCarCookie(){
		var aTable = document.getElementById("carTable");
		var allRows = aTable.getElementsByTagName("tr");
		var startCarRow;
		var endCarRow;
		var aRow;
		var cpnts;
		var i;
		var mVehicleTypeIndex;
		var mVehicleGasMileage;
		var mNoVehicle;
		var mDrivingMiles;
		var mNoVehicleReplacement;
		var mPlusGasMileage;
		var mLessMiles;
		var j;
		var carlessmile;
		carlessmile = GetVariableFromCookie("carinfo","carlessmile");
		startCarRow = -1;
		endCarRow = -1;
		for (i=0;i<allRows.length;i++){
			aRow = allRows[i];
			cpnts = aRow.getElementsByTagName("select");
			if (cpnts.length > 0){
				if (startCarRow == -1){
					startCarRow = i;
				}
				endCarRow = i;
			}
		}
		var CookieValue = "";
		for (i=startCarRow; i<=endCarRow;i++){
			//vehicle type index, actual gas mileage/gallon, No of vehicles, annual driving miles, no of vehicles to be replaced by efficient vehicles, improvement of gas mileage/gallon, few miles to drive
			aRow = allRows[i];
			cpnts = aRow.getElementsByTagName("select");
			mVehicleTypeIndex = cpnts[0].selectedIndex;
		
			cpnts = aRow.getElementsByTagName("input");
			for (j=0;j<cpnts.length;j++){
				if (cpnts[j].getAttribute('name') == "carActualMileage"){
					mVehicleGasMileage = ToNumericValue(cpnts[j].value);
				}
				mNoVehicle = 1;
				//if (cpnts[j].getAttribute('name') == "carNumber"){
				//	mNoVehicle = ToNumericValue(cpnts[j].value);
				//}
				if (cpnts[j].getAttribute('name') == "carDrivingMiles"){
					mDrivingMiles = ToNumericValue(cpnts[j].value);
				}
				if (cpnts[j].getAttribute('name') == "carNumberEff"){
					if (ToNumericValue(cpnts[j].value) == 0){
						mNoVehicleReplacement = mNoVehicle;
					}else{
						mNoVehicleReplacement = ToNumericValue(cpnts[j].value);
					}
				}
				if (cpnts[j].getAttribute('name') == "carPlusMileage"){
					mPlusGasMileage = ToNumericValue(cpnts[j].value);
				}
				if (cpnts[j].getAttribute('name') == "carLessMile"){
					mLessMiles = ToNumericValue(cpnts[j].value);
				}
			}
			CookieValue += "car"+(i-startCarRow+1)+":"+mVehicleTypeIndex+"|"+mVehicleGasMileage+"|"+mNoVehicle+"|"+mDrivingMiles+"|"+mNoVehicleReplacement+"|"+mPlusGasMileage+"|"+mLessMiles+":";
			
		}
		CookieValue = ":carno:"+(endCarRow-startCarRow+1)+":"+CookieValue+"carlessmile:"+carlessmile+":";
		DeleteCookie("carinfo","","");
		SetCookie("carinfo",CookieValue);
	}
//******** end of for car table

//******* general functions below
	function ExistCookie(name){
		var uname=name.toUpperCase();
		var start = document.cookie.indexOf( uname + "=" );
		if (start == 0){
			//first cookie
			return true;
		}else{
			//not first; try this
			start = document.cookie.indexOf( "; " + uname + "=" );
			if (start != -1)return true;
		}
		return false;
	}
	
	function DeleteCookie( name, path, domain ) {
		name=name.toUpperCase();
		if ( GetCookie( name ) != "" ) document.cookie = name + "=" + ( ( path ) ? ";path=" + path : "") +	( ( domain ) ? ";domain=" + domain : "" ) +	";expires=Thu, 01-Jan-1970 00:00:01 GMT";
	}


	function SetCookie(CookieName,aValue){
		document.cookie=CookieName.toUpperCase()+"="+escape(aValue);
	}
	
	function GetCookie( name ) {
		var uname=name.toUpperCase();
		var start = document.cookie.indexOf( uname + "=" );
		if (start == 0){
			//first cookie, ok;
		}else{
			//not first; try this
			start = document.cookie.indexOf( "; " + uname + "=" );
			if (start != -1)start=start+2;
		}
		var len = start + uname.length + 1;
		if ( ( !start ) && ( uname != document.cookie.substring( 0, uname.length ) ) )
			{
				return "";
			}
		if ( start == -1 ) return "";
		var end = document.cookie.indexOf( ";", len );
		if ( end == -1 ) end = document.cookie.length;
			return unescape( document.cookie.substring( len, end ) );
	}
	
	function GetVariableFromCookie(cookieName,variableName){
		variableName = variableName.toLowerCase();
		var aString = GetCookie(cookieName);
		var start = aString.indexOf(":"+variableName+":");
		if (start == -1) return "";
		start = start + variableName.length+2;
		var end = aString.indexOf( ":", start );
		if ( end == -1 ) end = aString.length;
		return unescape( aString.substring( start, end ) );
	}
	
	function SetVariableToCookie(cookieName,variableName,aValue){
		var aString = GetCookie(cookieName);
		variableName=variableName.toLowerCase();
		var start = aString.indexOf(":"+variableName+":");
		if (start == -1) {
			aString = aString+":"+variableName+":"+aValue+":";
			DeleteCookie(cookieName,"","");
			SetCookie(cookieName,aString);
		}else{
			var start1 = start + variableName.length+2;
			var end = aString.indexOf( ":", start1 );
			if ( end == -1 ){
				aString = aString.substring( 0, start ) +":"+ variableName+":"+aValue;
			}else{
			 	aString = aString.substring( 0, start ) +":"+ variableName+":"+aValue+ aString.substring( end, aString.length )
			}
			DeleteCookie(cookieName,"","");
			SetCookie(cookieName,aString);
		}
	}
	
	function ToNumericValue(aString){
		if (isNaN(Number(aString)) == true){
			return 0;
		}else{
			return Number(aString);
		}
	}
	
	function NumberToString(aNum,decimalNum){
		if (decimalNum == 0){
			return String(Math.round(aNum));
		}
		var aString = String(aNum);
		var pos = aString.indexOf(".");
		if (pos == -1){
			return aString;
		}else{
			if (decimalNum == 0){
				return aString.substr(0,pos+decimalNum);
			}else{
				return aString.substr(0,pos+decimalNum+1);
			}
		}
	}
	
	function ToBooleanValue(aString){
		aString=aString.toLowerCase();
		if (aString == "true") return true;
		if (aString == "yes") return true;
		if (aString == "t") return true;
		if (aString == "y") return true;
		return false;
	}	


	function DepressReturnKeyCode(e){
		if (e.keyCode == 13){
			try{
				e.preventDefault();	//for NS type of browser
			}catch(err){};
			try{
				e.returnValue = false;	//for Internet Explorer
			}catch(err){};
		}
	}