/****************************************************************************************************
	paymentcalculator.js
	author: ///o-o\\\
	Notes:
	History:
		created 12.29.2000
		last modified: 6.14.2001 by ScottyG
****************************************************************************************************/
var calcForm;
var verbage="Call"
var defaultRate="6.9"
function initialize( formName ) {
	calcForm = (formName==null)?document.forms[0]:document.forms[formName];
	calcForm.rate.value=defaultRate;
	populate(calculate());
}

function initializePaymentCalculator( formName ) {
	calcForm = (formName==null)?document.forms[0]:document.forms[formName];
	calcForm.rate.value=defaultRate;
	populate(calculate());
}

function populate( moPay ) {
	if(calcForm.rate.value=="" || calcForm.rate.value=="0" || calcForm.rate.value=="0.") {return;}
	if(parseFloat(calcForm.rate.value)<=0) {return;}
	if( moPay=="0.00" && parseInt(calcForm.price.value)==0 ) {
		calcForm.cash_trade.disabled=true;
		calcForm.retail.disabled=true;
		calcForm.rate.disabled=true;
		calcForm.term.disabled=true;
		calcForm.monthlypayment.value=0;
		calcForm.monthlypayment.disabled=true;
		calcForm.price.value=verbage;
		calcForm.retail.value=verbage;
		calcForm.monthlypayment.value=verbage;
	} else if( calcForm.cash_trade.value.indexOf("-") != -1 || new Number(normalize(calcForm.cash_trade.value)) < 0 ){
		alert("Your down payment must be greater than zero.\nIf you have any questions, feel free to contact us via email.\nThank You.");
		return;
	}

	calcForm.monthlypayment.value = moPay;
}

function rePopulate( maxTerms )
{
	clearSelector( "term" );
	populateTerms( maxTerms );
}

var price;
var retail;
function calculate()
{
	if(calcForm.rate.value=="" || calcForm.rate.value=="0" || calcForm.rate.value=="0.") {return;}
	// update prices and monthly payment
	cashTrade=calcForm.cash_trade.value;
	price = normalize(calcForm.price.value) - normalize(calcForm.cash_trade.value);
	retail = normalize(calcForm.retail.value) - normalize(calcForm.cash_trade.value);
	rate = calcForm.rate.value/100;
	term = calcForm.term.options[calcForm.term.selectedIndex].value;

  if( rate == 0 ){
      return;
  }

	var monthIntRate = rate / 12;
	ratePlus = eval(monthIntRate+1);

	pow = Math.pow( ratePlus, term );
	pay = new String( ( price ) / (( 1 - (1/pow)) / monthIntRate) );
	if (cashTrade.indexOf("%") != "-1") {
		price = normalize(calcForm.price.value);
		cashTrade = Math.floor((price * ( parseInt(cashTrade) / 100) ) / 100) * 100;
		calcForm.cash_trade.value = cashTrade;
	}
	if( parseFloat(calcForm.cash_trade.value)>parseFloat( calcForm.price.value.replace(",","") ) ) {calcForm.cash_trade.value=calcForm.price.value;}
	if( pay == "NaN" ) return verbage;
	else if( pay<0) return 0;
	return format(pay);
}

function populateTerms( max )
{
	i=0;
	while( max>0 ){
		calcForm.term.options[i] = new Option( max+" mo.",max);
		max=max-60;
		i++;
	}
	//form.term.options[0].selected="1";
	calcForm.term.selectedIndex=0;
}

function clearSelector( who )
{
  // needs to cleanup all select objects below 'who'
  var start = 0;
  var end = calcForm.elements[who].options.length;
  if( end < start )
      return false;
  for( i=end; i>=start; i-- ){
      calcForm.elements[who].options[i] = null;
  }
}

function normalize( value )
{
  if( value == null ) value = 0;

  value = value.replace(/,/, "");
  value = value.replace(/$/, "");

  return value;
}


function format( str ) {
  var fraction;
	numerals = new String(str);
  index = numerals.indexOf(".");
	if( index != -1 ){
		fraction = numerals.substring( index, index+3 );
		numerals = numerals.substring( 0, index );
	}

  ln = numerals.length;
  beg = numerals.substring( 0, ln-3 );
  end = numerals.substring( ln-3 );

  retVal=beg+((ln>3)?",":"")+end+((fraction==null)?".00":fraction);
	return retVal;
}


