function floor(number)
{
  return Math.floor(number*Math.pow(10,2))/Math.pow(10,2);
}

function prefillForm(form, n){	
	var mi = replacePct(form.elements['IR' + n].value) / 1200;
	var loanA = replaceChars(form.elements['LA' + n].value);
	var loanA = replaceChar(loanA);
	var MIR = loanA * mi + 1;
	var base = 1;
	var mbase = 1 + mi;
	var x = replaceChars(form.elements['MP' + n].value);
	var x = replaceChar(x);
	if (x < MIR){		
		form.elements['MP' + n].value=formatCurrency(MIR+1);
	}
}

function computeForm(form, n){

	basicedit(n);
	
	var IR = replacePct(form.elements['IR' + n].value);
	if (IR <="0" || IR=="")
	{
		alert("Sorry, the Interest Rate of card " + n + " must be greater than zero.");
		form.elements['IR' + n].value='18%';					
	}	
	else
		if (IR > 99)
		{
		alert("Sorry, the Interest rate of card " + n + " cannot exceed 99%.");
		form.elements['IR' + n].value='18%';					
		}	
	
	
	var mi = replacePct(form.elements['IR' + n].value) / 1200;
	var loanA = replaceChars(form.elements['LA' + n].value);
	var loanA = replaceChar(loanA);
	var MIR = loanA * mi + 1;
	var base = 1;
	var mbase = 1 + mi;
	var x = replaceChars(form.elements['MP' + n].value);
	var x = replaceChar(x);
	var YR =eval(form.elements['YR' + n].value);

	if (loanA<="0" || loanA=="")
	{
		alert("Sorry, the Current Balance of card " + n + " must be greater than zero.");
		form.elements['LA' + n].value='$1,000';					
	}
		
	if (x < MIR){	
		alert("Your monthly payment of card " + n + " must be greater than the accruing interest!")	
		var loanA = 0;	
		form.elements['IR' + n].value='18%';
	}
	
	if (YR<="0" || YR=="")
	{
		alert("Sorry, the Pay Off Goal of card " + n + " must be greater than zero.");
		form.elements['YR' + n].value='12';				
	}
		
	if (YR>"120")
	{
		alert("Sorry, the Pay Off Goal of card " + n + " must be less that 120 months (10 years).");
		form.elements['YR' + n].value='12';
	}
	
	if ( checkForm(replacePct(form.elements['IR' + n].value)) && checkForm(loanA) && checkForm(form.elements['YR' + n].value)
		 && checkForm(x));
	var OP = (Math.log((x) / (x - mi * loanA)) / Math.log(1 + mi));		
{
	for (i=0; i<form.elements['YR' + n].value; i++){ 
   			base = base * mbase;}
	}
	form.elements['PI' + n].value = formatCurrency(floor(loanA * mi / ( 1 - (1/base))));
	form.elements['PO' + n].value = parseInt(OP)+1;
}

function replaceChar(entry) {
	out = "$"; 
	add = ""; 
	temp = "" + entry;
	while (temp.indexOf(out)>-1) {
		pos= temp.indexOf(out);
		temp = "" + (temp.substring(0, pos) + add + 
		temp.substring((pos + out.length), temp.length));
	}
	return temp;
}	
function replaceChars(entry) {
	out = ","; 
	add = ""; 
	temp = "" + entry;
	while (temp.indexOf(out)>-1) {
		pos= temp.indexOf(out);
		temp = "" + (temp.substring(0, pos) + add + 
		temp.substring((pos + out.length), temp.length));
	}
	return temp;
}

function replacePct(entry) {
	out = "%"; 
	add = ""; 
	temp = "" + entry;
	while (temp.indexOf(out)>-1) {
		pos= temp.indexOf(out);
		temp = "" + (temp.substring(0, pos) + add + 
		temp.substring((pos + out.length), temp.length));
	}
	return temp;
}	


function formatCurrency(num) {
			num=replaceChar(num);
			num=replaceChars(num);
		if ( checkForm(num));
{
			num = num.toString().replace(/$|,/g,'');
			if(isNaN(num)) num = "0";
			num = Math.floor(num).toString();
		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 ('$' + num );
}
}

function basicedit(n)
{		
	if 	(!IsMoney(document.temps.elements['LA' + n].value) || document.temps.elements['LA' + n].value.length ==0)
		document.temps.elements['LA' + n].value = "$1,000";

	if 	(!IsMoney(document.temps.elements['MP' + n].value) || document.temps.elements['MP' + n].value.length ==0)
		document.temps.elements['MP' + n].value = "$100";

	if 	(!IsPct(document.temps.elements['IR' + n].value) || document.temps.elements['IR' + n].value.length ==0)
		document.temps.elements['IR' + n].value = "18%";
		
	if 	(!IsNumber(document.temps.elements['YR' + n].value) || document.temps.elements['YR' + n].value.length ==0)
		document.temps.elements['YR' + n].value = "12";
}
		
function IsMoney(val)
	{
		var number="0123456789$,.";

		for (var i=0;i<val.length;i++)
		{
			if (number.indexOf(val.charAt(i)) == -1)
			{
				return false;
			}
		}
		return true;
	}

function IsNumber(val)
	{
		var number="0123456789.";

		for (var i=0;i<val.length;i++)
		{
			if (number.indexOf(val.charAt(i)) == -1)
			{
				return false;
			}
		}
		return true;
	}
	
function IsPct(val)
	{
		var number="0123456789.%,";

		for (var i=0;i<val.length;i++)
		{
			if (number.indexOf(val.charAt(i)) == -1)
			{
				return false;
			}
		}
		return true;
	}
		
function addPct(pct) {	
			pct=replacePct(pct);
			pct=parseFloat(pct);	
		if (checkForm(pct));
	{
			return (pct + '%');
		}
}

function checkForm(toCheck) {
	isNum = true;
	for (j = 0; j < toCheck.length; j++) {
	if ((toCheck.substring(j,j+1) < "0") && (toCheck.substring(j,j+1) != ".") || (toCheck.substring(j,j+1) > "9")) {
      isNum = false;
      }
    }
  if ((isNum == false) || (toCheck.length == 0) || (toCheck == null)) {
  alert("Please enter only numerical data in all fields.");
  return false;
  }
  else {
  return true;
  }
}

function clearAllLines() {
	if (confirm("Are you sure you want to clear all the cards?")) {
		document.temps.reset();
	
		new Effect.Fade(document.getElementById('card2'));
		new Effect.Fade(document.getElementById('card3'));
		new Effect.Fade(document.getElementById('card4'));
		new Effect.Fade(document.getElementById('card5'));
		new Effect.Fade(document.getElementById('card6'));
		new Effect.Fade(document.getElementById('cardc2'));
		new Effect.Fade(document.getElementById('cardc3'));
		new Effect.Fade(document.getElementById('cardc4'));
		new Effect.Fade(document.getElementById('cardc5'));
		new Effect.Fade(document.getElementById('cardc6'));
		basicedit(1);
		computeForm(document.temps, 1);
	}
}

function addCard() {
	for (var n = 1; n <= 6; n++) {
		if (document.getElementById('card' + n).style.display == 'none') {
			new Effect.Appear(document.getElementById('card' + n));
			new Effect.Highlight(document.getElementById('card' + n), {startcolor:'#B6E0F8', endcolor:'#FFFFFF'});
			new Effect.Appear(document.getElementById('cardc' + n));
			new Effect.Highlight(document.getElementById('cardc' + n), {startcolor:'#B6E0F8', endcolor:'#FFFFFF'});
			basicedit(n);
			computeForm(document.temps, n);
			break;
		}
	}
}

function removeCard(n) {
	new Effect.Fade(document.getElementById('card' + n));
	new Effect.Fade(document.getElementById('cardc' + n));
}

function computeAll() {
	for(n = 1; n <= 6; n++) {
		if (document.getElementById('card' + n).style.display != 'none') {
			computeForm(document.temps, n);
		}
	}
}