function checkNumber(num,fldName) {
	  var len= num.length;
	  var p=0;
	  var ok= true;
	  var ch= "";

	  if (len==0) {
		ok = false;
	  }	
		
	  while (ok && p<len)
	  {
		ch= num.charAt(p);
		if ('0'<=ch && ch<='9')
		  p++;
		else
		  ok= false;
	  }

	  if (ok==false) {
		alert("Please enter a numeric value for the " + fldName + ".");
		return false;
	  } else if (fldName=="Number of Commute Days per week" && (num<0 || num>7)) {
		alert("Please enter a numeric value between 0 and 7 for the " + fldName + ".");
		return false;
	  }		  
	  	
	  return ok;
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function recalculate() {


	var cCommuteMiles, cNumDaysPerWeek, cNonCommuteMiles

	cCommuteMiles = 0;
	if (document.frmCalc.txtCommuteMiles != "") {
		if (checkNumber(document.frmCalc.txtCommuteMiles.value,'Number of Commute Miles per day')) {
			cCommuteMiles = document.frmCalc.txtCommuteMiles.value;			
		} 
	}
	if (cCommuteMiles == 0) {
		document.frmCalc.txtCommuteMiles.value = 0;
	}

	cNumDaysPerWeek = 0;
	if (document.frmCalc.txtNumDaysWeek != "") {
		if (checkNumber(document.frmCalc.txtNumDaysWeek.value,'Number of Commute Days per week')) {
			cNumDaysPerWeek = document.frmCalc.txtNumDaysWeek.value;			
		} 
	}
	if (cNumDaysPerWeek == 0) {
		document.frmCalc.txtNumDaysWeek.value = 0;
	}

	cNonCommuteMiles = 0;
	if (document.frmCalc.txtNonCommuteMils != "") {
		if (checkNumber(document.frmCalc.txtNonCommuteMiles.value,'Number Non-Commute Miles per day')) {
			cNonCommuteMiles = document.frmCalc.txtNonCommuteMiles.value;			
		} 
	}
	if (cNonCommuteMiles == 0) {
		document.frmCalc.txtNonCommuteMiles.value = 0;
	}


	document.frmCalc.txtAnnualMileage.value = (cCommuteMiles*cNumDaysPerWeek*52) + cNonCommuteMiles*365;
	document.frmCalc.txtMileage.value = (cCommuteMiles*cNumDaysPerWeek*52) + cNonCommuteMiles*365;


	var fld1, fld2, fld3, fld4, fld5, de_tot;
	de_tot = 0.00;
	se_tot = 0.00;
	
			//Direct Driver Costs
		    for (var i = 1; i <=9 ; i++) {
				if (document.forms['frmCalc'].elements['de_'+i].value!="") {
					de_tot = de_tot + (document.forms['frmCalc'].elements['de_'+i].value)*1*(.01);
				}
			}
			fld2 = de_tot;
			document.forms['frmCalc'].elements['txtTDDE'].value = formatCurrency(fld2);
			
			
			//Societal Costs
		    for (var i = 1; i <=15 ; i++) {
				if (document.forms['frmCalc'].elements['se_'+i].value!="") {
					se_tot = se_tot + (document.forms['frmCalc'].elements['se_'+i].value)*1*(.01);
				}
			}
			fld3 = se_tot;
			document.forms['frmCalc'].elements['txtTSC'].value = formatCurrency(fld3);
			
			
			//Total Dollar Costs
			document.forms['frmCalc'].elements['txtTDC'].value = formatCurrency(fld2 + fld3);



	if (document.frmCalc.txtMileage.value != "" ) {

		if (checkNumber(document.frmCalc.txtMileage.value)) {


			// Mileage
			fld1 = (document.frmCalc.txtMileage.value)*1

			
			//Actual Cost of Driving
			document.forms['frmCalc'].elements['txtACD'].value = formatCurrency( (fld2 + fld3)*fld1 );
			
		}
	}

}


