var oldUseStandby = 2;
var isModemIntern=true;
var inputSets = new Array();
var resultSets = new Array();
var resultHead = 0; // Index into inputsetarray for first result

for(var i=0; i<7; i++){
	inputSets[i] = new Array();
	resultSets[i] = new Object();
	resultSets[i].TCO = 0;
	resultSets[i].Electricity  = 0;
}

function openPrintWindow(){

	var ecalculator = document.forms['calculator'];
	if(ecalculator.business.value==1){
		var printWindow = window.open('008print.htm', 'print', 'status=no,scrollbars');
	} else {
		var printWindow = window.open('007print.htm', 'print', 'status=no,scrollbars');
	}	
	
}

function storeInput(n){

	var calculator = document.forms['calculator'];
	for(var i=0; i<calculator.length; i++){
		e = calculator.elements[i];
		if((e.type == 'text') || (e.type == 'hidden')){
			inputSets[n][i] = e.value;	
		} else if (e.type == 'select-one'){
			inputSets[n][i] = e.selectedIndex;
		} else if ((e.type == 'checkbox') || (e.type == 'radio')) {
			inputSets[n][i] = e.checked;
		}
	}
}

function restoreInput(values){

	var calculator = document.forms['calculator'];
	for(var i=0; i<calculator.length; i++){
		e = calculator.elements[i];
		if((e.type == 'text' || (e.type == 'hidden'))){
			e.value = values[i];	
		} else if (e.type == 'select-one'){
			e.selectedIndex = values[i];
		} else if ((e.type == 'checkbox') || (e.type == 'radio')) {
			e.checked = values[i];
		}
	}
}

function storeSet() {

	var calculator = document.forms['calculator'];
	storeInput(resultHead);
	resultSets[resultHead].TCO = calculator.editTCO.value;
	resultSets[resultHead].Electricity = calculator.editElectricity.value;

	resultHead++;
	if(resultHead == 6){
		resultHead = 0;
	}
	updateResultHistory();
}

function updateResultHistory(){

	var calculator = document.forms['calculator'];
	for(var i=0; i < 6; i++){
		index = (resultHead - i - 1);
		if(index < 0){
			index = 6 + index;
		}
		calculator['ResultTco' + i].value = resultSets[index].TCO;
		calculator['ResultElectricity' + i].value = resultSets[index].Electricity;
	}
}

function restoreSet(n){

	var index = resultHead - n - 1;
	if(index < 0){
		index = 6 + index;
	}
	if(inputSets[index][0]){
		restoreInput(inputSets[index]);
		updateMonitorSection();
		updateResultHistory();
		Calculate();
	}
	return false;
}

function onChangeSelectPC(){
	
	var ecalculator = document.forms['calculator'];
	var isLaptop=false;
	var Index = ecalculator.selectPC.selectedIndex;
	switch(Index){
		case 0: 			// Home server
			ecalculator.editPCOn.value = '33';
			ecalculator.editPCStandby.value = '2';
			ecalculator.editPCOff.value = '1.4';
			ecalculator.editPCPrice.value = '5160';
			ecalculator.selectMonitor.selectedIndex = 0; // no monitor
			isLaptop = false;
			break;
		case 1:				// Value PC
			ecalculator.editPCOn.value = '41';
			ecalculator.editPCStandby.value = '2.3';
			ecalculator.editPCOff.value = '1.4';
			ecalculator.editPCPrice.value = '5160';
			ecalculator.selectMonitor.selectedIndex = 1; // set monitor system 17" LCD
			isLaptop = false;
			break;
		case 2:				// Multimedia PC
			ecalculator.editPCOn.value = '67';
			ecalculator.editPCStandby.value = '2.2';
			ecalculator.editPCOff.value = '1.5';
			ecalculator.editPCPrice.value = '12370';
			ecalculator.selectMonitor.selectedIndex = 1; // set monitor system 17" LCD
			isLaptop = false;
			break;
		case 3:				// Workstation
			ecalculator.editPCOn.value = '190';
			ecalculator.editPCStandby.value = '7.4';
			ecalculator.editPCOff.value = '1.5';
			ecalculator.editPCPrice.value = '25770';
			ecalculator.selectMonitor.selectedIndex = 1; // set monitor system 17" LCD
			onChangeSelectMonitor();
			isLaptop = false;
			break;			
		case 4:				// Netbook
			ecalculator.editPCOn.value = '5.9';
			ecalculator.editPCStandby.value = '0.9';
			ecalculator.editPCOff.value = '0.5';
			ecalculator.editPCPrice.value = '3920';
			ecalculator.selectMonitor.selectedIndex = 0; // set monitor to none
			isLaptop = true;
			break;			
		case 5:				// Ultraportable notebook
			ecalculator.editPCOn.value = '7.9';
			ecalculator.editPCStandby.value = '1.1';
			ecalculator.editPCOff.value = '0.7';
			ecalculator.editPCPrice.value = '16490';
			ecalculator.selectMonitor.selectedIndex = 0; // set monitor to none
			isLaptop = true;
			break;			
		case 6:				// Avg notebook
			// !! If you change these don't forget to change them also for the
			// calculation of the reference calculation at the end of the 
			// calculate() function!
			ecalculator.editPCOn.value = '12';
			ecalculator.editPCStandby.value = '1.3';
			ecalculator.editPCOff.value = '0.7';
			ecalculator.editPCPrice.value = '8250';
			ecalculator.selectMonitor.selectedIndex = 0; // set monitor to none
			isLaptop = true;
			break;			
		case 7:				// Large notebook
			ecalculator.editPCOn.value = '25.5';
			ecalculator.editPCStandby.value = '1.7';
			ecalculator.editPCOff.value = '0.9';
			ecalculator.editPCPrice.value = '14425';
			ecalculator.selectMonitor.selectedIndex = 0; // set monitor to none
			isLaptop = true;
			break;
		case 8:				// Thin client
			ecalculator.editPCOn.value = '13.9';
			ecalculator.editPCStandby.value = '1.9';
			ecalculator.editPCOff.value = '1.4';
			ecalculator.editPCPrice.value = '2580';
			ecalculator.selectMonitor.selectedIndex = 1; // set monitor to 17" LCD
			isLaptop = false;
			break;
		case 9:				// Integrated desktop computer
			ecalculator.editPCOn.value = '41';
			ecalculator.editPCStandby.value = '2.3';
			ecalculator.editPCOff.value = '1.4';
			ecalculator.editPCPrice.value = '8250';
			ecalculator.selectMonitor.selectedIndex = 0; // set monitor to none
			isLaptop = true;
			break;
		};
	ecalculator['isLaptop'].value = isLaptop == true;
	updateMonitorSection();
}

function updateMonitorSection(){

	var ecalculator = document.forms['calculator'];
	var isLaptop = ecalculator['isLaptop'].value == 'true';

	ecalculator.editMonitorOn.disabled = isLaptop;
	ecalculator.editMonitorOff.disabled = isLaptop;
	ecalculator.editMonitorStandby.disabled = isLaptop;
	ecalculator.selectMonitor.disabled = isLaptop;
	ecalculator.editMonitorPrice.disabled = isLaptop;
	onChangeSelectMonitor();
}

function onChangeSelectMonitor(){
	
	var ecalculator = document.forms['calculator'];
	var Index = ecalculator.selectMonitor.selectedIndex;
	switch(Index){
		case 0: 			// none; 1 Euro = 9.615 SEK
			ecalculator.editMonitorOn.value = '0';
			ecalculator.editMonitorStandby.value = '0';
			ecalculator.editMonitorOff.value = '0';
			ecalculator.editMonitorPrice.value = '0';
			break;
		case 1: 			// System 17" LCD
			ecalculator.editMonitorOn.value = '19';
			ecalculator.editMonitorStandby.value = '0.4';
			ecalculator.editMonitorOff.value = '0.3';
			ecalculator.editMonitorPrice.value = '481';
			break;
		case 2: 			// Value 17" LCD
			ecalculator.editMonitorOn.value = '17';
			ecalculator.editMonitorStandby.value = '0.5';
			ecalculator.editMonitorOff.value = '0.4';
			ecalculator.editMonitorPrice.value = '1442';
			break;
		case 3: 			// System 19" LCD
			ecalculator.editMonitorOn.value = '21';
			ecalculator.editMonitorStandby.value = '1.0';
			ecalculator.editMonitorOff.value = '0.6';
			ecalculator.editMonitorPrice.value = '962';
			break;
		case 4: 			// Value 22" LCD
			ecalculator.editMonitorOn.value = '24';
			ecalculator.editMonitorStandby.value = '0.7';
			ecalculator.editMonitorOff.value = '0.4';
			ecalculator.editMonitorPrice.value = '1923';
			break;
		case 5: 			// Value 24" LCD
			ecalculator.editMonitorOn.value = '26';
			ecalculator.editMonitorStandby.value = '0.7';
			ecalculator.editMonitorOff.value = '0.7';
			ecalculator.editMonitorPrice.value = '2885';
			break;
		case 6: 			// Top 24" LCD
			ecalculator.editMonitorOn.value = '20';
			ecalculator.editMonitorStandby.value = '0.1';
			ecalculator.editMonitorOff.value = '0.1';
			ecalculator.editMonitorPrice.value = '5769';
			break;
		case 7: 			// Top 30" LCD
			ecalculator.editMonitorOn.value = '110';
			ecalculator.editMonitorStandby.value = '1.8';
			ecalculator.editMonitorOff.value = '0.9';
			ecalculator.editMonitorPrice.value = '12500';
			break;
		};
	// update for always on flag
	// onChangeUseAlwaysOn();
};

function onChangeEditUse(){
	
	var ecalculator = document.forms['calculator'];
	var Index = ecalculator.selectUse.selectedIndex;
	switch(Index){
		case 0: 			// Avg home
			ecalculator.editUseOn.value = '2';
			ecalculator.editUseStandby.value = '9';
			ecalculator.editUseOff.value = '13';
			break;
		case 1: 			// Average office
			ecalculator.editUseOn.value = '4';
			ecalculator.editUseStandby.value = '5';
			ecalculator.editUseOff.value = '15';
			break;
		case 2: 			// Busy office
			ecalculator.editUseOn.value = '8';
			ecalculator.editUseStandby.value = '2';
			ecalculator.editUseOff.value = '14';
			break;
		case 3: 			// NEver off
			ecalculator.editUseOn.value = '4';
			ecalculator.editUseStandby.value = '20';
			ecalculator.editUseOff.value = '0';
			break;
		case 4: 			// Always on
			ecalculator.editUseOn.value = '24';
			ecalculator.editUseStandby.value = '0';
			ecalculator.editUseOff.value = '0';
			break;
		};
	// update for always on flag
	// onChangeUseAlwaysOn();
};

function onChangeSelectPrinter() {

	var ecalculator = document.forms['calculator'];
	var Index = ecalculator.selectPrinter.selectedIndex;
	switch(Index){
		case 0: 			// none
			ecalculator.editPrinterPrice.value = '0';
			ecalculator.editPrinterSleep.value = '0';
			ecalculator.editPrinterBwPages.value = '0';
			ecalculator.editPrinterColourPages.value = '0';
			ecalculator.editPrinterBwCosts.value = '0';
			ecalculator.editPrinterColourCosts.value = '0';
			break;
		case 1: 			// Value inktjet
			ecalculator.editPrinterPrice.value = '445';
			ecalculator.editPrinterSleep.value = '1';
			ecalculator.editPrinterBwPages.value = '850';
			ecalculator.editPrinterColourPages.value = '150';
			ecalculator.editPrinterBwCosts.value = '40.5';
			ecalculator.editPrinterColourCosts.value = '120.6';
			break;
		case 2: 			// inkjet duplex
			ecalculator.editPrinterPrice.value = '607';
			ecalculator.editPrinterSleep.value = '1';
			ecalculator.editPrinterBwPages.value = '850';
			ecalculator.editPrinterColourPages.value = '150';
			ecalculator.editPrinterBwCosts.value = '33.2';
			ecalculator.editPrinterColourCosts.value = '113.4';
			break;
		case 3: 			// value laser bw
			ecalculator.editPrinterPrice.value = '1053';
			ecalculator.editPrinterSleep.value = '7';
			ecalculator.editPrinterBwPages.value = '1000';
			ecalculator.editPrinterColourPages.value = '0';
			ecalculator.editPrinterBwCosts.value = '34.8';
			ecalculator.editPrinterColourCosts.value = '0';
			break;
		case 4: 			// laser bw
			ecalculator.editPrinterPrice.value = '1619';
			ecalculator.editPrinterSleep.value = '3';
			ecalculator.editPrinterBwPages.value = '1000';
			ecalculator.editPrinterColourPages.value = '0';
			ecalculator.editPrinterBwCosts.value = '24.3';
			ecalculator.editPrinterColourCosts.value = '0';
			break;
		case 5: 			// laser duplex bw
			ecalculator.editPrinterPrice.value = '3400';
			ecalculator.editPrinterSleep.value = '9';
			ecalculator.editPrinterBwPages.value = '1000';
			ecalculator.editPrinterColourPages.value = '0';
			ecalculator.editPrinterBwCosts.value = '21.1';
			ecalculator.editPrinterColourCosts.value = '0';
			break;
		case 6: 			// laser colour
			ecalculator.editPrinterPrice.value = '2429';
			ecalculator.editPrinterSleep.value = '13';
			ecalculator.editPrinterBwPages.value = '500';
			ecalculator.editPrinterColourPages.value = '500';
			ecalculator.editPrinterBwCosts.value = '23.5';
			ecalculator.editPrinterColourCosts.value = '53.4';
			break;
		case 7: 			// laser colour duplex
			ecalculator.editPrinterPrice.value = '6477';
			ecalculator.editPrinterSleep.value = '13';
			ecalculator.editPrinterBwPages.value = '500';
			ecalculator.editPrinterColourPages.value = '500';
			ecalculator.editPrinterBwCosts.value = '23.5';
			ecalculator.editPrinterColourCosts.value = '24.3';
			break;
		case 8: 			// value mfd (inkjet)
			ecalculator.editPrinterPrice.value = '1621';
			ecalculator.editPrinterSleep.value = '4';
			ecalculator.editPrinterBwPages.value = '850';
			ecalculator.editPrinterColourPages.value = '150';
			ecalculator.editPrinterBwCosts.value = '40.5';
			ecalculator.editPrinterColourCosts.value = '120.6';
			break;
		case 9: 			// mfd duplex (inkjet)
			ecalculator.editPrinterPrice.value = '2834';
			ecalculator.editPrinterSleep.value = '4';
			ecalculator.editPrinterBwPages.value = '850';
			ecalculator.editPrinterColourPages.value = '150';
			ecalculator.editPrinterBwCosts.value = '40.5';
			ecalculator.editPrinterColourCosts.value = '120.6';
			break;
		}
}

function onChangeSelectModem() {

	var ecalculator = document.forms['calculator'];
	var Index = ecalculator.selectModem.selectedIndex;
	switch(Index){
		case 0: 			// none
			ecalculator.editModemPrice.value = 0;
			ecalculator.editModemSleep.value = 0;
			isModemIntern = false;
			break;
		case 1: 			// 56k6 intern
			ecalculator.editModemPrice.value = 113;
			ecalculator.editModemSleep.value = 2;
			isModemIntern = true;
			break;
		case 2: 			// ext USB xDSL
			ecalculator.editModemPrice.value = 566;
			ecalculator.editModemSleep.value = 2;
			isModemIntern = true;
			break;
		case 3: 			// ext xDSL
			ecalculator.editModemPrice.value = 1225;
			ecalculator.editModemSleep.value = 5;
			isModemIntern = false;
			break;	
		}
}

function CheckNumber(field, name){

	var value = parseFloat(field.value);
	if(isNaN(value)){
		alert(name + ' is not defined.');
	}
	return value;
}

function onChangeUseAlwaysOn(){

	var HoursOn, HoursStandby, HoursOff;
	var ecalculator = document.forms['calculator'];
	
	HoursOn = CheckNumber(ecalculator.editUseOn, 'PC actively in use');
	HoursStandby = CheckNumber(ecalculator.editUseStandby, 'Turned on but not in use');
	HoursOff = CheckNumber(ecalculator.editUseOff, 'PC turned off');
	if(isNaN(HoursOn) || isNaN(HoursStandby) || isNaN(HoursOff)){
		return false;
	}
	var AlwaysOn = 0; // ecalculator.checkUseAlwaysOn.checked;
	
	if(AlwaysOn){
		oldUseStandby = HoursStandby;
		ecalculator.editUseOff.value = 0;
		ecalculator.editUseStandby.value = parseInt((HoursStandby + HoursOff)*10)/10;
	} else {
		ecalculator.editUseStandby.value = parseInt(oldUseStandby*10)/10;
		ecalculator.editUseOff.value = parseInt((24 - oldUseStandby - HoursOn)*10)/10;
	}

}

function ResetForm(){

	var ecalculator = document.forms['calculator'];
	ecalculator.reset();
	// onChangeUseAlwaysOn();
	onChangeSelectPC();
}

function Calculate(){

	var DaysOn = 300;
	var PCPowerOn, PCPowerStandby, PCPowerOff
	var MonitorPowerOn, MonitorStandby, MonitorPowerOff
	var UseOn,UseStandby,UseOff
	var ecalculator = document.forms['calculator'];
	var isLaptop = ecalculator['isLaptop'].value == 'true';
	var TCOSplitupEquipment = 0;
	var TCOSplitupConsumables = 0;
	var TCOSplitupElectricity = 0;
	var EnergySplitOn = 0;
	var EnergySplitOff = 0;
	var EnergySplitStandby = 0; 
	var EnergySplitAirco = 0;
	var TotalEnergy = 0;
	
	var isBusiness = 0;
	if(ecalculator.business.value==1){
		isBusiness = 1;
		DaysOn = 240;
	}
	
	// reset values
	ecalculator.editTCO.value = '';
	ecalculator.editElectricity.value = '';
	// ecalculator.editConsumptionMinimum.value = '';
	
	PCPowerOn = CheckNumber(ecalculator.editPCOn, 'The power consumption for the PC in on-mode');
	PCPowerStandby = CheckNumber(ecalculator.editPCStandby, 'The power consumption for the PC in standby-mode');
	PCPowerOff = CheckNumber(ecalculator.editPCOff, 'The power consumption for the PC in off-mode');	
	if(isNaN(PCPowerOn) || isNaN(PCPowerOff) || isNaN(PCPowerStandby)){
		return false;
	}
	
	MonitorPowerOn = CheckNumber(ecalculator.editMonitorOn, 'The power consumption for the monitor in on-mode');
	MonitorPowerStandby = CheckNumber(ecalculator.editMonitorStandby, 'The power consumption for the monitor in standby-mode');
	MonitorPowerOff = CheckNumber(ecalculator.editMonitorOff, 'The power consumption for the monitor in off-mode');
	if(isNaN(MonitorPowerOn) || isNaN(MonitorPowerStandby) || isNaN(MonitorPowerOff)){
		return false;
	}
	
	UseOn = CheckNumber(ecalculator.editUseOn, 'Hours per day in on-mode');
	UseStandby = CheckNumber(ecalculator.editUseStandby, 'Hours per day in standby');
	UseOff = CheckNumber(ecalculator.editUseOff, 'Hours per day in off-mode');
	if(isNaN(UseOn) || isNaN(UseStandby) || isNaN(UseOff)){
		return false;
	}

	// Just a precaution since the monitor should already have zero consumption		
	if(isLaptop){
		MonitorPowerOn = 0;
		MonitorPowerStandby = 0;
		MonitorPowerOff = 0;
	}
		
	if(isBusiness == 0){
		var IncludeModem = ecalculator.cbAddModem.checked;
		var IncludePrinter = ecalculator.cbAddPrinter.checked;
	}
		
	var EnergyOn 
	var EnergyStandby
	var EnergyOff
	
	var EnergySaveMode = ecalculator.selectPowerManagment.selectedIndex;
	switch(EnergySaveMode){
		case 0:  // disabled
			EnergyOn = (MonitorPowerOn + PCPowerOn) * DaysOn * UseOn / 1000;
			EnergyStandby = (MonitorPowerOn + PCPowerOn) * DaysOn * UseStandby / 1000;
			break;
		case 1:  // normal
			EnergyOn = (MonitorPowerOn + PCPowerOn) * DaysOn * UseOn / 1000;
			EnergyStandby = (MonitorPowerStandby + PCPowerStandby) * DaysOn * UseStandby / 1000;
			break;
		case 2:  // savings mode
			// Move 25% off the on hours to standby hours
			EnergyOn = (MonitorPowerOn + PCPowerOn) * DaysOn * 0.75 * UseOn / 1000;
			EnergyStandby = (MonitorPowerStandby + PCPowerStandby) * DaysOn * (UseStandby + 0.25 * UseOn) / 1000;
			break;
	}
	
	EnergyOff = (MonitorPowerOff + PCPowerOff) * DaysOn * UseOff / 1000;
	EnergyOff = EnergyOff + (365-DaysOn) * 24 * (MonitorPowerOff + PCPowerOff) / 1000;
	
	EnergySplitOn = EnergySplitOn + EnergyOn;
	EnergySplitOff = EnergySplitOff + EnergyOff;
	EnergySplitStandby = EnergySplitStandby + EnergyStandby;
	
	var MonthAirco = CheckNumber(ecalculator.editMonthsAirco, 'Months per year cooling is needed');
	if(isNaN(MonthAirco)){
		return false;
	}
	
	var ProductLife = CheckNumber(ecalculator.editProductLife, 'System product life');
	var EuroPerKWh = CheckNumber(ecalculator.editElectricityRate, 'Electricity rate');
	if(isNaN(ProductLife) || isNaN(EuroPerKWh)){
		return false;
	}

	// Printer
	if(isBusiness == 0){
		var PrinterPrice = CheckNumber(ecalculator.editPrinterPrice, 'Printer price');
		var PrinterSleepUse = CheckNumber(ecalculator.editPrinterSleep, 'Print power consumption sleep-mode');
		var PrinterPagesBW = CheckNumber(ecalculator.editPrinterBwPages, 'Printer pages B/W');
		var PrinterPagesColour = CheckNumber(ecalculator.editPrinterColourPages, 'Printer pages colour');
		var PrinterBWCost = CheckNumber(ecalculator.editPrinterBwCosts, 'Printer cost per B/W page');
		var PrinterColourCost = CheckNumber(ecalculator.editPrinterColourCosts, 'Printer cost per colour page');
		if(isNaN(PrinterPrice) || isNaN(PrinterSleepUse) || isNaN(PrinterPagesBW) || isNaN(PrinterPagesColour)  || 
			isNaN(PrinterBWCost) || isNaN(PrinterColourCost)){
			return false;
		}

		var PrinterEnergy = PrinterSleepUse * (365*24) / 1000;
		var PrinterCosts = PrinterPrice / ProductLife + (PrinterPagesBW * PrinterBWCost +
			PrinterPagesColour * PrinterColourCost) / 100;
		var PrinterTCO = (PrinterCosts + PrinterEnergy * EuroPerKWh);
	
		if(IncludePrinter){
			TCOSplitupConsumables = (PrinterPagesBW * PrinterBWCost + PrinterPagesColour * PrinterColourCost) / 100 ;
			TCOSplitupEquipment = PrinterPrice / ProductLife;
			TCOSplitupElectricity = (PrinterEnergy * EuroPerKWh);
			EnergySplitStandby = EnergySplitStandby + PrinterEnergy;
			TotalEnergy = TotalEnergy + PrinterEnergy;
		}
	
		ecalculator.editPrinterTco.value = parseInt(ProductLife * PrinterTCO * 10)/10;
		ecalculator.editPrinterElectricity.value = parseInt(PrinterEnergy * 10) / 10;

		// Modem
		var ModemPrice = CheckNumber(ecalculator.editModemPrice, 'Modem price');
		var ModemSleep = CheckNumber(ecalculator.editModemSleep, 'Modem power consumption in sleep-mode');
		if(isNaN(ModemPrice) || isNaN(ModemSleep)){
			return false;
		}
	
		var ModemEnergy;
		if(isModemIntern){
			ModemEnergy = ModemSleep * (UseOn + UseStandby) * 365 / 1000;
		} else {
			ModemEnergy = ModemSleep * 24 * 365 / 1000;
		}
		var ModemTCO = ModemPrice / ProductLife + ModemEnergy * EuroPerKWh;
	
		if(IncludeModem){
			TCOSplitupEquipment = TCOSplitupEquipment + ModemPrice / ProductLife;
			TCOSplitupElectricity = TCOSplitupElectricity + (ModemEnergy);
			EnergySplitStandby = EnergySplitStandby + ModemEnergy;
			TotalEnergy = TotalEnergy + ModemEnergy;
		}
		
		ecalculator.editModemTco.value = parseInt(ProductLife * ModemTCO * 10) / 10;
		ecalculator.editModemElectricity.value = parseInt(ModemEnergy * 10) / 10;
	}

	// TCO
	TotalEnergy = TotalEnergy + EnergyOn + EnergyStandby + EnergyOff;
	var useUPS = ecalculator.cbUPS.checked;
	if(useUPS){
		TotalEnergy = TotalEnergy + 87;
		EnergySplitStandby = EnergySplitStandby + 87;
	}

	var PCPrice = CheckNumber(ecalculator.editPCPrice, 'Purchase price of the computer');
	var LeaseCost = CheckNumber(ecalculator.editLeasePrice, 'Lease/service contract costs');
	var MonitorPrice = CheckNumber(ecalculator.editMonitorPrice, 'Purchase price of the monitor');
	if(isNaN(EuroPerKWh) || isNaN(ProductLife) || isNaN(PCPrice) || isNaN(MonitorPrice)){
		return false;
	}
	var TCO = 0;
	var isLease = ecalculator.rbLease[1].checked;
	if(isLease){
		TCO = LeaseCost;
	} else {
		TCO = (MonitorPrice + PCPrice) / ProductLife;
	}
	if(IncludePrinter){
		TCO = TCO + PrinterCosts;
	};
	if(IncludeModem){
		TCO = TCO + ModemPrice / ProductLife;
	}

	// Airco adds 30% per month of cooling
	EnergySplitAirco = (MonthAirco / 12) * (TotalEnergy / 3);
	TotalEnergy = TotalEnergy + (MonthAirco / 12) * (TotalEnergy / 3);
	TCO = TCO + TotalEnergy * EuroPerKWh;
	if(useUPS){
		TCO = TCO + 120 / ProductLife;
		TCOSplitupEquipment = TCOSplitupEquipment + 120 / ProductLife;
	}
	TCOSplitupEquipment = TCOSplitupEquipment + (PCPrice + MonitorPrice) / ProductLife;
	TCOSplitupElectricity = TotalEnergy * EuroPerKWh;
	
	ecalculator.editTCO.value = parseInt(ProductLife * TCO * 10)/10;
	ecalculator.editElectricity.value = parseInt(TotalEnergy*10)/10;
	
	ecalculator.TcoSplitEquipment.value = parseInt(ProductLife * TCOSplitupEquipment * 10) / 10;
	ecalculator.TcoSplitEnergy.value = parseInt(ProductLife * TCOSplitupElectricity * 10) / 10;	
	ecalculator.TcoSplitConsumables.value = parseInt(ProductLife * TCOSplitupConsumables * 10) / 10;
	ecalculator.TcoSplitTotal.value = parseInt(ProductLife * (TCOSplitupEquipment+TCOSplitupElectricity+TCOSplitupConsumables) * 10)/10;
	
	ecalculator.EnergySplitOn.value = parseInt(EnergySplitOn * 10) / 10;
	ecalculator.EnergySplitStandby.value = parseInt(EnergySplitStandby * 10) / 10;
	ecalculator.EnergySplitOff.value = parseInt(EnergySplitOff * 10) / 10;
	ecalculator.EnergySplitAirco.value = parseInt(EnergySplitAirco * 10) / 10;
	ecalculator.EnergySplitTotal.value = parseInt((EnergySplitOn+EnergySplitStandby+EnergySplitOff+EnergySplitAirco) * 10) / 10;
	// ecalculator.editTotalTCO.value = parseInt((TCO + ModemTCO + PrinterTCO) * 10) / 10;
	// ecalculator.editTotalElectricity.value = parseInt((TotalEnergy + ModemEnergy + PrinterEnergy) * 10) / 10;
	
}

function onChangeEditUseOn(){
	
	var ecalculator = document.forms['calculator'];
	
	var UseOn = CheckNumber(ecalculator.editUseOn, 'Hours PC used in on-mode');
	var UseStandby = CheckNumber(ecalculator.editUseStandby, 'Hours PC used in standby');
	
	if(isNaN(UseOn) || isNaN(UseStandby)){
		return false;
	}
	var UseOff = 24 - UseOn - UseStandby;
	ecalculator.editUseOff.value = parseInt(UseOff*10) / 10;
}
