/**
 *	Debt Calculator
 *	
 *
 *	All Code/Images Copyright Clear Debt Solution 2005-2007
 *	
 *	Any copying/distribution of this javascript by anyone other than
 * 	Clear Debt Solution is not permitted.
 *	
 */
var TotalPaymentFactored;

function EREmoneyFormat(mnt) {
    mnt -= 0;
    mnt = (Math.round(mnt*100))/100;
	if(mnt == Math.floor(mnt)){
		mnt = mnt + '.00';
	} else {
		if(mnt*10 == Math.floor(mnt*10)){
			mnt = mnt + '0';
		}
	}
	return '$' + mnt;	
}

function moneyFormat(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);
}


function fmtMoney(number) {
	floatPoint = 2;
	decimalSep = '.';
	thousandsSep = ',';
	( number+'' ).match( /(\d+)(?:\.(\d+)|)/ );
	with( RegExp ) {
 		var frac = floatPoint ? decimalSep + Number( '.'+ $2 ).toFixed( floatPoint ).substr( 2 ) : '';
		alert('$ ' + ( ( x = $1.length % 3 ) ? $1.substr( 0, x )+thousandsSep :'' ) + $1.substr( x ).replace( /(\d{3})(?=\d)/g, '$1'+thousandsSep ) + frac);
 		return '$ ' + ( ( x = $1.length % 3 ) ? $1.substr( 0, x )+thousandsSep :'' ) + $1.substr( x ).replace( /(\d{3})(?=\d)/g, '$1'+thousandsSep ) + frac;
	}
}

function SetHeight(big,small,element,info){
	imageHeight = Math.round((small/big)*100);
	growImage(element,imageHeight);
	$(element).title = info;
	$(element).alt = info;
}

function growImage(element,goal){
		if(parseInt($(element).style.height) < goal && parseInt($(element).style.height) < 100) {
			$(element).style.height = Number(parseInt($(element).style.height) + 1) + 'px';
			my_timeout = setTimeout('growImage(\''+element+'\',\''+goal+'\');', 25);
		}
		if(parseInt($(element).style.height) > goal){
			$(element).style.height = Number(parseInt($(element).style.height) - 1) + 'px';
			my_timeout = setTimeout('growImage(\''+element+'\',\''+goal+'\');',25);
		}
}

function CalcCycle(debt,interest,min){
	TotalPaymentFactored = 0;
	TotalCycles = 0;
	currentDebt = debt;
	monthInterest = interest/12;
	while(currentDebt > 0){
		payment = currentDebt*min;
		if(payment < 25){
			payment = 25;
		}
		TotalPaymentFactored += payment;
		waste = currentDebt * monthInterest;
		currentDebt = currentDebt - (payment - waste);
		TotalCycles++;
		
	}
	return TotalCycles;
}

function calcForm(){
	TotalUnsecuredDebt = $('userTotalUnsecuredDebt').value.replace('$','');
	TotalUnsecuredDebt = TotalUnsecuredDebt.replace(',','');
	AvgInterestRate = $('userAvgInterestRate').value.replace('%','') / 100;
	
	
	if(TotalUnsecuredDebt < 10000){
		show_calc_debt_warning();
		return;
	}
	
	if($('creditorDuration').value == 1){
		if(TotalUnsecuredDebt <= 20000){
			ProgramPeriod = 30;
		} else {
			ProgramPeriod = 32;
		}
	} else {
		if(TotalUnsecuredDebt <= 8000){
			ProgramPeriod = 21;
		}
		if(TotalUnsecuredDebt <= 9000 && TotalUnsecuredDebt > 8000){
			ProgramPeriod = 23;
		}
		if(TotalUnsecuredDebt <= 10000 && TotalUnsecuredDebt > 9000){
			ProgramPeriod = 26;
		}
		if(TotalUnsecuredDebt <= 11999 && TotalUnsecuredDebt > 10000){
			ProgramPeriod = 28;
		}
		if(TotalUnsecuredDebt <= 20999 && TotalUnsecuredDebt >= 12000){
			ProgramPeriod = 30;
		}
		if(TotalUnsecuredDebt <= 30999 && TotalUnsecuredDebt >=21000){
			ProgramPeriod = 32;
		}
		if(TotalUnsecuredDebt <= 40999 && TotalUnsecuredDebt >= 31000){
			ProgramPeriod = 34;
		}
		if(TotalUnsecuredDebt >= 41000){
			ProgramPeriod = 36;
		}
	}

	// Prep the standard fields
	$('afsTotalUnsecuredDebt').innerHTML = moneyFormat(TotalUnsecuredDebt);
	$('dcTotalUnsecuredDebt').innerHTML = moneyFormat(TotalUnsecuredDebt);
	$('ccTotalUnsecuredDebt').innerHTML = moneyFormat(TotalUnsecuredDebt);
	$('dnTotalUnsecuredDebt').innerHTML = moneyFormat(TotalUnsecuredDebt);
	$('afsMonthsToPayOff').innerHTML = ProgramPeriod;

	if(AvgInterestRate*100 == Math.floor(AvgInterestRate*100)){
		displayInterestRate = AvgInterestRate*100 + '.0';
	} else {
		displayInterestRate = AvgInterestRate * 100;
	}
	$('dnInterestRate').innerHTML = Math.round(displayInterestRate*100)/100 + '%';

	nothingDuration = CalcCycle(TotalUnsecuredDebt,AvgInterestRate,0.025);
	//alert(nothingDuration + ' cycles and ' + TotalPaymentFactored);

	// Changed September 26, 2007
	afs_fee = TotalUnsecuredDebt * 0.15;
	TotalCost = (TotalUnsecuredDebt * 0.4) + afs_fee;
	TotalMonthlyPayment = TotalCost/ProgramPeriod;
	
	$('afsYourTotalCost').innerHTML = moneyFormat(TotalCost);
	$('afsMonthlyPayment').innerHTML = moneyFormat(TotalMonthlyPayment);

	
	MonthlyPayment = (TotalUnsecuredDebt * (AvgInterestRate/12)) / (1 - Math.pow(1 + (AvgInterestRate/12),-1 * ProgramPeriod));
	IntrestPaid = (MonthlyPayment * ProgramPeriod) - TotalUnsecuredDebt;


//
// Debt Consolodation
//
	dccInterestRate = 0.11;
		
	dccMonthlyPayment = (TotalUnsecuredDebt * (dccInterestRate/12))/(1 - Math.pow(1 + (dccInterestRate/12),-1 * 60));
	$('dcMonthlyPayment').innerHTML = moneyFormat(dccMonthlyPayment);
	
	dccExtraInterestPaid = (dccMonthlyPayment * 60) - TotalUnsecuredDebt;
	$('dcExtraInterestPaid').innerHTML = moneyFormat(dccExtraInterestPaid);
	
	dccTotalCost = (dccMonthlyPayment * 60);
	$('dcYourTotalCost').innerHTML = moneyFormat(dccTotalCost);
	
	//dccTotalSavings = dccTotalCost - TotalCost;
	//$('dcTotalSavings').innerHTML = moneyFormat(dccTotalSavings);


//
// Do Nothing
//

	dnnMonthlyPayment = TotalUnsecuredDebt*0.03;
	$('dnMonthlyPayment').innerHTML = moneyFormat(dnnMonthlyPayment);

	dnnExtraInterestPaid = TotalPaymentFactored - TotalUnsecuredDebt;
	//dnnExtraInterestPaid = (dnnMonthlyPayment * 270) - TotalUnsecuredDebt;
	$('dnExtraInterestPaid').innerHTML = moneyFormat(dnnExtraInterestPaid);
	
	dnnTotalCost = TotalPaymentFactored;
	//dnnTotalCost = (dnnMonthlyPayment * 270);
	$('dnYourTotalCost').innerHTML = moneyFormat(dnnTotalCost);
	
	$('dnMonthsToPayOff').innerHTML = nothingDuration;
	//dnnTotalSavings = dnnTotalCost - TotalCost;
	//$('dnTotalSavings').innerHTML = moneyFormat(dnnTotalSavings);

////
////	CC Fields
////
	cccRate = Math.round((AvgInterestRate * 0.95)*100)/100;

	//$('ccInterestRate').innerHTML = cccRate*100 + '.0%';
	
	//cccMonthlyPayment = (TotalUnsecuredDebt * (cccRate/12))/(1- Math.pow(1 + (0.09/12),-60));
	cccMonthlyPayment = dnnMonthlyPayment * 0.95;
	$('ccMonthlyPayment').innerHTML = moneyFormat(cccMonthlyPayment);
	
	cccExtraInterestPaid = (cccMonthlyPayment * 60) - TotalUnsecuredDebt;
	$('ccExtraInterestPaid').innerHTML = moneyFormat(cccExtraInterestPaid);
	
	cccTotalCost = (cccMonthlyPayment * 60);
	$('ccYourTotalCost').innerHTML = moneyFormat(cccTotalCost);
	
	//cccTotalSavings = cccTotalCost - TotalCost;
	//$('ccTotalSavings').innerHTML = moneyFormat(cccTotalSavings);
////////////////////////////////////////////////////////////
	//DrawChart('totalinterestpaid','Total Interest Paid','1',dccExtraInterestPaid,cccExtraInterestPaid,dnnExtraInterestPaid,'0')
	DrawChart('monthlypayments','Monthly Payments','1',dccMonthlyPayment,cccMonthlyPayment,dnnMonthlyPayment,TotalMonthlyPayment);
	//DrawChart('monthstopayoff','Total Months to Pay Off','0','60','60','270',ProgramPeriod)
	DrawChart('totalpaid','Total Cost','1',dccTotalCost,cccTotalCost,dnnTotalCost,TotalCost);
	
	if($('results_table').style.display == 'none'){
		new Effect.SlideDown('results_table');
	}

}

function show_calc_debt_warning(){
	//AlertError('userTotalUnsecuredDebt');
	obj = $('userTotalUnsecuredDebt');
	$('debt_warning').style.left = (findPosX(obj)) + 'px';
	$('debt_warning').style.top =  (findPosY(obj) - 60) + 'px';
	$('debt_warning').style.visibility = 'visible';
}

function live_format_debt(n){
	n = String(n).replace(/[^0-9]+/g,'');
	return  moneyFormat(n);
}

function  live_format_percentage(n, e){
    //alert('hi');
   if(e)
   {
       if(e.keyCode == 72)
       {
        return;           
       }
   }      
    
	n = String(n).replace(/[^0-9]/g,'');
	n = n.replace('.','');
	if(n.substring(0,1) == '0'){
		n = n.substring(1);
	}
	if(n.length >= 3){
		n = n.substring(0,2) + '.' + n.substring(2,3);
	}
	if(n.length == 2){
		n = n.substring(0,1) + '.' + n.substring(1);
	}
	if(n.length == 1){
		n = '0.' + n;
	}
	return n;// + '%';
}