/**
 * The Main Javascript Library for TCOT Site
 * Version $Id: tcot_pledge_calculator.js,v 1.9 2007/08/31 16:31:47 ywang Exp $
 * Author: Ye Wang
 *
 */

function toggleAddressForm() {
	if (document.getElementById('userInfo').style.display == 'none' ) {
		document.getElementById('userInfo').style.display = 'block';
		document.getElementById('freeSticker').value = 'yes'; //set the flag to open the address form
	} else {
		document.getElementById('userInfo').style.display = 'none';	
		document.getElementById('freeSticker').value = ''; //set the flag to close
	}
}


//////Calculator Code/////

/**
 * Double check to make sure the main pledge checkbox is checked.
 */
function confirmPledgeChecked() {
	var mainCheckbox;
	mainCheckbox = document.getElementById('confirmPledge');
	if (mainCheckbox && !mainCheckbox.checked) {
		mainCheckbox.checked = true;
	}
}

/**
 * Return current pledge ID (string type) based on the element Id passed in
 * It could be one of these: pledge-x, dollars-saved-x, kwhs-saved-x, gallons-saved-x
 */
function getPledgeId(elementId) {
	var pledgeId;
	//if ( 'string' == elementId.typeof()) {
		pledgeId = elementId.substr(elementId.lastIndexOf('-')+1);
		//alert(pledgeId);
		return pledgeId;
	//}
}

/**
 * This is the main event handler for each pledge checkbox on the form
 * It detects the check status and calculate or update savings accordingly
 */
function showSavings(checkboxId) {
	var pledgeId; //the number of the pledge
	var dollarSavingElementId;
	var kwhSavingElementId;
	var gallonSavingElementId;		
	
	pledgeId = getPledgeId(checkboxId);
	//alert(pledgeId);	
	dollarSavingElementId = "dollars-saved-" + pledgeId;
	kwhSavingElementId = "kwhs-saved-" + pledgeId;
	gallonSavingElementId = "gallons-saved-" + pledgeId;
	
	confirmPledgeChecked();

	//oncheck event returns checkbox status after the action
	//the second test is for the case where we pass select element id in
	if (document.getElementById(checkboxId).checked || document.getElementById("pledge-"+pledgeId).checked) {
		//alert('checked'); //add savings
		calculateSavings(pledgeId, dollarSavingElementId, kwhSavingElementId, gallonSavingElementId);
	} else {
		//alert('unchecked'); //remove savings
		removeSavings(pledgeId);
	}	
	updateTotals();
}

/**
 * Calculate Savings for each pledge based on the formulas
 */
function calculateSavings(pledgeId, dollarSavingElementId, kwhSavingElementId, gallonSavingElementId) {
	var dollarSaving;
	var kwhSaving;
	var gallonSaving;
	var sign;

	switch (pledgeId) {
		case "1":
			dollarSaving = 12*getSelectedOption(pledgeId);
			kwhSaving = 0.0402*getSelectedOption(pledgeId);
			updateCell(dollarSavingElementId, dollarSaving.toFixed(2));
			updateCell(kwhSavingElementId, kwhSaving.toFixed(3));	
			break;
		case "2":
			updateCell(dollarSavingElementId, 135);
			break;
		case "3":
			kwhSaving = 43.8*getSelectedOption(pledgeId);
			dollarSaving = kwhSaving * 0.139;
			updateCell(kwhSavingElementId, kwhSaving.toFixed(3));	
			updateCell(dollarSavingElementId, dollarSaving.toFixed(2));
			break;
		case "4":
			if("electric stove" == getSelectedOption(pledgeId) ) {
				updateCell(dollarSavingElementId, 36);
			} else if("gas stove" == getSelectedOption(pledgeId) ) {
				updateCell(dollarSavingElementId, 18);
			}
			break;
		case "5":
			if("electric heater" == getSelectedOption(pledgeId) ) {
				updateCell(dollarSavingElementId, 40);
				updateCell(gallonSavingElementId, 3400);
				updateCell(kwhSavingElementId, 2878);
			} else if("gas heater" == getSelectedOption(pledgeId) ) {
				updateCell(dollarSavingElementId, 30);
				updateCell(gallonSavingElementId, 3400);
				updateCell(kwhSavingElementId, 1899);
			}			
			break;
		case "6":
			updateCell(dollarSavingElementId, 237);
			break;
		case "7":
			updateCell(dollarSavingElementId, 3000);
			break;
		case "8":
			updateCell(dollarSavingElementId, 150);
			break;
		case "9":
			updateCell(dollarSavingElementId, 500);
			break;
		case "10":
			gallonSaving = getSelectedOption(pledgeId) * 2700;
			dollarSaving = gallonSaving * 0.0071;
			updateCell(gallonSavingElementId, gallonSaving.toFixed(3));	
			updateCell(dollarSavingElementId, dollarSaving.toFixed(2));			
			break;	
		case "11":
			gallonSaving = 7300*getSelectedOption(pledgeId);
			dollarSaving = 145*getSelectedOption(pledgeId);
			updateCell(gallonSavingElementId, gallonSaving.toFixed(3));					
			updateCell(dollarSavingElementId, dollarSaving.toFixed(2));
			break;
		case "12":
			updateCell(dollarSavingElementId, 475);
			break;
		case "13":
			gallonSaving = getSelectedOption(pledgeId) * 4000;
			dollarSaving = gallonSaving * 0.0071;
			updateCell(gallonSavingElementId, gallonSaving.toFixed(3));	
			updateCell(dollarSavingElementId, dollarSaving.toFixed(2));			
			break;							
		case "14":
			updateCell(dollarSavingElementId, 25);
			updateCell(kwhSavingElementId, 51);
			updateCell(gallonSavingElementId, 800);
			break;							
		case "15":
			updateCell(dollarSavingElementId, 663);
			break;							
		case "16":
			updateCell(dollarSavingElementId, 120);
			break;							
	}
}

/**
 * Update saving numbers
 */
function updateCell(elementId, result) {
	var el;
	el = document.getElementById(elementId);
	//alert(elementId + " " + result);
	el.value = result;
}

function getSelectedOption(pledgeId) {
	return	document.getElementById("dropdown-"+pledgeId).value;
}

/**
 * Remove saving numbers if the current pledge is unchecked
 */
function removeSavings (pledgeId) {
	document.getElementById("dollars-saved-"+pledgeId).value = "";
	document.getElementById("kwhs-saved-"+pledgeId).value = "";
	document.getElementById("gallons-saved-"+pledgeId).value = "";		
}

function updateTotals() {
	var dollarSavingTotal = 0;
	var kwhSavingTotal = 0;
	var gallonSavingTotal = 0;
	var d;
	var k;
	var g;
	
	for (var i=1; i<=16; i++) {
		//alert(i+"|"+d+"|"+dollarSavingTotal);
		dollarSavingTotal += document.getElementById("dollars-saved-"+i).value - 0;
		kwhSavingTotal += document.getElementById("kwhs-saved-"+i).value - 0;
		gallonSavingTotal += document.getElementById("gallons-saved-"+i).value - 0;
	}

	
	document.getElementById("total-dollars").value = dollarSavingTotal.toFixed(2);
	document.getElementById("total-kwhs").value = kwhSavingTotal.toFixed(3);
	document.getElementById("total-gallons").value = gallonSavingTotal.toFixed(3);	
}
