﻿// Caluculate_Daylighting_Savings() function created by Patrick Moloney 09-23-2010.  
// This function calculates the amount of Kilowatts, Kilowatt Hours (kW h), cost in dollars per day/month/year, and many other interesting resource datapoints.
// We'll be using a user-defined (from the dropdown menus) electrical load, and will rely on the US EPA assumptions of 10.46 cents per KW h and other known variables below:

// Declare Constants:
var numMetricTonsCO2PerKWh = Number(0.0007182); 			// 0.0007185 metric tons CO2 per kWh, average derived from: http://www.epa.gov/cleanenergy/energy-resources/refs.html
var numMetricTonsCO2EPerCar = Number(5.23); 				// CO2 Equivalent per average vehicle, from http://www.epa.gov/cleanenergy/energy-resources/refs.html#vehicles
var numMetricTonsCO2PerGallonGasoline = Number(0.00889); // Gasoline converstion from http://www.epa.gov/cleanenergy/energy-resources/refs.html#gasoline
var numMetricTonsCO2PerBarrelOil = Number(0.43); 		// http://www.epa.gov/cleanenergy/energy-resources/refs.html#oil
var numMetricTonsCO2PerTankerTruck = Number(74.89); 	// http://www.epa.gov/cleanenergy/energy-resources/refs.html#tankers
var numMetricTonsCO2PerHomeElectricity = Number(8.24); 	// http://www.epa.gov/cleanenergy/energy-resources/refs.html#houseelec
var numMetricTonsCO2PerHomeEnergy = Number(11.75); 		// http://www.epa.gov/cleanenergy/energy-resources/refs.html#houseenergy
var numMetricTonsCO2SequesteredByForests = Number(4.69);  	// http://www.epa.gov/cleanenergy/energy-resources/refs.html#pineforests (per acre)
var numMetricTonsCO2PerCoalPowerPlant = Number(3850479); 	// http://www.epa.gov/cleanenergy/energy-resources/refs.html#coalplant

// Declare Variables:
var numCentsPerKWh = Number(0);  							// Using 12 cents per kW h average, editable from index.asp "cost" textfield
var numTotalKiloWattsInUse = Number(0);  					// Sum of (number of bulbs x watts per bulb)/1000 to get KiloWatts total
var numTotalKiloWattHoursUsedPerDay = Number(0); 		// Sum of numTotalKiloWattsInUse and numHoursInUse
var numTotalKiloWattHoursPerYear = Number(0); 		    // Sum of numTotalKiloWattHoursUsedPerDay and days in year (365)
var numTotalCarEquivalentYear = Number(0);
var numTotalGallonsGasoline = Number(0);
var numTotalBarrelsOil = Number(0);
var numTotalTankerTrucks = Number(0);
var numTotalElectricityPerHome = Number(0);
var numTotalEnergyPerHome = Number(0);
var numTotalCarbonSequesteredByForests = Number(0);
var numTotalCoalPowerPlants = Number(0);

var numTotalDailyCost = Number(0);
var numTotalMonthlyCost = Number(0);
var numTotalYearlyCost = Number(0);

var numTotalMetricTonsCO2Year = Number(0);
var numShowResults = 0;

function Caluculate_Daylighting_Savings() {
    var numBulbs = Number(document.getElementById('bulbs').value);  //numBulbs = Number(document.calculator.bulbs.value);
    var numWattage = Number(document.getElementById('wattage').value); // Number(document.calculator.wattage.value);
    var numHoursInUse = Number(document.getElementById('hours').value);
    var numCentsPerKWh = Number(document.getElementById('cost').value);   //Number(document.calculator.cost.value);

    numTotalKiloWattsInUse = ((numBulbs * numWattage) / 1000); 					// Calculate total Kilowatts
    numTotalKiloWattHoursUsedPerDay = (numTotalKiloWattsInUse * numHoursInUse); // Calculate total Kilowatt Hours (kW h) per Day
    numTotalKiloWattHoursPerYear = (numTotalKiloWattHoursUsedPerDay * 365); 	// Calculate total Kilowatt Hours (kW h) per Year

    numTotalDailyCost = (numTotalKiloWattHoursUsedPerDay * numCentsPerKWh); 	// Calculate Daily, Monthly, and Yearly costs based on kW h
    numTotalMonthlyCost = (numTotalDailyCost * 30.42); 							// (365/12 = 30.42 average days in each month)
    numTotalYearlyCost = (numTotalDailyCost * 365);

    numTotalMetricTonsCO2Year = (numTotalKiloWattHoursPerYear * numMetricTonsCO2PerKWh); // Calculate Metric Tons of CO2 produced per year based on Kilowatt hours consumed
    numTotalCarEquivalentYear = (numTotalMetricTonsCO2Year / numMetricTonsCO2EPerCar); 	// Calculate Equivalent number of cars per year based on Metric Tons of CO2/year
    numTotalGallonsGasoline = (numTotalMetricTonsCO2Year / numMetricTonsCO2PerGallonGasoline); // Calculate Equivalent gallons of Gasoline per year based on Metric Tons of CO2/year
    numTotalBarrelsOil = (numTotalMetricTonsCO2Year / numMetricTonsCO2PerBarrelOil);
    numTotalTankerTrucks = (numTotalMetricTonsCO2Year / numMetricTonsCO2PerTankerTruck);
    numTotalElectricityPerHome = (numTotalMetricTonsCO2Year / numMetricTonsCO2PerHomeElectricity);
    numTotalEnergyPerHome = (numTotalMetricTonsCO2Year / numMetricTonsCO2PerHomeEnergy);
    numTotalCarbonSequesteredByForests = (numTotalMetricTonsCO2Year / numMetricTonsCO2SequesteredByForests);
    numTotalCoalPowerPlants = (numTotalMetricTonsCO2Year / numMetricTonsCO2PerCoalPowerPlant);

    // Clean the numbers to display limited digits after the decimal point and then convert them to strings.
    numTotalKiloWattHoursUsedPerDay = numTotalKiloWattHoursUsedPerDay.toFixed(2);
    numTotalKiloWattHoursUsedPerDay = numTotalKiloWattHoursUsedPerDay.toString();
    numTotalDailyCost = numTotalDailyCost.toFixed(2);
    numTotalDailyCost = numTotalDailyCost.toString();
    numTotalMonthlyCost = numTotalMonthlyCost.toFixed(2);
    numTotalMonthlyCost = numTotalMonthlyCost.toString();
    numTotalYearlyCost = numTotalYearlyCost.toFixed(2);
    numTotalYearlyCost = numTotalYearlyCost.toString();
    numTotalKiloWattHoursPerYear = numTotalKiloWattHoursPerYear.toFixed(2);
    numTotalKiloWattHoursPerYear = numTotalKiloWattHoursPerYear.toString();
    numTotalMetricTonsCO2Year = numTotalMetricTonsCO2Year.toFixed(2);
    numTotalMetricTonsCO2Year = numTotalMetricTonsCO2Year.toString();
    numTotalCarEquivalentYear = numTotalCarEquivalentYear.toFixed(1);
    numTotalCarEquivalentYear = numTotalCarEquivalentYear.toString();
    numTotalGallonsGasoline = numTotalGallonsGasoline.toFixed(0);
    numTotalGallonsGasoline = numTotalGallonsGasoline.toString();
    numTotalBarrelsOil = numTotalBarrelsOil.toFixed(2);
    numTotalBarrelsOil = numTotalBarrelsOil.toString();
    numTotalTankerTrucks = numTotalTankerTrucks.toFixed(1);
    numTotalTankerTrucks = numTotalTankerTrucks.toString();
    numTotalElectricityPerHome = numTotalElectricityPerHome.toFixed(1);
    numTotalElectricityPerHome = numTotalElectricityPerHome.toString();
    numTotalEnergyPerHome = numTotalEnergyPerHome.toFixed(1);
    numTotalEnergyPerHome = numTotalEnergyPerHome.toString();
    numTotalCarbonSequesteredByForests = numTotalCarbonSequesteredByForests.toFixed(0);
    numTotalCarbonSequesteredByForests = numTotalCarbonSequesteredByForests.toString();
    numTotalCoalPowerPlants = numTotalCoalPowerPlants.toFixed(5);
    numTotalCoalPowerPlants = numTotalCoalPowerPlants.toString();
    DisplayResults();

}

// Update the textbox values in the Calculator_Results Div tag for each calculation.
function DisplayResults() {

    document.getElementById('DisplayBox1').innerHTML = CommaFormatted(numTotalKiloWattHoursPerYear);
    document.getElementById('DisplayBox2').innerHTML = CommaFormatted(numTotalMetricTonsCO2Year);
    document.getElementById('DisplayBox3').innerHTML = CommaFormatted(numTotalCarEquivalentYear);
    document.getElementById('DisplayBox4').innerHTML = CommaFormatted(numTotalGallonsGasoline);
    document.getElementById('DisplayBox5').innerHTML = CommaFormatted(numTotalBarrelsOil);
    document.getElementById('DisplayBox6').innerHTML = CommaFormatted(numTotalTankerTrucks);
    document.getElementById('DisplayBox7').innerHTML = CommaFormatted(numTotalElectricityPerHome);
    document.getElementById('DisplayBox8').innerHTML = CommaFormatted(numTotalEnergyPerHome);
    document.getElementById('DisplayBox9').innerHTML = CommaFormatted(numTotalCarbonSequesteredByForests);
    document.getElementById('DisplayBox10').innerHTML = CommaFormatted(numTotalCoalPowerPlants);
    document.getElementById('DisplayBox11').innerHTML = "$" + CommaFormatted(numTotalDailyCost);
    document.getElementById('DisplayBox12').innerHTML = "$" + CommaFormatted(numTotalMonthlyCost);
    document.getElementById('DisplayBox13').innerHTML = "$" + CommaFormatted(numTotalYearlyCost);
}

function CommaFormatted(amount)  //Note: Amount must be a string!
{
    var delimiter = ","; // replace comma if desired
    var a = amount.split('.', 2)
    var d = a[1];
    var i = parseInt(a[0]);

    if (isNaN(d)) { d = "x"; }
    if (isNaN(i)) { return ''; }
    var minus = '';
    if (i < 0) { minus = '-'; }
    i = Math.abs(i);
    var n = new String(i);
    var a = [];
    while (n.length > 3) {
        var nn = n.substr(n.length - 3);
        a.unshift(nn);
        n = n.substr(0, n.length - 3);
    }
    if (n.length > 0) { a.unshift(n); }
    n = a.join(delimiter);
    if (d.length <= 1 || isNaN(d)) { amount = n; }
    else { amount = n + '.' + d; }
    amount = minus + amount;
    return amount;
} // end of function CommaFormatted()

/* Client-side access to querystring name=value pairs
Version 1.3
28 May 2008
License (Simplified BSD):
http://adamv.com/dev/javascript/qslicense.txt
*/
function Querystring(qs) { // optionally pass a querystring to parse
    this.params = {};

    if (qs == null) qs = location.search.substring(1, location.search.length);
    if (qs.length == 0) return;

    // Turn <plus> back to <space>
    // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
    qs = qs.replace(/\+/g, ' ');
    var args = qs.split('&'); // parse out name/value pairs separated via &

    // split out each name=value pair
    for (var i = 0; i < args.length; i++) {
        var pair = args[i].split('=');
        var name = decodeURIComponent(pair[0]);

        var value = (pair.length == 2)
			? decodeURIComponent(pair[1])
			: name;

        this.params[name] = value;
    }
}

Querystring.prototype.get = function (key, default_) {
    var value = this.params[key];
    return (value != null) ? value : default_;
}

Querystring.prototype.contains = function (key) {
    var value = this.params[key];
    return (value != null);
}



function CreateQueryStringRedirect() {
    var strPageName;
    var strQueryString;

    var strBulbs = document.getElementById('bulbs').value;
    var strWattage = document.getElementById('wattage').value;
    var strHours = document.getElementById('hours').value;
    var strCost = document.getElementById('cost').value;

    strPageName = "/calculator/?"
    strQueryString = ("b=" + strBulbs + "&w=" + strWattage + "&h=" + strHours + "&c=" + strCost);
    window.location = strPageName + strQueryString;

}
function ReadQueryString() {
    // Parse the current page's querystring
    var qs = new Querystring();

    if (qs.contains("b")) {

        var bulbs = qs.get("b");
        var wattage = qs.get("w");
        var hours = qs.get("h");
        var cost = qs.get("c");

        document.getElementById('cost').value = cost;
        document.getElementById('bulbs').value = bulbs;
        document.getElementById('wattage').value = wattage;
        document.getElementById('hours').value = hours;

    }
}
