
var kWhThreshold_jt = 1000;
var kWhThreshold_jt_txt = "1000";

var isStateCalc;
var isStateModify = false;
var isBacktoCalc = false;
var printpage = null;

var appl = '';

var modifiedIndex = -1;
var oDataElement = parent.fra_cal;
var LIST_WIDTH = 70;
if (!parent.isClientBrouserIE) {
	LIST_WIDTH = 65;
	if (parent.isClientBrouserNN47) {
		LIST_WIDTH = 65;
	}
}

var bgNotValid = "red";
var bgValid = "#EEF0ED";



function displayAppliance(i){
	var oElement = oDataElement.document.frmCalc;
	if (i < 0 ) return;
	oElement.selHD.selectedIndex = arrHD[i];
	oElement.selMD.selectedIndex = arrMD[i];
	oElement.selDM.selectedIndex = arrDM[i];
	oElement.txtQty.value = '1';
	oElement.lblPow.value= ''+arrPower[i]; 
	oElement.lblRate.value= ''+arrRate[i]; 

	if (isBacktoCalc) {oElement.lblRate.value=oldrate;alert('gothere');}
	oElement.lblTip.value= arrTip[i]; 
	computeCost();
}

function polulateSelect(oElement, maxNum){ //, defValue){
	var selected = 0;
	emptySelect(oElement);
	for (i=0; i <= maxNum; i++) {
		var option = new Option(i,i, true, true);
		if (top.isClientBrouserIE50x) 
			oDataElement.addOption(oElement,i,i,i);
		else
			oElement.options[i] = option;
	}
}

function swapThreshold(imgname, newImageSrc) {
	n = arguments[0].toString();
	eval("oDataElement.document." + n + ".src='" + newImageSrc + "'");
}

function setColor(el, bg) {
	if (el.style) el.style.color = bg;
}

function checkThreshold() {
	if (top.applPowerTotal >= kWhThreshold) {
		currentRate = maxThresholdRate;
		swapThreshold("calc_exclamtion_light_grey", "calc_exclamtion.gif");
		swapThreshold("calc_exclamtion_dark_grey", "calc_dark_exclamtion.gif");
		setColor(oDataElement.document.frmCalc.lblkWhTotalHigh, bgNotValid);
	} else {
		currentRate = minThresholdRate;
		swapThreshold("calc_exclamtion_light_grey", "spacer.gif");
		swapThreshold("calc_exclamtion_dark_grey", "spacer.gif");
		setColor(oDataElement.document.frmCalc.lblkWhTotalHigh, bgValid);
	}
	oDataElement.document.frmCalc.lblRate.value = currentRate;
	for (i = 0; i < arrRate.length; i++) {
		arrRate[i] = currentRate;
	}
}

function displayTotals() {
	var oElement = oDataElement.document.frmCalc.lstAppl;
	
	oDataElement.document.frmCalc.lblTotal.value = "$" + convert2Money(''+ top.applTotal);

	if (top.applPowerTotal >= kWhThreshold_jt) {
		oDataElement.document.frmCalc.lblkWhTotalLow.value = kWhThreshold_jt_txt;
		if ( ((Math.round(top.applPowerTotal-kWhThreshold_jt)) <= 0) && (oElement.length != 0) ) {
			oDataElement.document.frmCalc.lblkWhTotalHigh.value = "< 1";
		} else {
			oDataElement.document.frmCalc.lblkWhTotalHigh.value = Math.round(top.applPowerTotal-kWhThreshold_jt);
		}
	} else {
		if ( (Math.round(top.applPowerTotal) <= 0) && (oElement.length != 0) ) {
			oDataElement.document.frmCalc.lblkWhTotalLow.value = "< 1";
		} else {
			oDataElement.document.frmCalc.lblkWhTotalLow.value = Math.round(top.applPowerTotal);
		}
		oDataElement.document.frmCalc.lblkWhTotalHigh.value = "";
	}
}

function addListElement(i){
	if (i < 0 ) return;
	var oElement = oDataElement.document.frmCalc.lstAppl;
	var oElement1 = oDataElement.document.frmCalc;
	var kWh = computekWh();
	var dispkWh = Math.round(kWh);

	if (dispkWh <= 0) {
		dispkWh =  ' < 1';
	} else {
		dispkWh = ' ' + dispkWh;
	}
	
	top.applPowerTotal = top.applPowerTotal + kWh;
	
	checkThreshold();
	
	var cost = computeCost();
	var dispCost = ' $' + cost;

	var kwhSpacer = 7;
	var costSpacer = 7;

	if (dispkWh.length <= 7) {
		kwhSpacer = kwhSpacer-dispkWh.length;
	} else { 
		kwhSpacer=0;
	}
	
	if (dispCost.length <= 7) {
		costSpacer = costSpacer-dispCost.length;
	} else { 
		costSpacer;
	}

	var totalData = spacer(kwhSpacer) +  dispkWh + 'kWh' + spacer((LIST_WIDTH * 0.2)-dispCost.length) + dispCost;
	top.applTotal = top.applTotal + parseFloat(cost);

	var row =  arrAppl[i].substr(0,35) + spacer(LIST_WIDTH);
	row = row.substr(0, (LIST_WIDTH * 0.4)); // sixty % the width should be used.
	row = row + spacer((LIST_WIDTH * 0.4)- totalData.length) + totalData;
	var oOption = new Option(row,i, true, true);
	if (oElement.options[0]!= null){
		if (top.isClientBrouserIE50x) 
			oDataElement.addOption(oElement,row,i,oElement.options.length);
		else
			oElement.options[oElement.options.length] = oOption;
	}
	else {
		if (top.isClientBrouserIE50x) { 
			oDataElement.addOption(oElement,row,i,0);
		} else { 
			oElement.options[0] = oOption;
		}
	}   
	top.storeElement(i,
					oElement.options.length-1, 
					cost,
					oElement1.txtQty.value,
					oElement1.selHD.selectedIndex,
					oElement1.selMD.selectedIndex,
					oElement1.selDM.selectedIndex,
					oElement1.selMY.value,
					oElement1.lblPow.value,
					oElement1.lblRate.value);
	oElement.selectedIndex = oElement.options.length - 1;
	displayTotals();
}

function spacer(n){
	var result='';
	var i;
	for (i=0; i<n; i++)
	result = result + '.';
	return result;
}

/*
function computeCost(){
	var oField = oDataElement.document.frmCalc;
	var result;
	var kwh =   (parseInt(oField.selHD.options[oField.selHD.selectedIndex].text) +  parseFloat(oField.selMD.options[oField.selMD.selectedIndex].text) / 60) *
				parseInt(oField.selDM.options[oField.selDM.selectedIndex].text) *
				parseInt(oField.selMY.value) *
				parseFloat(oField.lblPow.value);
	var cost1 = (parseFloat(oField.lblRate.value) / 100) * kwh * 1.092;
	var cost2 = 1.97 * kwh / 100;
	var cost3 = 1.600 * kwh * 1.092 / 100;
	var cost4 = 0.7 * kwh / 100;
	var cost = (cost1 + cost2 + cost3 + cost4) * parseInt(oField.txtQty.value);
		
	result = convert2Money(''+ cost);
	oField.lblCost.value = result;
	return result;
}
*/

function computeCost(){
	var oField = oDataElement.document.frmCalc;
	var result;
	var kwh =   (parseInt(oField.selHD.options[oField.selHD.selectedIndex].text) +  parseFloat(oField.selMD.options[oField.selMD.selectedIndex].text) / 60) *
				parseInt(oField.selDM.options[oField.selDM.selectedIndex].text) *
				parseInt(oField.selMY.value) *
				parseFloat(oField.lblPow.value);
	
	// ***************************************************************************************
	// KH. Remove option to change months/year. Now an hidden input type
	//              parseInt(oField.selMY.options[oField.selMY.selectedIndex].text) *
	// ***************************************************************************************
	
	// Cost for electricity:   rate X kwh's used X 1.092 [[[divided by 100]]]
	var cost1 = (parseFloat(oField.lblRate.value) / 100) * kwh * 1.042;
	
	// Delivery:  1.817 X kwh's used divided by 100
	// April 19, 2006 - Update 1.97 -> 3.62 some Regulatory charges added, plus 4.8% OEB-approved increase
	//var cost2 = 3.62 * kwh / 100;
	
	// Regulatory charges:  1.600 X kwh's used X 1.092 divided by 100
	// April 19, 2006 - Update 1.600 -> 0.680 some regulatory charges moved to Delivery above
	//var cost3 = 0.680 * kwh * 1.092 / 100;
	
	//  Debt Retirement Charge:  0.7 X kwh's used divided by 100.
	//var cost4 = 0.7 * kwh / 100;
	
	// add it all up
	//var cost = (cost1 + cost2 + cost3 + cost4) * parseInt(oField.txtQty.value);
	var cost = (cost1) * parseInt(oField.txtQty.value);

	result = convert2Money(''+ cost);
	oField.lblCost.value = result;
	return result;
}

function computekWh() {
	var oField = oDataElement.document.frmCalc;
	
	var kwh =   (parseInt(oField.selHD.options[oField.selHD.selectedIndex].text) +  parseFloat(oField.selMD.options[oField.selMD.selectedIndex].text) / 60) *
				parseInt(oField.selDM.options[oField.selDM.selectedIndex].text) *
				parseInt(oField.selMY.value) *
				parseFloat(oField.lblPow.value);

	if (kwh <= 1) {
		kwh = Math.round(kwh * parseInt(oField.txtQty.value));
	} else {
		kwh = Math.round(kwh) * parseInt(oField.txtQty.value);
	}

	return kwh;
}

function computekWhByElement(index) {
	var hd = top.applListHD[index];
	var md = top.applListMD[index];
	var dm = top.applListDM[index];
	var my = top.applListMY[index];
	var power = top.applListPower[index];
	var qty = top.applListQty[index];
	
	var kwh =   (parseInt(hd) + parseFloat(md) / 60) *
				parseInt(dm) *
				parseInt(my) *
				parseFloat(power);
	
	if (kwh <= 1) {
		kwh = Math.round(kwh * parseInt(qty));
	} else {
		kwh = Math.round(kwh) * parseInt(qty);
	}

	return kwh;
}

function composeListElement(applName, applCost){
	convert2Money(applCost);
}

function convert2Money(applCost){
	var iCost = Math.floor (parseFloat(applCost));  
	var dCost = applCost.substring (applCost.indexOf('.')+1);
	if (applCost.indexOf('.') > -1) {
		if (dCost.length == 1){ 
			dCost = dCost + '0';
		}
		dCost = Math.round (parseFloat(dCost.substring(0,2) + '.' + dCost.substring(2)));
		if (dCost == 0){ 
			dCost = '00';
		}
		else if (dCost > 99){ 
			dCost = '00';
			iCost = parseInt(iCost) + 1;
		}
		else if (dCost < 10){ 
			dCost = '0' + dCost;
		}
	}
	else
		dCost = '00';
	return iCost + '.' + dCost;
}


function deleteListElement(i){
	var oElement = oDataElement.document.frmCalc.lstAppl;
	if (i < 0 ) return;
	
	var kwh = computekWhByElement(i);
	
	if (oElement.options[i]!= null)
		oElement.options[i]=null;
	
	top.applTotal = (Math.round((top.applTotal- top.applListCostArr[i])*100)/100);
	 
	top.applPowerTotal = top.applPowerTotal - kwh;
	
	checkThreshold();
	
	displayTotals();
	
	top.removeElement(i);
}

function fillAppliances(){
	var oIdx = 0;
	var oElement = oDataElement.document.frmCalc.selAppl;
	emptySelect(oElement);

	for (i = 0; i < arrAppl.length; i++) {
		var option = new Option(arrAppl[i],i, true, true);
		if (top.isClientBrouserIE50x) oDataElement.addOption(oElement,arrAppl[i],i,oIdx);           
		else oElement.options[oIdx] = option;
		oIdx = oIdx + 1; 
	}
	oElement.options[0].selected = true;
	displayAppliance(oElement.options[0].value);
}

function emptySelect(oElement){
	var last = oElement.options.length - 1;
	for (i = last; i >=0; i--) {
		oElement.options[i]=null; //remove option
	}
}

function restoreList(){
	var arrLength = top.applListNameArr.length;
	var oElement = oDataElement.document.frmCalc.lstAppl;
	var cost;
	var dispCost;
	var row;
	var kwh;
	var dispkWh;
	
	if (arrLength>0){
		emptySelect(oElement)
		for (i = 0; i <  arrLength ; i++) {
	
			kwh = computekWhByElement(i);
			dispkWh = Math.round(kwh);

			if (dispkWh <= 0) {
				dispkWh =  ' < 1';
			} else {
				dispkWh = ' ' + dispkWh;
			}
	
			cost = top.applListCostArr[i];
			dispCost = ' $' + cost; 
			
			var kwhSpacer = 7;
			var costSpacer = 7;
		
			if (dispkWh.length <= 7) {
				kwhSpacer = kwhSpacer-dispkWh.length;
			} else { 
				kwhSpacer=0;
			}
			
			if (dispCost.length <= 7) {
				costSpacer = costSpacer-dispCost.length;
			} else { 
				costSpacer;
			}
		
			var totalData = spacer(kwhSpacer) +  dispkWh + 'kWh' + spacer((LIST_WIDTH * 0.2)-dispCost.length) + dispCost;

			var row =  arrAppl[top.applListNameArr[i]].substr(0,35) + spacer(LIST_WIDTH);
			row = row.substr(0, (LIST_WIDTH * 0.4)); // % the width should be used.
			row = row + spacer((LIST_WIDTH * 0.4)- totalData.length) + totalData;
			var oOption = new Option(row,top.applListNameArr[i], true, true);
			if (top.isClientBrouserIE50x) 
						oDataElement.addOption(oElement,row,top.applListNameArr[i],i);      
			else oElement.options[i] = oOption;
			}
		oElement.selectedIndex = oElement.options.length - 1;
		displayTotals();
	} else {
		doReset();
		return;
	}
}

function checkStateModify() {
	if (isStateModify) {
		alert("Please finish modifying your appliance details and click the blue OK button.");
		return true;
	}
	return false;
}

function setStateModify(){
	var oElement = oDataElement.document.frmCalc;
	swapThreshold("button3", "calculator/web_img/btn_modify.gif");
	modifiedIndex = oElement.lstAppl.selectedIndex; 
	isStateCalc = false;
	isStateModify = true;
}

function setStateCalc(){
	var oElement = oDataElement.document.frmCalc;
	swapThreshold("button3", "calculator/web_img/btn_modify.gif");
	var isBacktoCalc = true;

	if (typeof(oDataElement.document.frmCalc) == "object") {
		var oElement = oDataElement.document.frmCalc;
		oElement.selAppl.disabled=false;
		oElement.lstAppl.disabled=false;
	} else {
		var returnflag = true;
		modifiedIndex = -1;
		isStateCalc = true;
		isStateModify = false;
	}
	modifiedIndex = -1;
	isStateCalc = true;
	isStateModify = false;
}

function doAdd(){
	if (typeof(oDataElement.document.frmCalc) != "object") return;
	if (checkStateModify()) return;
	var oElement = oDataElement.document.frmCalc.selAppl;
	if (oElement.selectedIndex < 0 ) return;
	addListElement(oElement.options[oElement.selectedIndex].value );
}

function doDelete(){
	if (typeof(oDataElement.document.frmCalc) != "object") return;
	if (checkStateModify()) return;
	var idx = oDataElement.document.frmCalc.lstAppl.selectedIndex;
	deleteListElement(idx);
}

function doReset(){
	if (typeof(oDataElement.document.frmCalc) != "object") return;
	if (checkStateModify()) return;
	emptySelect(oDataElement.document.frmCalc.lstAppl)
	top.applTotal = 0.00;
	top.applPowerTotal = 0;
	parent.resetCache();
	oDataElement.document.frmCalc.lblTotal.value = "$0.00";
	oDataElement.document.frmCalc.lblkWhTotalLow.value = "0";
	oDataElement.document.frmCalc.lblkWhTotalHigh.value = "";
	checkThreshold();
}

function doModify(){
	if (typeof(oDataElement.document.frmCalc) != "object") return;
	var oElement = oDataElement.document.frmCalc;
	if (oElement.lstAppl.selectedIndex < 0) return;
	var idx = oElement.lstAppl.selectedIndex;
	var i = oElement.lstAppl.options[idx].value;
	if (isStateModify) {

		modifiedIndex = -1;

		top.storeElement(i,idx, computeCost(),
					oElement.txtQty.value,
					oElement.selHD.selectedIndex,
					oElement.selMD.selectedIndex,
					oElement.selDM.selectedIndex,
					oElement.selMY.value,
					oElement.lblPow.value,
					oElement.lblRate.value);
	
		top.applPowerTotal = 0; // - Reset the kWh running total.
		var arrLength = top.applListNameArr.length;
		var kwh;
	
		for (i = 0; i <  arrLength ; i++) {
			kwh = computekWhByElement(i);
			top.applPowerTotal = top.applPowerTotal + kwh;
			checkThreshold();
		}

		top.computeTotal();

		restoreList(); 

		setStateCalc();

		return;
	}


	setStateModify();

	var major = false
	if (arrMajMin[i]>0){
		major= true;
	}
	fillAppliances();

	if (idx < 0) return;
	var idxValue = oElement.lstAppl.options[oElement.lstAppl.selectedIndex].value ;

	oElement.txtQty.value = top.applListQty[idx];
	oElement.selHD.selectedIndex = top.applListHD[idx];
	oElement.selMD.selectedIndex = top.applListMD[idx];
	oElement.selDM.selectedIndex = top.applListDM[idx];
	oElement.selMY.value = top.applListMY[idx];
	oElement.lblPow.value = top.applListPower[idx];
	oElement.lblRate.value = top.applListRate[idx];     

	computeCost();

	for (i=0; i<oElement.selAppl.options.length; i++){
		if (oElement.selAppl.options[i].value == idxValue){
			oElement.selAppl.selectedIndex = i;
			return;
		}
	}
}

function doPrint(){
	if (typeof(oDataElement.document.frmCalc) != "object") return;
	if (checkStateModify()) return;
	var oElement = oDataElement.document.frmCalc;
	modifiedIndex = -1;
	isStateCalc = false;
	isStateModify = false;
	passAppliances();
	printpage = window.open ('calculator/calc_print.htm', 'printpage', 'location=0,resizable=no,scrollbars=1,width=760,height=470,top=20,left=0');
}

function passAppliances(){
	appl = '';  
	var dispkWh;
	var kWh;

	appl = appl + '<table border="0" cellpadding="0" cellspacing="0" width="100%">';
	for (i = 0; i < top.applListNameArr.length; i++) {
		appl = appl + '<tr><td width="50%" valign="middle" class="blackNoBackgroundSmall">';
		appl = appl + "" + arrAppl[top.applListNameArr[i]] + "<\/td>"; 
		appl = appl + '<td width="20%" align="right" class="blackNoBackgroundSmall">';

		kWh = computekWhByElement(i)
		dispkWh = Math.round(kWh);

		if (dispkWh <= 0) {
			dispkWh =  ' < 1';
		}
		appl = appl + "" + dispkWh + " kWh<\/td>"; 

		appl = appl + '<td width="20%" align="right" class="blackNoBackgroundSmall">';
		appl = appl + "$" + top.applListCostArr[i] + "<\/td><\/tr>";
		appl = appl + '<tr><td colspan="3"><hr></td></tr>';
	}
	appl = appl + '</table>';
}

function init(){
	setStateCalc();
}