/**
 * calculations.js
 * Code for the calculator
 * 4myplanet.org
 */
var goodBrowser;
var strName = navigator.appName
var strVersion = parseInt(navigator.appVersion)
if((strName == "Netscape" && strVersion > 2) || (strName == "Microsoft Internet Explorer" && strVersion > 3))
{
     goodBrowser = true
}
else
{
     goodBrowser = false
};
if(goodBrowser == true)
{
        var key = 0
        var g_occupants = 0
        var g_milesPerWeek = 0
        var g_avgMileage = 0
        var g_amtCO2= 0
        var g_ShortFlightsPerYear=0
        var g_MediumFlightsPerYear=0        
        var g_LongFlightsPerYear=0        
        var g_ExtendedFlightsPerYear=0        
        var g_amtTotalFlight= 0
        var g_energyCost = 0
        var g_energyOutputPerYear = 0
        var g_costNatGas = 0
        var g_lbsNatGas = 0
        var g_costFuelOil = 0
        var g_lbsFuelOil = 0

		var g_lbsSrcReduced = 0
      var g_percentSrcReduced = 0
		var g_lbsForNewspaper = 0
		var g_lbsForGlass = 0
		var g_lbsForPlastic = 0
		var g_lbsForMetal = 0
		var g_lbsForCBoxes = 0
		var g_totalRecycleEmissions = 0
		var g_totalEmissions = 0
		var g_USDMonthly = 0
		var g_USDAnnual = 0
}

function global(form)
{
	calCO2(form)
	calFlight(form)	
	calEnergyCost(form)
	calNatGasCost(form)
	calFuelCost(form)
	//Add waste function here
	calSrcReduced(form)
	calRecycleNewsPaper(form)
	calRecycleGlass(form)
	calRecyclePlastic(form)
	calRecycleMetal(form)
	calTotalRecycleEmissions(form)
	calTotal(form)
	calUSDMonthly(form)
	calUSDAnnual(form)
	calRecycleCBoxes(form)
}


nextfield = "occupants"; 
netscape = "";
ver = navigator.appVersion; len = ver.length;
for(iln = 0; iln < len; iln++) if (ver.charAt(iln) == "(") break;
netscape = (ver.charAt(iln+1).toUpperCase() != "C");

function keyDown(DnEvents) { 
k = (netscape) ? DnEvents.which : window.event.keyCode;
if (k == 13) { // enter key pressed
if (nextfield == 'percentReductionTotal') return true; // submit, we finished all fields
else { // we're not done yet, send focus to next box
eval('document.forms[2].'+ nextfield + '.focus()');
eval('document.forms[2].'+ nextfield + '.select()');
//eval(form + '.' + + nextfield + ".style.background='#ffffff'");
return false;
      }
   }
}
document.onkeydown = keyDown; // work together to analyze keystrokes
if (netscape) document.captureEvents(Event.KEYDOWN|Event.KEYUP);

//Changing Label --Aparna


function enterkey(form,event)
{
if (parseInt( navigator.appVersion ) >=4)
{
//alert("Netscape")
	if(navigator.appName == "Netscape")
	{
		// use Netscapes event property
	//alert(key)
	key = event.which;
	}
	else
	{
		// use IE's event property (should really check for IE as
		//this will run for any browser that is not Netscape
		key = event.keyCode;
	}
	if(key == 13)	// "Enter" key
	{
		alert("Please use the TAB key to navigate between cells.");
		return false;
	}
}
}
/*
function division(form,main)
	{
	var div = parseInt(form.TotalEmissions.value)
	return (main/div)
	}
*/
function isaNumber(string)
	//checks to make sure field isn't blank or contains non-numeric characters
	{
	if (string.length == 0)
        return false;

	for (var i=0;i < string.length;i++)
        if ((string.substring(i,i+1) < '0') || (string.substring(i,i+1) > '9'))
        	if(string.substring(i,i+1) != '.')
                	return false;

	return true;
	} // end function isaNumber(string)

function slice(form,string,field){
if ((string.charAt(0)==0) && (string.length>1))      {
 	var goToField=eval("form."+ field)
	goToField.value = string.slice(1)
 	return true}
}
//-----------------------------------------------------------------------------
function outputComma(number) {

 if (number >= 1 || number <= -1) // don't add commas to fractional amounts
 {

 var wholeNum;
 var fractionNum;
 var position = 0;

 // convert to string
 number = '' + number;

 if ((position = number.indexOf(".",0)) != -1) {
	 wholeNum = number.substring(0,position);
	 fractionNum = "." + number.substring(position + 1,number.length);
 }
 else {
	 wholeNum = number;
	 fractionNum = "";
 }

 if ((wholeNum.length > 3) && (wholeNum > 0)) {
	 var mod = wholeNum.length%3;
	 var output = (mod > 0 ? (wholeNum.substring(0,mod)) : '');
	 for (i=0 ; i < Math.floor(wholeNum.length/3) ; i++) {
		 if ((mod ==0) && (i ==0))
			 output+= wholeNum.substring(mod+3*i,mod+3*i+3);
		 else
			 output+= ',' + wholeNum.substring(mod+3*i,mod+3*i+3);
	 }
 	 return output + fractionNum;
 }
 else return number;

 }
 else
return number; // do nothing - number is <= 1 or >= -1

} // function outputComma(number)


function testpercentage(form,percent) {
if (percent > 100) {
 alert("You have entered an incorrect value greater than 100.  Please try again.")
 form.percentRecyclables.selected
 return false
}
else {
global(this.form)
}
}

//------------------------------------------------------
function calFlight(form)
{
       g_ShortFlightsPerYear=form.ShortFlightsPerYear.value
       g_MediumFlightsPerYear=form.MediumFlightsPerYear.value        
       g_LongFlightsPerYear=form.LongFlightsPerYear.value        
       g_ExtendedFlightsPerYear=form.ExtendedFlightsPerYear.value        
       g_amtTotalFlight = 300*g_ShortFlightsPerYear*0.64 + 800*g_MediumFlightsPerYear*0.45 + 2500*g_LongFlightsPerYear*0.39 + 5000*g_ExtendedFlightsPerYear*.39
       form.amtTotalFlight.value = outputComma(Math.round(g_amtTotalFlight))
}
function calCO2(form)
 	{
	if((form.milesPerWeek.value !="") && (form.avgMileage.value !=""))
  		{

          	if( (isaNumber(form.milesPerWeek.value) == true) && (isaNumber(form.avgMileage.value) == true ) )
         		{
  	         	g_milesPerWeek = parseInt(form.milesPerWeek.value) //set the global variables
        	 	g_avgMileage = parseInt(form.avgMileage.value)
   	    		//var mpwk = g_milesPerWeek                                   	//pull the globals down into the local variables
        		//var avgMile = g_avgMileage                                 	//I didn't have to pull the globals into the locals, but I already built the functions using locals and I didn't want to take the time to reset all of the variables in all of the formulas

 if(form.avgMileage.value != 0)
{
  		if(form.D1[1].checked)
			{
			/* removed 0n 10/13/06*/
   			//calculate = ( g_milesPerWeek * 1.19 * 22)/g_avgMileage

			/* added on 10/13/06*/
			calculate = (g_milesPerWeek)/g_avgMileage*19.4*(100/95)

					}
    		else
			{
			/*removed 10/13/06*/
 //calculate = ( g_milesPerWeek * 1.19 * 52 * 22)/g_avgMileage    //set the global variable with the calculated number for later calculations
			 /*added on 10/13/06*/
			calculate = (g_milesPerWeek * 52)/g_avgMileage*19.4*(100/95)

				}

             		g_amtCO2 = calculate                          		//round off the calculated number for setting in the UI

 	   		form.amtCO2.value = outputComma(Math.round(g_amtCO2))
         		}
          	else
       			{
            		// clear fields and tell the userto put in the right value
					/* added 10/13/06*/
					form.amtCO2.value=0
			//alert("Please use only valid numbers.")
           		}
        	}
 	    }
		/* added 10/13/06*/
		else{
			form.amtCO2.value=0
		}
	}//end calCO2



 function calEnergyCost(form)
	{
 	if(form.energyCost.value !="")
		{

 		var ec = form.energyCost.value

 		if(isaNumber(ec) == true)
			{
 //			g_energyCost = parseInt(form.energyCost.value)   parseInt removed to comply with Spreasheet on Decimal Values DBH 11-9-05
			g_energyCost = form.energyCost.value
    		g_energyOutputPerYear = (g_energyCost/0.1)*1.37*12

 			form.energyOutputPerYear.value = outputComma(Math.round(g_energyOutputPerYear))
			}

 		else 	{
          		// clear fields and tell the user to put in the right value
 			}
		}
		/*added 10/13/06 */
		else{
		form.energyOutputPerYear.value = 0

		}
 	}


 function calNatGasCost(form)
	{
 	if(form.costNatGas.value !="")

 		{
		if (isaNumber(form.costNatGas.value) == true)
 			{
//			g_costNatGas =  parseInt(form.costNatGas.value) parseInt removed to comply with Spreasheet on Decimal Values DBH 11-9-05
			g_costNatGas =  form.costNatGas.value
 			g_lbsNatGas = (g_costNatGas/13.83)*120.61*12
			form.lbsNatGas.value = outputComma(Math.round(g_lbsNatGas))
  	   		}
		}
		/* added 10/13/06*/
		else {
		form.lbsNatGas.value = 0
		}
 	}


 function calFuelCost(form)
 	{
	if(form.costFuelOil.value !="")

 		{
		if (isaNumber(form.costFuelOil.value) == true)
 			{
//			g_costFuelOil = parseInt(form.costFuelOil.value) parseInt removed to comply with Spreasheet on Decimal Values DBH 11-9-05
			g_costFuelOil = form.costFuelOil.value
			g_lbsFuelOil = (g_costFuelOil/2.37)*22.28*12
			form.lbsFuelOil.value = outputComma(Math.round(g_lbsFuelOil))
 			}
		}
		/* added 10/13/06 */
		else {
		form.lbsFuelOil.value = 0
		}
 	}

// APARNA Add first waste function here

 function calSrcReduced(form)
 {

 	if(form.occupants.value !="")
	{
		g_occupants = parseInt(form.occupants.value)
		calculate = g_occupants * 1018
 		g_lbsSrcReduced = calculate 
		form.lbsSrcReduced.value = outputComma(Math.round(calculate))
 	}
	/* added 10/13/06 */
	else {
	form.lbsSrcReduced.value = 0
	}
}


	function calRecycleNewsPaper(form)
	{
		if (form.yesNoNewspaper[0].checked)
		{   
			g_lbsForNewspaper = Math.round(form.occupants.value * (-184.30))
			form.lbsForNewspaper.value = outputComma(g_lbsForNewspaper)							
		}
		else if (form.yesNoNewspaper[1].checked)
		{   
			g_lbsForNewspaper = 0
			form.lbsForNewspaper.value = outputComma(g_lbsForNewspaper)
		}		
	}

	function calRecycleGlass(form)
	{
		if (form.yesNoGlass[0].checked)
		{
			g_lbsForGlass = Math.round(form.occupants.value * (-25.60))
			form.lbsForGlass.value = outputComma(g_lbsForGlass)
		}
		else if (form.yesNoGlass[1].checked)
		{
			g_lbsForGlass = 0
			form.lbsForGlass.value = outputComma(g_lbsForGlass)
		}		
	}

	function calRecyclePlastic(form)
	{
		if (form.yesNoPlastic[0].checked)
		{
			g_lbsForPlastic = Math.round(form.occupants.value * (-46.58))
			form.lbsForPlastic.value = outputComma(g_lbsForPlastic)
		}
		else if (form.yesNoPlastic[1].checked)
		{
			g_lbsForPlastic = 0
			form.lbsForPlastic.value = outputComma(g_lbsForPlastic)
		}		
	}

	function calRecycleMetal(form)
	{	
		if (form.yesNoMetal[0].checked)
		{
			g_lbsForMetal = Math.round(form.occupants.value * (-165.79))
			form.lbsForMetal.value = outputComma(g_lbsForMetal)
		}
		else if (form.yesNoMetal[1].checked)
		{
			g_lbsForMetal = 0
			form.lbsForMetal.value = outputComma(g_lbsForMetal)
		}
	}
    //Formula may be wrong. May need to correct this.
	function calTotalRecycleEmissions(form)
	{
		g_totalRecycleEmissions = g_lbsForNewspaper + g_lbsForGlass + g_lbsForPlastic + g_lbsForMetal + g_lbsSrcReduced
		form.TotalRecyclingEmissions.value = outputComma(Math.round(g_totalRecycleEmissions))
	}

function calTotal(form)
{
 	if((form.amtCO2.value !="") || (form.energyOutputPerYear.value!="") || (form.lbsNatGas.value!="") ||
	(form.lbsFuelOil.value!="") || (form.yesNoNewspaper.value!="") || (form.yesNoGlass.value!="")
	|| (form.yesNoPlastic.value!="") || (form.yesNoMetal.value!=""))
  		{
			if (form.occupants.value =="")
  				{
    			alert("Please enter the number of people in your household.")
     			form.occupants.focus()
    			}
     		else if (isaNumber(form.milesPerWeek.value) && !isaNumber(form.avgMileage.value))
    			{
     			form.avgMileage.focus()
			form.avgMileage.value = "0"
			alert("Please enter the average gas mileage for your car.")

    			}

 		var a1 = g_amtCO2		// initialize the five variables so that we can use them in our calculation
 		var a12 = g_amtTotalFlight
		var a2 = g_energyOutputPerYear
 		var a3 = g_lbsNatGas
		var a4 = g_lbsFuelOil
		var a5 = g_totalRecycleEmissions

  		g_totalEmissions = a1 + a12 + a2 + a3 + a4 + a5
		form.Total.value = outputComma(Math.round(g_totalEmissions))
 		}
}

function calUSDMonthly(form)
{
  		g_USDMonthly = (g_totalEmissions/12000)*11
  		var rounded = Math.round(g_USDMonthly*Math.pow(10,2))/Math.pow(10,2)
		form.usdmonthly.value = rounded
}

function calUSDAnnual(form)
{
  		g_USDAnnual = (g_totalEmissions/1000)*11
  		var rounded = Math.round(g_USDAnnual*Math.pow(10,2))/Math.pow(10,2)
		form.usdannual.value = rounded
}
