
// expenseForm script by lookmedia.com for moblind.org //

function expenseForm(form) {

  // Miles Driven //  
  if (form.miles_driven.value == null || form.miles_driven.value.length == 0) {
  	var loc_miles_driven = 0;
  } else {
    if (!checkNumber(form.miles_driven, 0, 1000, "Miles Driven")) {
      return;
    }
    var loc_miles_driven = 0.50 * parseInt(form.miles_driven.value);
  }
  
    
  // Cab Fare //  
	var loc_cab_fare = 0;
  if (form.cab_fare.value == null || form.cab_fare.value.length == 0) {
  	loc_cab_fare = 0;
  } else {
    if (!checkNumber(form.cab_fare, .00, 1000.00, "Cab Fare")) {
      return;
    }
    loc_cab_fare = parseFloat(form.cab_fare.value);
  }


  // Bus Fare //  
	var loc_bus_fare = 0;
  if (form.bus_fare.value == null || form.bus_fare.value.length == 0) {
  	loc_bus_fare = 0;
  } else {
    if (!checkNumber(form.bus_fare, .00, 5000.00, "Bus Fare")) {
      return;
    }
    loc_bus_fare = parseFloat(form.bus_fare.value);
  }

  // Train Fare //  
	var loc_train_fare = 0;
  if (form.train_fare.value == null || form.train_fare.value.length == 0) {
  	loc_train_fare = 0;
  } else {
    if (!checkNumber(form.train_fare, .00, 5000.00, "Train Fare")) {
      return;
    }
    loc_train_fare = parseFloat(form.train_fare.value);
  }

  // Other Fare //  
	var loc_other_fare = 0;
  if (form.other_fare.value == null || form.other_fare.value.length == 0) {
  	loc_other_fare = 0;
  } else {
    if (!checkNumber(form.other_fare, .00, 5000.00, "Other Fare")) {
      return;
    }
    loc_other_fare = parseFloat(form.other_fare.value);
  }

  // Transporation Total //
 	var loc_trans_total = parseFloat(loc_miles_driven + loc_cab_fare + loc_bus_fare + loc_train_fare + loc_other_fare).toFixed(2); 
    
  // Breakfasts //  
	var loc_breakfasts = 0;
  if (form.breakfasts.value == null || form.breakfasts.value.length == 0) {
  	loc_breakfasts = 0;
  } else {
    if (!checkNumber(form.breakfasts, 0, 20, "Breakfasts")) {
      return;
    }
    loc_breakfasts = 9.00 * parseInt(form.breakfasts.value);
  }

  // Lunches //  
	var loc_lunches = 0;
  if (form.lunches.value == null || form.lunches.value.length == 0) {
  	loc_lunches = 0;
  } else {
    if (!checkNumber(form.lunches, 0, 20, "Lunches")) {
      return;
    }
    loc_lunches = 10.00 * parseInt(form.lunches.value);
  }

  // Dinners //  
	var loc_dinners = 0;
  if (form.dinners.value == null || form.dinners.value.length == 0) {
  	loc_dinners = 0;
  } else {
    if (!checkNumber(form.dinners, 0, 20, "Dinners")) {
      return;
    }
    loc_dinners = 17.00 * parseInt(form.dinners.value);
  }
    
  // Meals Total //
 	var loc_meals_total = parseFloat(loc_breakfasts + loc_lunches + loc_dinners).toFixed(2); 

  // Grand Total //
 	var loc_grand_total = parseFloat(loc_miles_driven + loc_cab_fare + loc_bus_fare + loc_train_fare + loc_other_fare + loc_breakfasts + loc_lunches + loc_dinners).toFixed(2); 

  // Display Results //
	form.trans_total.value = loc_trans_total;      
	form.meals_total.value = loc_meals_total;      
	form.grand_total.value = loc_grand_total; 
 

}

function checkNumber(input, min, max, msg) {
  msg = msg + " field has invalid data: " + input.value;
  var str = input.value;
  for (var i = 0; i < str.length; i++) {
  var ch = str.substring(i, i + 1)
      if ((ch < "0" || "9" < ch) && ch != '.') {
          //alert(msg);
          return false;
      }
  }
  var num = 0 + str
  if (num < min || max < num) {
      //alert(msg + " not in range [" + min + ".." + max + "]");
      return false;
  }
  input.value = str;
  return true;
}

function NumFormat( __StringNumber ) {
 InString = _Trim(__StringNumber);
 OutString = "";
 InLength = InString.length;
 for(__x=InLength; __x!=0; __x--) {
  if(OutString.length == 3 | OutString.length == 7 | OutString.length == 11) {
   OutString = "," + OutString;
   OutString = InString.substring(__x-1,__x) + OutString;
  } else {
   OutString = InString.substring(__x-1,__x) + OutString;
  }
 }
 return OutString;
}

function _Trim( str ) {
	astr = String( str );
	t_str = String("");
	LastCharAt = 0;
	for(x=astr.length-1;x>=0;x--) {
		if( astr.charAt(x) != " " ) {
			LastCharAt = x+1;
			break;
		}
	}
	return astr.substring(0,LastCharAt);
}

