function calc_miles(form)
{  
  var obj_mainform = document.getElementById(form);
  var flt_value = parseFloat(obj_mainform.txtMiles.value);  
  var c = 0;
  var first_results;
  
  c = (flt_value * 1.304);
  if (isNaN(c)) {
  	first_results = 'Invalid Miles.';
  	}
  	else
  	{
  		first_results = convert_kilograms_to_pounds(c.toFixed(2)) + " pounds ";
  	}
  	var obj_result = document.getElementById(form + '_results');	
	obj_result.style.display = 'block';	
	var obj_result = document.getElementById('div_' + form);	
	obj_result.style.display = 'block';
	divid = 'div_' + form;
	document.getElementById(divid).style.visibility = "visible";
	divid = 'txtTruckReductions_' + form;
	        
    document.getElementById(divid).innerHTML = first_results ;
  	
}

// this is to calculate data <- Start

function calculate(lang, ghg_id){

	var carbonRail = 0.00;
	var carbonRailTruck = 0.00;
	var carbonTruck = 0.00;
	var totalCarbonEmissions = 0.00
	var km_per_naut_mile = 1.852
	var metricToUS = 1.00/0.9072;                  // metric tonne to US ton
	//var railTruckPayload = 20.4;             //default rail-truck comparison payload in tons or tonnes. See function toggle for display defaults.
	var railTruckPayload = 22.5;             //default rail-truck comparison payload in tons or tonnes. See function toggle for display defaults.
	var truckDistance = 0.00;
	//var truckPayload = 20.4;                 //default truck payload in tons or tonnes. See function toggle for display defaults.
	var truckPayload = 22.5;                 //default truck payload in tons or tonnes. See function toggle for display defaults.
	var tef;
	var ref;
	var reduction = 0.00;
	var str_weight = "pounds";
	var obj_mainform = document.getElementById(ghg_id);       // controls input fields
	var obj_mode;                                             // controls check boxes
		
	// 1 ton = 2204.62 pound 
 
 if (glbl_units != "metric") {
    tef = 1.47/1000;    //truck emissions factor per ton mile
    ref = 2.9504/100000; // rail emission factor updated 2006
 }
 else { // metric tonne km emission factors
    tef = 9.12/10000;    //truck emissions factor per tonne kilometre = (1.14/10000)*8
    ref = 1.8325/100000; // rail emission factor updated 2006  5.961 * 3.07415 / 1000000
 }
 
 

    
             if (!isNaN(obj_mainform.txtTruckDistance.value)) 
             	railTruckDistance = obj_mainform.txtTruckDistance.value;
             	
            if (!isNaN(obj_mainform.txtTruckWeight.value)) 
            	railFreight = convert_pounds_to_tones(obj_mainform.txtTruckWeight.value);
            
            
            carbonRailTruck = (railTruckDistance * railFreight)/railTruckPayload * tef;  // metric tonnes
            
            carbonRail = railTruckDistance * railFreight * ref;  // metric tones
            if ( isNaN(carbonRailTruck)) carbonRailTruck = 0.00;
            if ( isNaN(carbonRail)) carbonRail = 0.00;
						
            
            if (glbl_units == "imperial"){
                carbonRailTruck = carbonRailTruck * metricToUS; // short tons
                carbonRail = carbonRail * metricToUS; // short tons
            }                
        	

        if (!isNaN(obj_mainform.txtTruckDistance.value)) 
        	truckDistance = obj_mainform.txtTruckDistance.value;        
        
        if ( !isNaN(obj_mainform.txtTruckWeight.value)) 
        	truckFreight = convert_pounds_to_tones(obj_mainform.txtTruckWeight.value);
        //else 
        //	obj_mainform.txtTruckWeight.value = truckFreight;
        
        carbonTruck = (truckDistance * truckFreight)/truckPayload * tef; 
        
        if ( isNaN(carbonTruck)) 
        	carbonTruck = 0.00;
        
        totalCarbonEmissions += carbonTruck; 		
		reduction = format_lang_num(format_decimals(convert_tone_to_pounds(carbonRailTruck-carbonRail),-1),glbl_language);
		
		var obj_result = document.getElementById(ghg_id+'_results');	
    	obj_result.style.display = 'block';
		
        var obj_result = document.getElementById('div_t-r-vs-t_' + ghg_id);	
    	obj_result.style.display = 'block';
        divid = 'div_t-r-vs-t_' + ghg_id;
        document.getElementById(divid).style.visibility = "visible";
        divid = 'txtTruckReductions_' + ghg_id;
        
        document.getElementById(divid).innerHTML = reduction + " pounds";
		//obj_mainform.txtResultCarbon.value = format_lang_num(format_decimals(totalCarbonEmissions,-1),glbl_language) + '/' + convert_tone_to_pounds(reduction);
 
}

function valid_number( num ) {
    var num_float = parseFloat( num );
    if ( isNaN( num_float ) ) {
        return false;
    }
    return true;
}

function format_decimals( str, decimal_places ) {
    // Convert to floating point number 1st and back to string ;
    // parseFloat ensures that at least "0" will be placed in front.
    // Also, parseFloat :
    //        eg.: when num = ".01" ==> "0.01" (leading zero placed).
    //        eg.: when num = "1." ==> "1" (decimal removed).
    //        eg.: when num = "n.n00000" ==> "n.n" (trailing 0's removed)
    var num = parseFloat( str );
    if ( decimal_places < 0 ) {
        decimal_places = 0;
        if (num < 0.10) decimal_places = 2;
        if (num < 10.00) decimal_places = 1; 
     }    
    var power = Math.pow( 10, decimal_places );
    num = parseFloat( parseInt( Math.round( num * power ) ) ) / power;
    str = num.toString();
     
    if ( decimal_places > 0 ) {
       if ( str.indexOf( '.' ) == -1 ) str += '.';
       var str_dec = str.substring( str.indexOf( '.' ) );
       var len = str_dec.length;
       for ( var i = 1; i <= decimal_places; i++ ) {
          if ( len <= i ) {
              str += '0'; // pad 0 to decimal places.
          }
       }
    }
    return str;
}

function format_lang_num( str, lang ) {
    var str_int_in = parseInt( parseFloat( str ) ).toString();
    var str_int_out = str.replace( str_int_in, '' );
    var sep = ( lang == 'eng' )?',':'&nbsp;';
    var len = str_int_in.length - 1;
    if ( len >= 0 ) {
        for ( var i = len; i >= 0; i-- ) {
            if ( ( i == (len-3) ) || ( i == (len-6) ) )
                str_int_out = sep + str_int_out;
            str_int_out = '' + str_int_in.charAt( i ) + str_int_out;
        }
    }
    if ( lang == 'fre' ) str_int_out = str_int_out.replace( /\./, ',' );
    return str_int_out;
}

function convert_tone_to_pounds(str_value)
{
	var str_ret_value;
	var tone_to_pounds = 2000;
	
	if(!isNaN(str_value))
	{
		str_ret_value = str_value * tone_to_pounds;
	}
	
	return format_decimals(str_ret_value,2);	
}

function convert_pounds_to_tones(str_value)
{
	var pounds_in_tones = 0.0005;
	var ret_value;
	if(!isNaN(str_value))
	{
		ret_value = str_value * pounds_in_tones;
	}
	return ret_value;
}

function convert_kilograms_to_pounds(str_value)
{
	var ret_value;
	if(!isNaN(str_value))
	{
		ret_value = str_value * 2.20462262;
	}
	return format_decimals(ret_value,2);
}


