var idxGas=0;
var idxElec=1;
var idxTempLow=0;
var idxTempMedium=1;
var idxTempHigh=2;
var idxUnder5=0;
var idxUnder10=1;
var idxOver10=2;
var idxLoads0=0;
var idxLoads1to3=1;
var idxLoads4to6=2;
var idxLoads7to9=3;
var idxUnheated=0;
var idxHeated=1;
var cvKwhToDollar=0.0655;
var cvKwhToGJ=0.0036;
var cvElecGJToTonneCO2=0.0067;
var cvKwhToTonneCO2=0.00002412;
var HecBcHydroTonneCO2PerkWh=cvKwhToGJ*cvElecGJToTonneCO2;
var HecNaturalGasDollarsPerGj=12;
var HecNaturalGasTonneCO2PerGj=0.0496;
var HecHeatingOilDollarsPerLitre=1.2;
var HecHeatingOilGjPerLitre=0.0382;
var HecHeatingOilTonneCO2PerLitre=0.002726;
var HecPropaneDollarsPerLitre=0.9;
var HecPropaneGjPerLitre=0.0235;
var HecPropaneTonneCO2PerLitre=0.001544;
var HecPercentageOfTotalEnergyForSpaceHeat=0.58;
var intPrecisionCost=2;
var intPrecisionCO2=3;
var sageCarbonCalc=Class.create();
sageCarbonCalc.prototype={initialize: function(){var sageCarbonCalc=this;
var i, j, k;
this.activePanel=1;
this.activeMode=0;
this.edited=new Array(8);
for(i=0;i<=8;i++){this.edited[i]=false;}
this.data=new Array(2);
for(i=0;i<2;i++){this.data[i]=$H({HecBcHydroPerMonth:0,
HecNaturalGasPerMonth:0,
HecHeatingOilPerMonth:0,
HecPropanePerMonth:0,
MaWaterHeaterPower:1,
MaWaterHeaterSetting:1,
MaWaterHeaterAge:2,
MaWaterHeaterPeople:0,
MaDishwasherLoadsPw:0,
MaDishwasherHeatDry:1,
MaClothesWasherLoadsPw:0,
MaClothesDrierLoadsPw:0,
MaFridgeSize:0,
MaFridgeAge:1,
MaFreezerSize:0,
MaFreezerAge:1,
TrAutoKm:0,
TrAutoKmTimeSpan:12,
TrAutoFuel:0,
TrAutoFuelPrice:1.35,
TrAutoFuelEfficiency:11,
TrFlightCountShort:0,
TrFlightCountMedium:0,
TrFlightCountLong:0,
TrFlightCountExtra:0,
TrFlightAvgCostShort:200,
TrFlightAvgCostMedium:400,
TrFlightAvgCostLong:800,
TrFlightAvgCostExtra:1000,
TotalTonneCO2PerYear:0,
RunningTotalTonneCO2PerYear:0,
EnergyUseTonneCO2PerYear:0,
HecTonneCO2PerYear:0,
HecSpaceHeatTonneCO2PerYear:0,
MaWaterHeaterTonneCO2PerYear:0,
MaDishwasherTonneCO2PerYear:0,
MaClothesWasherTonneCO2PerYear:0,
MaClothesDrierTonneCO2PerYear:0,
MaFridgeTonneCO2PerYear:0,
MaFreezerTonneCO2PerYear:0,
TrAutoTonneCO2PerYear:0,
TrFlightAllTonneCO2PerYear:0,
TotalCostPerYear:0,
RunningTotalCostPerYear:0,
EnergyUseCostPerYear:0,
HecCostPerYear:0,
HecSpaceHeatCostPerYear:0,
MaWaterHeaterCostPerYear:0,
MaDishwasherCostPerYear:0,
MaClothesWasherCostPerYear:0,
MaClothesDrierCostPerYear:0,
MaFridgeCostPerYear:0,
MaFreezerCostPerYear:0,
TrAutoFuelCostPerYear:0,
TrFlightAvgCostAllTotal:0
});}
var aryMaWaterHeater=new Array(2);
for(i=0;i<2;i++){aryMaWaterHeater[i]=new Array(3);
for(j=0;j<4;j++){aryMaWaterHeater[i][j]=new Array(3);
for(k=0;k<4;k++){aryMaWaterHeater[i][j][k]=0;}
}}
aryMaWaterHeater[idxGas][idxTempLow][idxUnder5]=14.97;
aryMaWaterHeater[idxGas][idxTempLow][idxUnder10]=15.83;
aryMaWaterHeater[idxGas][idxTempLow][idxOver10]=16.31;
aryMaWaterHeater[idxGas][idxTempMedium][idxUnder5]=18.69;
aryMaWaterHeater[idxGas][idxTempMedium][idxUnder10]=19.84;
aryMaWaterHeater[idxGas][idxTempMedium][idxOver10]=20.48;
aryMaWaterHeater[idxGas][idxTempHigh][idxUnder5]=22.42;
aryMaWaterHeater[idxGas][idxTempHigh][idxUnder10]=23.85;
aryMaWaterHeater[idxGas][idxTempHigh][idxOver10]=24.65;
aryMaWaterHeater[idxElec][idxTempLow][idxUnder5]=1581;
aryMaWaterHeater[idxElec][idxTempLow][idxUnder10]=1618;
aryMaWaterHeater[idxElec][idxTempLow][idxOver10]=1657;
aryMaWaterHeater[idxElec][idxTempMedium][idxUnder5]=1771;
aryMaWaterHeater[idxElec][idxTempMedium][idxUnder10]=1812;
aryMaWaterHeater[idxElec][idxTempMedium][idxOver10]=1855;
aryMaWaterHeater[idxElec][idxTempHigh][idxUnder5]=2024;
aryMaWaterHeater[idxElec][idxTempHigh][idxUnder10]=2071;
aryMaWaterHeater[idxElec][idxTempHigh][idxOver10]=2121;
this.MaWaterHeaterLookup=aryMaWaterHeater;
var aryMaWaterHeaterGasOccupantFactor=new Array(3);
for(i=0;i<4;i++){aryMaWaterHeaterGasOccupantFactor[i]=new Array(3);
for(j=0;j<4;j++){aryMaWaterHeaterGasOccupantFactor[i][j]=0;}}
aryMaWaterHeaterGasOccupantFactor[idxTempLow][idxUnder5]=4.3;
aryMaWaterHeaterGasOccupantFactor[idxTempLow][idxUnder10]=4.6;
aryMaWaterHeaterGasOccupantFactor[idxTempLow][idxOver10]=4.8;
aryMaWaterHeaterGasOccupantFactor[idxTempMedium][idxUnder5]=5.7;
aryMaWaterHeaterGasOccupantFactor[idxTempMedium][idxUnder10]=6.2;
aryMaWaterHeaterGasOccupantFactor[idxTempMedium][idxOver10]=6.4;
aryMaWaterHeaterGasOccupantFactor[idxTempHigh][idxUnder5]=7.2;
aryMaWaterHeaterGasOccupantFactor[idxTempHigh][idxUnder10]=7.7;
aryMaWaterHeaterGasOccupantFactor[idxTempHigh][idxOver10]=8;
this.MaWaterHeaterGasOccupantFactorLookup=aryMaWaterHeaterGasOccupantFactor;
var aryMaDishwasherLookup=new Array(2);
for(i=0;i<2;i++){aryMaDishwasherLookup[i]=new Array(4);
for(j=0;j<5;j++){aryMaDishwasherLookup[i][j]=0;}}
aryMaDishwasherLookup[idxUnheated][idxLoads1to3]=34;
aryMaDishwasherLookup[idxUnheated][idxLoads4to6]=86;
aryMaDishwasherLookup[idxUnheated][idxLoads7to9]=140;
aryMaDishwasherLookup[idxHeated][idxLoads1to3]=78;
aryMaDishwasherLookup[idxHeated][idxLoads4to6]=200;
aryMaDishwasherLookup[idxHeated][idxLoads7to9]=310;
this.MaDishwasherLookup=aryMaDishwasherLookup;
var aryMaClothesWasherLookup=new Array(2);
aryMaClothesWasherLookup[idxLoads0]=0;
aryMaClothesWasherLookup[idxLoads1to3]=39;
aryMaClothesWasherLookup[idxLoads4to6]=98;
aryMaClothesWasherLookup[idxLoads7to9]=159;
this.MaClothesWasherLookup=aryMaClothesWasherLookup;
var aryMaClothesDrierLookup=new Array(2);
aryMaClothesDrierLookup[idxLoads0]=0;
aryMaClothesDrierLookup[idxLoads1to3]=260;
aryMaClothesDrierLookup[idxLoads4to6]=650;
aryMaClothesDrierLookup[idxLoads7to9]=1040;
this.MaClothesDrierLookup=aryMaClothesDrierLookup;
var aryMaFridgeLookup=new Array(2);
for(i=0;i<4;i++){aryMaFridgeLookup[i]=new Array(3);
for(j=0;j<3;j++){aryMaFridgeLookup[i][j]=0;}}
aryMaFridgeLookup[1][idxUnder10]=420;
aryMaFridgeLookup[1][idxOver10]=672;
aryMaFridgeLookup[2][idxUnder10]=660;
aryMaFridgeLookup[2][idxOver10]=1026;
aryMaFridgeLookup[3][idxUnder10]=760;
aryMaFridgeLookup[3][idxOver10]=1380;
this.MaFridgeLookup=aryMaFridgeLookup;
var aryMaFreezerLookup=new Array(2);
for(i=0;i<5;i++){aryMaFreezerLookup[i]=new Array(3);
for(j=0;j<3;j++){aryMaFreezerLookup[i][j]=0;}}
aryMaFreezerLookup[1][idxUnder10]=400;
aryMaFreezerLookup[1][idxOver10]=612;
aryMaFreezerLookup[2][idxUnder10]=540;
aryMaFreezerLookup[2][idxOver10]=672;
aryMaFreezerLookup[3][idxUnder10]=780;
aryMaFreezerLookup[3][idxOver10]=1236;
aryMaFreezerLookup[4][idxUnder10]=830;
aryMaFreezerLookup[4][idxOver10]=1296;
this.MaFreezerLookup=aryMaFreezerLookup;
this.TrFlightCO2Short=0.09;
this.TrFlightCO2Medium=0.36;
this.TrFlightCO2Long=1.30;
this.TrFlightCO2Extra=2.08;
this.initialized=true;},
getPropertyValue: function(strName){return(this.data[this.activeMode][strName]);},
setPropertyValue: function(strName, varValue){this.data[this.activeMode][strName]=varValue;},
calculateHomeEnergyConsumption: function(){var data=this.data[this.activeMode];
data.HecCostPerMonth=data.HecBcHydroPerMonth + data.HecNaturalGasPerMonth + data.HecHeatingOilPerMonth + data.HecPropanePerMonth;
data.HecCostPerYear=data.HecCostPerMonth*12;
var HecBcHydroKwhPerYear=(data.HecBcHydroPerMonth*12)/cvKwhToDollar;
var HecBcHydroGJPerYear=HecBcHydroKwhPerYear*cvKwhToGJ;
var HecBcHydroTonneCO2PerYear=HecBcHydroKwhPerYear*HecBcHydroTonneCO2PerkWh;
var HecNaturalGasGJPerYear=(data.HecNaturalGasPerMonth*12)/HecNaturalGasDollarsPerGj;
var HecNaturalGasTonneCO2PerYear=HecNaturalGasGJPerYear*HecNaturalGasTonneCO2PerGj;
var HecHeatingOilLitresPerYear=(data.HecHeatingOilPerMonth*12)/HecHeatingOilDollarsPerLitre;
var HecHeatingOilGJPerYear=HecHeatingOilLitresPerYear*HecHeatingOilGjPerLitre;
var HecHeatingOilTonneCO2PerYear=HecHeatingOilLitresPerYear*HecHeatingOilTonneCO2PerLitre;
var HecPropaneLitresPerYear=(data.HecPropanePerMonth*12)/HecPropaneDollarsPerLitre;
var HecPropaneGJPerYear=HecPropaneLitresPerYear*HecPropaneGjPerLitre;
var HecPropaneTonneCO2PerYear=HecPropaneLitresPerYear*HecPropaneTonneCO2PerLitre;
data.HecGJPerYear=HecBcHydroGJPerYear + HecNaturalGasGJPerYear + HecHeatingOilGJPerYear + HecPropaneGJPerYear;
data.HecTonneCO2PerYear=HecBcHydroTonneCO2PerYear + HecNaturalGasTonneCO2PerYear + HecHeatingOilTonneCO2PerYear + HecPropaneTonneCO2PerYear;
var HecSpaceHeatGJPerYear=data.HecGJPerYear*HecPercentageOfTotalEnergyForSpaceHeat;
data.HecSpaceHeatCostPerYear=data.HecCostPerYear*HecPercentageOfTotalEnergyForSpaceHeat;
data.HecSpaceHeatTonneCO2PerYear=data.HecTonneCO2PerYear*HecPercentageOfTotalEnergyForSpaceHeat;
return data.HecSpaceHeatCostPerYear;},
calculateWaterHeater: function(){var data=this.data[this.activeMode];
var intMaWaterHeaterPower=parseInt(data.MaWaterHeaterPower,10);
var intMaWaterHeaterSetting=parseInt(data.MaWaterHeaterSetting,10);
var intMaWaterHeaterAge=parseInt(data.MaWaterHeaterAge,10);
var intMaWaterHeaterPeople=parseInt(data.MaWaterHeaterPeople,10);
var aryMaWaterHeaterLookup=this.MaWaterHeaterLookup;
switch (intMaWaterHeaterPower){case 0:
data.MaWaterHeaterGjFirstPerson=this.MaWaterHeaterLookup[intMaWaterHeaterPower][intMaWaterHeaterSetting][intMaWaterHeaterAge];
data.MaWaterHeaterGasOccupantFactor=this.MaWaterHeaterGasOccupantFactorLookup[intMaWaterHeaterSetting][intMaWaterHeaterAge];
if(intMaWaterHeaterPeople>0){data.MaWaterHeaterGjAllPeople=data.MaWaterHeaterGjFirstPerson + (data.MaWaterHeaterGasOccupantFactor*intMaWaterHeaterPeople);
data.MaWaterHeaterTonneCO2PerYear=data.MaWaterHeaterGjAllPeople*HecNaturalGasTonneCO2PerGj;
data.MaWaterHeaterCostPerYear=data.MaWaterHeaterGjAllPeople*HecNaturalGasDollarsPerGj;}
else{data.MaWaterHeaterGjAllPeople=0;
data.MaWaterHeaterTonneCO2PerYear=0;
data.MaWaterHeaterCostPerYear=0;}
break;
case 1:
data.MaWaterHeaterKwhFirstPerson=this.MaWaterHeaterLookup[intMaWaterHeaterPower][intMaWaterHeaterSetting][intMaWaterHeaterAge];
data.MaWaterHeaterKwhAllPeople=data.MaWaterHeaterKwhFirstPerson*intMaWaterHeaterPeople;
data.MaWaterHeaterTonneCO2PerYear=data.MaWaterHeaterKwhAllPeople*cvKwhToTonneCO2;
data.MaWaterHeaterCostPerYear=data.MaWaterHeaterKwhAllPeople*cvKwhToDollar;
break;
default:
raiseError("Unrecognized water heater power source " + intTrAutoKmTimeSpan);
break;}
return data.MaWaterHeaterCostPerYear;},
calculateDishwasher: function(){var data=this.data[this.activeMode];
var intMaDishwasherHeatDry=parseInt(data.MaDishwasherHeatDry,10);
var intMaDishwasherLoadsPw=parseInt(data.MaDishwasherLoadsPw,10);
var aryMaDishwasherLookup=this.MaDishwasherLookup;
data.MaDishwasherKwhPerYear=aryMaDishwasherLookup[intMaDishwasherHeatDry][intMaDishwasherLoadsPw];
data.MaDishwasherCostPerYear=data.MaDishwasherKwhPerYear*cvKwhToDollar;
data.MaDishwasherTonneCO2PerYear=data.MaDishwasherKwhPerYear*cvKwhToTonneCO2;
return data.MaDishwasherCostPerYear;},
calculateWasherDrier: function(){var data=this.data[this.activeMode];
var intMaClothesWasherLoadsPw=parseInt(data.MaClothesWasherLoadsPw,10);
var intMaClothesDrierLoadsPw=parseInt(data.MaClothesDrierLoadsPw,10);
var aryMaClothesWasherLookup=this.MaClothesWasherLookup;
var aryMaClothesDrierLookup=this.MaClothesDrierLookup;
data.MaClothesWasherKwhPerYear=aryMaClothesWasherLookup[intMaClothesWasherLoadsPw];
data.MaClothesDrierKwhPerYear=aryMaClothesDrierLookup[intMaClothesDrierLoadsPw];
data.MaClothesWasherCostPerYear=data.MaClothesWasherKwhPerYear*cvKwhToDollar;
data.MaClothesWasherTonneCO2PerYear=data.MaClothesWasherKwhPerYear*cvKwhToTonneCO2;
data.MaClothesDrierCostPerYear=data.MaClothesDrierKwhPerYear*cvKwhToDollar;
data.MaClothesDrierTonneCO2PerYear=data.MaClothesDrierKwhPerYear*cvKwhToTonneCO2;
return data.MaClothesWasherCostPerYear + data.MaClothesDrierCostPerYear;},
calculateFridge: function(){var data=this.data[this.activeMode];
var intMaFridgeSize=parseInt(data.MaFridgeSize,10);
var intMaFridgeAge=parseInt(data.MaFridgeAge,10);
var aryMaFridgeLookup=this.MaFridgeLookup;
data.MaFridgeKwhPerYear=aryMaFridgeLookup[intMaFridgeSize][intMaFridgeAge];
data.MaFridgeCostPerYear=data.MaFridgeKwhPerYear*cvKwhToDollar;
data.MaFridgeTonneCO2PerYear=data.MaFridgeKwhPerYear*cvKwhToTonneCO2;
return data.MaFridgeCostPerYear;},
calculateFreezer: function(){var data=this.data[this.activeMode];
var intMaFreezerSize=parseInt(data.MaFreezerSize,10);
var intMaFreezerAge=parseInt(data.MaFreezerAge,10);
var aryMaFreezerLookup=this.MaFreezerLookup;
data.MaFreezerKwhPerYear=aryMaFreezerLookup[intMaFreezerSize][intMaFreezerAge];
data.MaFreezerCostPerYear=data.MaFreezerKwhPerYear*cvKwhToDollar;
data.MaFreezerTonneCO2PerYear=data.MaFreezerKwhPerYear*cvKwhToTonneCO2;
return data.MaFreezerCostPerYear;},
calculateCar: function(){var data=this.data[this.activeMode];
var intTrAutoKm=parseInt(data.TrAutoKm,10);
var intTrAutoKmTimeSpan=parseInt(data.TrAutoKmTimeSpan,10);
var intTrAutoFuel=parseInt(data.TrAutoFuel,10);
var intTrAutoFuelPrice=parseFloat(data.TrAutoFuelPrice,10);
var intTrAutoFuelEfficiency=parseInt(data.TrAutoFuelEfficiency,10);
var intTrAutoKmPerYear=0;
switch (intTrAutoKmTimeSpan){case 52:
intTrAutoKmPerYear=intTrAutoKm*52;
break;
case 12:
intTrAutoKmPerYear=intTrAutoKm*12;
break;
case 1:
intTrAutoKmPerYear=intTrAutoKm*1;
break;
default:
alert("Unrecognized time period " + intTrAutoKmTimeSpan);
break;}
var fltTonneCO2PerFuelLitre=0;
switch (intTrAutoFuel){case 0:
fltTonneCO2PerFuelLitre=0.0024;
break;
case 1:
fltTonneCO2PerFuelLitre=0.0027;
break;
default:
alert("Unrecognized Auto Fuel " + intTrAutoFuel);
break;}
var intTrAutoFuelLitrePerYear=(intTrAutoKmPerYear/100)*intTrAutoFuelEfficiency;
var intTrAutoFuelCostPerYear=intTrAutoFuelLitrePerYear*intTrAutoFuelPrice;
var intTrAutoTonneCO2PerYear=intTrAutoFuelLitrePerYear*fltTonneCO2PerFuelLitre;
data.TrAutoFuelLitrePerYear=intTrAutoFuelLitrePerYear;
data.TrAutoFuelCostPerYear=intTrAutoFuelCostPerYear;
data.TrAutoTonneCO2PerYear=intTrAutoTonneCO2PerYear;
return data.TrAutoFuelCostPerYear;},
calculateFlights: function(){var data=this.data[this.activeMode];
var intTrFlightCountShort=parseInt(data.TrFlightCountShort,10);
var intTrFlightCountMedium=parseInt(data.TrFlightCountMedium,10);
var intTrFlightCountLong=parseInt(data.TrFlightCountLong,10);
var intTrFlightCountExtra=parseInt(data.TrFlightCountExtra,10);
var fltTrFlightAvgCostShort=parseFloat(data.TrFlightAvgCostShort,10);
var fltTrFlightAvgCostMedium=parseFloat(data.TrFlightAvgCostMedium,10);
var fltTrFlightAvgCostLong=parseFloat(data.TrFlightAvgCostLong,10);
var fltTrFlightAvgCostExtra=parseFloat(data.TrFlightAvgCostExtra,10);
var fltTrFlightAvgCostShortTotal=(intTrFlightCountShort*fltTrFlightAvgCostShort);
var fltTrFlightAvgCostMediumTotal=(intTrFlightCountMedium*fltTrFlightAvgCostMedium);
var fltTrFlightAvgCostLongTotal=(intTrFlightCountLong*fltTrFlightAvgCostLong);
var fltTrFlightAvgCostExtraTotal=(intTrFlightCountExtra*fltTrFlightAvgCostExtra);
var fltTrFlightShortTonneCO2PerYear=intTrFlightCountShort*this.TrFlightCO2Short;
var fltTrFlightMediumTonneCO2PerYear=intTrFlightCountMedium*this.TrFlightCO2Medium;
var fltTrFlightLongTonneCO2PerYear=intTrFlightCountLong*this.TrFlightCO2Long;
var fltTrFlightExtraTonneCO2PerYear=intTrFlightCountExtra*this.TrFlightCO2Extra;
var fltTrFlightAvgCostAllTotal=fltTrFlightAvgCostShortTotal + fltTrFlightAvgCostMediumTotal + fltTrFlightAvgCostLongTotal + fltTrFlightAvgCostExtraTotal;
var fltTrFlightAllTonneCO2PerYear=fltTrFlightShortTonneCO2PerYear + fltTrFlightMediumTonneCO2PerYear + fltTrFlightLongTonneCO2PerYear + fltTrFlightExtraTonneCO2PerYear;
data.TrFlightAvgCostAllTotal=fltTrFlightAvgCostAllTotal;
data.TrFlightAllTonneCO2PerYear=fltTrFlightAllTonneCO2PerYear;
return data.TrFlightAvgCostAllTotal;},
calculateRunningTotalCO2: function(){var data=this.data[this.activeMode];
data.RunningTotalTonneCO2PerYear=data.HecSpaceHeatTonneCO2PerYear;
data.RunningTotalTonneCO2PerYear+=data.MaWaterHeaterTonneCO2PerYear;
data.RunningTotalTonneCO2PerYear+=data.MaDishwasherTonneCO2PerYear;
data.RunningTotalTonneCO2PerYear+=data.MaClothesWasherTonneCO2PerYear;
data.RunningTotalTonneCO2PerYear+=data.MaClothesDrierTonneCO2PerYear;
data.RunningTotalTonneCO2PerYear+=data.MaFridgeTonneCO2PerYear;
data.RunningTotalTonneCO2PerYear+=data.MaFreezerTonneCO2PerYear;
data.RunningTotalTonneCO2PerYear+=data.TrAutoTonneCO2PerYear;
data.RunningTotalTonneCO2PerYear+=data.TrFlightAllTonneCO2PerYear;
data.EnergyUseTonneCO2PerYear=data.HecTonneCO2PerYear;
data.EnergyUseTonneCO2PerYear+=data.TrAutoTonneCO2PerYear;
data.EnergyUseTonneCO2PerYear+=data.TrFlightAllTonneCO2PerYear;
return data.RunningTotalTonneCO2PerYear;},
calculateRunningTotalCost: function(){var data=this.data[this.activeMode];
data.RunningTotalCostPerYear=data.HecSpaceHeatCostPerYear;
data.RunningTotalCostPerYear+=data.MaWaterHeaterCostPerYear;
data.RunningTotalCostPerYear+=data.MaDishwasherCostPerYear;
data.RunningTotalCostPerYear+=data.MaClothesWasherCostPerYear;
data.RunningTotalCostPerYear+=data.MaClothesDrierCostPerYear;
data.RunningTotalCostPerYear+=data.MaFridgeCostPerYear;
data.RunningTotalCostPerYear+=data.MaFreezerCostPerYear;
data.RunningTotalCostPerYear+=data.TrAutoFuelCostPerYear;
data.RunningTotalCostPerYear+=data.TrFlightAvgCostAllTotal;
data.EnergyUseCostPerYear=data.HecCostPerYear;
data.EnergyUseCostPerYear+=data.TrAutoFuelCostPerYear;
data.EnergyUseCostPerYear+=data.TrFlightAvgCostAllTotal;}
};
var objCarbonCalc=new sageCarbonCalc();
var hashNewFormListeners=$H();
Event.observe(window,'load',page_init);
function page_init(){$A($$('div.tabNav')).map(function(objElement){objElement.observe('click',function(event){tabNavStepClick(event, objElement);
});
});
Event.observe('btnNextTop','click',btnNextClick);
Event.observe('btnNextBot','click',btnNextClick);
Event.observe('btnFinishTop','click',btnFinishClick);
Event.observe('btnFinishBot','click',btnFinishClick);
Event.observe('btnNextTip','click',btnNextTipClick);
Event.observe('btnPrevTip','click',btnPrevTipClick);
Event.observe('btnRestart','click',function(){window.location.reload( false );});
Event.observe('btnFlightLength','click',function(){$('pnlFlightLengthExamples').toggle();
$('btnFlightLength').blur();
});
var aryQuestionFormElements=$('frmCalc').getElementsByClassName('eh-trigger');
aryQuestionFormElements = $A(aryQuestionFormElements);
$A(aryQuestionFormElements).map(
function(objElement){var strEventTrigger;
switch (objElement.type){case "text":
strEventTrigger='change';
break;
case "select-one":
strEventTrigger='change';
break;
case "radio":
strEventTrigger='click';
break;
default:
raiseError("Unrecognized type " + objElement.type);
break;}
objElement.observe(strEventTrigger,function(event){handleFormElementChange(event, objElement);
});});
var aryAllTips=$('pnlTips').getElementsByClassName('panelTip');
aryAllTips = $A(aryAllTips);
var aryTipsData=new Array(8);
for(var i=1;i <= 8;i++){
var aryStep1Tips=$('pnlTips').getElementsByClassName('panelTipStep' + i);
aryStep1Tips = $A(aryStep1Tips);
aryTipsData[i]=new Array(2);
aryTipsData[i]['count']=aryStep1Tips.length;
aryTipsData[i]['selected']=get_random_int(aryStep1Tips.length)+1;}
objCarbonCalc.TipsData=aryTipsData;
$('pnlTips').hide();
aryAllTips.invoke('hide');
populateForm('frmCalc');
showTip(1, 1);
$('pnlCalc').show();
handleFormElementChange.bindAsEventListener(handleFormElementChange);}
function populateForm(strFormId){var aryFormElements=$(strFormId).getElements();
var aryDataKeys=objCarbonCalc.data[0].keys();
aryFormElements.each(
function(objElement){if(objElement.name === ''){return;}
if(aryDataKeys.indexOf(objElement.name) == -1){return;}
switch (objElement.type){case "button":
break;
case "text":
case "select-one":
objElement.value=objCarbonCalc.data[0][objElement.name];
break;
case "radio":
if(objElement.value == objCarbonCalc.data[0][objElement.name]){objElement.checked=true;}
break;
default:
raiseError("Unrecognized type " + objElement.type);
return false;
break;}}
);}
function get_random_int(i_int){return parseInt(Math.floor(Math.random()*i_int),10);}
function handleFormElementChange(event, objElement){var varValuePrevious=objCarbonCalc.getPropertyValue(objElement.name);
var varValue;
switch (true){case objElement.hasClassName('dt-flt'):
varValue=parseFloat(objElement.value);
if (isNaN(varValue)){varValue=0;}
break;
case objElement.hasClassName('dt-int'):
varValue=parseInt(objElement.value,10);
if (isNaN(varValue)){varValue=0;}
break;
case objElement.hasClassName('dt-txt'):
varValue=String(objElement.value);
break;
default:
raiseError("Unrecognized or no class name on element " + objElement.id);
return false;
break;}
if(varValuePrevious != varValue){objCarbonCalc.setPropertyValue(objElement.name, varValue);
if(objCarbonCalc.activeMode === 0){objCarbonCalc.edited[objCarbonCalc.activePanel]=true;
objCarbonCalc.edited[0]=true;
btnFinishEnable(true);
$('btnNextTop').show();
$('btnNextBot').show();}
calculatePage(objCarbonCalc.activePanel);}}
function btnNextTipClick(){showTip(objCarbonCalc.activePanel, 1);
$('btnNextTip').blur();}
function btnPrevTipClick(){showTip(objCarbonCalc.activePanel, 0);
$('btnPrevTip').blur();}
function btnNextClick(){$('btnNextTop').blur();
$('btnNextBot').blur();
$('btnNextTop').show();
$('btnNextBot').show();
if((objCarbonCalc.edited[0] === false) && (objCarbonCalc.activePanel == 7)){$('btnNextTop').hide();
$('btnNextBot').hide();}
if(objCarbonCalc.activePanel == 8){btnFinishClick();
return false;}
if(objCarbonCalc.activePanel<8){showTip(objCarbonCalc.activePanel+1, 1);
displayPanel(objCarbonCalc.activePanel+1);}}
function btnFinishEnable(blnState){if(blnState){$('btnFinishTop').disabled=false;
$('btnFinishBot').disabled=false;
$('btnFinishTop').removeClassName('btnFinishDisabled');
$('btnFinishBot').removeClassName('btnFinishDisabled');
$('btnFinishTop').addClassName('btnFinish');
$('btnFinishBot').addClassName('btnFinish');}
else{$('btnFinishTop').disabled=true;
$('btnFinishBot').disabled=true;
$('btnFinishTop').removeClassName('btnFinish');
$('btnFinishBot').removeClassName('btnFinish');
$('btnFinishTop').addClassName('btnFinishDisabled');
$('btnFinishBot').addClassName('btnFinishDisabled');}}
function btnFinishClick(){displayPanel(99);
$('pnlQuestionsWrapper').hide();
$('pnlTips').hide();
$$('div.panelSummaryDetail').invoke('hide');
$('pnlSummaryWrapper').show();
for(i=2;i<=8;i++){$('pnlSummaryHead'+i).update($('pnlStep'+i+'Head').innerHTML);
if(objCarbonCalc.edited[i] === true){var strFormElements=$('pnlStep'+i).innerHTML;
var objFormFragment=createHtmlFragment("<form id='qwertyuiopasdfghjkl'>" + strFormElements + "</form>");
var aryFormElements=$(objFormFragment).getElements();
aryFormElements.each(
function(objElement){var strRegex='(for|id)="?' + objElement.id + '"?';
var strReplace='$1="'+ objElement.id + '-summary"';
var objRegex=new RegExp(strRegex, "igm");
strFormElements=strFormElements.replace(objRegex,strReplace);});
strFormElements=strFormElements.replace(/\beh-trigger\b/igm,'eh-trigger-summary');
new $('pnlSummaryNewEdit'+i).update("");
new Insertion.Top('pnlSummaryNewEdit'+i, strFormElements);
$('pnlSummaryEdited'+i).show();}
else{$('pnlSummaryStatic'+i).show();}}
var aryNewElements=$('frmSummary').getElementsByClassName('eh-trigger-summary');
aryNewElements = $A(aryNewElements);
aryNewElements.map(
function(objElement){var strEventTrigger;
switch (objElement.type){case "text":
strEventTrigger='change';
break;
case "select-one":
strEventTrigger='change';
break;
case "radio":
strEventTrigger='click';
break;
default:
raiseError("Unrecognized type " + objElement.type);
break;}
var aryListenersKeys=hashNewFormListeners.keys();
if(aryListenersKeys.indexOf(objElement.id) > -1){}
var objListener=objElement.observe(strEventTrigger,function(event){handleFormElementChange(event, objElement);
});
hashNewFormListeners[objElement.id]=objListener;});
populateForm('frmSummary');
objCarbonCalc.data[0].each(function(pair){objCarbonCalc.data[1][pair.key]=pair.value;
});
$('numEnergyImpactsCostPerYearSavings').update('$0.00');
$('numEnergyImpactsTonneCO2PerYearSavings').update("0.00");
$('lblSavings').update('Savings');
$('numEnergyImpactsCostPerYearSavings').removeClassName('negative');
$('numEnergyImpactsTonneCO2PerYearSavings').removeClassName('negative');
if(objCarbonCalc.edited[1] === true){$('numEnergyUseTonneCO2PerYear').update( objCarbonCalc.data[0].EnergyUseTonneCO2PerYear.toFixed(intPrecisionCO2));}
else{$('numEnergyUseTonneCO2PerYear').update( objCarbonCalc.data[0].RunningTotalTonneCO2PerYear.toFixed(intPrecisionCO2));}
$('pnlSummaryWrapper').show();
objCarbonCalc.activeMode=1;
$('btnFinishTop').blur();
$('btnFinishBot').blur();}
function createHtmlFragment(html){var tmp=document.createElement("div");
tmp.innerHTML=html;
return tmp.firstChild;}
function createHtmlFormFragment(html){var tmp=document.createElement("form");
tmp.innerHTML=html;
return tmp.firstChild;}
function htmlEncode(strHTML){var strHTMLEncoded=strHTML.replace(/</gim, '&lt;');
strHTMLEncoded=strHTMLEncoded.replace(/>/gim, '&gt;');
return strHTMLEncoded}
function tabNavStepClick(event, objElement){var strElementId=objElement.id;
var intTabNumClicked=strElementId.substring(strElementId.length -1);
$('btnNextTop').show();
$('btnNextBot').show();
if((objCarbonCalc.edited[0] === false) && (intTabNumClicked == 8)){$('btnNextTop').hide();
$('btnNextBot').hide();}
if (intTabNumClicked == objCarbonCalc.activePanel){return true;}
showTip(intTabNumClicked, 1);
displayPanel(intTabNumClicked);
return true;}
function displayPanel (intStepPanel){var sPanelName='pnlStep' + intStepPanel;
var sTabName='tabNavStep' + intStepPanel;
if(!$(sPanelName)){alert(sPanelName + " does not exist on the page!");return false;}
$A($$('div.panel')).invoke('hide');
$$('div.tabNav').invoke('removeClassName','tabNavActive');
$(sPanelName).show();
if(parseInt(intStepPanel,10)<99){$(sTabName).addClassName('tabNavActive');
var sPanelHeadName=sPanelName+'Head';
if(!$(sPanelHeadName)){alert(sPanelHeadName + " does not exist on the page!");return false;}
$(sPanelHeadName).show();
$('pnlSummaryWrapper').hide();
$('pnlQuestionsWrapper').show();
$('pnlTips').show();
objCarbonCalc.activeMode=0;}
objCarbonCalc.activePanel=parseInt(intStepPanel,10);
return false;}
function showTip (intStepPanel, intNextPrev){var aryTipsData=objCarbonCalc.TipsData[intStepPanel];
var intcount=objCarbonCalc.TipsData[intStepPanel]['count'];
if(intcount<=1){$('btnNextTip').hide();
$('btnPrevTip').hide();}
else{$('btnNextTip').show();
$('btnPrevTip').show();}
var intselected=objCarbonCalc.TipsData[intStepPanel]['selected'];
if(intNextPrev > 0){intselected++;}
else{intselected--;}
if(intselected>intcount){intselected=1;}
else if(intselected<1){intselected=intcount;}
$$('#pnlTips div.panelTip').invoke('hide');
var nextTipId='pnlStep' + intStepPanel + 'Tip' + intselected;
objCarbonCalc.TipsData[intStepPanel]['selected']=intselected;
$(nextTipId).show();
$('pnlTips').show();
return true;}
function calculatePage(intPage, intMode){var fltPageCost=0;
switch (parseInt(intPage,10)){case 1:
fltPageCost=objCarbonCalc.calculateHomeEnergyConsumption();
break;
case 2:
fltPageCost=objCarbonCalc.calculateWaterHeater();
break;
case 3:
fltPageCost=objCarbonCalc.calculateDishwasher();
break;
case 4:
fltPageCost=objCarbonCalc.calculateWasherDrier();
break;
case 5:
fltPageCost=objCarbonCalc.calculateFridge();
break;
case 6:
fltPageCost=objCarbonCalc.calculateFreezer();
break;
case 7:
fltPageCost=objCarbonCalc.calculateCar();
break;
case 8:
fltPageCost=objCarbonCalc.calculateFlights();
break;
case 99:
objCarbonCalc.calculateHomeEnergyConsumption();
objCarbonCalc.calculateWaterHeater();
objCarbonCalc.calculateDishwasher();
objCarbonCalc.calculateWasherDrier();
objCarbonCalc.calculateFridge();
objCarbonCalc.calculateFreezer();
objCarbonCalc.calculateCar();
objCarbonCalc.calculateFlights();
break;
default:
raiseError("Page unknown: calculatePage("+intPage+", "+intMode+")");
return false;
break;}
if(parseInt(intPage,10)<99){if(fltPageCost == 0){objCarbonCalc.edited[intPage]=false;
intPagesEdited=0;
for(i=1;i<=8;i++){if(objCarbonCalc.edited[i]==true){intPagesEdited++;}}
objCarbonCalc.edited[0]=(intPagesEdited>0)?true:false;}
btnFinishEnable(objCarbonCalc.edited[0]);}
objCarbonCalc.calculateRunningTotalCost();
objCarbonCalc.calculateRunningTotalCO2();
if(objCarbonCalc.activeMode == 1){calculateSummary();}
else{$('numRunningTotalCostPerYear').update('$' + objCarbonCalc.getPropertyValue("RunningTotalCostPerYear").toFixed(intPrecisionCost));
$('numRunningTotalTonneCO2PerYear').update(objCarbonCalc.getPropertyValue("RunningTotalTonneCO2PerYear").toFixed(intPrecisionCO2));}}
function calculateSummary(){var hashQuestionsTotals=objCarbonCalc.data[0];
var hashSummaryTotals=objCarbonCalc.data[1];
var CostPerYearSaving=hashQuestionsTotals['RunningTotalCostPerYear'] - hashSummaryTotals['RunningTotalCostPerYear'];
var TonneCO2PerYearrSaving=hashQuestionsTotals['RunningTotalTonneCO2PerYear'] - hashSummaryTotals['RunningTotalTonneCO2PerYear'];
var strSymbol='';
$('lblSavings').update('Savings');
$('lblSavings').removeClassName('negative');
$('numEnergyImpactsCostPerYearSavings').removeClassName('negative');
$('numEnergyImpactsTonneCO2PerYearSavings').removeClassName('negative');
if(CostPerYearSaving<0){$('lblSavings').update('Increase');
$('lblSavings').addClassName('negative');
$('numEnergyImpactsCostPerYearSavings').addClassName('negative');
$('numEnergyImpactsTonneCO2PerYearSavings').addClassName('negative');}
else if(CostPerYearSaving>0){strSymbol='+';}
$('numEnergyImpactsCostPerYearSavings').update(strSymbol + '$' + CostPerYearSaving.toFixed(intPrecisionCost));
$('numEnergyImpactsTonneCO2PerYearSavings').update(TonneCO2PerYearrSaving.toFixed(intPrecisionCO2));}
function raiseError(strError){Try.these(
function(strError){throw strError;},
function(strError){alert(strError);},
function(strError){JSException(strError);});
alert(strError);}

