//*******************************************
//DO NOT REMOVE THIS COPYWRITE INFO!
//Car Operating Cost Calculator
//2003 Daniel C. Peterson ALL RIGHTS RESERVED
//Created: 10/25/2003
//Last Modified: 10/25/2003
//This script may not be copied, edited, distributed or reproduced
//without express written permission from
//Daniel C. Peterson of Web Winder Website Services
//For commercial use rates, contact:
//Dan Peterson:
//Web Winder Website Services
//P.O. Box 11
//Bemidji, MN  56619
//dan@webwinder.com
//http://www.webwinder.com
//Commercial User Licence #:5782-1237-113-1198
//Commercial Licence Date:2008-09-11
//*******************************************



function stripNum(num) {

   num=num.toString();


   var len = num.length;
   var rnum = "";
   var test = "";
   var j = 0;

   var b = num.substring(0,1);
   if(b == "-") {
      rnum = "-";
   }

   for(i = 0; i <= len; i++) {

      b = num.substring(i,i+1);

      if(b == "0" || b == "1" || b == "2" || b == "3" || b == "4" || b == "5" || b == "6" || b == "7" || b == "8" || b == "9" || b == ".") {
         rnum = rnum + "" + b;

      }

   }

   if(rnum == "" || rnum == "-") {
      rnum = 0;
   }

   rnum = Number(rnum);

   return rnum;

}



function formatNumberDec(num, places, comma) {

var isNeg=0;

    if(num < 0) {
       num=num*-1;
       isNeg=1;
    }

    var myDecFact = 1;
    var myPlaces = 0;
    var myZeros = "";
    while(myPlaces < places) {
       myDecFact = myDecFact * 10;
       myPlaces = eval(myPlaces) + eval(1);
       myZeros = myZeros + "0";
    }
    
	onum=Math.round(num*myDecFact)/myDecFact;
		
	integer=Math.floor(onum);

	if (Math.ceil(onum) == integer) {
		decimal=myZeros;
	} else{
		decimal=Math.round((onum-integer)* myDecFact)
	}
	decimal=decimal.toString();
	if (decimal.length<places) {
        fillZeroes = places - decimal.length;
	   for (z=0;z<fillZeroes;z++) {
        decimal="0"+decimal;
        }
     }

   if(places > 0) {
      decimal = "." + decimal;
   }

   if(comma == 1) {
	integer=integer.toString();
	var tmpnum="";
	var tmpinteger="";
	var y=0;

	for (x=integer.length;x>0;x--) {
		tmpnum=tmpnum+integer.charAt(x-1);
		y=y+1;
		if (y==3 & x>1) {
			tmpnum=tmpnum+",";
			y=0;
		}
	}

	for (x=tmpnum.length;x>0;x--) {
		tmpinteger=tmpinteger+tmpnum.charAt(x-1);
	}


	finNum=tmpinteger+""+decimal;
   } else {
      finNum=integer+""+decimal;
   }

    if(isNeg == 1) {
       finNum = "-" + finNum;
    }

	return finNum;
}


function computeForm(form) {

if(form.priceTag1.value.length == 0) {
   alert("Please enter the purchase price.");
   form.priceTag1.focus();
} else
if(form.salesTax1.value.length == 0) {
   alert("Please enter the sales tax percentage.");
   form.salesTax1.focus();
} else
if(form.license1.value.length == 0) {
   alert("Please enter the annual licensing cost.");
   form.license1.focus();
} else
if(form.finance1.selectedIndex == 0 && form.intRate1.value.length == 0) {
   alert("Please enter the annual financing rate.");
   form.intRate1.focus();
} else
if(form.finance1.selectedIndex == 0 && form.nPer1.value.length == 0) {
   alert("Please enter the number of months you are financing the car for.");
   form.nPer1.focus();
} else
if(form.insure1.value.length == 0) {
   alert("Please enter the annual insurance cost.");
   form.insure1.focus();
} else
if(form.miles1.value.length == 0) {
   alert("Please enter the number miles you expect to drive the car per year.");
   form.miles1.focus();
} else
if(form.mpg1.value.length == 0) {
   alert("Please enter the Miles per Gallon (MPG) rating of the car.");
   form.mpg1.focus();
} else
if(form.perGal1.value.length == 0) {
   alert("Please enter the local cost of one gallon of gas.");
   form.perGal1.focus();
} else
if(form.age1.value.length == 0) {
   alert("Please enter the current age of the car.");
   form.age1.focus();
} else
if(form.lifeExpect1.value.length == 0) {
   alert("Please enter the number of years you expect to own the car.");
   form.lifeExpect1.focus();
} else {


ageFact = new Array(28,20,16,8,6,5,4,3,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
   
//Tax, License, and warranty Costs

var tax1 = 0;
var taxCost1 = 0;
var VsalesTax1 = stripNum(form.salesTax1.value);
var VpriceTag1 = stripNum(form.priceTag1.value);

if(VsalesTax1 >1) {
   tax1 = VsalesTax1 / 100;
   } else {
   tax1 = VsalesTax1;
}

if(tax1 > 0) {
   taxCost1 = VpriceTag1 * tax1;
   } else {
   taxCost1 = 0;
}

var licCost1 = 0;
var VwarCost1 = stripNum(form.warranty1.value);
var VtotPurch1 = 0;
var Vlicense1 = stripNum(form.license1.value);
var VlifeExpect1 = stripNum(form.lifeExpect1.value);

licCost1 = Vlicense1 * VlifeExpect1;

VtotPurch1 = eval(taxCost1) + eval(licCost1) + eval(VwarCost1);

var VpurchCost1 = VtotPurch1;
form.purchCost1.value = "$" + formatNumberDec(VpurchCost1,2,1);


//Depreciation Costs

var Vage1 = stripNum(form.age1.value);
var timePass1 = eval(Vage1);
var accumDeprec1 = ageFact[Vage1];

while(timePass1 < eval(VlifeExpect1) + eval(Vage1) - eval(1)) {
   timePass1 = eval(timePass1 + 1);
   accumDeprec1 = accumDeprec1 + ageFact[eval(timePass1 * 1)];
      if(timePass1 > 50) {
          break;
          } else {
          continue;
       }
}

var VdepreCost1 = accumDeprec1 / 100 * VpriceTag1;
form.depreCost1.value = "$" + formatNumberDec(VdepreCost1,2,1);
      

//Finance Costs

var Vfinance1 = form.finance1.selectedIndex;
var VdownPay1 = stripNum(form.downPay1.value);
var VintRate1 = stripNum(form.intRate1.value);
var VnPer1 = stripNum(form.nPer1.value);
var VintCost1 = 0;

if(Vfinance1 == 1 || (VintRate1 == 0 && VnPer1 == 0)) {
   VdownPay1 = 0;
   VintRate1 = 0;
   VnPer1 = 0;
   VintCost1 = 0;
   form.intCost1.value = "$" + formatNumberDec(VintCost1,2,1);
   } else {
   var int1 = VintRate1;
      if (int1 > 1.0) {
         int1 = int1 / 100.0;
         VintRate1 = int1;
      }

      int1 /= 12;

      var prin1 = eval(VpriceTag1) + eval(taxCost1) + eval(Vlicense1) + eval(VwarCost1) - eval(VdownPay1);

      var pmt1 = 0;

      var pow1 = 1;

      for (var j1 = 0; j1 < VnPer1; j1++)

        pow1 = pow1 * (1 + int1);

    pmt1 = (prin1 * pow1 * int1) / (eval(pow1) - eval(1));

if(VnPer1 / 12 <= VlifeExpect1) {
       VintCost1 = parseInt((pmt1 * VnPer1) - prin1,10);
       form.intCost1.value = "$" + formatNumberDec(VintCost1,2,1);
       } else {
       var intPort1 = 0;
       var PrinPort1 = 0;
       var count1 = 0;
       var accumPrin1 = 0;
       var accumInt1 =0;

      while(count1 < VlifeExpect1 * 12) {

           intPort1 = prin1 * int1;

           prinPort1 = pmt1 - intPort1;

           prin1 = prin1 - prinPort1;

           accumPrin1 = accumPrin1 + prinPort1;

           accumInt1 = accumInt1 + intPort1;

           count1 = count1 + 1;

           if(count1 > 600) {
              break;
              } else {
              continue;
           }

       }
   VintCost1 = parseInt(accumInt1,10);
   form.intCost1.value = "$" + formatNumberDec(VintCost1,2,1);
   }
}

//Operating Costs

var Vmiles1 = stripNum(form.miles1.value);
var Vmpg1 = stripNum(form.mpg1.value);
var VperGal1 = stripNum(form.perGal1.value);
var Vgas1 = Vmiles1 * VlifeExpect1 / Vmpg1 * VperGal1;
form.gas1.value = "$" + formatNumberDec(Vgas1,2,1);

//Maintenance & Repair Costs

var Vmaint1 = stripNum(form.maint1.value);
var VmaintCost1 = Vmaint1 * 12 * VlifeExpect1;
form.maintCost1.value = "$" + formatNumberDec(VmaintCost1,2,1);


//Insurance Costs

var Vinsure1 = stripNum(form.insure1.value);
var VinsCost1 = Vinsure1 * VlifeExpect1;
form.insCost1.value = "$" + formatNumberDec(VinsCost1,2,1);

   
//Total Costs #1

var VtotCost1 = eval(VtotPurch1) + eval(VdepreCost1) + eval(VintCost1) + eval(Vgas1) + eval(VmaintCost1) + eval(VinsCost1);
form.totCost1.value = "$" + formatNumberDec(VtotCost1,2,1);

var VannCost1 = VtotCost1 / VlifeExpect1;
form.annCost1.value = "$" + formatNumberDec(VannCost1,2,1);

var VmileCost1 = VannCost1 / Vmiles1;
form.mileCost1.value = "$" + formatNumberDec(VmileCost1,2,1);


} //end of form verification for scenario #1
}
