// Prepared for VVM.Inc
// Copyright:
// This software is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The software is licensed not sold.
// (C) Copyright 2003-2006 TraciDesign 

// Restriction:
// You may not attempt to reverse compile, modify, translate or disassemble this software in whole or in part. You may not remove or modify any copyright notice.



function RoundNumbers(TheNum) {
	//return Math.round(TheNum);
	return TheNum;
}

function addComma(TheNum)
{
    numVar=String(TheNum);
    var commaNumber = "";
    var thenumber = ""
    var thefraction = "";
    var j = numVar.indexOf(".");
    var l = numVar.length;
    
    if (j > 0)
    {    //found a period.
	 tvar=numVar+"00"; 
	 numVar=numVar.substr(0,j);
         for(i = j; i<j+3; i++) {     
               thefraction = thefraction + tvar.charAt(i); }
    }  else { //no period found
	    thefraction = ".00"; }
	j = numVar.length;

    for (i = j; i > 0; i--) {
         if ((i != j) && ((j - i) % 3 == 0))
                thenumber = thenumber + " ";
         thenumber = thenumber + numVar.charAt(i-1);
    }
    j = thenumber.length;
    for (i = j; i >= 0; i--)
        commaNumber = commaNumber + thenumber.charAt(i);
    
    commaNumber=commaNumber+thefraction; 
    return commaNumber;
}

function addCommaEx(TheNum)
{
    numVar=String(TheNum);
    var commaNumber = "";
    var thenumber = ""
    var thefraction = "";
    var j = numVar.length;

    for (i = j; i > 0; i--) {
         if ((i != j) && ((j - i) % 3 == 0))
                thenumber = thenumber + " ";
         thenumber = thenumber + numVar.charAt(i-1);
    }
    j = thenumber.length;
    for (i = j; i >= 0; i--)
        commaNumber = commaNumber + thenumber.charAt(i);

    return commaNumber;
}

function remComma(TheNum)
{
    numVar=String(TheNum);
    var thenumber = ""
    var l = numVar.length;
    
    for (i = l; i > 0; i--) {
         if (numVar.charAt(i-1) != " ")
         	thenumber = thenumber + numVar.charAt(i-1);
    }
	
	numVar=""
	j = thenumber.length;
    for (i = j; i >= 0; i--)
        numVar = numVar + thenumber.charAt(i);
		
	if ((numVar==".00")) {
		numVar="0"
	}
    return numVar;
}

function CalculateTransfer() {
var tot1 = 0;
var tot2 = 0;
	document.frmCalc.calcOption.value=1;
	if (remComma(document.frmCalc.txtPurch.value)==0) {
		alert("Please enter a purchase price.")
	}
		else
	{
//	document.frmCalc.txtAmt2.value=document.frmCalc.txtAmt.value;	//bond amount

	tot1=CalculateTransferFees(1);
	tot2=CalculateBondFees(0);
	tot3=CalculateRepayments(0);
	
//	document.frmCalc.txtTotal.value=addComma(RoundNumbers(tot1+tot2));		//total cost
	document.frmCalc.txtTtotal2.value=document.frmCalc.txtTtotal.value;	//transfer cost breakdown total
//	document.frmCalc.txtBtotal2.value=document.frmCalc.txtBtotal.value;	//bond cost breakdown total
	document.frmCalc.txtPurch2.value=addComma(remComma(document.frmCalc.txtPurch.value));	//TRANSFER COSTS purchase price  
//	document.frmCalc.txtAmt3.value=addComma(remComma(document.frmCalc.txtAmt.value));	//BOND COSTS bond amount 
	}
//	document.frmCalc.txtBbank.value=12345;
}


function CalculateBond() {
var tot1 = 0;
var tot2 = 0;
	document.frmCalc.calcOption.value=2;
	if (remComma(document.frmCalc.txtAmt.value)==0) {
		alert("Please enter a bond amount.")
	}
		else
	{
	document.frmCalc.txtAmt2.value=document.frmCalc.txtAmt.value;	//bond amount

	tot1=CalculateTransferFees(0);
	tot2=CalculateBondFees(1);
	tot3=CalculateRepayments(1);
	
//	document.frmCalc.txtTotal.value=addComma(RoundNumbers(tot1+tot2));		//total cost
//	document.frmCalc.txtTtotal2.value=document.frmCalc.txtTtotal.value;	//transfer cost breakdown total
	document.frmCalc.txtBtotal2.value=document.frmCalc.txtBtotal.value;	//bond cost breakdown total
//	document.frmCalc.txtPurch2.value=addComma(remComma(document.frmCalc.txtPurch.value));	//TRANSFER COSTS purchase price  
	document.frmCalc.txtAmt3.value=addComma(remComma(document.frmCalc.txtAmt.value));	//BOND COSTS bond amount  
	}
}


function CalculateAll() {
var tot1 = 0;
var tot2 = 0;
	document.frmCalc.calcOption.value=3;
	if (remComma(document.frmCalc.txtPurch.value)==0) {
		alert("Please enter a purchase price.")
	}
		else
	{
			if (remComma(document.frmCalc.txtAmt.value)==0) {
			alert("Please enter a bond amount.")
		}
			else
		{
		document.frmCalc.txtAmt2.value=document.frmCalc.txtAmt.value;	//bond amount
	
		tot1=CalculateTransferFees(1);
		tot2=CalculateBondFees(1);
		tot3=CalculateRepayments(1);
		
		document.frmCalc.txtTotal.value=addComma(RoundNumbers(tot1+tot2));		//total cost
		document.frmCalc.txtTtotal2.value=document.frmCalc.txtTtotal.value;	//transfer cost breakdown total
		document.frmCalc.txtBtotal2.value=document.frmCalc.txtBtotal.value;	//bond cost breakdown total
		document.frmCalc.txtPurch2.value=addComma(remComma(document.frmCalc.txtPurch.value));	//TRANSFER COSTS purchase price  
		document.frmCalc.txtAmt3.value=addComma(remComma(document.frmCalc.txtAmt.value));	//BOND COSTS bond amount 
		}
	}
}


function ValidateNumberOnlyInput(allowdot) {
	//alert("aaa");
    if (!((event.keyCode>=48) && (event.keyCode<=57))) {
    	event.returnValue = false;}
    	
    if ((allowdot>0) && (event.keyCode==46)) {
        event.returnValue = true;
	}
}
//	document.frmCalc.txtDep.value = event.keyCode;


function UpdateInfo(MustUpdate) {
var amt = 0;
//	document.frmCalc.txtAmt.value=document.frmCalc.txtPurch.value;	
//	add commas to the top values
	document.frmCalc.txtPurch.value=addCommaEx(remComma(document.frmCalc.txtPurch.value));
	document.frmCalc.txtDep.value=addCommaEx(remComma(document.frmCalc.txtDep.value));
	document.frmCalc.txtAmt.value=addCommaEx(remComma(document.frmCalc.txtAmt.value));
	
	
	if ((MustUpdate==1) && (remComma(document.frmCalc.txtPurch.value)>0) && (remComma(document.frmCalc.txtDep.value)>0))  {
		amt=remComma(document.frmCalc.txtPurch.value)-remComma(document.frmCalc.txtDep.value);
		document.frmCalc.txtAmt.value=addCommaEx(amt);
	}
		
		
//		document.frmCalc.txtAmt.value=addCommaEx(remComma(document.frmCalc.txtAmt.value));
			
}


function UpdateRepayment() {
	CalculateRepayments();
}

function GetTxferCost(Amt) {
var AmtTXfer1 = 800;
var AmtTXfer2 = 400;
var AmtTXfer3 = 200;
	
	
	txfer=0;
	if (Amt<=18000) { txfer=760; }
	if ((Amt>18000) && (Amt<=30000))  { txfer=1250; }
	if ((Amt>30000) && (Amt<=45000))  { txfer=1500; }
	if ((Amt>45000) && (Amt<=70000))  { txfer=1800; }
	if ((Amt>70000) && (Amt<=80000))  { txfer=2500; }
	if ((Amt>80000) && (Amt<=90000))  { txfer=2700; }
	if ((Amt>90000) && (Amt<=100000))  { txfer=2900; }
	if ((Amt>100000) && (Amt<=125000))  { txfer=3000; }
	if ((Amt>125000) && (Amt<=150000))  { txfer=3100; }
	if ((Amt>150000) && (Amt<=175000))  { txfer=3300; }
	if ((Amt>175000) && (Amt<=200000))  { txfer=3500; }
	if ((Amt>200000) && (Amt<=250000))  { txfer=3800; }
	if ((Amt>250000) && (Amt<=300000))  { txfer=4400; }
	if ((Amt>300000) && (Amt<=350000))  { txfer=4700; }
	if ((Amt>350000) && (Amt<=400000))  { txfer=5100; }
	if ((Amt>400000) && (Amt<=450000))  { txfer=5500; }
	if ((Amt>450000) && (Amt<=500000))  { txfer=6000; }
	
	x=0
	if (txfer==0) {
		txfer=txfer+6000;
	
		if ((Amt>500000) && (Amt<=1000000))  { 
			x=Math.ceil((Amt-500000)/100000);
			txfer=txfer+(x*AmtTXfer1);
		
		}
		if ((Amt>1000000) && (Amt<=5000000))  { 
			x=Math.ceil((Amt-1000000)/100000);
			//alert(x);		
			txfer=txfer+(5*AmtTXfer1);
			txfer=txfer+(x*AmtTXfer2);
		}
		
		if (Amt>5000000)  { 
			x=Math.ceil((Amt-5000000)/100000);		
			txfer=txfer+(5*AmtTXfer1);
			txfer=txfer+(40*AmtTXfer2);
			txfer=txfer+(x*AmtTXfer3);
		}
	}
	return txfer;			
	
}

function GetBondCost(Amt) {
var AmtBondC1 = 600;
var AmtBondC2 = 300;
var AmtBondC3 = 150;

	bond=0;
	if (Amt<=10000) { bond=550; }
	if ((Amt>10000) && (Amt<=15000))  { bond=700; }
	if ((Amt>15000) && (Amt<=20000))  { bond=750; }
	if ((Amt>20000) && (Amt<=25000))  { bond=850; }
	if ((Amt>25000) && (Amt<=30000))  { bond=900; }
	if ((Amt>30000) && (Amt<=35000))  { bond=1000; }
	if ((Amt>35000) && (Amt<=40000))  { bond=1100; }
	if ((Amt>40000) && (Amt<=45000))  { bond=1150; }
	if ((Amt>45000) && (Amt<=50000))  { bond=1200; }
	if ((Amt>50000) && (Amt<=60000))  { bond=1300; }
	if ((Amt>60000) && (Amt<=70000))  { bond=1400; }
	if ((Amt>70000) && (Amt<=80000))  { bond=1600; }
	if ((Amt>80000) && (Amt<=90000))  { bond=1700; }
	if ((Amt>90000) && (Amt<=100000))  { bond=1800; }	
	if ((Amt>100000) && (Amt<=125000))  { bond=1900; }
	if ((Amt>125000) && (Amt<=150000))  { bond=2000; }	
	if ((Amt>150000) && (Amt<=175000))  { bond=2100; }
	if ((Amt>175000) && (Amt<=200000))  { bond=2200; }
	if ((Amt>200000) && (Amt<=250000))  { bond=2400; }
	if ((Amt>250000) && (Amt<=300000))  { bond=2700; }
	if ((Amt>300000) && (Amt<=350000))  { bond=3000; }
	if ((Amt>350000) && (Amt<=400000))  { bond=3400; }
	if ((Amt>400000) && (Amt<=450000))  { bond=3700; }
	if ((Amt>450000) && (Amt<=500000))  { bond=4000; }	
	
	x=0
	if (bond==0) {
		bond=bond+4000;
	
		if ((Amt>500000) && (Amt<=1000000))  { 
			x=Math.ceil((Amt-500000)/100000);		
			bond=bond+(x*AmtBondC1);
		
		}
		if ((Amt>1000000) && (Amt<=5000000))  { 
			x=Math.ceil((Amt-1000000)/100000);		
			bond=bond+(5*AmtBondC1);
			bond=bond+(x*AmtBondC2);
		}
		
		if (Amt>5000000)  { 
			x=Math.ceil((Amt-5000000)/100000);		
			bond=bond+(5*AmtBondC1);
			bond=bond+(40*AmtBondC2);
			bond=bond+(x*AmtBondC3);
		}
	}
	return bond;	
}

function GetTxferDuty(Amt) {
	txfd=0;
	if (document.frmCalc.rdg[0].checked) {
		//seller is a vat vendor
		return (0);		
	} else {
	//seller is a natural person
	if (document.frmCalc.rdg[1].checked) {
		x=0;
		if (Amt<=500000) { txfd=0; }
		if ((Amt>500000) && (Amt<=1000000))  { 
			x=(Amt-500000)*(5/100);		
			txfd=x; }
		if (Amt>1000000) { 
			x=(500000)*(5/100);
			x=x+(Amt-1000000)*(8/100);		
			txfd=x; }
	} else {
	//purchaser is a legal entity
		txfd=Amt*(8/100);	
	}
	return (txfd);
	}
}

function GetVat(Amt) {
	var VAT_rate=14
	return RoundNumbers(Amt * (VAT_rate / 100));
}

function CalculateTransferFees(MustUpdate) {
	var Petties = 400;
	var SearchFee = 100;
	var Levies = 5000;
	var zz = 0;
	var Tfica = 153.50;
	var Tdocfee = 85;
	var tvat = 0;
	var runTotal = 0;
	
	//v=document.frmCalc.txtAmt.value;	//bond amount
	v=remComma(document.frmCalc.txtPurch.value);	//purchase price
	tc=GetTxferCost(v);
	td=GetTxferDuty(v);
	tvat=GetVat(tc+Petties+SearchFee+Tfica+Tdocfee);
	
	exam=0;
	if (v<=80000) { exam=55; }
	if ((v>80000) && (v<=150000))  { exam=200; }
	if ((v>150000) && (v<=300000))  { exam=260; }
	if ((v>300000) && (v<=500000))  { exam=340; }
	if ((v>500000) && (v<=1000000))  { exam=400; }
	if ((v>1000000) && (v<=2000000))  { exam=500; }
	if ((v>2000000) && (v<=3000000))  { exam=650; }
	if ((v>3000000) && (v<=5000000))  { exam=800; }
	if (v>5000000) { exam=1000; }


	if (MustUpdate==1) {
		document.frmCalc.txtTduty.value=addComma(td);
		document.frmCalc.txtTtariff.value=addComma(tc);
		document.frmCalc.txtTpost.value=addComma(Petties);
		document.frmCalc.txtTsearch.value=addComma(SearchFee);
		document.frmCalc.txtTVat.value=addComma(tvat);
		document.frmCalc.txtTrates.value=addComma(Levies);
		document.frmCalc.txtTexam.value=addComma(exam);
		document.frmCalc.txtTfica.value=addComma(Tfica);
		document.frmCalc.txtTdocfee.value=addComma(Tdocfee);
	}
	
	with (document.frmCalc) { 
		//z=parseFloat(txtTduty.value)+parseFloat(txtTexam.value)+parseFloat(txtTtariff.value)+parseFloat(txtTpost.value)+parseFloat(txtTsearch.value)+parseFloat(txtTVat.value)+parseFloat(txtTrates.value);
		runTotal=td+exam+tc+Petties+SearchFee+tvat+Levies+Tfica+Tdocfee;
		if (MustUpdate==1) {document.frmCalc.txtTtotal.value=addComma(RoundNumbers(runTotal));}
	}
	return runTotal;
}

function CalculateBondFees(MustUpdate) {
	var runTotal = 0;
	var Petties = 400;
	var Aktex = 100;
	var InitFee = 2000;
	var xyz = 0;
	var Bfica = 150;
	var Bdocfee = 85;
	var bvat = 0;
	var x = 0;
	
	x = (remComma(document.frmCalc.txtBbank.value)*1);
	if (x>0) {
		InitFee=(x);
		//alert(x);
	}
	v=remComma(document.frmCalc.txtAmt.value);
	bc=GetBondCost(v);
//old stamp duty?	xyz=(v*0.2)/100;
	bvat=GetVat(bc+Petties+Aktex+Bfica+Bdocfee);
	
	deeds=0;	
	if (v<=150000) { deeds=200; }
	if ((v>150000) && (v<=300000))  { deeds=260; }
	if ((v>300000) && (v<=500000))  { deeds=340; }
	if ((v>500000) && (v<=1000000))  { deeds=400; }
	if ((v>1000000) && (v<=2000000))  { deeds=500; }
	if ((v>2000000) && (v<=3000000))  { deeds=650; }
	if ((v>3000000) && (v<=5000000))  { deeds=800; }
	if (v>5000000) { deeds=1000; }

	if (MustUpdate==1) {
		document.frmCalc.txtBtariff.value=addComma(bc);	
		document.frmCalc.txtBpost.value=addComma(Petties);
		document.frmCalc.txtBdeeds.value=addComma(deeds);
		document.frmCalc.txtBbank.value=addComma(InitFee);
		document.frmCalc.txtBaktex.value=addComma(Aktex);
		document.frmCalc.txtBfica.value=addComma(Bfica);
		document.frmCalc.txtBdocfee.value=addComma(Bdocfee);
		document.frmCalc.txtBvat.value=addComma(bvat);
	}
//	document.frmCalc.txtBstamp.value=addComma(RoundNumbers(xyz));
	
	with (document.frmCalc) {
		runTotal=deeds+InitFee+bc+Petties+Aktex+bvat+Bfica+Bdocfee;
		//z=parseFloat(txtBstamp.value)+parseFloat(txtBdeeds.value)+parseFloat(txtBbank.value)+parseFloat(txtBtariff.value)+parseFloat(txtBpost.value)+parseFloat(txtBaktex.value)+parseFloat(txtBvat.value);
		if (MustUpdate==1) {document.frmCalc.txtBtotal.value=addComma(RoundNumbers(runTotal));	}
	}
	return runTotal;
}

function CalculateRepayments(MustUpdate) {
	var int_perc = 0;
	var monthly_int_rate=0;
	var month_term=0;
	
	v=remComma(document.frmCalc.txtAmt2.value);	//bond amount
	//document.frmCalc.txtAmt2.value=v;
	i=document.frmCalc.txtInt.value;	//interest rate
	y=document.frmCalc.txtTerm.value;	//years
	//v=document.frmCalc.txtPurch.value;	//purchase price
	
	int_perc=i/100;
	monthly_int_rate=int_perc/12;
	month_term=12*y;
	
	p=Math.pow((1+monthly_int_rate),(-1*month_term));
	r=v*(monthly_int_rate/(1-p));
	
	if (MustUpdate==1) {document.frmCalc.txtRepay.value=addComma(RoundNumbers(r));}
	//txtInt
	//txtTerm
	//document.frmCalc.txtNumber.value=(document.frmCalc.txtTerm.value * 12);
}

