// base URL
var calc_url = 'http://greenvalues.cnt.org/national/calculator';
// arrays
var arr_text_fields = new Array ('ui_zipcode', 'ui_rainfall', 'ui_storm_type', 'ui_rainfall_pct_storm', 'ui_lot_area_acres', 'ui_lot_length', 'ui_lot_width', 'ui_roof_area', 'ui_roof_length', 'ui_roof_width', 'ui_soil_type', 'ui_land_impervious_pct_pre', 'ui_land_lawn_good_pct_pre', 'ui_land_lawn_fair_pct_pre', 'ui_land_urban_pct_pre', 'ui_land_desert_pct_pre', 'ui_land_newgrade_pct_pre', 'ui_land_rowcrops_pct_pre', 'ui_land_pasture_pct_pre', 'ui_land_meadow_pct_pre', 'ui_land_woods_pct_pre', 'ui_land_desert_shrub_pct_pre', 'ui_land_wetlands_pct_pre', 'ui_land_water_pct_pre', 'ui_land_lawn_good_pct', 'ui_land_lawn_fair_pct', 'ui_land_desert_pct', 'ui_land_newgrade_pct', 'ui_land_woods_pct', 'ui_land_wetlands_pct', 'ui_land_water_pct', 'ui_capture', 'ui_capture_scope', 'ui_parking_spots', 'ui_parking_area', 'ui_sidewalk_length', 'ui_sidewalk_width', 'ui_street_length', 'ui_street_width', 'ui_driveway_length', 'ui_driveway_width', 'ui_discount_rate', 'ui_life_cycle', 'ui_green_roof_area_pct', 'ui_green_roof_depth', 'ui_green_roof_porosity', 'ui_planter_boxes_area', 'ui_planter_boxes_soil_depth', 'ui_planter_boxes_soil_porosity', 'ui_planter_boxes_agg_depth', 'ui_planter_boxes_agg_porosity', 'ui_rain_garden_area', 'ui_rain_garden_soil_depth', 'ui_rain_garden_soil_porosity', 'ui_rain_garden_agg_depth', 'ui_rain_garden_agg_porosity', 'ui_cistern_volume', 'ui_barrel_volume', 'ui_reduced_street_width_pct', 'ui_permeable_parking_area_pct', 'ui_permeable_parking_material', 'ui_permeable_parking_depth', 'ui_permeable_parking_porosity', 'ui_permeable_driveway_area_pct', 'ui_permeable_driveway_material', 'ui_permeable_driveway_depth', 'ui_permeable_driveway_porosity', 'ui_permeable_sidewalk_area_pct', 'ui_permeable_sidewalk_material', 'ui_permeable_sidewalk_depth', 'ui_permeable_sidewalk_porosity', 'ui_native_vegetation_area_pct', 'ui_filter_strips_length', 'ui_filter_strips_width', 'ui_filter_strips_depth', 'ui_filter_strips_porosity', 'ui_amended_soil_area_pct', 'ui_amended_soil_depth', 'ui_amended_soil_porosity', 'ui_swales_length', 'ui_swales_width', 'ui_swales_top_width', 'ui_swales_soil_depth', 'ui_swales_soil_porosity', 	'ui_swales_depth', 'ui_swales_porosity', 'ui_roadside_swales_length', 'ui_roadside_swales_width', 'ui_roadside_swales_top_width', 'ui_roadside_swales_soil_depth', 'ui_roadside_swales_soil_porosity', 	'ui_roadside_swales_depth', 'ui_roadside_swales_porosity', 'ui_trees_qty', 'ui_trees_avg_area', 'ui_trees_box_length', 'ui_trees_box_width', 'ui_trees_soil_depth', 'ui_trees_soil_porosity');
var arr_checkbox_fields = new Array ('ui_green_roof', 'ui_planter_boxes', 'ui_rain_garden', 'ui_cistern', 'ui_reduced_street', 'ui_permeable_parking', 'ui_permeable_driveway', 'ui_permeable_sidewalk', 'ui_native_vegetation', 'ui_filter_strips', 'ui_amended_soil', 'ui_swales', 'ui_roadside_swales', 'ui_trees');
var arr_bmps = new Array ('green_roof','planter_boxes','rain_garden','cistern','native_vegetation','filter_strips','amended_soil','roadside_swales','swales','trees','reduced_street','permeable_parking','permeable_sidewalk','permeable_driveway');
var arr_cns = new Array ('impervious','lawn_good','lawn_fair','urban','desert','newgrade','rowcrops','pasture','meadow','woods','desert_shrub','wetlands','water','green_roof','rain_garden','native_vegetation','filter_strips','swale','trees','porous_pavement','amended_soil','gravel');
var arr_impervious_areas = new Array ('ui_roof_area','ui_roof_length','ui_roof_width','ui_parking_area','ui_parking_spots','ui_street_length','ui_street_width','ui_sidewalk_length','ui_sidewalk_width','ui_driveway_length','ui_driveway_width');
var arr_land_types_pre = new Array ('ui_land_impervious_pct_pre','ui_land_lawn_good_pct_pre','ui_land_lawn_fair_pct_pre','ui_land_urban_pct_pre','ui_land_desert_pct_pre','ui_land_newgrade_pct_pre','ui_land_rowcrops_pct_pre','ui_land_pasture_pct_pre','ui_land_meadow_pct_pre','ui_land_woods_pct_pre','ui_land_desert_shrub_pct_pre','ui_land_wetlands_pct_pre','ui_land_water_pct_pre');
var arr_land_types = new Array ('ui_land_impervious_pct','ui_land_lawn_good_pct','ui_land_lawn_fair_pct','ui_land_desert_pct','ui_land_newgrade_pct','ui_land_woods_pct','ui_land_wetlands_pct','ui_land_water_pct');
var arr_number_fields = new Array ('ui_parking_spots','ui_discount_rate');
var arr_percentage_fields = new Array ('ui_green_roof_area_pct','ui_native_vegetation_area_pct','ui_permeable_parking_area_pct','ui_permeable_driveway_area_pct','ui_permeable_sidewalk_area_pct','ui_amended_soil_area_pct','ui_reduced_street_width_pct','ui_parking_spots','ui_discount_rate');
var arr_soil_types = new Array ('a','b','c','d');

var s_goal = [];
s_goal[1] = {};
s_goal[1] = {
	'capture' : 0.5
};
s_goal[2] = {};
s_goal[2] = {
	'capture' : 1
};
s_goal[3] = {};
s_goal[3] = {
	'capture' : 1.25
};
s_goal[4] = {};
s_goal[4] = {
	'capture' : 1.5
};

// JavaScript Document  
function init() {
		// quit if this function has already been called
		if (arguments.callee.done) {return;}
		// flag this function so we don't do the same thing twice
		arguments.callee.done = true;
		// create the "page loaded" message 
		var http = getHTTPObject(); // We create the HTTP Object
		loadScenario();
		}
		/* for Mozilla */
		if (document.addEventListener) {
			document.addEventListener("DOMContentLoaded", init, null);
		}
		/* for Internet Explorer */
		/*@cc_on @*/
		/*@if (@_win32)
			 document.write("<script defer src=javascripts/ie_onload.js><"+"/script>");
		/*@end @*/
		/* for other browsers */
		window.onload = init; 
		
	 
function getHTTPObject() {
  var xmlhttp;
  /*@cc_on
  @if (@_jscript_version >= 5)
    try {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
    }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object
	 

function initializeForm() {
	adjustPane();
	toggleBMPDetails('all'); // display and hide bmp detail fields based on which bmps are selected
	toggleInputPane('start'); // display default input pane -- do we need to do this?
	toggleResultPane('volume-control'); //  display default result pane -- do we need to do this?
	validatePercentage(arr_percentage_fields); // validate percentage for all fields that should be percentages
	displayLandTypePercentage('pre'); // add and display total percentage of predevelopment land types
	validateLandTypePercentages('pre'); // verify total percentage of predevelopment land types is greater than 0 
	displayLandTypePercentage(); // add and display total percentage of conventional land types
	validateLandTypePercentages(); // verify total percentage of conventional land types is greater than 0; if 0, derive impervious percentage from existing area & lot size
	toggleCN(); // disable CN fields for non-active soil types
	validateLotDetails(); // check that lot area field is equivalent to lot width and lot length
	validateRoofDetails(); // check that roof area field is equivalent to roof width and roof length	
	validateRoadsideSwaleDetails(); // check that roadside swale length is not greater than street length
	getRainfall();
}
		  
function validateForm(ff) { // alters certain values based on other fields' values to prevent math problems
	if (ff) {
		// displays or hides BMP detail fields
		for (var i in arr_bmps)  { // get global array
			if (ff.id=='ui_'+arr_bmps[i]) {
				toggleBMPDetails(arr_bmps[i]);
			}
		}
		// verifies and ensures valid percentage
		for (var i in arr_percentage_fields)  { // get global array
			if (ff.id==arr_percentage_fields[i]) {
				validatePercentage(arr_percentage_fields[i]);
			}
		}
		// verifies and ensures valid number
		for (var i in arr_number_fields)  { // get global array
			if (ff.id==arr_number_fields[i]) {
				validateNumber(arr_number_fields[i]);
			}
		}
		// adjusts lot dimensions
		if (ff.id=='ui_lot_area_acres' || ff.id=='ui_lot_width' || ff.id=='ui_lot_length') {
			validateLotDetails(ff);
		}
		// adjusts roof dimensions
		if (ff.id=='ui_roof_area' || ff.id=='ui_roof_width' || ff.id=='ui_roof_length') {
			validateRoofDetails(ff);
		}		
		// switches active CN fields based on soil type
		if (ff.id=='ui_soil_type') {
			toggleCN(ff.value);
		}		
		// adjusts percentages of predev land cover
		for (var i in arr_land_types_pre)  { // get global array
			if (ff.id==arr_land_types_pre[i]) {
				validateLandTypePercentages('pre');
				displayLandTypePercentage('pre');
			}
		}	
		// adjusts percentages of conv land cover
		for (var i in arr_land_types)  { // get global array
			if (ff.id==arr_land_types[i]) {
				validateLandTypePercentages();
				displayLandTypePercentage();
			}
		}
		// checks for change in any conv impervious dimension/area and adjusts percentages
		for (var i in arr_impervious_areas)  { // get global array
			if (ff.id==arr_impervious_areas[i]) {
				validateLandTypePercentages();
				displayLandTypePercentage();
			}
		}
		// update capture based on goal change
		if (ff.id=='ui_goal') {
			updateCapture();
		}
		// sets goal to 'custom' on change in capture
		if (ff.id=='ui_capture') {
			updateGoal();
		}
		// updates rainfall on change of zip code or storm type
		if (ff.id=='ui_zipcode' || ff.id=='ui_storm_type') {
			getRainfall();
			return false;
		}
		return true;
	} 
}

function toggleBMPDetails(box) {
	var bmp;
	var greenbox;
	for (var i in arr_bmps)  { // get global array
		if (box==arr_bmps[i] || box=='all') {
			bmp = document.getElementById('ui_' + arr_bmps[i]);
			greenbox = document.getElementById('box_' + arr_bmps[i]);
			if (bmp.checked===true) {
				greenbox.style.display = 'block';
			}
			else {
				greenbox.style.display = 'none';
			}
		}
	}
}

function isArray(obj) {
    return obj.constructor == Array;
}

function validatePercentage(fields) {
	if (isArray(fields)!==true) {
		fields =new Array (fields);
	}
	for (var i in fields) {
		var ff = document.getElementById(fields[i]);
		if (ff.value > 100) { ff.value = 100; }
		if (ff.value < 0) { ff.value = ''; }
		if (ff.value!=parseFloat(ff.value)) { ff.value = ''; }
	}
	return true;
}
	
function validateNumber(fields) {
	if (isArray(fields)!==true) {
		fields =new Array (fields);
	}
	for (var i in fields) {
		var ff = document.getElementById(fields[i]);
		if (ff.value != parseFloat(ff.value)) { ff.value = 0; }
	}
	return true;
}

function validateLandTypePercentages(g) {
	if (g=='pre') {
		var percentages = arr_land_types_pre; // get global array 
	}
	else {
		var percentages = arr_land_types; // get global array 
	}
	sum = addPercentages(percentages);
	if (g=='pre') {
		var lt_impervious = document.getElementById('ui_land_impervious_pct_pre');
		if (sum==0) {
			lt_pct = 100;
			lt_impervious.value = lt_pct;
		}
	}
	else {
		var lt_impervious = document.getElementById('ui_land_impervious_pct');
		lt_pct = calculateImperviousPercentage();
		lt_impervious.value = lt_pct;
	}
}

function calculateImperviousPercentage () {
	var lot_area_acres = parseFloat(document.getElementById("ui_lot_area_acres").value);
	if (isNaN(lot_area_acres)) { lot_area_acres = 0;}
	var lot_area = lot_area_acres * 43560;
	var roof_area = parseFloat(document.getElementById('ui_roof_area').value);
	if (isNaN(roof_area)) { roof_area = 0;}
	var parking_spots = parseFloat(document.getElementById('ui_parking_spots').value);
	if (isNaN(parking_spots)) { parking_spots = 0;}
	var parking_area = parseFloat(document.getElementById('ui_parking_area').value);
	if (isNaN(parking_area)) { parking_area = 0;}
	if (parking_area == 0) {
		parking_area = parking_spots * 300;	// *** parking spots assumed to be 300ft2 (20x10 for spot and 10x10 street area)
	}
	var sidewalk_length = parseFloat(document.getElementById('ui_sidewalk_length').value);
	if (isNaN(sidewalk_length)) { sidewalk_length = 0;}
	var sidewalk_width = parseFloat(document.getElementById('ui_sidewalk_width').value);
	if (isNaN(sidewalk_width)) { sidewalk_width = 0;}
	var street_length = parseFloat(document.getElementById('ui_street_length').value);
	if (isNaN(street_length)) { street_length = 0;}
	var street_width = parseFloat(document.getElementById('ui_street_width').value);
	if (isNaN(street_width)) { street_width = 0;}
	var driveway_length = parseFloat(document.getElementById('ui_driveway_length').value);
	if (isNaN(driveway_length)) { driveway_length = 0;}
	var driveway_width = parseFloat(document.getElementById('ui_driveway_width').value);
	if (isNaN(driveway_width)) { driveway_width = 0;}
	var impervious_area = roof_area + parking_area + (sidewalk_length * sidewalk_width) + (street_width * street_length) + (driveway_length * driveway_width);
	var impervious_area_pct = Math.round(impervious_area / lot_area * 1000) / 10;
	return impervious_area_pct;
}

function toggleCN(soil) {
	if (!soil) {
		var soil =  document.getElementById('ui_soil_type').value;
	}
	var field;
	var soiltypes = arr_soil_types; // get global array
	var cnfields = arr_cns; // get global array
	for (var s in soiltypes) {
		for (var f in cnfields) {
			field = document.getElementById('ui_cn_' + cnfields[f] + '_' + soiltypes[s]);
			if (soiltypes[s]==soil) {
				field.disabled = false;
			}
			else {
				field.disabled = true;
			}
		}
	}
}
	 
function validateLotDetails(ff) {
	var lot_area_acres = document.getElementById('ui_lot_area_acres');
	var lot_length = document.getElementById('ui_lot_length');
	var lot_width = document.getElementById('ui_lot_width');
	if (lot_area_acres.value > 0 && lot_length.value > 0 && lot_width.value > 0) {
		if (ff) {
			if (ff.id=='ui_lot_area_acres') {
				lot_length.value = '';
				lot_width.value = '';
			}
			else {
				lot_area_acres.value = Math.round(lot_length.value * lot_width.value / 43560 * 1000) / 1000;
			}
		}
		else {
			lot_length.value = '';
			lot_width.value = '';
		}
	}
}

function validateRoofDetails(ff) {
	var roof_area = document.getElementById('ui_roof_area');
	var roof_length = document.getElementById('ui_roof_length');
	var roof_width = document.getElementById('ui_roof_width');
	if (roof_area.value > 0 && roof_length.value > 0 && roof_width.value > 0) {
		if (ff) {
			if (ff.id=='ui_roof_area') {
				roof_length.value = '';
				roof_width.value = '';
				adjustRainGardenArea(roof_area.value);
			}
			else {
				roof_area.value = roof_length.value * roof_width.value;
			}
		}
		else {
			roof_length.value = '';
			roof_width.value = '';
		}
	}
}

function adjustRainGardenArea(ra) {
	var rain_garden_area = document.getElementById('ui_rain_garden_area');
	if (rain_garden_area.value==='') {
		rain_garden_area.value = Math.round(ra * 20 * 100) / 10000;
	}
}
	 
function validateRoadsideSwaleDetails() {	 
	var street_length = document.getElementById('ui_street_length');
	if (street_length.value > 0) {
		var roadside_swale_length = document.getElementById('ui_roadside_swale_length');
		//if (!isNaN(roadside_swale_length.value)) {
		//	if (roadside_swale_length.value > street_length.value) {
	 	//		roadside_swale_length.value = street_length.value;
		//	}
		//}
		//else {
	 	//	roadside_swale_length.value = '';
	 	//}
	}
}

function getRainfall() {
	var hourglass_zipcode = document.getElementById('hourglass_zipcode');
	hourglass_zipcode.style.display = 'inline';
	var storm_type = document.getElementById('ui_storm_type');
	var zipcode = document.getElementById('ui_zipcode');
	var url = 'get_location_variables.php?zipcode=' + zipcode.value + '&storm_type=' + storm_type.value;
	var httpLoc = getHTTPObject(); // We create the HTTP Object
	httpLoc.open('GET', url, true);
	httpLoc.onreadystatechange = function() {
		if (httpLoc.readyState == 4) {
			var jscript = httpLoc.responseText;
			eval(jscript);
			var rainfall = document.getElementById('ui_rainfall');
			var rainfall_pct_storm = document.getElementById('ui_rainfall_pct_storm');
			rainfall.value = precip.rainfall;
			rainfall_pct_storm.value = precip.rainfall_pct_storm;
			hourglass_zipcode.style.display = 'none';
			runCalculate();
		}
	}
	httpLoc.send(null);  
}

function updateGoal() {
	var goal = document.getElementById('ui_goal');
	goal.value = 0;
}

function updateCapture() {
	var goal = document.getElementById('ui_goal');
	var capture = document.getElementById('ui_capture');
	capture.value = s_goal[goal.value]['capture'];
}
	
function returnCalc(ff) {  
	if (window.event && window.event.keyCode == 13) {
		runCalculate(ff);
		return false;
	}
}


function runCalculate(ff) {
	var is_valid = validateForm(ff);
	if (is_valid===false) {
		return false;
	}
	var params = ''; // build parameter list
	for (var i in arr_text_fields) { // add text fields
		if (params!='') {
			params = params + '&';
		}
		params = params + arr_text_fields[i] + '=' + document.getElementById(arr_text_fields[i]).value;
	}
	var soil_type = document.getElementById('ui_soil_type').value;
	for (var i in arr_cns) { // add cns based on soil type
		if (params!='') {
			params = params + '&';
		}
		var ffn = 'ui_cn_'  + arr_cns[i] + '_' + soil_type;
		params = params + 'ui_cn_' + arr_cns[i] + '=' + document.getElementById(ffn).value;
	}
	params = params + '&ui_cn_lawn_amended=' + document.getElementById('ui_cn_lawn_good_a').value;
	for (var i in arr_checkbox_fields) { // add checkboxes
		if (params!='') {
			params = params + '&';
		}
		if (document.getElementById(arr_checkbox_fields[i]).checked) {
			params = params + arr_checkbox_fields[i] + '=1';
		}
		else {
			params = params + arr_checkbox_fields[i] + '=0';
		}
	}
	var inputPane = checkInputPane();
	var resultPane = checkResultPane();
	params = params + '&result_pane=' + resultPane;
	var url = 'results.php';
	var httpCalc = getHTTPObject(); // We create the HTTP Object
	httpCalc.open('POST', url, true);
	//Send the proper header information along with the request
	httpCalc.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	httpCalc.setRequestHeader('Content-length', params.length);
	httpCalc.setRequestHeader('Connection', 'close');
	httpCalc.onreadystatechange = function() {//Call a function when the state changes.
		if (httpCalc.readyState == 4 && httpCalc.status == 200) {
			result = httpCalc.responseText;
			var DivElement = document.getElementById('result-box');
			DivElement.innerHTML = result;
			updateVolumeCapture();
			toggleResultPane(resultPane);
		}
	}
	httpCalc.send(params);
}
	 
	 
function saveScenario(action) {
	var ui_zipcode = document.getElementById('ui_zipcode').value;
	var ui_rainfall = document.getElementById('ui_rainfall').value;
	var ui_storm_type = document.getElementById('ui_storm_type').value;
	var ui_rainfall_pct_storm = document.getElementById('ui_rainfall_pct_storm').value;
	var ui_lot_area_acres = document.getElementById('ui_lot_area_acres').value;
	var ui_lot_length = document.getElementById('ui_lot_length').value;
	var ui_lot_width = document.getElementById('ui_lot_width').value;
	var ui_roof_area = document.getElementById('ui_roof_area').value;
	var ui_roof_length = document.getElementById('ui_roof_length').value;
	var ui_roof_width = document.getElementById('ui_roof_width').value;
	var ui_soil_type = document.getElementById('ui_soil_type').value;
	var ui_land_impervious_pct_pre = document.getElementById('ui_land_impervious_pct_pre').value;
	var ui_land_lawn_good_pct_pre = document.getElementById('ui_land_lawn_good_pct_pre').value;
	var ui_land_lawn_fair_pct_pre = document.getElementById('ui_land_lawn_fair_pct_pre').value;
	var ui_land_urban_pct_pre = document.getElementById('ui_land_urban_pct_pre').value;
	var ui_land_desert_pct_pre = document.getElementById('ui_land_desert_pct_pre').value;
	var ui_land_newgrade_pct_pre = document.getElementById('ui_land_newgrade_pct_pre').value;
	var ui_land_rowcrops_pct_pre = document.getElementById('ui_land_rowcrops_pct_pre').value;
	var ui_land_pasture_pct_pre = document.getElementById('ui_land_pasture_pct_pre').value;
	var ui_land_meadow_pct_pre = document.getElementById('ui_land_meadow_pct_pre').value;
	var ui_land_woods_pct_pre = document.getElementById('ui_land_woods_pct_pre').value;
	var ui_land_desert_shrub_pct_pre = document.getElementById('ui_land_desert_shrub_pct_pre').value;
	var ui_land_wetlands_pct_pre = document.getElementById('ui_land_wetlands_pct_pre').value;		
	var ui_land_water_pct_pre = document.getElementById('ui_land_water_pct_pre').value;		
	var ui_land_impervious_pct = document.getElementById('ui_land_impervious_pct').value;	
	var ui_land_lawn_good_pct = document.getElementById('ui_land_lawn_good_pct').value;
	var ui_land_lawn_fair_pct = document.getElementById('ui_land_lawn_fair_pct').value;
	var ui_land_desert_pct = document.getElementById('ui_land_desert_pct').value;
	var ui_land_newgrade_pct = document.getElementById('ui_land_newgrade_pct').value;
	var ui_land_woods_pct = document.getElementById('ui_land_woods_pct').value;
	var ui_land_wetlands_pct = document.getElementById('ui_land_wetlands_pct').value;		
	var ui_land_water_pct = document.getElementById('ui_land_water_pct').value;		
	var ui_goal = document.getElementById('ui_goal').value;
	var ui_capture = document.getElementById('ui_capture').value;
	var ui_capture_scope = document.getElementById('ui_capture_scope').value;
	var ui_parking_spots = document.getElementById('ui_parking_spots').value;
	var ui_parking_area = document.getElementById('ui_parking_area').value;
	var ui_sidewalk_length = document.getElementById('ui_sidewalk_length').value;
	var ui_sidewalk_width = document.getElementById('ui_sidewalk_width').value;
	var ui_street_length = document.getElementById('ui_street_length').value;
	var ui_street_width = document.getElementById('ui_street_width').value;
	var ui_driveway_length = document.getElementById('ui_driveway_length').value;
	var ui_driveway_width = document.getElementById('ui_driveway_width').value;
	var ui_cn_impervious_a = document.getElementById('ui_cn_impervious_a').value;
	var ui_cn_lawn_good_a = document.getElementById('ui_cn_lawn_good_a').value;
	var ui_cn_lawn_fair_a = document.getElementById('ui_cn_lawn_fair_a').value;
	var ui_cn_urban_a = document.getElementById('ui_cn_urban_a').value;
	var ui_cn_desert_a = document.getElementById('ui_cn_desert_a').value;
	var ui_cn_newgrade_a = document.getElementById('ui_cn_newgrade_a').value;
	var ui_cn_rowcrops_a = document.getElementById('ui_cn_rowcrops_a').value;
	var ui_cn_pasture_a = document.getElementById('ui_cn_pasture_a').value;
	var ui_cn_meadow_a = document.getElementById('ui_cn_meadow_a').value;
	var ui_cn_woods_a = document.getElementById('ui_cn_woods_a').value;
	var ui_cn_desert_shrub_a = document.getElementById('ui_cn_desert_shrub_a').value;
	var ui_cn_wetlands_a = document.getElementById('ui_cn_wetlands_a').value;
	var ui_cn_water_a = document.getElementById('ui_cn_water_a').value;
	var ui_cn_green_roof_a = document.getElementById('ui_cn_green_roof_a').value;
	var ui_cn_rain_garden_a = document.getElementById('ui_cn_rain_garden_a').value;
	var ui_cn_native_vegetation_a = document.getElementById('ui_cn_native_vegetation_a').value;
	var ui_cn_filter_strips_a = document.getElementById('ui_cn_filter_strips_a').value;
	var ui_cn_swale_a = document.getElementById('ui_cn_swale_a').value;
	var ui_cn_trees_a = document.getElementById('ui_cn_trees_a').value;
	var ui_cn_porous_pavement_a = document.getElementById('ui_cn_porous_pavement_a').value;
	var ui_cn_amended_soil_a = document.getElementById('ui_cn_amended_soil_a').value;
	var ui_cn_gravel_a = document.getElementById('ui_cn_gravel_a').value;
	var ui_cn_impervious_b = document.getElementById('ui_cn_impervious_b').value;
	var ui_cn_lawn_good_b = document.getElementById('ui_cn_lawn_good_b').value;
	var ui_cn_lawn_fair_b = document.getElementById('ui_cn_lawn_fair_b').value;
	var ui_cn_urban_b = document.getElementById('ui_cn_urban_b').value;
	var ui_cn_desert_b = document.getElementById('ui_cn_desert_b').value;
	var ui_cn_newgrade_b = document.getElementById('ui_cn_newgrade_b').value;
	var ui_cn_rowcrops_b = document.getElementById('ui_cn_rowcrops_b').value;
	var ui_cn_pasture_b = document.getElementById('ui_cn_pasture_b').value;
	var ui_cn_meadow_b = document.getElementById('ui_cn_meadow_b').value;
	var ui_cn_woods_b = document.getElementById('ui_cn_woods_b').value;
	var ui_cn_desert_shrub_b = document.getElementById('ui_cn_desert_shrub_b').value;
	var ui_cn_wetlands_b = document.getElementById('ui_cn_wetlands_b').value;
	var ui_cn_water_b = document.getElementById('ui_cn_water_b').value;
	var ui_cn_green_roof_b = document.getElementById('ui_cn_green_roof_b').value;
	var ui_cn_rain_garden_b = document.getElementById('ui_cn_rain_garden_b').value;
	var ui_cn_native_vegetation_b = document.getElementById('ui_cn_native_vegetation_b').value;
	var ui_cn_filter_strips_b = document.getElementById('ui_cn_filter_strips_b').value;
	var ui_cn_swale_b = document.getElementById('ui_cn_swale_b').value;
	var ui_cn_trees_b = document.getElementById('ui_cn_trees_b').value;
	var ui_cn_porous_pavement_b = document.getElementById('ui_cn_porous_pavement_b').value;
	var ui_cn_amended_soil_b = document.getElementById('ui_cn_amended_soil_b').value;
	var ui_cn_gravel_b = document.getElementById('ui_cn_gravel_b').value;
	var ui_cn_impervious_c = document.getElementById('ui_cn_impervious_c').value;
	var ui_cn_lawn_good_c = document.getElementById('ui_cn_lawn_good_c').value;
	var ui_cn_lawn_fair_c = document.getElementById('ui_cn_lawn_fair_c').value;
	var ui_cn_urban_c = document.getElementById('ui_cn_urban_c').value;
	var ui_cn_desert_c = document.getElementById('ui_cn_desert_c').value;
	var ui_cn_newgrade_c = document.getElementById('ui_cn_newgrade_c').value;
	var ui_cn_rowcrops_c = document.getElementById('ui_cn_rowcrops_c').value;
	var ui_cn_pasture_c = document.getElementById('ui_cn_pasture_c').value;
	var ui_cn_meadow_c = document.getElementById('ui_cn_meadow_c').value;
	var ui_cn_woods_c = document.getElementById('ui_cn_woods_c').value;
	var ui_cn_desert_shrub_c = document.getElementById('ui_cn_desert_shrub_c').value;
	var ui_cn_wetlands_c = document.getElementById('ui_cn_wetlands_c').value;
	var ui_cn_water_c = document.getElementById('ui_cn_water_c').value;
	var ui_cn_green_roof_c = document.getElementById('ui_cn_green_roof_c').value;
	var ui_cn_rain_garden_c = document.getElementById('ui_cn_rain_garden_c').value;
	var ui_cn_native_vegetation_c = document.getElementById('ui_cn_native_vegetation_c').value;
	var ui_cn_filter_strips_c = document.getElementById('ui_cn_filter_strips_c').value;
	var ui_cn_swale_c = document.getElementById('ui_cn_swale_c').value;
	var ui_cn_trees_c = document.getElementById('ui_cn_trees_c').value;
	var ui_cn_porous_pavement_c = document.getElementById('ui_cn_porous_pavement_c').value;
	var ui_cn_amended_soil_c = document.getElementById('ui_cn_amended_soil_c').value;
	var ui_cn_gravel_c = document.getElementById('ui_cn_gravel_c').value;
	var ui_cn_impervious_d = document.getElementById('ui_cn_impervious_d').value;
	var ui_cn_lawn_good_d = document.getElementById('ui_cn_lawn_good_d').value;
	var ui_cn_lawn_fair_d = document.getElementById('ui_cn_lawn_fair_d').value;
	var ui_cn_urban_d = document.getElementById('ui_cn_urban_d').value;
	var ui_cn_desert_d = document.getElementById('ui_cn_desert_d').value;
	var ui_cn_newgrade_d = document.getElementById('ui_cn_newgrade_d').value;
	var ui_cn_rowcrops_d = document.getElementById('ui_cn_rowcrops_d').value;
	var ui_cn_pasture_d = document.getElementById('ui_cn_pasture_d').value;
	var ui_cn_meadow_d = document.getElementById('ui_cn_meadow_d').value;
	var ui_cn_woods_d = document.getElementById('ui_cn_woods_d').value;
	var ui_cn_desert_shrub_d = document.getElementById('ui_cn_desert_shrub_d').value;
	var ui_cn_wetlands_d = document.getElementById('ui_cn_wetlands_d').value;
	var ui_cn_water_d = document.getElementById('ui_cn_water_d').value;
	var ui_cn_green_roof_d = document.getElementById('ui_cn_green_roof_d').value;
	var ui_cn_rain_garden_d = document.getElementById('ui_cn_rain_garden_d').value;
	var ui_cn_native_vegetation_d = document.getElementById('ui_cn_native_vegetation_d').value;
	var ui_cn_filter_strips_d = document.getElementById('ui_cn_filter_strips_d').value;
	var ui_cn_swale_d = document.getElementById('ui_cn_swale_d').value;
	var ui_cn_trees_d = document.getElementById('ui_cn_trees_d').value;
	var ui_cn_porous_pavement_d = document.getElementById('ui_cn_porous_pavement_d').value;
	var ui_cn_amended_soil_d = document.getElementById('ui_cn_amended_soil_d').value;
	var ui_cn_gravel_d = document.getElementById('ui_cn_gravel_d').value;
	var ui_discount_rate = document.getElementById('ui_discount_rate').value;
	var ui_life_cycle = document.getElementById('ui_life_cycle').value;
	var ui_green_roof = document.getElementById('ui_green_roof').checked;
		if (ui_green_roof===true) {ui_green_roof='checked';} else {ui_green_roof='unchecked';}		
	var ui_green_roof_area_pct = document.getElementById('ui_green_roof_area_pct').value;		
	var ui_green_roof_depth = document.getElementById('ui_green_roof_depth').value;		
	var ui_green_roof_porosity = document.getElementById('ui_green_roof_porosity').value;
	var ui_planter_boxes = document.getElementById('ui_planter_boxes').checked;
		if (ui_planter_boxes===true) {ui_planter_boxes='checked';} else {ui_planter_boxes='unchecked';}		
	var ui_planter_boxes_area = document.getElementById('ui_planter_boxes_area').value;		
	var ui_planter_boxes_soil_depth = document.getElementById('ui_planter_boxes_soil_depth').value;
	var ui_planter_boxes_soil_porosity = document.getElementById('ui_planter_boxes_soil_porosity').value;
	var ui_planter_boxes_agg_depth = document.getElementById('ui_planter_boxes_agg_depth').value;
	var ui_planter_boxes_agg_porosity = document.getElementById('ui_planter_boxes_agg_porosity').value;
	var ui_rain_garden = document.getElementById('ui_rain_garden').checked;
		if (ui_rain_garden===true) {ui_rain_garden='checked';} else {ui_rain_garden='unchecked';}
	var ui_rain_garden_area = document.getElementById('ui_rain_garden_area').value;
	var ui_rain_garden_soil_depth = document.getElementById('ui_rain_garden_soil_depth').value;
	var ui_rain_garden_soil_porosity = document.getElementById('ui_rain_garden_soil_porosity').value;
	var ui_rain_garden_agg_depth = document.getElementById('ui_rain_garden_agg_depth').value;
	var ui_rain_garden_agg_porosity = document.getElementById('ui_rain_garden_agg_porosity').value;
	var ui_cistern = document.getElementById('ui_cistern').checked;
		if (ui_cistern===true) {ui_cistern='checked';} else {ui_cistern='unchecked';}
	var ui_cistern_volume = document.getElementById('ui_cistern_volume').value;
	var ui_barrel_volume = document.getElementById('ui_barrel_volume').value;
	var ui_reduced_street= document.getElementById('ui_reduced_street').checked;
		if (ui_reduced_street===true) {ui_reduced_street='checked';} else {ui_reduced_street='unchecked';}
	var ui_reduced_street_width_pct = document.getElementById('ui_reduced_street_width_pct').value;
	var ui_permeable_parking = document.getElementById('ui_permeable_parking').checked;
		if (ui_permeable_parking===true) {ui_permeable_parking='checked';} else {ui_permeable_parking='unchecked';}
	var ui_permeable_parking_area_pct = document.getElementById('ui_permeable_parking_area_pct').value;
	var ui_permeable_parking_material = document.getElementById('ui_permeable_parking_material').value;
	var ui_permeable_parking_depth = document.getElementById('ui_permeable_parking_depth').value;
	var ui_permeable_parking_porosity = document.getElementById('ui_permeable_parking_porosity').value;
	var ui_permeable_driveway = document.getElementById('ui_permeable_driveway').checked;
		if (ui_permeable_driveway===true) {ui_permeable_driveway='checked';} else {ui_permeable_driveway='unchecked';}
	var ui_permeable_driveway_area_pct = document.getElementById('ui_permeable_driveway_area_pct').value;
	var ui_permeable_driveway_material = document.getElementById('ui_permeable_driveway_material').value;
	var ui_permeable_driveway_depth = document.getElementById('ui_permeable_driveway_depth').value;
	var ui_permeable_driveway_porosity = document.getElementById('ui_permeable_driveway_porosity').value;
	var ui_permeable_sidewalk = document.getElementById('ui_permeable_sidewalk').checked;
		if (ui_permeable_sidewalk===true) {ui_permeable_sidewalk='checked';} else {ui_permeable_sidewalk='unchecked';}
	var ui_permeable_sidewalk_area_pct = document.getElementById('ui_permeable_sidewalk_area_pct').value;
	var ui_permeable_sidewalk_material = document.getElementById('ui_permeable_sidewalk_material').value;
	var ui_permeable_sidewalk_depth = document.getElementById('ui_permeable_sidewalk_depth').value;
	var ui_permeable_sidewalk_porosity = document.getElementById('ui_permeable_sidewalk_porosity').value;
	var ui_native_vegetation = document.getElementById('ui_native_vegetation').checked;
		if (ui_native_vegetation===true) {ui_native_vegetation='checked';} else {ui_native_vegetation='unchecked';}
	var ui_native_vegetation_area_pct = document.getElementById('ui_native_vegetation_area_pct').value;
	var ui_filter_strips = document.getElementById('ui_filter_strips').checked;
		if (ui_filter_strips===true) {ui_filter_strips='checked';} else {ui_filter_strips='unchecked';}
	var ui_filter_strips_length = document.getElementById('ui_filter_strips_length').value;
	var ui_filter_strips_width = document.getElementById('ui_filter_strips_width').value;
	var ui_filter_strips_depth = document.getElementById('ui_filter_strips_depth').value;
	var ui_filter_strips_porosity = document.getElementById('ui_filter_strips_porosity').value;
	var ui_amended_soil = document.getElementById('ui_amended_soil').checked;
		if (ui_amended_soil===true) {ui_amended_soil='checked';} else {ui_amended_soil='unchecked';}
	var ui_amended_soil_area_pct = document.getElementById('ui_amended_soil_area_pct').value;
	var ui_amended_soil_depth = document.getElementById('ui_amended_soil_depth').value;
	var ui_amended_soil_porosity = document.getElementById('ui_amended_soil_porosity').value;
	var ui_swales = document.getElementById('ui_swales').checked;
		if (ui_swales===true) {ui_swales='checked';} else {ui_swales='unchecked';}
	var ui_swales_length = document.getElementById('ui_swales_length').value;
	var ui_swales_width = document.getElementById('ui_swales_width').value;
	var ui_swales_top_width = document.getElementById('ui_swales_top_width').value;
	var ui_swales_depth = document.getElementById('ui_swales_depth').value;
	var ui_swales_porosity = document.getElementById('ui_swales_porosity').value;
	var ui_swales_soil_depth = document.getElementById('ui_swales_soil_depth').value;
	var ui_swales_soil_porosity = document.getElementById('ui_swales_soil_porosity').value;
	var ui_roadside_swales = document.getElementById('ui_roadside_swales').checked;
		if (ui_roadside_swales===true) {ui_roadside_swales='checked';} else {ui_roadside_swales='unchecked';}
	var ui_roadside_swales_length = document.getElementById('ui_roadside_swales_length').value;
	var ui_roadside_swales_width = document.getElementById('ui_roadside_swales_width').value;
	var ui_roadside_swales_top_width = document.getElementById('ui_roadside_swales_top_width').value;
	var ui_roadside_swales_soil_depth = document.getElementById('ui_roadside_swales_soil_depth').value;
	var ui_roadside_swales_soil_porosity = document.getElementById('ui_roadside_swales_soil_porosity').value;
	var ui_roadside_swales_depth = document.getElementById('ui_roadside_swales_depth').value;
	var ui_roadside_swales_porosity = document.getElementById('ui_roadside_swales_porosity').value;
	var ui_trees = document.getElementById('ui_trees').checked;
		if (ui_trees===true) {ui_trees='checked';} else {ui_trees='unchecked';}
	var ui_trees_qty = document.getElementById('ui_trees_qty').value;
	var ui_trees_avg_area = document.getElementById('ui_trees_avg_area').value;
	var ui_trees_box_length = document.getElementById('ui_trees_box_length').value;
	var ui_trees_box_width = document.getElementById('ui_trees_box_width').value;
	var ui_trees_soil_depth = document.getElementById('ui_trees_soil_depth').value;
	var ui_trees_soil_porosity = document.getElementById('ui_trees_soil_porosity').value;

	var params = '';
	if (ui_zipcode!="") { params = params + "zipcode=" + ui_zipcode; }
	if (ui_rainfall!="") { params = params + "&rainfall=" + ui_rainfall; }
	if (ui_storm_type!="") { params = params + "&storm_type=" + ui_storm_type; }
	if (ui_rainfall_pct_storm!="") { params = params + "&rainfall_pct_storm=" + ui_rainfall_pct_storm; }
	if (ui_lot_area_acres!="") { params = params + "&lot_area_acres=" + ui_lot_area_acres; }
	if (ui_lot_length!="") { params = params + "&lot_length=" + ui_lot_length; }
	if (ui_lot_width!="") { params = params + "&lot_width=" + ui_lot_width; }
	if (ui_roof_area!="") { params = params + "&roof_area=" + ui_roof_area; }
	if (ui_roof_length!="") { params = params + "&roof_length=" + ui_roof_length; }
	if (ui_roof_width!="") { params = params + "&roof_width=" + ui_roof_width; }
	if (ui_soil_type!="") { params = params + "&soil_type=" + ui_soil_type; }
	if (ui_land_impervious_pct_pre!="") { params = params + "&land_impervious_pct_pre=" + ui_land_impervious_pct_pre; }
	if (ui_land_lawn_good_pct_pre!="") { params = params + "&land_lawn_good_pct_pre=" + ui_land_lawn_good_pct_pre; }
	if (ui_land_lawn_fair_pct_pre!="") { params = params + "&land_lawn_fair_pct_pre=" + ui_land_lawn_fair_pct_pre; }
	if (ui_land_urban_pct_pre!="") { params = params + "&land_urban_pct_pre=" + ui_land_urban_pct_pre; }
	if (ui_land_desert_pct_pre!="") { params = params + "&land_desert_pct_pre=" + ui_land_desert_pct_pre; }
	if (ui_land_newgrade_pct_pre!="") { params = params + "&land_newgrade_pct_pre=" + ui_land_newgrade_pct_pre; }
	if (ui_land_rowcrops_pct_pre!="") { params = params + "&land_rowcrops_pct_pre=" + ui_land_rowcrops_pct_pre; }
	if (ui_land_pasture_pct_pre!="") { params = params + "&land_pasture_pct_pre=" + ui_land_pasture_pct_pre; }
	if (ui_land_meadow_pct_pre!="") { params = params + "&land_meadow_pct_pre=" + ui_land_meadow_pct_pre; }
	if (ui_land_woods_pct_pre!="") { params = params + "&land_woods_pct_pre=" + ui_land_woods_pct_pre; }
	if (ui_land_desert_shrub_pct_pre!="") { params = params + "&land_desert_shrub_pct_pre=" + ui_land_desert_shrub_pct_pre; }
	if (ui_land_wetlands_pct_pre!="") { params = params + "&land_wetlands_pct_pre=" + ui_land_wetlands_pct_pre; }
	if (ui_land_water_pct_pre!="") { params = params + "&land_water_pct_pre=" + ui_land_water_pct_pre; }
	if (ui_land_lawn_good_pct!="") { params = params + "&land_lawn_good_pct=" + ui_land_lawn_good_pct; }
	if (ui_land_lawn_fair_pct!="") { params = params + "&land_lawn_fair_pct=" + ui_land_lawn_fair_pct; }
	if (ui_land_desert_pct!="") { params = params + "&land_desert_pct=" + ui_land_desert_pct; }
	if (ui_land_newgrade_pct!="") { params = params + "&land_newgrade_pct=" + ui_land_newgrade_pct; }
	if (ui_land_woods_pct!="") { params = params + "&land_woods_pct=" + ui_land_woods_pct; }
	if (ui_land_wetlands_pct!="") { params = params + "&land_wetlands_pct=" + ui_land_wetlands_pct; }
	if (ui_land_water_pct!="") { params = params + "&land_water_pct=" + ui_land_water_pct; }
	if (ui_goal!="") { params = params + "&goal=" + ui_goal; }
	if (ui_capture!="") { params = params + "&capture=" + ui_capture; }
	if (ui_capture_scope!="") { params = params + "&capture_scope=" + ui_capture_scope; }
	if (ui_parking_spots!="") { params = params + "&parking_spots=" + ui_parking_spots; }
	if (ui_parking_area!="") { params = params + "&parking_area=" + ui_parking_area; }
	if (ui_sidewalk_length!="") { params = params + "&sidewalk_length=" + ui_sidewalk_length; }
	if (ui_sidewalk_width!="") { params = params + "&sidewalk_width=" + ui_sidewalk_width; }
	if (ui_street_length!="") { params = params + "&street_length=" + ui_street_length; }
	if (ui_street_width!="") { params = params + "&street_width=" + ui_street_width; }
	if (ui_driveway_length!="") { params = params + "&driveway_length=" + ui_driveway_length; }
	if (ui_driveway_width!="") { params = params + "&driveway_width=" + ui_driveway_width; }
	if (ui_cn_impervious_a!="") { params = params + "&cn_impervious_a=" + ui_cn_impervious_a; }
	if (ui_cn_lawn_good_a!="") { params = params + "&cn_lawn_good_a=" + ui_cn_lawn_good_a; }
	if (ui_cn_lawn_fair_a!="") { params = params + "&cn_lawn_fair_a=" + ui_cn_lawn_fair_a; }
	if (ui_cn_urban_a!="") { params = params + "&cn_urban_a=" + ui_cn_urban_a; }
	if (ui_cn_desert_a!="") { params = params + "&cn_desert_a=" + ui_cn_desert_a; }
	if (ui_cn_newgrade_a!="") { params = params + "&cn_newgrade_a=" + ui_cn_newgrade_a; }
	if (ui_cn_rowcrops_a!="") { params = params + "&cn_rowcrops_a=" + ui_cn_rowcrops_a; }
	if (ui_cn_pasture_a!="") { params = params + "&cn_pasture_a=" + ui_cn_pasture_a; }
	if (ui_cn_meadow_a!="") { params = params + "&cn_meadow_a=" + ui_cn_meadow_a; }
	if (ui_cn_woods_a!="") { params = params + "&cn_woods_a=" + ui_cn_woods_a; }
	if (ui_cn_desert_shrub_a!="") { params = params + "&cn_desert_shrub_a=" + ui_cn_desert_shrub_a; }
	if (ui_cn_wetlands_a!="") { params = params + "&cn_wetlands_a=" + ui_cn_wetlands_a; }
	if (ui_cn_water_a!="") { params = params + "&cn_water_a=" + ui_cn_water_a; }
	if (ui_cn_impervious_b!="") { params = params + "&cn_impervious_b=" + ui_cn_impervious_b; }
	if (ui_cn_lawn_good_b!="") { params = params + "&cn_lawn_good_b=" + ui_cn_lawn_good_b; }
	if (ui_cn_lawn_fair_b!="") { params = params + "&cn_lawn_fair_b=" + ui_cn_lawn_fair_b; }
	if (ui_cn_urban_b!="") { params = params + "&cn_urban_b=" + ui_cn_urban_b; }
	if (ui_cn_desert_b!="") { params = params + "&cn_desert_b=" + ui_cn_desert_b; }
	if (ui_cn_newgrade_b!="") { params = params + "&cn_newgrade_b=" + ui_cn_newgrade_b; }
	if (ui_cn_rowcrops_b!="") { params = params + "&cn_rowcrops_b=" + ui_cn_rowcrops_b; }
	if (ui_cn_pasture_b!="") { params = params + "&cn_pasture_b=" + ui_cn_pasture_b; }
	if (ui_cn_meadow_b!="") { params = params + "&cn_meadow_b=" + ui_cn_meadow_b; }
	if (ui_cn_woods_b!="") { params = params + "&cn_woods_b=" + ui_cn_woods_b; }
	if (ui_cn_desert_shrub_b!="") { params = params + "&cn_desert_shrub_b=" + ui_cn_desert_shrub_b; }
	if (ui_cn_wetlands_b!="") { params = params + "&cn_wetlands_b=" + ui_cn_wetlands_b; }
	if (ui_cn_water_b!="") { params = params + "&cn_water_b=" + ui_cn_water_b; }
	if (ui_cn_impervious_c!="") { params = params + "&cn_impervious_c=" + ui_cn_impervious_c; }
	if (ui_cn_lawn_good_c!="") { params = params + "&cn_lawn_good_c=" + ui_cn_lawn_good_c; }
	if (ui_cn_lawn_fair_c!="") { params = params + "&cn_lawn_fair_c=" + ui_cn_lawn_fair_c; }
	if (ui_cn_urban_c!="") { params = params + "&cn_urban_c=" + ui_cn_urban_c; }
	if (ui_cn_desert_c!="") { params = params + "&cn_desert_c=" + ui_cn_desert_c; }
	if (ui_cn_newgrade_c!="") { params = params + "&cn_newgrade_c=" + ui_cn_newgrade_c; }
	if (ui_cn_rowcrops_c!="") { params = params + "&cn_rowcrops_c=" + ui_cn_rowcrops_c; }
	if (ui_cn_pasture_c!="") { params = params + "&cn_pasture_c=" + ui_cn_pasture_c; }
	if (ui_cn_meadow_c!="") { params = params + "&cn_meadow_c=" + ui_cn_meadow_c; }
	if (ui_cn_woods_c!="") { params = params + "&cn_woods_c=" + ui_cn_woods_c; }
	if (ui_cn_desert_shrub_c!="") { params = params + "&cn_desert_shrub_c=" + ui_cn_desert_shrub_c; }
	if (ui_cn_wetlands_c!="") { params = params + "&cn_wetlands_c=" + ui_cn_wetlands_c; }
	if (ui_cn_water_c!="") { params = params + "&cn_water_c=" + ui_cn_water_c; }
	if (ui_cn_impervious_d!="") { params = params + "&cn_impervious_d=" + ui_cn_impervious_d; }
	if (ui_cn_lawn_good_d!="") { params = params + "&cn_lawn_good_d=" + ui_cn_lawn_good_d; }
	if (ui_cn_lawn_fair_d!="") { params = params + "&cn_lawn_fair_d=" + ui_cn_lawn_fair_d; }
	if (ui_cn_urban_d!="") { params = params + "&cn_urban_d=" + ui_cn_urban_d; }
	if (ui_cn_desert_d!="") { params = params + "&cn_desert_d=" + ui_cn_desert_d; }
	if (ui_cn_newgrade_d!="") { params = params + "&cn_newgrade_d=" + ui_cn_newgrade_d; }
	if (ui_cn_rowcrops_d!="") { params = params + "&cn_rowcrops_d=" + ui_cn_rowcrops_d; }
	if (ui_cn_pasture_d!="") { params = params + "&cn_pasture_d=" + ui_cn_pasture_d; }
	if (ui_cn_meadow_d!="") { params = params + "&cn_meadow_d=" + ui_cn_meadow_d; }
	if (ui_cn_woods_d!="") { params = params + "&cn_woods_d=" + ui_cn_woods_d; }
	if (ui_cn_desert_shrub_d!="") { params = params + "&cn_desert_shrub_d=" + ui_cn_desert_shrub_d; }
	if (ui_cn_wetlands_d!="") { params = params + "&cn_wetlands_d=" + ui_cn_wetlands_d; }
	if (ui_cn_water_d!="") { params = params + "&cn_water_d=" + ui_cn_water_d; }
	if (ui_cn_green_roof_a!="") { params = params + "&cn_green_roof_a=" + ui_cn_green_roof_a; }
	if (ui_cn_rain_garden_a!="") { params = params + "&cn_rain_garden_a=" + ui_cn_rain_garden_a; }
	if (ui_cn_native_vegetation_a!="") { params = params + "&cn_native_vegetation_a=" + ui_cn_native_vegetation_a; }
	if (ui_cn_filter_strips_a!="") { params = params + "&cn_filter_strips_a=" + ui_cn_filter_strips_a; }
	if (ui_cn_swale_a!="") { params = params + "&cn_swale_a=" + ui_cn_swale_a; }
	if (ui_cn_trees_a!="") { params = params + "&cn_trees_a=" + ui_cn_trees_a; }
	if (ui_cn_porous_pavement_a!="") { params = params + "&cn_porous_pavement_a=" + ui_cn_porous_pavement_a; }
	if (ui_cn_amended_soil_a!="") { params = params + "&cn_amended_soil_a=" + ui_cn_amended_soil_a; }
	if (ui_cn_gravel_a!="") { params = params + "&cn_gravel_a=" + ui_cn_gravel_a; }
	if (ui_cn_green_roof_b!="") { params = params + "&cn_green_roof_b=" + ui_cn_green_roof_b; }
	if (ui_cn_rain_garden_b!="") { params = params + "&cn_rain_garden_b=" + ui_cn_rain_garden_b; }
	if (ui_cn_native_vegetation_b!="") { params = params + "&cn_native_vegetation_b=" + ui_cn_native_vegetation_b; }
	if (ui_cn_filter_strips_b!="") { params = params + "&cn_filter_strips_b=" + ui_cn_filter_strips_b; }
	if (ui_cn_swale_b!="") { params = params + "&cn_swale_b=" + ui_cn_swale_b; }
	if (ui_cn_trees_b!="") { params = params + "&cn_trees_b=" + ui_cn_trees_b; }
	if (ui_cn_porous_pavement_b!="") { params = params + "&cn_porous_pavement_b=" + ui_cn_porous_pavement_b; }
	if (ui_cn_amended_soil_b!="") { params = params + "&cn_amended_soil_b=" + ui_cn_amended_soil_b; }
	if (ui_cn_gravel_b!="") { params = params + "&cn_gravel_b=" + ui_cn_gravel_b; }
	if (ui_cn_green_roof_c!="") { params = params + "&cn_green_roof_c=" + ui_cn_green_roof_c; }
	if (ui_cn_rain_garden_c!="") { params = params + "&cn_rain_garden_c=" + ui_cn_rain_garden_c; }
	if (ui_cn_native_vegetation_c!="") { params = params + "&cn_native_vegetation_c=" + ui_cn_native_vegetation_c; }
	if (ui_cn_filter_strips_c!="") { params = params + "&cn_filter_strips_c=" + ui_cn_filter_strips_c; }
	if (ui_cn_swale_c!="") { params = params + "&cn_swale_c=" + ui_cn_swale_c; }
	if (ui_cn_trees_c!="") { params = params + "&cn_trees_c=" + ui_cn_trees_c; }
	if (ui_cn_porous_pavement_c!="") { params = params + "&cn_porous_pavement_c=" + ui_cn_porous_pavement_c; }
	if (ui_cn_amended_soil_c!="") { params = params + "&cn_amended_soil_c=" + ui_cn_amended_soil_c; }
	if (ui_cn_gravel_c!="") { params = params + "&cn_gravel_c=" + ui_cn_gravel_c; }
	if (ui_cn_green_roof_d!="") { params = params + "&cn_green_roof_d=" + ui_cn_green_roof_d; }
	if (ui_cn_rain_garden_d!="") { params = params + "&cn_rain_garden_d=" + ui_cn_rain_garden_d; }
	if (ui_cn_native_vegetation_d!="") { params = params + "&cn_native_vegetation_d=" + ui_cn_native_vegetation_d; }
	if (ui_cn_filter_strips_d!="") { params = params + "&cn_filter_strips_d=" + ui_cn_filter_strips_d; }
	if (ui_cn_swale_d!="") { params = params + "&cn_swale_d=" + ui_cn_swale_d; }
	if (ui_cn_trees_d!="") { params = params + "&cn_trees_d=" + ui_cn_trees_d; }
	if (ui_cn_porous_pavement_d!="") { params = params + "&cn_porous_pavement_d=" + ui_cn_porous_pavement_d; }
	if (ui_cn_amended_soil_d!="") { params = params + "&cn_amended_soil_d=" + ui_cn_amended_soil_d; }
	if (ui_cn_gravel_d!="") { params = params + "&cn_gravel_d=" + ui_cn_gravel_d; }
	if (ui_discount_rate!="") { params = params + "&discount_rate=" + ui_discount_rate; }
	if (ui_life_cycle!="") { params = params + "&life_cycle=" + ui_life_cycle; }
	if (ui_green_roof!="") { params = params + "&green_roof=" + ui_green_roof; }
	if (ui_green_roof_area_pct!="") { params = params + "&green_roof_area_pct=" + ui_green_roof_area_pct; }
	if (ui_green_roof_depth!="") { params = params + "&green_roof_depth=" + ui_green_roof_depth; }
	if (ui_green_roof_porosity!="") { params = params + "&green_roof_porosity=" + ui_green_roof_porosity; }
	if (ui_planter_boxes!="") { params = params + "&planter_boxes=" + ui_planter_boxes; }
	if (ui_planter_boxes_area!="") { params = params + "&planter_boxes_area=" + ui_planter_boxes_area; }
	if (ui_planter_boxes_soil_depth!="") { params = params + "&planter_boxes_soil_depth=" + ui_planter_boxes_soil_depth; }
	if (ui_planter_boxes_soil_porosity!="") { params = params + "&planter_boxes_soil_porosity=" + ui_planter_boxes_soil_porosity; }
	if (ui_planter_boxes_agg_depth!="") { params = params + "&planter_boxes_agg_depth=" + ui_planter_boxes_agg_depth; }
	if (ui_planter_boxes_agg_porosity!="") { params = params + "&planter_boxes_agg_porosity=" + ui_planter_boxes_agg_porosity; }
	if (ui_rain_garden!="") { params = params + "&rain_garden=" + ui_rain_garden; }
	if (ui_rain_garden_area!="") { params = params + "&rain_garden_area=" + ui_rain_garden_area; }
	if (ui_rain_garden_soil_depth!="") { params = params + "&rain_garden_soil_depth=" + ui_rain_garden_soil_depth; }
	if (ui_rain_garden_soil_porosity!="") { params = params + "&rain_garden_soil_porosity=" + ui_rain_garden_soil_porosity; }
	if (ui_rain_garden_agg_depth!="") { params = params + "&rain_garden_agg_depth=" + ui_rain_garden_agg_depth; }
	if (ui_rain_garden_agg_porosity!="") { params = params + "&rain_garden_agg_porosity=" + ui_rain_garden_agg_porosity; }
	if (ui_cistern!="") { params = params + "&cistern=" + ui_cistern; }
	if (ui_cistern_volume!="") { params = params + "&cistern_volume=" + ui_cistern_volume; }
	if (ui_barrel_volume!="") { params = params + "&barrel_volume=" + ui_barrel_volume; }
	if (ui_reduced_street!="") { params = params + "&reduced_street=" + ui_reduced_street; }
	if (ui_reduced_street_width_pct!="") { params = params + "&reduced_street_width_pct=" + ui_reduced_street_width_pct; }
	if (ui_permeable_parking!="") { params = params + "&permeable_parking=" + ui_permeable_parking; }
	if (ui_permeable_parking_area_pct!="") { params = params + "&permeable_parking_area_pct=" + ui_permeable_parking_area_pct; }
	if (ui_permeable_parking_material!="") { params = params + "&permeable_parking_material=" + ui_permeable_parking_material; }
	if (ui_permeable_parking_depth!="") { params = params + "&permeable_parking_depth=" + ui_permeable_parking_depth; }
	if (ui_permeable_parking_porosity!="") { params = params + "&permeable_parking_porosity=" + ui_permeable_parking_porosity; }
	if (ui_permeable_driveway!="") { params = params + "&permeable_driveway=" + ui_permeable_driveway; }
	if (ui_permeable_driveway_area_pct!="") { params = params + "&permeable_driveway_area_pct=" + ui_permeable_driveway_area_pct; }
	if (ui_permeable_driveway_material!="") { params = params + "&permeable_driveway_material=" + ui_permeable_driveway_material; }
	if (ui_permeable_driveway_depth!="") { params = params + "&permeable_driveway_depth=" + ui_permeable_driveway_depth; }
	if (ui_permeable_driveway_porosity!="") { params = params + "&permeable_driveway_porosity=" + ui_permeable_driveway_porosity; }
	if (ui_permeable_sidewalk!="") { params = params + "&permeable_sidewalk=" + ui_permeable_sidewalk; }
	if (ui_permeable_sidewalk_area_pct!="") { params = params + "&permeable_sidewalk_area_pct=" + ui_permeable_sidewalk_area_pct; }
	if (ui_permeable_sidewalk_material!="") { params = params + "&permeable_sidewalk_material=" + ui_permeable_sidewalk_material; }
	if (ui_permeable_sidewalk_depth!="") { params = params + "&permeable_sidewalk_depth=" + ui_permeable_sidewalk_depth; }
	if (ui_permeable_sidewalk_porosity!="") { params = params + "&permeable_sidewalk_porosity=" + ui_permeable_sidewalk_porosity; }
	if (ui_native_vegetation!="") { params = params + "&native_vegetation=" + ui_native_vegetation; }
	if (ui_native_vegetation_area_pct!="") { params = params + "&native_vegetation_area_pct=" + ui_native_vegetation_area_pct; }
	if (ui_filter_strips!="") { params = params + "&filter_strips=" + ui_filter_strips; }
	if (ui_filter_strips_length!="") { params = params + "&filter_strips_length=" + ui_filter_strips_length; }
	if (ui_filter_strips_width!="") { params = params + "&filter_strips_width=" + ui_filter_strips_width; }
	if (ui_filter_strips_depth!="") { params = params + "&filter_strips_depth=" + ui_filter_strips_depth; }
	if (ui_filter_strips_porosity!="") { params = params + "&filter_strips_porosity=" + ui_filter_strips_porosity; }
	if (ui_amended_soil!="") { params = params + "&amended_soil=" + ui_amended_soil; }
	if (ui_amended_soil_area_pct!="") { params = params + "&amended_soil_area_pct=" + ui_amended_soil_area_pct; }
	if (ui_amended_soil_depth!="") { params = params + "&amended_soil_depth=" + ui_amended_soil_depth; }
	if (ui_amended_soil_porosity!="") { params = params + "&amended_soil_porosity=" + ui_amended_soil_porosity; }
	if (ui_swales!="") { params = params + "&swales=" + ui_swales; }
	if (ui_swales_length!="") { params = params + "&swales_length=" + ui_swales_length; }
	if (ui_swales_width!="") { params = params + "&swales_width=" + ui_swales_width; }
	if (ui_swales_top_width!="") { params = params + "&swales_top_width=" + ui_swales_top_width; }
	if (ui_swales_depth!="") { params = params + "&swales_depth=" + ui_swales_depth; }
	if (ui_swales_porosity!="") { params = params + "&swales_porosity=" + ui_swales_porosity; }
	if (ui_swales_soil_depth!="") { params = params + "&swales_soil_depth=" + ui_swales_soil_depth; }
	if (ui_swales_soil_porosity!="") { params = params + "&swales_soil_porosity=" + ui_swales_soil_porosity; }
	if (ui_roadside_swales!="") { params = params + "&roadside_swales=" + ui_roadside_swales; }
	if (ui_roadside_swales_length!="") { params = params + "&roadside_swales_length=" + ui_roadside_swales_length; }
	if (ui_roadside_swales_width!="") { params = params + "&roadside_swales_width=" + ui_roadside_swales_width; }
	if (ui_roadside_swales_top_width!="") { params = params + "&roadside_swales_top_width=" + ui_roadside_swales_top_width; }
	if (ui_roadside_swales_depth!="") { params = params + "&roadside_swales_depth=" + ui_roadside_swales_depth; }
	if (ui_roadside_swales_porosity!="") { params = params + "&roadside_swales_porosity=" + ui_roadside_swales_porosity; }
	if (ui_roadside_swales_soil_depth!="") { params = params + "&roadside_swales_soil_depth=" + ui_roadside_swales_soil_depth; }
	if (ui_roadside_swales_soil_porosity!="") { params = params + "&roadside_swales_soil_porosity=" + ui_roadside_swales_soil_porosity; }
	if (ui_trees!="") { params = params + "&trees=" + ui_trees; }
	if (ui_trees_qty!="") { params = params + "&trees_qty=" + ui_trees_qty; }
	if (ui_trees_avg_area!="") { params = params + "&trees_avg_area=" + ui_trees_avg_area; }
	if (ui_trees_box_length!="") { params = params + "&trees_box_length=" + ui_trees_box_length; }
	if (ui_trees_box_width!="") { params = params + "&trees_box_width=" + ui_trees_box_width; }
	if (ui_trees_soil_depth!="") { params = params + "&trees_soil_depth=" + ui_trees_soil_depth; }
	if (ui_trees_soil_porosity!="") { params = params + "&trees_soil_porosity=" + ui_trees_soil_porosity; }
	
	var url = 'scenario_save.php';
	var httpSave = getHTTPObject(); // creates HTTP Object
	httpSave.open('POST', url, true);
	httpSave.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	httpSave.setRequestHeader('Content-length', params.length);
	httpSave.setRequestHeader('Connection', 'close');
	httpSave.onreadystatechange = function() {
		if (httpSave.readyState == 4 && httpSave.status == 200) {
			var sid = httpSave.responseText;
			document.getElementById('s').value = sid;
			if (action=='print') {
				loadPrintable();
			}
			else {
				updatePermalink();
			}
		}
	}
	httpSave.send(params);
}	 

function loadScenario(s) {
	if (!s) {
		s = document.getElementById('s').value;
	}
	var url = 'scenario_load.php';
	var params = '?s=' + s;
	url = url + params;
	var httpLoad = getHTTPObject(); // creates HTTP Object
	httpLoad.open('GET', url, true);
	httpLoad.onreadystatechange = function() {
		if (httpLoad.readyState == 4) {
			result = httpLoad.responseText;
			scenario = eval( "(" + result + ")" );
			var field_name = 'ui';
			for (key in scenario) {
    		field_name = 'ui_' + key;
    		if (document.getElementById(field_name)) {
					if (scenario[key]=='checked') {
    				document.getElementById(field_name).checked = true;
    			}
    			else if (scenario[key]=='unchecked'){
    				document.getElementById(field_name).checked = false;
    			}
    			else {
    				document.getElementById(field_name).value = scenario[key];
    			}
    		}
			}
			initializeForm();
		}
	}
	httpLoad.send(null);  
}

function updatePermalink() {
	var s = document.getElementById('s').value;
	var permalinkfield = document.getElementById('permalinkfield');
	var permalinklink = document.getElementById('permalinklink');
	permalinkfield.value = calc_url + '?s=' + s;
	permalinklink.innerHTML = '<a href="' + calc_url + '?s=' + s + '" target="_blank">open in a new window</a>';
	permalinkfield.focus();
	permalinkfield.select();
}
	 
function togglePermalink() {
	var permalinkbox = document.getElementById('permalinkbox');
	if (permalinkbox.style.display == 'none') {
		var permalinkfield = document.getElementById('permalinkfield');
		var permalinklink = document.getElementById('permalinklink');
		permalinkfield.value = '...';
		permalinklink.innerHTML = '...';
		saveScenario('permalink');
		permalinkbox.style.display = 'block'; 
	}
	else {
		permalinkbox.style.display = 'none'; 
	}
}

function loadPrintable() {
	var s = document.getElementById('s').value;
	location.href = calc_url + '?s=' + s + '&print=1';
}

function togglePrintable() {
	saveScenario('print');
}

function updateVolumeCapture() {
	var volume_capture_area =  document.getElementById('vol_capture_area');
	volume_capture_area.innerHTML = document.getElementById('uo_vol_capture_required').innerHTML;
}

function displayLandTypePercentage(g) {
	if (g=='pre') {
		var percentages = arr_land_types_pre; // get global array 
		var lttotalpct = document.getElementById('land_type_total_pct_pre');
		var normallink = document.getElementById('normallink_pre');
	}
	else {
		var percentages = arr_land_types; // get global array 
		var lttotalpct = document.getElementById('land_type_total_pct');
		var normallink = document.getElementById('normallink');
	}
	var sum = addPercentages(percentages);
	lttotalpct.innerHTML = Math.round(sum); // display sum of percentages
	if (sum==100) {
		normallink.style.display = 'none'; // hide normalization link
	}
	else {
		normallink.style.display = 'inline'; // show normalization link
	}		
}
	
function addPercentages(percentages) {
	var sum = 0;
	for (var i = 0; i < percentages.length; i++) {
		percentage = document.getElementById(percentages[i]);
		if (!isNaN(percentage.value) && percentage.value > 0) { 
  		sum += parseFloat(percentage.value);
  	}
	}
	return sum;
}

function normalizePercentages(g) {
	if (g=='pre') {
		var percentages = arr_land_types_pre; // get global array 
	}
	else {
		var percentages = arr_land_types; // get global array 
	}
	var percentage;
	var sum = 0;
	for (var i = 0; i < percentages.length; i++) {
		percentage = document.getElementById(percentages[i]);
		if (!isNaN(percentage.value) && percentage.value > 0) { 
  		sum += parseFloat(percentage.value);
  	}
	}
	var norm_factor = sum / 100;
	for (var i = 0; i < percentages.length; i++) {
		percentage = document.getElementById(percentages[i]);
		if (!isNaN(percentage.value) && percentage.value > 0) {
			percentage.value = Math.round(parseFloat(percentage.value)/norm_factor*10)/10;
		}
	}
	displayLandTypePercentage(g);	
}

function toggleDescription(d) {
	var description = document.getElementById(d);
	if (description.style.display != 'block') {
		description.style.display = 'block';
	}
	else {
		description.style.display = 'none';
	}
}

function toggleInfobox(d) {
	var description = document.getElementById(d);
	var os = Number(document.getElementById('inputs').scrollTop) + 50;
	os = os + 'px';
	if (description.style.display != 'block') {
		description.style.display = 'block';
		description.style.position = 'absolute';
		description.style.width = '300px';
		description.style.left = '100px';
		description.style.top = os;
	}
	else {
		description.style.display = 'none';
	}
}
	
function toggleCol2(bmp) {
	var bmpdescription;
	var bmps = arr_bmps; // get global array 
	bmps[bmps.length] = 'all';
	for (var bmpname in bmps) {
		bmpdescription = 'gd_' + bmps[bmpname];
		if (document.getElementById(bmpdescription)) {
			if (bmp==bmps[bmpname]) {
				document.getElementById(bmpdescription).style.display = 'block';
				document.getElementById('inputs').scrollTop = 0;
			}
			else {
				document.getElementById(bmpdescription).style.display = 'none';
			}
		}
	}
}		
			
// end
