// To make life easier, introduce shorthand variables
var other_products_input_box_ = document.getElementById("other_products_input_box");

type2_uncontrolled_ = document.getElementById("type2_uncontrolled");
type3_uncontrolled_ = document.getElementById("type3_uncontrolled");

var integer_input_boxes_array = new Array();
	integer_input_boxes_array[0] = type2_trucks_       = document.getElementById("type2_trucks");
	integer_input_boxes_array[1] = type3_trucks_       = document.getElementById("type3_trucks");
	integer_input_boxes_array[2] = type4_trucks_       = document.getElementById("type4_trucks");
	integer_input_boxes_array[3] = type5_trucks_       = document.getElementById("type5_trucks");
	integer_input_boxes_array[4] = type6_trucks_       = document.getElementById("type6_trucks");
	integer_input_boxes_array[5] = type7_trucks_       = document.getElementById("type7_trucks");
        integer_input_boxes_array[6] = type8_trucks_       = document.getElementById("type8_trucks");
        integer_input_boxes_array[7] = type9_trucks_       = document.getElementById("type9_trucks");
        integer_input_boxes_array[8] = type10_trucks_       = document.getElementById("type10_trucks");
        integer_input_boxes_array[9] = type11_trucks_       = document.getElementById("type11_trucks");
        integer_input_boxes_array[10] = type12_trucks_       = document.getElementById("type12_trucks");
        integer_input_boxes_array[11] = type13_trucks_       = document.getElementById("type13_trucks");
	integer_input_boxes_array[12] = type2_bc2_trucks_   = document.getElementById("type2_bc2_trucks");
	integer_input_boxes_array[13] = type3_bc2_trucks_   = document.getElementById("type3_bc2_trucks");
	integer_input_boxes_array[14] = type2_bc3S_trucks_  = document.getElementById("type2_bc3S_trucks");
	integer_input_boxes_array[15]= type3_bc3S_trucks_  = document.getElementById("type3_bc3S_trucks");
        integer_input_boxes_array[16]= type2_bc3L_trucks_  = document.getElementById("type2_bc3L_trucks");
	integer_input_boxes_array[17]= type3_bc3L_trucks_  = document.getElementById("type3_bc3L_trucks");
	integer_input_boxes_array[18]= type2_other_trucks_ = document.getElementById("type2_other_trucks");
	integer_input_boxes_array[19]= type3_other_trucks_ = document.getElementById("type3_other_trucks");

// variables declared after the form is rendered (foreground and background)
var gauge1_variable = document.getElementById("gauge1")
var gauge1_canvas = new jsGraphics(gauge1_variable);

var gauge2_variable = document.getElementById("gauge2")
var gauge2_canvas = new jsGraphics(gauge2_variable);

var gauge3_variable = document.getElementById("gauge3")
var gauge3_canvas = new jsGraphics(gauge3_variable);



function refresh_boxes(x) {

	// CLEAR AND HIDE ERROR MESSAGE BOX
	document.getElementById("equipment_numbers_error_field").innerHTML="";
        document.getElementById("equipment_numbers_error_field").style.display="none";

	var clean = true;

	// BY DEFAULT THE REPORT SECTION SHOULD NO BE VISIBLE
	document.getElementById("report_container").style.visibility="hidden";
        document.getElementById("request_quote_div").style.visibility="hidden";

	// MAKE SURE ALL ELEMENTS HAVE PROPER VALUES (NO RED BACKGROUNDS)
	for (var key in integer_input_boxes_array) {
		x=integer_input_boxes_array[key];
		if(x.value=="") {
			x.value="0";
		}
		if(x.style.background=='#f00000'||x.style.backgroundColor=='rgb(240, 0, 0)') {  //FF & IE hack
			document.getElementById("equipment_numbers_error_field").innerHTML="Emission limits cannot be calculated. Please correct numbers for boxes shown in red!<br>";
			clean = false;
		}
	}

	if(other_products_input_box_.value=="") {
		other_products_input_box_.value="0";
	}
	if(other_products_input_box_.style.background=='#f00000'||other_products_input_box_.style.backgroundColor=='rgb(240, 0, 0)') {  //FF & IE hack
		document.getElementById("equipment_numbers_error_field").innerHTML="Emission limits cannot be calculated. Please correct numbers for boxes shown in red!<br>";
		clean = false;
	}
	other_products_input_box_.value = parseFloat(other_products_input_box_.value).toFixed(1);


	/*
	AT THIS POINT ALL EQUIPMENT TEXT BOXES SHOULD SHOW VALID NUMERICAL ENTRIES
	*/

	// TYPE2 TRUCKS
	type2_uncontrolled_number = parseInt(type2_trucks_.value) - parseInt(type2_bc2_trucks_.value) - parseInt(type2_bc3S_trucks_.value) - parseInt(type2_bc3L_trucks_.value) - parseInt(type2_other_trucks_.value);
	type2_uncontrolled_.innerHTML = type2_uncontrolled_number;
	type2_uncontrolled_.style.color='#000000';
	if (type2_uncontrolled_number<0) {
		document.getElementById("equipment_numbers_error_field").innerHTML+="Emission limits cannot be calculated: number of controlled trucks manufactured between 1990 and 2000 cannot be more than total number of trucks!<br>";
		type2_uncontrolled_.style.color='#ff0000';
		clean = false;
	}

	// TYPE3 TRUCKS
	type3_uncontrolled_number = parseInt(type3_trucks_.value) - parseInt(type3_bc2_trucks_.value) - parseInt(type3_bc3S_trucks_.value) - parseInt(type3_bc3L_trucks_.value) - parseInt(type3_other_trucks_.value);
	type3_uncontrolled_.innerHTML = type3_uncontrolled_number;
	type3_uncontrolled_.style.color='#000000';
	if (type3_uncontrolled_number<0) {
		document.getElementById("equipment_numbers_error_field").innerHTML+="Emission limits cannot be calculated: number of controlled non-certified trucks manufactured between 2001 and 2003 cannot be more than total number of trucks!";
		type3_uncontrolled_.style.color='#ff0000';
		clean = false;
	}

	// CALCULATE FLEET SIZE CLASSIFICATION
	fleet_size	=       parseInt(type2_trucks_.value) +
				parseInt(type3_trucks_.value) +
				parseInt(type4_trucks_.value) +
				parseInt(type5_trucks_.value) +
				parseInt(type6_trucks_.value) +
				parseInt(type7_trucks_.value) +
                                parseInt(type8_trucks_.value) +
                                parseInt(type9_trucks_.value) +
                                parseInt(type10_trucks_.value) +
                                parseInt(type11_trucks_.value) +
                                parseInt(type12_trucks_.value) +
                                parseInt(type13_trucks_.value);
	if(fleet_size<1) {
		clean = false;
	} else if (fleet_size<=SMALL_FLEET_BRACKET) {

		document.getElementById("fleet_size_class").innerHTML = fleet_size_class_string = "Small";
		document.getElementById("tier1_emissions_limit").innerHTML = " Small fleets are exempt.";
		document.getElementById("tier2_emissions_limit").innerHTML = " Small fleets are exempt.";
		document.getElementById("tier3_emissions_limit").innerHTML = " Small fleets are exempt.";

	} else if (fleet_size<=MEDIUM_FLEET_BRACKET) {

		document.getElementById("fleet_size_class").innerHTML = fleet_size_class_string = "Medium";
		document.getElementById("tier1_emissions_limit").innerHTML =
								TIER1_FORKLIFT_MEDIUM_FLEET_EMISSIONS_LIMIT.toFixed(1)+" "+units_set_label+" Fleet Average.";
		document.getElementById("tier2_emissions_limit").innerHTML =
								TIER2_FORKLIFT_MEDIUM_FLEET_EMISSIONS_LIMIT.toFixed(1)+" "+units_set_label+" Fleet Average.";
		document.getElementById("tier3_emissions_limit").innerHTML =
								TIER3_FORKLIFT_MEDIUM_FLEET_EMISSIONS_LIMIT.toFixed(1)+" "+units_set_label+" Fleet Average.";
	} else {
		document.getElementById("fleet_size_class").innerHTML = fleet_size_class_string = "Large";
		document.getElementById("tier1_emissions_limit").innerHTML =
								TIER1_FORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT.toFixed(1)+" "+units_set_label+" Fleet Average.";
		document.getElementById("tier2_emissions_limit").innerHTML =
								TIER2_FORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT.toFixed(1)+" "+units_set_label+" Fleet Average.";
		document.getElementById("tier3_emissions_limit").innerHTML =
								TIER3_FORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT.toFixed(1)+" "+units_set_label+" Fleet Average.";
	}

	document.getElementById("fleet_size_class_number").innerHTML = fleet_size + " ";

	// END HERE IF THE FORM IS DIRTY
	if(!clean) {
                document.getElementById("equipment_numbers_error_field").style.display="block";
		return false;
	}

	// SHOW THE REPORT SECTION
	document.getElementById("report_container").style.visibility='visible';

        // TOTAL EMISSIONS BEFORE RETROFITTING
        total_emissions_before_retrofitting =
				LEVEL_2_EMISSION_FACTOR *
					parseInt(type2_trucks_.value)+
				LEVEL_3_EMISSION_FACTOR *
					parseInt(type3_trucks_.value)+
				LEVEL_4_EMISSION_FACTOR *(
					parseInt(type4_trucks_.value))+
				LEVEL_5_EMISSION_FACTOR *(
					parseInt(type5_trucks_.value))+
				LEVEL_6_EMISSION_FACTOR *(
					parseInt(type6_trucks_.value))+
				LEVEL_7_EMISSION_FACTOR *(
					parseInt(type7_trucks_.value))+
				LEVEL_8_EMISSION_FACTOR *(
					parseInt(type8_trucks_.value))+
				LEVEL_9_EMISSION_FACTOR *(
					parseInt(type9_trucks_.value))+
				LEVEL_10_EMISSION_FACTOR *(
					parseInt(type10_trucks_.value))+
				LEVEL_11_EMISSION_FACTOR *(
					parseInt(type11_trucks_.value))+
				LEVEL_12_EMISSION_FACTOR *(
					parseInt(type12_trucks_.value))+
				LEVEL_13_EMISSION_FACTOR *(
					parseInt(type13_trucks_.value));

        fleet_average_emissions_before_retrofitting = total_emissions_before_retrofitting/fleet_size;
        fleet_average_emissions_before_retrofitting = fleet_average_emissions_before_retrofitting.toFixed(1);

        total_emissions_before_retrofitting = total_emissions_before_retrofitting.toFixed(1);

	// CALCULATE TOTAL EMISSIONS AFTER RETROFITTING
        emissions =		LEVEL_2_EMISSION_FACTOR *(
					parseInt(type2_trucks_.value)-
					parseInt(type2_bc2_trucks_.value)-
					parseInt(type2_bc3S_trucks_.value)-
					parseInt(type2_bc3L_trucks_.value)-
					parseInt(type2_other_trucks_.value))+
				LEVEL_3_EMISSION_FACTOR *(
					parseInt(type3_trucks_.value)-
					parseInt(type3_bc2_trucks_.value)-
					parseInt(type3_bc3S_trucks_.value)-
					parseInt(type3_bc3L_trucks_.value)-
					parseInt(type3_other_trucks_.value))+
				LEVEL_4_EMISSION_FACTOR *(
					parseInt(type4_trucks_.value))+
				LEVEL_5_EMISSION_FACTOR *(
					parseInt(type5_trucks_.value))+
				LEVEL_6_EMISSION_FACTOR *(
					parseInt(type6_trucks_.value))+
				LEVEL_7_EMISSION_FACTOR *(
					parseInt(type7_trucks_.value))+
				LEVEL_8_EMISSION_FACTOR *(
					parseInt(type8_trucks_.value))+
				LEVEL_9_EMISSION_FACTOR *(
					parseInt(type9_trucks_.value))+
				LEVEL_10_EMISSION_FACTOR *(
					parseInt(type10_trucks_.value))+
				LEVEL_11_EMISSION_FACTOR *(
					parseInt(type11_trucks_.value))+
				LEVEL_12_EMISSION_FACTOR *(
					parseInt(type12_trucks_.value))+
				LEVEL_13_EMISSION_FACTOR *(
					parseInt(type13_trucks_.value))+
				BLUECAT_200_EMISSION_FACTOR *(
					parseInt(type2_bc2_trucks_.value)+
					parseInt(type3_bc2_trucks_.value))+
				BLUECAT_300S_EMISSION_FACTOR *(
					parseInt(type2_bc3S_trucks_.value)+
					parseInt(type3_bc3S_trucks_.value))+
				BLUECAT_300L_EMISSION_FACTOR *(
					parseInt(type2_bc3L_trucks_.value)+
					parseInt(type3_bc3L_trucks_.value))+
				parseFloat(other_products_input_box_.value) *(
					parseInt(type2_other_trucks_.value)+
					parseInt(type3_other_trucks_.value));

	document.getElementById("total_emissions").innerHTML = emissions.toFixed(1) + " ";


	// CALCULATE FLEET AVERAGE EMISSIONS
	average_emissions = emissions/fleet_size;
	document.getElementById("fleet_average_emissions").innerHTML = average_emissions.toFixed(1) + " ";

	// CALCULATE TOTAL NUMBER OF UNCONTROLLED TRUCKS
	number_of_uncontrolled_trucks = type2_uncontrolled_number + type3_uncontrolled_number;


	// TIER1 EMISSIONS LEVEL MET?
	if(fleet_size_class_string == "Small") {

		tier1_limit = TIER1_FORKLIFT_SMALL_FLEET_EMISSIONS_LIMIT ;
		document.getElementById("tier1_emissions_limit_met_label").innerHTML="YES";

		tier2_limit = TIER2_FORKLIFT_SMALL_FLEET_EMISSIONS_LIMIT ;
		document.getElementById("tier2_emissions_limit_met_label").innerHTML="YES";

		tier3_limit = TIER2_FORKLIFT_SMALL_FLEET_EMISSIONS_LIMIT ;
		document.getElementById("tier3_emissions_limit_met_label").innerHTML="YES";


	} else if (fleet_size_class_string == "Medium") {

		tier1_limit = TIER1_FORKLIFT_MEDIUM_FLEET_EMISSIONS_LIMIT;
		if (average_emissions < tier1_limit) {
            	document.getElementById("tier1_emissions_limit_met_label").innerHTML="YES";
		} else {
			document.getElementById("tier1_emissions_limit_met_label").innerHTML="NO";
		}

		tier2_limit = TIER2_FORKLIFT_MEDIUM_FLEET_EMISSIONS_LIMIT;
		if (average_emissions < tier2_limit) {
            	document.getElementById("tier2_emissions_limit_met_label").innerHTML="YES";
		} else {
			document.getElementById("tier2_emissions_limit_met_label").innerHTML="NO";
		}

		tier3_limit = TIER3_FORKLIFT_MEDIUM_FLEET_EMISSIONS_LIMIT;
		if (average_emissions < tier3_limit) {
            	document.getElementById("tier3_emissions_limit_met_label").innerHTML="YES";
		} else {
			document.getElementById("tier3_emissions_limit_met_label").innerHTML="NO";
		}

      } else if (fleet_size_class_string == "Large") {

		tier1_limit = TIER1_FORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT;
		if (average_emissions < tier1_limit) {
            	document.getElementById("tier1_emissions_limit_met_label").innerHTML="YES";
		} else {
			document.getElementById("tier1_emissions_limit_met_label").innerHTML="NO";
		}

		tier2_limit = TIER2_FORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT;
		if (average_emissions < tier2_limit) {
            	document.getElementById("tier2_emissions_limit_met_label").innerHTML="YES";
		} else {
			document.getElementById("tier2_emissions_limit_met_label").innerHTML="NO";
		}

		tier3_limit = TIER3_FORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT;
		if (average_emissions < tier3_limit) {
            	document.getElementById("tier3_emissions_limit_met_label").innerHTML="YES";
		} else {
			document.getElementById("tier3_emissions_limit_met_label").innerHTML="NO";
		}

	} else {
		alert('ERROR: Discard your calculations!');
		return false;
	}

	emission_gauge(average_emissions,tier1_limit,gauge1_canvas);
	emission_gauge(average_emissions,tier2_limit,gauge2_canvas);
	emission_gauge(average_emissions,tier3_limit,gauge3_canvas);

        if(fleet_size_class_string == "Medium" || fleet_size_class_string == "Large" ) {
            document.getElementById("request_quote_div").style.visibility="visible";
        }

        return true;

}

