/*
File name: cc_calculator.js
Authored by: Loic Kreitmann
Date authored: 08/17/2001
Modified by: Loic Kreitmann
Date last modified: 10/18/2001
Description:
	Credit Card Interest Calculator Functions for Visa USA
*/

//APR
var APR = 0;

//purchase amount
var purchaseAmount = 0;

//balance
var balance = 0;

//Monthly payment amount
var moPayAmnt = 0;

//monthly percentage rate
var moPercRate = 0;

//monthly interest
var moInt = 0;

//initial monthly payment
var initMoPay = 0;

//number of months to pay off
var moToPay = 0;

//string format for moToPay
var strToPay = "";

//principle
var princ = 0;

//average monthly finance charge
var avgMoFin = 0;

//Total finance charges
var totFinance = 0;

//total cost
var totCost = 0;

// Pay Per Month
var pay_per_month = 0;

// Purchase Amount
var purchase_amount = 0;
//function grabs the values of the form fields and makes the necessary calculations

function displayComma(str_val1) {

str_val=str_val1+"";



		if(str_val.indexOf('.') > 0) {
			
		non_dec_str = str_val.substring(0,str_val.indexOf('.'))
		dec_str = str_val.substring(str_val.indexOf('.') , str_val.length);
		
		if(non_dec_str.length > 3) {
		
			if(non_dec_str.length == 4) {
			
				str_val = str_val.substring(0,1)+","+str_val.substring(1,str_val.length);
				//alert(str_val);
				return str_val;
			}
			if(non_dec_str.length == 5) {
			
				str_val = str_val.substring(0,2)+","+str_val.substring(2,str_val.length);
				//alert(str_val);
				return str_val;
			}
			if(non_dec_str.length == 6) {
			
				str_val = str_val.substring(0,3)+","+str_val.substring(3,str_val.length);
				//alert(str_val);
				return str_val;
			}
			if(non_dec_str.length == 7) {
			
				str_val = str_val.substring(0,1)+","+str_val.substring(1,4)+","+str_val.substring(4,str_val.length);
				//alert(str_val);
				return str_val;
			}
			if(non_dec_str.length == 8) {

				str_val = str_val.substring(0,2)+","+str_val.substring(2,5)+","+str_val.substring(5,str_val.length);
				//alert(str_val);
				if (dec_str.length == 2){
					str_val = str_val + "0";
				}
				
				return str_val;
			}
			if(non_dec_str.length == 9) {

				str_val = str_val.substring(0,3)+","+str_val.substring(3,6)+","+str_val.substring(6,str_val.length);
				//alert(str_val);
				if (dec_str.length == 2){
					str_val = str_val + "0";
				}
				
				return str_val;
			}
			if(non_dec_str.length == 10) {

				str_val = str_val.substring(0,1)+","+str_val.substring(1,4)+","+str_val.substring(4,7)+","+str_val.substring(7,str_val.length);
				//alert(str_val);
				if (dec_str.length == 2){
					str_val = str_val + "0";
				}
				return str_val;
			}
		}
		else{
			str_val = non_dec_str + dec_str;
			return str_val;
		}
			
				
		}
		else{
			
			if(str_val.length > 3) {
		
				if(str_val.length == 4) {
			
				str_val = str_val.substring(0,1)+","+str_val.substring(1,str_val.length);
				//alert(str_val);
				return str_val;
				}
				if(str_val.length == 5) {
			
				str_val = str_val.substring(0,2)+","+str_val.substring(2,str_val.length);
				//alert(str_val);
				return str_val;
				}
				if(str_val.length == 6) {
			
				str_val = str_val.substring(0,3)+","+str_val.substring(3,str_val.length);
				//alert("6 val:"+str_val);
				return str_val;
				}
				if(str_val.length == 7) {
			
				str_val = str_val.substring(0,1)+","+str_val.substring(1,4)+","+str_val.substring(4,str_val.length);
				//alert(str_val);
				return str_val;
				}
				if(str_val.length == 8) {

				str_val = str_val.substring(0,2)+","+str_val.substring(2,5)+","+str_val.substring(5,str_val.length);
				//alert(str_val);
				return str_val;
				}
				if(str_val.length == 9) {

				str_val = str_val.substring(0,3)+","+str_val.substring(3,6)+","+str_val.substring(6,str_val.length);
				//alert(str_val);
				return str_val;
				}
				if(str_val.length == 10) {

				str_val = str_val.substring(0,1)+","+str_val.substring(1,4)+","+str_val.substring(4,7)+","+str_val.substring(7,str_val.length);
				//alert(str_val);
				return str_val;
			}
			}
			else{
			return str_val;
			}
		
		}
}

function storeVariables() {
	if (numbersValidator("credit_card_calc","apr") && numbersValidator("credit_card_calc","purchase_amount") && numbersValidator("credit_card_calc","pay_per_m")) {
		if (!isEmpty("credit_card_calc","apr")) {
			
			APR = Number(document.credit_card_calc.apr.value);
			
		}
		
		purchase_amount = document.credit_card_calc.purchase_amount.value.split(",").join("");
		//purchaseAmount = Number(document.credit_card_calc.purchase_amount.value);
		purchaseAmount = Number(purchase_amount);
		
		pay_per_month = document.credit_card_calc.pay_per_m.value.split(",").join("");
		//moPayAmnt = Number(document.credit_card_calc.pay_per_m.value);
		moPayAmnt = Number(pay_per_month);
		
		if (APR > 100) {
			alert("Kadar peratus tahunan anda\ntidak boleh melebihi 100%");
			document.credit_card_calc.apr.focus();
			}
		else if (purchaseAmount == 0) {
			alert("Apakah amaun pembelian anda?");
			document.credit_card_calc.purchase_amount.focus();
			}
		else if (moPayAmnt == 0) {
			alert("Anda mesti masukkan amaun yang anda\nmerancang untuk membayar sebulan.");
			document.credit_card_calc.pay_per_m.focus();
			}
		else if (!(moPayAmnt >= ((1 + Math.floor(purchaseAmount * (APR / 12))) / 100))) {
			alert("Maaf. Bayaran minimum anda masukkan (RM" + moPayAmnt + ")\ntidak lebih daripada caj kewangan bulan pertama (RM" + (Math.floor(purchaseAmount * (APR / 12)) / 100) + ")\noanda ke atas baki RM" + purchaseAmount + ".\n\nDiberikan bayaran minimum itu, baki ini tidak akan dibayar dengan sepenuhnya.\n\nSila masukkan satu amaun bayaran bulanan\nyang sekurang-kurangnya RM" + ((1 + Math.floor(purchaseAmount * (APR / 12))) / 100) + ".");
			document.credit_card_calc.pay_per_m.focus();
			}
		else {
			var count = 0;
			moPercRate = APR / 12;
			if (moPercRate < 3) {
				initMoPay = Math.round(purchaseAmount * 3) / 100 ;
				}
			else {
				initMoPay = Math.round(purchaseAmount * moPercRate) / 100;
				}
			if (initMoPay < 25) {
				initMoPay = 25;
				}
			princ = moPayAmnt;
			balance = purchaseAmount;
			do {
				moInt = (balance * (APR / 12)) / 100;
				princ = moPayAmnt - moInt;
				balance = balance - princ;
				totFinance += moInt;
				count++;
				if ((moPayAmnt > balance) && (balance > 0)) {
					lastPayment = balance;
					}
				}
			while (balance > 0);
			if (purchaseAmount < moPayAmnt) {
				moToPay = 1;
				}
			else {
				moToPay = count;
				}
			if (moToPay < 12) {
				strToPay = moToPay + " bulan";
				}
			else {
				strToPay = Math.floor(moToPay / 12) + " tahun";
				if (moToPay % 12 != 0) {
					strToPay += ", " + (moToPay - (Math.floor(moToPay / 12) * 12)) + " bulan";
					}
				}
			avgMoFin = Math.round((totFinance / count) * 100) / 100;
			displayResults();
			}
		}
	}

//function displays the results
function displayResults() {	

var str2 = "";
var str3 = "";
var str4 = "";

str2 = str2 + "<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\">\n";
str2 = str2 + "<tr><td colspan=\"2\"><span class=\"contentcopy\">\n";
str2 = str2 + "Hasil Pengiraan Kos Kredit anda terdapat di bawah. Anda boleh mencetak kertas kerja ini sebagai bahan rujukan.\n";
str2 = str2 + "</span><br>&nbsp;<br></td></tr>\n";

str2 = str2 + "<tr><td><span class=\"contentcopybold\">Kadar Faedah</span></td><td><span class=\"contentcopy\">" + APR + "%</span></td></tr>\n";
str2 = str2 + "<tr><td><span class=\"contentcopybold\">Jumlah Amaun Pembelian</span></td><td><span class=\"contentcopy\">RM" + displayComma(purchaseAmount) + "</span></td></tr>\n";
str2 = str2 + "<tr><td><span class=\"contentcopybold\">Jumlah Anda Rancang Untuk Bayar Setiap Bulan</span></td><td><span class=\"contentcopy\">RM" + displayComma(moPayAmnt) + "</span></td></tr>\n";
	
str2 = str2 + "<tr><td><span class=\"contentcopybold\">Kadar Peratus Bulanan</span></td><td><span class=\"contentcopy\">" + displayComma((Math.round(moPercRate * 100) / 100)) + "%</span></td></tr>\n";
str2 = str2 + "<tr><td><span class=\"contentcopybold\">Masa Untuk Habis Bayar</span></td><td><span class=\"contentcopy\">" + strToPay + "</span></td></tr>\n";
str2 = str2 + "<tr><td><span class=\"contentcopybold\">Caj Kewangan Bulanan Purata</span></td><td><span class=\"contentcopy\">RM" + displayComma(avgMoFin) + "</span></td></tr>\n";
str2 = str2 + "<tr><td><span class=\"contentcopybold\">Jumlah Caj Kewangan</span></td><td><span class=\"contentcopy\">RM" + displayComma((Math.round(totFinance * 100) / 100)) + "</span></td></tr>\n";
str2 = str2 + "<tr><td><span class=\"contentcopybold\">Jumlah Kos Barangan</span></td><td><span class=\"contentcopy\">RM" + displayComma((Math.round((totFinance + purchaseAmount) * 100) / 100)) + "</span></td></tr>\n";

str2 = str2 + "<tr><td colspan=\"2\"><span class=\"contentcopy\"><br>Semua pengiraan di muka ini mengandaikan: tiada tempoh faedah percuma; satu kadar akruan bulanan berdasarkan 30 hari sebulan, 360 hari setahun; satu caj kewangan bulanan berdasarkan baki akhir bulan sebelumnya.</span></td></tr></table><br>\n";

str3 = str3 + "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr>\n";
str3 = str3 + "<td colspan=\"2\"><span class=\"contentcopy\">Tip-Tip Kredit:\n";
str3 = str3 + "<ul><li>Guna kad kredit anda dengan bertanggungjawab dan bina sejarah kredit yang baik.</li>\n";
str3 = str3 + "<li>Pastikan bayaran anda mengikut masa dan syarat-syarat yang ditetapkan oleh peminjam.</li>\n";
str3 = str3 + "<li>Jangan belanja di luar keupayaan anda.&nbsp;&nbsp;Anda akan mendapati bahawa baki dan faedah anda mungkin mencapai tahap di mana anda membayar jauh lebih untuk pembelian anda daripada apa anda fikir.</li>\n";
str3 = str3 + "<li>Tanya diri sendiri, &quot;Adakah saya mebayar terlalu banyak?&quot; Jika ya, cuba membayar balik lebih daripada apa yang diperlu dibayar setiap bulan. </li></ul></span></td></tr></table>\n";
	
str4 = str4 + "<span class=\"contentcopyitalic\">Perhatian: Kalkulator interaktif ini bertujuan diguna sebagai alat pendidikan, bukan nasihat pelaburan.&nbsp;&nbsp;Maklumat yang dipersembahkan tidak berniat untuk menasihatkan anda tentang strategi yang sesuai dengan situasi spesifik anda, tetapi untuk menekankan isu-isu untuk pertimbangan anda.&nbsp;&nbsp;Maka anda harus sentiasa berunding dengan penasihat kewangan atau penasihat cukai anda.&nbsp;&nbsp;Gol dan garisan masa pelaburan anda akan membantu anda menjana satu strategi pelaburan yang spesifik.<br>&nbsp;<br></span>\n";
str4 = str4 + "<span class=\"contentcopy\"></b>Untuk <b>mencetak</b> muka ini, tekan Ctrl + P.</span>\n";


str4 = str4 + "</td><td><img src=\"images/spacer.gif\" width=\"1\" height=\"1\" alt=\"\" border=\"0\"></td></tr>\n";
str4 = str4 + "<tr><td colspan=\"3\"><img src=\"images/spacer.gif\" width=\"1\" height=\"15\" alt=\"\" border=\"0\"></td>\n";
str4 = str4 + "</tr></table></form></body></html>\n";
var docarea = document.getElementById("calcarea");
docarea.innerHTML='';
docarea.innerHTML=str2 + str3 + str4;
}

