var AJAX_OUTPUT_HTML = "html";
var AJAX_OUTPUT_SELECT = "select";
var AJAX_OUTPUT_VALUE = "value";

/* deprecate
var PRIMARY_PRICE = 14.68;

var AJAX_OUTPUT_HTML = "html";
var AJAX_OUTPUT_SELECT = "select";
var AJAX_OUTPUT_VALUE = "value";

var USAVG_MINICALC = "US Avg Co2";
var HOMEAVG_MINICALC = "Home Avg Co2";
var DRIVINGAVG_MINICALC = "Driving Avg Co2";
var FLIGHTAVG_MINICALC = "Flying Avg Co2";
var TONS_MINICALC = "Offcast Co2 By the ton";

var USAVG_FOOTPRINT_VALUE = 19.65;
var HOMEAVG_FOOTPRINT_VALUE = 13.44;
var DRIVINGAVG_FOOTPRINT_VALUE = 4.85;
var FLIGHTAVG_FOOTPRINT_VALUE = 2.51;

var ELECTRICITY = "electricity";
var GAS = "gas";
var HEATINGOIL = "heatingoil";

var ELECTRICITY_MONTHS = 12;
var GAS_MONTHS = 12;
var HEATINGOIL_MONTHS = 4;

var ELECTRICITY_AVERAGE_MONTHLY_BILL = 100;
var GAS_AVERAGE_MONTHLY_BILL = 105;
var HEATINGOIL_AVERAGE_MONTHLY_BILL = 130;

var ELECTRICITY_FOOTPRINT_DOLLAR_VALUE = .0033938;
var GAS_FOOTPRINT_DOLLAR_VALUE = .0021825;
var HEATINGOIL_FOOTPRINT_DOLLAR_VALUE = .0023237;
// var CAR_FOOTPRINT_GALLON_VALUE = 0.0088662;
var CAR_FOOTPRINT_GALLON_VALUE = 0.01;
var FLIGHT_FOOTPRINT_MILE_VALUE = 0.0001900;

var HOME_WASTE_FOOTPRINT_FACTOR = 0.5050000;
var HOME_WASTE_NEWSPAPER_FOOTPRINT = 0.0920000;
var HOME_WASTE_GLASS_FOOTPRINT = 0.0130000;
var HOME_WASTE_PLASTIC_FOOTPRINT = 0.0235000;
var HOME_WASTE_ALUMUNIUM_FOOTPRINT = 0.0830000;

var CAR_AVG_MILES_PER_YEAR = 13785;
*/

function getFootprintFactor(tag)
{
	return eval(tag.toUpperCase() + "_FOOTPRINT_FACTOR");
}

function getFootprintFactorURI(tag)
{
	return eval(tag.toUpperCase() + "_FOOTPRINT_FACTOR_URI");
}

function getExtraDetails(tag,detailsArr)
{
	var outStr = "";
	
	return outStr;
}

function getExtraFactors(tag)
{
	var outStr = "";
	var footprint, footprint_uri;

	var primary_price_uri = PRIMARY_PRICE_URI;
	var primary_price = PRIMARY_PRICE;	

	switch (tag)
	{
		case USAVG_TAG:
			footprint_uri = getFootprintFactorURI(tag);
			footprint = getFootprintFactor(tag);
			outStr += "&"+PRIMARY_PRICE_URI+"="+PRIMARY_PRICE +
						"&"+footprint_uri+"="+footprint;
		break;
		case TONS_TAG:
			outStr += "&"+PRIMARY_PRICE_URI+"="+PRIMARY_PRICE;
		break;
		case HOMEAVG_TAG:
			footprint_uri = getFootprintFactorURI(tag);
			footprint = getFootprintFactor(tag);
			outStr += "&"+PRIMARY_PRICE_URI+"="+PRIMARY_PRICE +
						"&"+footprint_uri+"="+footprint;
		break;
		case FLIGHTAVG_TAG:
			footprint_uri = getFootprintFactorURI(tag);
			footprint = getFootprintFactor(tag);
			outStr += "&"+PRIMARY_PRICE_URI+"="+PRIMARY_PRICE +
						"&"+footprint_uri+"="+footprint +
						"&"+FLIGHT_TOTAL_GALLONS_AVG_FACTOR_URI+"="+FLIGHT_TOTAL_GALLONS_AVG_FACTOR +
						"&"+FLIGHT_TOTAL_US_POPULATION_AVG_FACTOR_URI+"="+FLIGHT_TOTAL_US_POPULATION_AVG_FACTOR +
						"&"+FLIGHT_GALLON_PER_US_PPL_AVG_FACTOR_URI+"="+FLIGHT_GALLON_PER_US_PPL_AVG_FACTOR;
		break;
		case DRIVINGAVG_TAG:
			footprint_uri = getFootprintFactorURI(tag);
			footprint = getFootprintFactor(tag);
			outStr += "&"+PRIMARY_PRICE_URI+"="+PRIMARY_PRICE +
						"&"+footprint_uri+"="+footprint +
						"&"+DRIVING_MILES_PER_YEAR_AVG_FACTOR_URI+"="+DRIVING_MILES_PER_YEAR_AVG_FACTOR +
						"&"+DRIVING_MILES_PER_GALLON_AVG_FACTOR_URI+"="+DRIVING_MILES_PER_GALLON_AVG_FACTOR;			
		break;
		case HOME_ENERGY_TAG:
			outStr += "&"+PRIMARY_PRICE_URI+"="+PRIMARY_PRICE +
						"&"+HOME_ENERGY_ELECTRICITY_DOLLAR_FOOTPRINT_FACTOR_URI+"="+HOME_ENERGY_ELECTRICITY_DOLLAR_FOOTPRINT_FACTOR +
						"&"+HOME_ENERGY_GAS_DOLLAR_FOOTPRINT_FACTOR_URI+"="+HOME_ENERGY_GAS_DOLLAR_FOOTPRINT_FACTOR +
						"&"+HOME_ENERGY_HEATINGOIL_DOLLAR_FOOTPRINT_FACTOR_URI+"="+HOME_ENERGY_HEATINGOIL_DOLLAR_FOOTPRINT_FACTOR;
		break;
		case HOME_WASTE_TAG:
			outStr += "&"+PRIMARY_PRICE_URI+"="+PRIMARY_PRICE +
						"&"+HOME_WASTE_PERSON_FOOTPRINT_FACTOR_URI+"="+HOME_WASTE_PERSON_FOOTPRINT_FACTOR +
						"&"+HOME_WASTE_NEWSPAPER_FOOTPRINT_FACTOR_URI+"="+HOME_WASTE_NEWSPAPER_FOOTPRINT_FACTOR +
						"&"+HOME_WASTE_GLASS_FOOTPRINT_FACTOR_URI+"="+HOME_WASTE_GLASS_FOOTPRINT_FACTOR +
						"&"+HOME_WASTE_PLASTIC_FOOTPRINT_FACTOR_URI+"="+HOME_WASTE_PLASTIC_FOOTPRINT_FACTOR +
						"&"+HOME_WASTE_ALUMUNIUM_FOOTPRINT_FACTOR_URI+"="+HOME_WASTE_ALUMUNIUM_FOOTPRINT_FACTOR;
		break;
		case DRIVING_TAG:
			outStr += "&"+PRIMARY_PRICE_URI+"="+PRIMARY_PRICE +
						"&"+DRIVING_GALLON_FOOTPRINT_FACTOR_URI+"="+DRIVING_GALLON_FOOTPRINT_FACTOR;
		break;
		case FLIGHT_TAG:
			outStr += "&"+PRIMARY_PRICE_URI+"="+PRIMARY_PRICE +
						"&"+FLIGHT_MILE_FOOTPRINT_FACTOR_URI+"="+FLIGHT_MILE_FOOTPRINT_FACTOR;
		break;
	}
	return outStr;
}

function multiplyFootprint(displayFootPrint_id,footprint_id,multiplier_id) {
	/* It would be nice when a user selects multiple years to offset
		an average footprint, that the display footprint grows with it.
	*/
	var displayFootPrint;
	var footPrint;
	var multiplier;

	var result;
	var suffixStr;

	// Outgoing
	displayFootPrint = $(displayFootPrint_id);
	// Incoming
	multiplier = $(multiplier_id).value;
	// Calculate
	footPrint = $(footprint_id).value;

	if (displayFootPrint !== undefined && multiplier !== undefined && multiplier > 0)
	{
		res = footPrint * multiplier;
		result = res.toFixed(FOOTPRINT_PRECISION);
		displayFootPrint.innerHTML = "<strong>"+result+"</strong>";
	}
}

/* Detail calc area - minitables */
function minitableShowOrNo(tabular_id,minitable_id)
{
		var tabular = $(tabular_id);
		var minitable = $(minitable_id);
		if (minitable.innerHTML !== "" && tabular.style.display == "none")
		{
			swap_offcast_button(1);
			tabular.style.display="";
		} else if (minitable.innerHTML == "" && tabular.style.display =="") {
			swap_offcast_button(0);
			tabular.style.display="none";
		}
}

function swap_offcast_button(on)
{
	var offcast = $('offcast');
	var add_another = $('add_another');
	var add_another_label = $('add_another_label');
/*
	var add_another_filler = $('add_another_filler');
	if (on) {
//		add_another_filler.style.display="none";
		add_another.style.display="";
	}
*/
	if (on && offcast.style.display=="") {
		offcast.style.display="none";
		add_another.style.display="";
		add_another_label.style.display="";
	} else if (!on && offcast.style.display=="none") {
		offcast.style.display="";
		add_another.style.display="none";
		add_another_label.style.display="none";
	}
}

/* Mini calc area */
//function multiplyMiniFootprint(displayFootPrint_id,footPrint_id,multiplier_id) {
function multiplyMiniFootprint(displayFootPrint_id,tag,multiplier_id) {
	/* It would be nice when a user selects multiple years to offset
		an average footprint, that the display footprint grows with it.
	*/
	var displayFootPrint;
	var footPrint;
	var multiplier;

	var result;
	var suffixStr;

	// Outgoing
	displayFootPrint = $(displayFootPrint_id);
	// Incoming
	multiplier = $(multiplier_id).value;
	// Calculate
	footPrint = getFootprintFactor(tag);

	if (displayFootPrint !== undefined && multiplier !== undefined && multiplier > 0)
	{
		res = footPrint * multiplier;
		result = res.toFixed(FOOTPRINT_PRECISION);
		displayFootPrint.innerHTML = "<strong>"+result+"</strong>";
	}
}

function displayMiniTotal(amount_id,years_id,display_id) {
	var amount;
	var years;
	var display;

	amount = $(amount_id).value;
	if (years_id == "1")
	{
		years = 1;
	} else {
		years = $(years_id).value;
	}
	display = $(display_id);

	res = amount * years * PRIMARY_PRICE;
	result = currencyFormat(res);
	display.innerHTML = "<strong>$"+result+"</strong>";
}

function ajaxAddMiniToCart3(calcName,offcast_years_id,tons_co2_id,submit_id,spinner_id,thank_id)
{
	var tot;

	var submit;
	var spinner;
	var thank;
	submit = $(submit_id);
	spinner = $(spinner_id);
	thank = $(thank_id);

	var offcast_years;
	var tons_co2;
	var offcast_cost;
	var multi_tons_co2;
	var multi_cost;
	
	var offcast_years = $(offcast_years_id).value;
	var multiplier = offcast_years;
	
	tons_co2 = $(tons_co2_id).value;
	tot = tons_co2 * multiplier;
	multi_tons_co2 = tot.toFixed(FOOTPRINT_PRECISION);

	offcast_cost = tons_co2 * PRIMARY_PRICE;
	multi_cost = offcast_cost * multiplier;

	var calculator_tag_fld = CALCULATOR_TAG_FLD;
	var offcast_years_fld = OFFCAST_YEARS_FLD;
	var offcast_cost_fld = OFFCAST_COST_FLD;
	var tons_co2_fld = TONS_CO2_FLD;
	var multiplied_tons_co2_fld = MULTIPLIED_TONS_CO2_FLD;
	var multiplied_offcast_cost_fld = MULTIPLIED_OFFCAST_COST_FLD;

//	var footprint_factor = getFootprintFactor(calcName);	
//	var footprint_factor_uri = getFootprintFactorURI(calcName);
	var extraURI = getExtraFactors(calcName);

 	var queryString = "?"+calculator_tag_fld+"=" + calcName + "&"+offcast_years_fld+"=" + offcast_years + "&"+tons_co2_fld+"=" + tons_co2 +
					    "&"+offcast_cost_fld+"=" + offcast_cost + "&"+multiplied_tons_co2_fld+"=" + multi_tons_co2 + "&"+multiplied_offcast_cost_fld+"=" + multi_cost +
						extraURI;
//	var url = "ajax_calc_minicalc_store.php";
	var url = "ajax_carbonCalculator_landing_page.php?action="+ACTION_ADD_TO_CART;
	ajaxStandard(url,queryString,submit_id,spinner_id,thank_id);
}	

function ajaxDeleteItemFromCart(id,tag,quantity,div_id,show_id,spinner_id,single) {
//	var spinner_id = tag+"_spinner";
//	var div_id = "minitable";
//	var show_id = "tabular";
	
//	var myId = $(id).value;
	var today = new Date();
	var cur_time = " "+today.getSeconds()*10;

	var action;
	if (single) {
		action = ACTION_REMOVE_FROM_CART_SINGLE;
	} else {
		action = ACTION_REMOVE_FROM_CART;	
	}
	var url = "ajax_carbonCalculator_landing_page.php";	
	var queryString="?action="+action+"&"+ID_FLD+"="+id+"&"+CALCULATOR_TAG_FLD+"="+tag+"&"+MULTIPLIED_TONS_CO2_FLD+"="+quantity;

	ajaxUpdater(url,queryString,div_id,spinner_id);
	minitableShowOrNo(show_id,div_id);

// code to deprecate
//	ajaxDisplayTable();
//	var url="ajax_car_calculator_delete_value.php";
//	var queryString="?models_id=" + myId + "&time=" +cur_time;
}

/* 
	Ajax db updater called by calculators, no response
*/
function ajaxNoReply(url,queryString,spinner_id)
{
	var spinner;
	spinner = $(spinner_id);

	var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				asynchronous:false, 
				parameters: queryString, 
				onSuccess: function ()
					{
						spinner.style.display = "none";
					},
				onFailure: function ()
					{
						spinner.style.display = "none";
					},		
				onCreate: function ()
					{
						spinner.style.display = "";
					}
			}
	);

}

/* 
	Ajax db updater called by calculators that want 'Offcast-This' button to 
	disappear, which is most of them, hence 'standard'.  
*/
function ajaxStandard(url,queryString,submit_id,spinner_id,thank_id)
{
	var submit;
	var spinner;
	var thank;
	submit = $(submit_id);
	spinner = $(spinner_id);
	thank = $(thank_id);

	var myAjax = new Ajax.Request(
			url, 
			{
				method: 'get', 
				asynchronous:false, 
				parameters: queryString, 
				onSuccess: function ()
					{
						spinner.style.display = "none";
						thank.style.display = "";
					},
				onFailure: function ()
					{
						spinner.style.display = "none";
						submit.style.display = "";
					},		
				onCreate: function ()
					{
						submit.style.display = "none";
						spinner.style.display = "";
					}
			}
	);

}

/* 
	Sometimes, you just want to display a table.
*/
function ajaxDisplay(url,div_id,spinner_id)
{
	var spinner;
	spinner = $(spinner_id);

	var myAjax = new Ajax.Updater(
		div_id,
		url, 
		{
			asynchronous:false, 
			onSuccess: function ()
				{
					spinner.style.display = "none";
				},
			onCreate: function ()
				{
					spinner.style.display = "";
				},
			requestHeaders:['X-Update', div_id]
		}
	);				
}

function ajaxDelivery(url, queryString, out_id, out_type, spinner_id)
{
	var out;
	var spinner;
	out = $(out_id);
	spinner = $(spinner_id);
	
	var myAjax = new Ajax.Request(
			url, 
			{
				asynchronous: false,
				method: 'get', 
				parameters: queryString, 
				onSuccess: function (content)
					{
						out.disabled = "";
						spinner.style.display = "none";
						switch(out_type)
						{
							case AJAX_OUTPUT_SELECT:
								arr0 = new Array();
								arr0[0] = "-- SELECT --";
								var arr1 = new Array();
								arr1 = content.responseText.split(",");
								var arr2 = new Array();
								arr2 = arr0.concat(arr1);

//								buildSelectBox(out_id, arr, 0, false); 

//								out.options = new Array();
								out.options.length = 0;
//								out.options[0] = new Option("SELECTED","SELECTED");
								for (i=0;i<arr2.length;i++)
								{
									var item = arr2[i];
									out.options[i] = new Option(item,item);
								}
								out.selectedIndex = 0;
							break;
							case AJAX_OUTPUT_HTML:
								out.innerHTML = content.responseText;	
							break;
							case AJAX_OUTPUT_VALUE:
								out.value = content.responseText;
							break;
						}
					},
				onFailure: function ()
					{
						spinner.style.display = "none";
					},		
				onCreate: function ()
					{
						spinner.style.display = "";
					}
			}
	);
}

function ajaxUpdater(url,queryString,div_id,spinner_id)
{
	var spinner = $(spinner_id);

	var myAjax = new Ajax.Updater(
		div_id,
		url, 
		{
			asynchronous:false, 
			parameters: queryString, 
			evalScripts:true, 
			onSuccess: function ()
				{
					spinner.style.display = "none";
				},
			onCreate: function ()
				{
					spinner.style.display = "";
				},
			requestHeaders:['X-Update', div_id]
		}
	);				
}

function ajaxAddMiniToCart_deprecate(calcName,offsetYears_id,tonsCO2_id,spinner_id){
	var spinner;
	spinner = document.getElementById(spinner_id);

	var offsetYears;
	var tonsCO2;

	var offsetCost;
	
	offsetYears = document.getElementById(offsetYears_id).value;
	tonsCO2 = document.getElementById(tonsCO2_id).value;

	offsetCost = currencyFormat(tonsCO2 * offsetYears * PRIMARY_PRICE);

	var ajaxRequest;  // The variable that makes Ajax possible!
	var addItemId;
	try{
		// Opera 8.0+, Firefox, Safari
		ajaxRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	ajaxRequest.onreadystatechange = function(){
//			 window.location='index.php?main_page=carbon_shoppingcart';
	}
 	var queryString = "?name=" + calcName + "&offsetYears=" + offsetYears + "&tonsCO2=" + tonsCO2 +
					    "&offsetCost=" + offsetCost;
	var url = "ajax_calc_minicalc_store.php";
	ajaxRequest.open("GET", url + queryString, true);
	ajaxRequest.send(null); 
}	

function chkValidDimensions(l,w,h)
{
	var dims = (parseInt(l.value)+parseInt(w.value)+parseInt(h.value));

	if(dims>165)
	{
		alert("Dimensions of the item cannot exceed 165 inches.");
		l.focus();
		return false;
	}

	return true;
}

function MM_openBrWindow(theURL,winName,features)
{ //v2.0
  	window.open(theURL,winName,features);
}

function isDefined( variable)
{
    	return (typeof(window[variable]) == "undefined")?  false: true;
}

function strRepeat(cnt)
{
	var retStr = "";
	for(i=0;i<cnt;i++)
		retStr=retStr+",";
	return retStr;
}

function validateForm(myForm,cArray,cnt)
{
	var i=0;
	var values = "theControl,theMessage,theNumeric,theEmail,theURL,theConfirmPassword,thebadstuff,theinteger,thepercent,thesize,thedecimal,theimage,theempty,themin,themax,thecheckboxlength,thephoneno";
	var leftSide = new Array();
	var rightVals = new Array();
	leftSide = values.split(",");

	var strRepeats = strRepeat(cnt-1);

	for(i=0;i<leftSide.length;i++){
		if(cArray[leftSide[i]]){
			rightVals[i] = (cArray[leftSide[i]]);
		}else{
			rightVals[i] = strRepeats;
		}
		leftSide[i]=rightVals[i];
	}

	if(!theValidator(myForm,leftSide[0],leftSide[1],leftSide[2],leftSide[3],leftSide[4],leftSide[5],leftSide[6],leftSide[7],leftSide[8],leftSide[9],leftSide[10],leftSide[11],leftSide[12],leftSide[13],leftSide[14],leftSide[15],leftSide[16]))
		return false;

	return true;
}

function enableIDs(IDs)
{
	var IDs = IDs.split(',');
	for(i=0;i<IDs.length;i++)
	{
		e = document.getElementById(IDs[i]);
		e.disabled = "";
	}
}
	
function disableIDs(IDs)
{
	var IDs = IDs.split(',');
	for(i=0;i<IDs.length;i++)
	{
		e = document.getElementById(IDs[i]);
		e.disabled = "true";
	}
}


function showHiddenIDs(IDs)
{
	var IDs = IDs.split(',');
	for(i=0;i<IDs.length;i++)
	{
		e = document.getElementById(IDs[i]);
		e.style.display = "";
	}
}

function hideIDs(IDs)
{
	var IDs = IDs.split(',');
	for(i=0;i<IDs.length;i++)
	{
		e = document.getElementById(IDs[i]);
		e.style.display = "none";
	}
}

function currencyFormat(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}

function displayOnOff(div_id)
{
	var item = document.getElementById(div_id);
	if (item.style.display==="none")
	{
		item.style.display="";
	} else {
		item.style.display="none";
	}
}

function visibilityOnOff(div_id)
{
	var item = document.getElementById(div_id);
	if (item.style.visibility=="hidden")
	{
		item.style.visibility="";
	} else {
		item.style.visibility="hidden";
	}
}