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

nf_type2_uncontrolled_ = document.getElementById("nf_type2_uncontrolled");
nf_type3_uncontrolled_ = document.getElementById("nf_type3_uncontrolled");

var     nf_integer_input_boxes_array = new Array();
	nf_integer_input_boxes_array[0] = nf_type2_trucks_       = document.getElementById("nf_type2_trucks");
	nf_integer_input_boxes_array[1] = nf_type3_trucks_       = document.getElementById("nf_type3_trucks");
	nf_integer_input_boxes_array[2] = nf_type4_trucks_       = document.getElementById("nf_type4_trucks");
	nf_integer_input_boxes_array[3] = nf_type5_trucks_       = document.getElementById("nf_type5_trucks");
	nf_integer_input_boxes_array[4] = nf_type6_trucks_       = document.getElementById("nf_type6_trucks");
	nf_integer_input_boxes_array[5] = nf_type7_trucks_       = document.getElementById("nf_type7_trucks");
        nf_integer_input_boxes_array[6] = nf_type8_trucks_       = document.getElementById("nf_type8_trucks");
        nf_integer_input_boxes_array[7] = nf_type9_trucks_       = document.getElementById("nf_type9_trucks");
        nf_integer_input_boxes_array[8] = nf_type10_trucks_       = document.getElementById("nf_type10_trucks");
        nf_integer_input_boxes_array[9] = nf_type11_trucks_       = document.getElementById("nf_type11_trucks");
        nf_integer_input_boxes_array[10] = nf_type12_trucks_       = document.getElementById("nf_type12_trucks");
        nf_integer_input_boxes_array[11] = nf_type13_trucks_       = document.getElementById("nf_type13_trucks");
	nf_integer_input_boxes_array[12] = nf_type2_bc2_trucks_   = document.getElementById("nf_type2_bc2_trucks");
	nf_integer_input_boxes_array[13] = nf_type3_bc2_trucks_   = document.getElementById("nf_type3_bc2_trucks");
	nf_integer_input_boxes_array[14] = nf_type2_bc3S_trucks_  = document.getElementById("nf_type2_bc3S_trucks");
	nf_integer_input_boxes_array[15]= nf_type3_bc3S_trucks_  = document.getElementById("nf_type3_bc3S_trucks");
        nf_integer_input_boxes_array[16]= nf_type2_bc3L_trucks_  = document.getElementById("nf_type2_bc3L_trucks");
	nf_integer_input_boxes_array[17]= nf_type3_bc3L_trucks_  = document.getElementById("nf_type3_bc3L_trucks");
	nf_integer_input_boxes_array[18]= nf_type2_other_trucks_ = document.getElementById("nf_type2_other_trucks");
	nf_integer_input_boxes_array[19]= nf_type3_other_trucks_ = document.getElementById("nf_type3_other_trucks");

var nf_gauge1_variable = document.getElementById("nf_gauge1")
var nf_gauge1_canvas = new jsGraphics(nf_gauge1_variable);

var nf_gauge2_variable = document.getElementById("nf_gauge2")
var nf_gauge2_canvas = new jsGraphics(nf_gauge2_variable);

var nf_gauge3_variable = document.getElementById("nf_gauge3")
var nf_gauge3_canvas = new jsGraphics(nf_gauge3_variable);


function nf_refresh_boxes(x) {

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

	var nf_clean = true;

	// BY DEFAULT THE REPORT SECTION SHOULD NOT BE VISIBLE
	document.getElementById("nf_report_container").style.visibility="hidden";
        document.getElementById("nf_request_quote_div").style.visibility="hidden";

	// MAKE SURE ALL ELEMENTS HAVE PROPER VALUES (NO RED BACKGROUNDS)
	for (var key in nf_integer_input_boxes_array) {
		x=nf_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("nf_equipment_numbers_error_field").innerHTML="Emission limits cannot be calculated. Please correct numbers for boxes shown in red!<br>";
			nf_clean = false;
		}
	}
        
	if(nf_other_products_input_box_.value=="") {
		nf_other_products_input_box_.value="0";
	}
	if(nf_other_products_input_box_.style.background=='#f00000'||nf_other_products_input_box_.style.backgroundColor=='rgb(240, 0, 0)') {  //FF & IE hack
		document.getElementById("nf_equipment_numbers_error_field").innerHTML="Emission limits cannot be calculated. Please correct numbers for boxes shown in red!<br>";
		nf_clean = false;
	}
	nf_other_products_input_box_.value = parseFloat(nf_other_products_input_box_.value).toFixed(1);


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


	// TYPE2 TRUCKS
	nf_type2_uncontrolled_number = parseInt(nf_type2_trucks_.value) - parseInt(nf_type2_bc2_trucks_.value) - parseInt(nf_type2_bc3S_trucks_.value) - parseInt(nf_type2_bc3L_trucks_.value) - parseInt(nf_type2_other_trucks_.value);
	nf_type2_uncontrolled_.innerHTML = nf_type2_uncontrolled_number;
	nf_type2_uncontrolled_.style.color='#000000';
	if (nf_type2_uncontrolled_number<0) {
		document.getElementById("nf_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>";
		nf_type2_uncontrolled_.style.color='#ff0000';
		nf_clean = false;
	}

	// TYPE3 TRUCKS
	nf_type3_uncontrolled_number = parseInt(nf_type3_trucks_.value) - parseInt(nf_type3_bc2_trucks_.value) - parseInt(nf_type3_bc3S_trucks_.value) - parseInt(nf_type3_bc3L_trucks_.value) - parseInt(nf_type3_other_trucks_.value);
	nf_type3_uncontrolled_.innerHTML = nf_type3_uncontrolled_number;
	nf_type3_uncontrolled_.style.color='#000000';
	if (nf_type3_uncontrolled_number<0) {
		document.getElementById("nf_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!";
		nf_type3_uncontrolled_.style.color='#ff0000';
		nf_clean = false;
	}

	// CALCULATE FLEET SIZE CLASSIFICATION
	nf_fleet_size	=       parseInt(nf_type2_trucks_.value) +
				parseInt(nf_type3_trucks_.value) +
				parseInt(nf_type4_trucks_.value) +
				parseInt(nf_type5_trucks_.value) +
				parseInt(nf_type6_trucks_.value) +
				parseInt(nf_type7_trucks_.value) +
                                parseInt(nf_type8_trucks_.value) +
                                parseInt(nf_type9_trucks_.value) +
                                parseInt(nf_type10_trucks_.value) +
                                parseInt(nf_type11_trucks_.value) +
                                parseInt(nf_type12_trucks_.value) +
                                parseInt(nf_type13_trucks_.value);
	if(nf_fleet_size<1) {
		nf_clean = false;
	} else if (nf_fleet_size<=SMALL_FLEET_BRACKET) {
		document.getElementById("nf_fleet_size_class").innerHTML = nf_fleet_size_class_string = "Small";
		document.getElementById("nf_tier1_emissions_limit").innerHTML = " Small fleets are exempt.";
		document.getElementById("nf_tier2_emissions_limit").innerHTML = " Small fleets are exempt.";
		document.getElementById("nf_tier3_emissions_limit").innerHTML = " Small fleets are exempt.";

	} else {
		document.getElementById("nf_fleet_size_class").innerHTML = nf_fleet_size_class_string = "4\+";
		document.getElementById("nf_tier1_emissions_limit").innerHTML =
								TIER1_NFORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT.toFixed(1)+" "+units_set_label+" Fleet Average.";
                document.getElementById("nf_tier2_emissions_limit").innerHTML =
								TIER2_NFORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT.toFixed(1)+" "+units_set_label+" Fleet Average.";
		document.getElementById("nf_tier3_emissions_limit").innerHTML =
								TIER3_NFORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT.toFixed(1)+" "+units_set_label+" Fleet Average.";
	}

	document.getElementById("nf_fleet_size_class_number").innerHTML = nf_fleet_size + " ";

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

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

        // TOTAL EMISSIONS BEFORE RETROFITTING
        nf_total_emissions_before_retrofitting =
				LEVEL_2_EMISSION_FACTOR *
					parseInt(nf_type2_trucks_.value)+
				LEVEL_3_EMISSION_FACTOR *
					parseInt(nf_type3_trucks_.value)+
				LEVEL_4_EMISSION_FACTOR *(
					parseInt(nf_type4_trucks_.value))+
				LEVEL_5_EMISSION_FACTOR *(
					parseInt(nf_type5_trucks_.value))+
				LEVEL_6_EMISSION_FACTOR *(
					parseInt(nf_type6_trucks_.value))+
				LEVEL_7_EMISSION_FACTOR *(
					parseInt(nf_type7_trucks_.value))+
				LEVEL_8_EMISSION_FACTOR *(
					parseInt(nf_type8_trucks_.value))+
				LEVEL_9_EMISSION_FACTOR *(
					parseInt(nf_type9_trucks_.value))+
				LEVEL_10_EMISSION_FACTOR *(
					parseInt(nf_type10_trucks_.value))+
				LEVEL_11_EMISSION_FACTOR *(
					parseInt(nf_type11_trucks_.value))+
				LEVEL_12_EMISSION_FACTOR *(
					parseInt(nf_type12_trucks_.value))+
				LEVEL_13_EMISSION_FACTOR *(
					parseInt(nf_type13_trucks_.value));

        nf_fleet_average_emissions_before_retrofitting = nf_total_emissions_before_retrofitting/nf_fleet_size;
        nf_fleet_average_emissions_before_retrofitting = nf_fleet_average_emissions_before_retrofitting.toFixed(1);

        nf_total_emissions_before_retrofitting = nf_total_emissions_before_retrofitting.toFixed(1);


	// CALCULATE TOTAL EMISSIONS
        nf_emissions =          LEVEL_2_EMISSION_FACTOR *(
					parseInt(nf_type2_trucks_.value)-
					parseInt(nf_type2_bc2_trucks_.value)-
					parseInt(nf_type2_bc3S_trucks_.value)-
					parseInt(nf_type2_bc3L_trucks_.value)-
					parseInt(nf_type2_other_trucks_.value))+
				LEVEL_3_EMISSION_FACTOR *(
					parseInt(nf_type3_trucks_.value)-
					parseInt(nf_type3_bc2_trucks_.value)-
					parseInt(nf_type3_bc3S_trucks_.value)-
					parseInt(nf_type3_bc3L_trucks_.value)-
					parseInt(nf_type3_other_trucks_.value))+
				LEVEL_4_EMISSION_FACTOR *(
					parseInt(nf_type4_trucks_.value))+
				LEVEL_5_EMISSION_FACTOR *(
					parseInt(nf_type5_trucks_.value))+
				LEVEL_6_EMISSION_FACTOR *(
					parseInt(nf_type6_trucks_.value))+
				LEVEL_7_EMISSION_FACTOR *(
					parseInt(nf_type7_trucks_.value))+
				LEVEL_8_EMISSION_FACTOR *(
					parseInt(nf_type8_trucks_.value))+
				LEVEL_9_EMISSION_FACTOR *(
					parseInt(nf_type9_trucks_.value))+
				LEVEL_10_EMISSION_FACTOR *(
					parseInt(nf_type10_trucks_.value))+
				LEVEL_11_EMISSION_FACTOR *(
					parseInt(nf_type11_trucks_.value))+
				LEVEL_12_EMISSION_FACTOR *(
					parseInt(nf_type12_trucks_.value))+
				LEVEL_13_EMISSION_FACTOR *(
					parseInt(nf_type13_trucks_.value))+
				BLUECAT_200_EMISSION_FACTOR *(
					parseInt(nf_type2_bc2_trucks_.value)+
					parseInt(nf_type3_bc2_trucks_.value))+
				BLUECAT_300S_EMISSION_FACTOR *(
					parseInt(nf_type2_bc3S_trucks_.value)+
					parseInt(nf_type3_bc3S_trucks_.value))+
				BLUECAT_300L_EMISSION_FACTOR *(
					parseInt(nf_type2_bc3L_trucks_.value)+
					parseInt(nf_type3_bc3L_trucks_.value))+
				parseFloat(other_products_input_box_.value) *(
					parseInt(nf_type2_other_trucks_.value)+
					parseInt(nf_type3_other_trucks_.value));

	document.getElementById("nf_total_emissions").innerHTML = nf_emissions.toFixed(1) + " ";


	// CALCULATE FLEET AVERAGE EMISSIONS
	nf_average_emissions = nf_emissions/nf_fleet_size;
	document.getElementById("nf_fleet_average_emissions").innerHTML = nf_average_emissions.toFixed(1) + " ";

	// CALCULATE TOTAL NUMBER OF UNCONTROLLED TRUCKS
	nf_number_of_uncontrolled_trucks = nf_type2_uncontrolled_number + nf_type3_uncontrolled_number;


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

		nf_tier1_limit = TIER1_NFORKLIFT_SMALL_FLEET_EMISSIONS_LIMIT ;
		document.getElementById("nf_tier1_emissions_limit_met_label").innerHTML="YES";

		nf_tier2_limit = TIER2_NFORKLIFT_SMALL_FLEET_EMISSIONS_LIMIT ;
		document.getElementById("nf_tier2_emissions_limit_met_label").innerHTML="YES";

		nf_tier3_limit = TIER2_NFORKLIFT_SMALL_FLEET_EMISSIONS_LIMIT ;
		document.getElementById("nf_tier3_emissions_limit_met_label").innerHTML="YES";


      } else if (nf_fleet_size_class_string == "4\+") {

		nf_tier1_limit = TIER1_NFORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT;
		if (nf_average_emissions < nf_tier1_limit) {
                        document.getElementById("nf_tier1_emissions_limit_met_label").innerHTML="YES";
		} else {
			document.getElementById("nf_tier1_emissions_limit_met_label").innerHTML="NO";
		}

		nf_tier2_limit = TIER2_NFORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT;
		if (nf_average_emissions < nf_tier2_limit) {
                        document.getElementById("nf_tier2_emissions_limit_met_label").innerHTML="YES";
		} else {
			document.getElementById("nf_tier2_emissions_limit_met_label").innerHTML="NO";
		}

		nf_tier3_limit = TIER3_NFORKLIFT_LARGE_FLEET_EMISSIONS_LIMIT;
		if (nf_average_emissions < nf_tier3_limit) {
                        document.getElementById("nf_tier3_emissions_limit_met_label").innerHTML="YES";
		} else {
			document.getElementById("nf_tier3_emissions_limit_met_label").innerHTML="NO";
		}

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

	emission_gauge(nf_average_emissions,nf_tier1_limit,nf_gauge1_canvas);
	emission_gauge(nf_average_emissions,nf_tier2_limit,nf_gauge2_canvas);
	emission_gauge(nf_average_emissions,nf_tier3_limit,nf_gauge3_canvas);

        if(nf_fleet_size_class_string == "4\+") {
            document.getElementById("nf_request_quote_div").style.visibility="visible";
        }


        return true;

}


