﻿/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 12 March, 2010                                                                      *
 * Description   : This script contains functions that are used widely in the application 	              									*
 **********************************************************************************************************************/

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Initialise interest rates for single dimension array					 	              									*
 **********************************************************************************************************************/
function resetRate () { 

	_RATE = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; 
	if (_COUNTRY == "KO") {
		_TIPPERRATE = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
		_ATEGORATE = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
	}
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 01 May, 2010                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Initialise interest rates for multi dimensional array					 	              									*
 **********************************************************************************************************************/
function resetMultiRate(iRows,iCols) 
{ 
var i; 
var j; 
   var a = new Array(iRows); 
   for (i=0; i < iRows; i++) 
   { 
       a[i] = new Array(iCols); 
       for (j=0; j < iCols; j++) 
       { 
           a[i][j] = 0; 
       } 
   } 
   return(a); 
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Retrieve specific interest rate for a specific loan/lease term				 	              									*
 **********************************************************************************************************************/
function getRate (month) {
	if (0 == month) return _RATE[0];
	else if ("TR" == _COUNTRY) return _RATE[Math.ceil(month/6) - 1] * 12;
	else return _RATE[Math.ceil(month/6) - 1];
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 01 May, 2010                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Retrieve specific interest rate for a specific loan/lease term for Tipper Trucks				 	              									*
 **********************************************************************************************************************/
function getTipperRate (month) {
	if (0 == month) return _TIPPERRATE[0];
	else return _TIPPERRATE[Math.ceil(month/6) - 1];
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 01 May, 2010                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Retrieve specific interest rate for a specific loan/lease term for Atego Trucks				 	              									*
 **********************************************************************************************************************/
function getAtegoRate (month) {
	if (0 == month) return _ATEGORATE[0];
	else return _ATEGORATE[Math.ceil(month/6) - 1];
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Retrieve specific interest rate for a specific loan/lease term 				 	              									*
 **********************************************************************************************************************/
function getDisplayRate (month) {
	if (0 == month) return _RATE[0];
	return _RATE[Math.ceil(month/6) - 1];
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 01 May, 2010                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Retrieve specific interest rate for a specific loan/lease term for Tipper Trucks				 	              									*
 **********************************************************************************************************************/
function getDisplayTipperRate (month) {
	if (0 == month) return _TIPPERRATE[0];
	return _TIPPERRATE[Math.ceil(month/6) - 1];
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 01 May, 2010                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Retrieve specific interest rate for a specific loan/lease term for Atego Trucks				 	              									*
 **********************************************************************************************************************/
function getDisplayAtegoRate (month) {
	if (0 == month) return _ATEGORATE[0];
	return _ATEGORATE[Math.ceil(month/6) - 1];
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                               *
 * Date          : 01 May, 2010                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Retrieve specific interest rates within multi dimensional array for a specific lease term			*
 **********************************************************************************************************************/
function getMultiRate (IPType, month, IPRate) 
{   
	setRate();
	if (IPRate > 5) IPRate = 5;

	if (IPType == "prepayment") {
		if ((month >= 12) && (month < 18)) return _DownpaymentRate[IPRate][0];
	    	if ((month >= 18) && (month < 24)) return _DownpaymentRate[IPRate][1];
	    	if ((month >= 24) && (month < 30)) return _DownpaymentRate[IPRate][2];
		if ((month >= 30) && (month < 36)) return _DownpaymentRate[IPRate][3];
		if ((month >= 36) && (month <= 44)) return _DownpaymentRate[IPRate][4];
	    	if (month == 48) return _DownpaymentRate[IPRate][5];
		}
	 else {

		if ((month >= 12) && (month < 18)) return _DepositRate[IPRate][0];
	    	if ((month >= 18) && (month < 24)) return _DepositRate[IPRate][1];
	 	if ((month >= 24) && (month < 30)) return _DepositRate[IPRate][2];
		if ((month >= 30) && (month < 36)) return _DepositRate[IPRate][3];
		if ((month >= 36) && (month <= 44)) return _DepositRate[IPRate][4];
	    	if (month == 48) return _DepositRate[IPRate][5];
		}
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Add comma to a number and convert to string				 	              						  *
 **********************************************************************************************************************/
function addComma (num) {
	var numComma = "";
	var reminderN = 0;
	var reminderS = "";
	if (num == 0) numComma = "0";
	else {
		while (num != 0) {
			reminderN = num % 1000;
			num = Math.floor(num / 1000);
			if (0 != num) {
	  		if ((reminderN >= 0) && (reminderN < 10)) reminderS = "00" + reminderN;
	  		else if ((reminderN >= 10) && (reminderN < 100)) reminderS = "0" + reminderN;
	  		else reminderS = reminderN;
				numComma = (numComma == "") ? reminderS : reminderS + " " + numComma;
	  	}
			else numComma = (numComma == "") ? reminderN : reminderN + " " + numComma;
		}
	}
	return numComma;
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Calculator entry model for a vehicle class			 	              						  	  *
 **********************************************************************************************************************/
function entryModel (vehicleModel, vehicleSeries) {
	var modelName = 0;
	var minPrice = 0;
	var i = 0;

	for (i in _VEHICLE[vehicleModel][vehicleSeries]) {
  	if (_VEHICLE[vehicleModel][vehicleSeries][i].status == ACTIVE) {
  		if (minPrice == 0) {
  			minPrice = _VEHICLE[vehicleModel][vehicleSeries][i].price;
  			modelName = _VEHICLE[vehicleModel][vehicleSeries][i];
  		}
  		else if (_VEHICLE[vehicleModel][vehicleSeries][i].price < minPrice) {
  				minPrice = _VEHICLE[vehicleModel][vehicleSeries][i].price;
  				modelName = _VEHICLE[vehicleModel][vehicleSeries][i];
  		}
  	}
  }
	return modelName;
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Get a checked value of a radio button			 	              						  	  	  *
 **********************************************************************************************************************/
function getCheckedValue(radioObj) { 
	if(!radioObj) return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked) return radioObj.value;
		else return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Calculator which vehicle model should be displayed in "Model Finder"			 	              	  *
 **********************************************************************************************************************/
function parseActiveModels(amountFinanced, Rpa, month){
	var i = 0;
	var assetValue = 0;
	
	for (i in _VEHICLE[_TABMODEL]) {
		if ((typeof _VEHICLE[_TABMODEL][i] == "object") && (_VEHICLE[_TABMODEL][i].status == ACTIVE)) {
			var id = "fade" + "." + _TABMODEL + "." + i;
			if (("TR" == _COUNTRY) && ("tl" == _CURRENCY)) assetValue = entryModel(_TABMODEL, i).price * _EURtoTRY;
			else assetValue = entryModel(_TABMODEL, i).price;
			
			if (assetValue > amountFinanced) {
				
				if (document.getElementById) document.getElementById(id).style.visibility = 'hidden';
				else if (document.layers) document[id].visibility = 'hidden';
				else document.all[id].style.visibility = 'hidden';
				nereidFade(document.getElementById(id),0,10,5);
			}
			else {
				nereidFade(document.getElementById(id),100,10,5);
				if (document.getElementById) document.getElementById(id).style.visibility = 'visible';
				else if (document.layers) document[id].visibility = 'visible';
				else document.all[id].style.visibility = 'visible';
			}
		}
	}
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                        *
 * Date          : 30 June, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Calculator which vehicle model should be displayed in "Model Finder" SWITZERLAND			 	      *
 **********************************************************************************************************************/
function parseActiveModelsCH(installment, dp, Lpa, month){
	var i = 0;
	var monthlyrent = 0;
	
	
	for (i in _VEHICLE[_TABMODEL]) {
		if ((typeof _VEHICLE[_TABMODEL][i] == "object") && (_VEHICLE[_TABMODEL][i].status == ACTIVE)) {
			var id = "fade" + "." + _TABMODEL + "." + i;

			if (_FINPRODUCT == "F") {

					var dpayment = document.getElementById('downpayment').value * 1.0;
					_FAINTERESTRATE = entryModel(_TABMODEL, i).price - dpayment;
	
					var iRate = getRateByFA();
					var Rpa = iRate/100;
	
					var pmt = 0;
					var pwt = 0;

					monthlyrent = monthlyPayment(entryModel(_TABMODEL, i).price, dp, Rpa, _PPA, 0, month, 0);
			}
			if (_FINPRODUCT == "L") {

					var RVp = 0.0;
					RVp = RVpercent(month, document.getElementById('mileage').value, entryModel(_TABMODEL, i).GP, entryModel(_TABMODEL, i).IV, entryModel(_TABMODEL, i).Fm, entryModel(_TABMODEL, i).FI);
					var dpayment = document.getElementById('downpayment').value * 1.0;
					_FAINTERESTRATE = entryModel(_TABMODEL, i).price;
	
					var iRate = getRateByFA();
					var Rpa = iRate/100;
	
					var pmt = 0;
					var pwt = 0;
					var pricewoVAT = entryModel(_TABMODEL, i).price/(1 + _VAT);

					var RV = RVp * pricewoVAT;


					monthlyrent = (1 + _VAT) * monthlyPayment(pricewoVAT, dp, Rpa, _PPA, RV, month, 1);
			}
			
			if (monthlyrent > installment) {
				if (document.getElementById) document.getElementById(id).style.visibility = 'hidden';
				else if (document.layers) document[id].visibility = 'hidden';
				else document.all[id].style.visibility = 'hidden';
				nereidFade(document.getElementById(id),0,10,5);
			}
			else {
				nereidFade(document.getElementById(id),100,10,5);
				if (document.getElementById) document.getElementById(id).style.visibility = 'visible';
				else if (document.layers) document[id].visibility = 'visible';
				else document.all[id].style.visibility = 'visible';
			}
		}
	}
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 30 June, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Calculator which vehicle model should be displayed in "Model Finder" for Operating Lease Korea      *
 **********************************************************************************************************************/
function parseActiveModelsOL(installment, dp, Lpa, month, _OLTYPE){
	var i = 0;
	var monthlyrent = 0;
	
	for (i in _VEHICLE[_TABMODEL]) {
		if ((typeof _VEHICLE[_TABMODEL][i] == "object") && (_VEHICLE[_TABMODEL][i].status == ACTIVE)) {
			var id = "fade" + "." + _TABMODEL + "." + i;					
			var RVp = 0.0;
			
			RVp = RVpercent(month, Lpa, entryModel(_TABMODEL, i).GP, entryModel(_TABMODEL, i).IV, entryModel(_TABMODEL, i).Fm, entryModel(_TABMODEL, i).FI);
			var dpayment = document.getElementById('downpayment').value * 1.0;
			_FAINTERESTRATE = entryModel(_TABMODEL, i).price;

			if (_FAINTERESTRATE != 0) var iRate = getMultiRate (_OLTYPE, month, Math.round((dpayment/_FAINTERESTRATE))* 10);  
			else var iRate = getMultiRate (_OLTYPE, month, 0);
								
			var Rpa = iRate/100;
			
			var pmt = 0;
			var pwt = 0;
			var RV = RVp * entryModel(_TABMODEL, i).price;
			monthlyrent = monthlyPayment(entryModel(_TABMODEL, i).price, dp, Rpa, _PPA, RV, month, 0);


			if (monthlyrent > installment) {
				if (document.getElementById) document.getElementById(id).style.visibility = 'hidden';
				else if (document.layers) document[id].visibility = 'hidden';
				else document.all[id].style.visibility = 'hidden';
				nereidFade(document.getElementById(id),0,10,5);
			}
			else if (monthlyrent < installment) {
				nereidFade(document.getElementById(id),100,10,5);
				if (document.getElementById) document.getElementById(id).style.visibility = 'visible';
				else if (document.layers) document[id].visibility = 'visible';
				else document.all[id].style.visibility = 'visible';
			}
		}
	}
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Convert currency to YTL - Turkey			 	              	  									  *
 **********************************************************************************************************************/
function changeCurYTL() {
	createCookie("defaultBalloon", 0);
	createCookie("defaultDownpayment", 0);
	createCookie("defaultPayment", 0);
	createCookie("defaultCurrency", "ytl");
	_DEFAULTBOLLOON = 0;
	_DEFAULTDOWNPAYMENT = 0;
	_DEFAULTPAYMENT = 0;
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Convert currency to TL - Turkey				 	              	  								*
 **********************************************************************************************************************/
function changeCurTL() {
	createCookie("defaultBalloon", 0);
	createCookie("defaultDownpayment", 0);
	createCookie("defaultPayment", 0);
	createCookie("defaultCurrency", "tl");
	_DEFAULTBOLLOON = 0;
	_DEFAULTDOWNPAYMENT = 0;
	_DEFAULTPAYMENT = 0;
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Convert currency to EURO - Turkey				 	              	  								*
 **********************************************************************************************************************/
function changeCurEUR() {
	createCookie("defaultBalloon", 0);
	createCookie("defaultDownpayment", 0);
	createCookie("defaultPayment", 0);
	createCookie("defaultCurrency", "eur");
	_DEFAULTBOLLOON = 0;
	_DEFAULTDOWNPAYMENT = 0;
	_DEFAULTPAYMENT = 0;
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 December, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Change language setting to Chinese				 	              	  								*
 **********************************************************************************************************************/
function changeLangCHI() {
	createCookie("defaultLanguage", "CHINESE");
	_LANGUAGE = "CHINESE";
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 December, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Change language setting to English				 	              	  								*
 **********************************************************************************************************************/
function changeLangENG() {
	createCookie("defaultLanguage", "ENGLISH");
	_LANGUAGE = "ENGLISH";
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 30 April, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Change language setting to German				 	              	  								*
 **********************************************************************************************************************/
function changeLangGER() {
	createCookie("defaultLanguage", "GERMAN");
	_LANGUAGE = "GERMAN";
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 30 April, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Change language setting to French				 	              	  								*
 **********************************************************************************************************************/
function changeLangFRE() {
	createCookie("defaultLanguage", "FRENCH");
	_LANGUAGE = "FRENCH";
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 30 April, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Change language setting to Italian				 	              	  								*
 **********************************************************************************************************************/
function changeLangITA() {
	createCookie("defaultLanguage", "ITALIAN");
	_LANGUAGE = "ITALIAN";
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 May, 2010                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Change language setting to Korean				 	              	  								*
 **********************************************************************************************************************/
function changeLangKOR() {
	createCookie("defaultLanguage", "KOREAN");
	_LANGUAGE = "KOREAN";
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 30 April, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Change Financial Product to Financing				 	              	  								*
 **********************************************************************************************************************/
function changeFPtoFINANCE() {
	createCookie("defaultFP", "F");
	_FINPRODUCT = "F";
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 30 April, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010  - i did something                                                                    *
 * Description   : Change Financial Product to Leasing				 	              	  								*
 **********************************************************************************************************************/
function changeFPtoLEASING() {
	createCookie("defaultFP", "L");
	_FINPRODUCT = "L";
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 May, 2010                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Change Financial Product to Operating Leasing				 	              	  								*
 **********************************************************************************************************************/
function changeFPtoOLEASING() {
	createCookie("defaultFP", "OL");
	_FINPRODUCT = "OL";
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 December, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Store selected vehicle details in cookies for Payment Calculator				 	              	  			  *
 **********************************************************************************************************************/
function changeVehicle(price, vname, vid, vclass) {
	createCookie("selectedVehicle", vname);
	createCookie("selectedVehiclePrice", price);
	createCookie("selectedVehicleID", vid);
	createCookie("selectedVehicleClass", vclass);
	_VEHICLENAME = vname;
	_VEHICLEPRICE = price;
	_VEHICLEID = vid;
	_VCLASS = vclass;
	
	//window.location.reload();
	$("#downpaymentSlider").slider('destroy');
	$("#balloonSlider").slider('destroy');
	localVariables();
	sliders();
	
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 December, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Validate	input fields(Financed Amount, Balloon and Interest Rate) for Australia			 	      *
 **********************************************************************************************************************/
function checkInputFields(){
	var iRate;
	var p;
	var _MSG = ["", "", ""];
	var FieldErr="";
	var count;
	
	
	iRate = document.getElementById('interestRateAU').value * 1.0;
	p = document.getElementById('financedAmountAU').value * 1.0;
	balloon = document.getElementById('balloonAU').value * 1.0;
			
	if ((isNaN(iRate)) || (isNaN(p))) _MSG[0]= "Fields must be numeric";
	if ((0 >= iRate) || (0 >= p)) _MSG[1]= "Fields must be more that zero";
    if (balloon > p) _MSG[2]= "Balloon cannot be more than amount financed";
	
	var i=0;
	for (count = 0; count < 3; count++){ 	
	 	if (_MSG[count] != ""){
			i = i+1;
			FieldErr = FieldErr + "\r\n" + i + ") " + _MSG[count];  
		} 
	}	
	if (i>0) alert("The following error occured:\r\n" + FieldErr);
	else recalculatePaymentCalculator();
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Calculate monthly payment for Payment Calculator				 	              	  				  *
 **********************************************************************************************************************/
/* Calculate monthly downpayment
 * p: Present Value
 * dp: Downpayment
 * rpa: interest rate per annual
 * ppa: payment per annual
 * fv: future value (ballon)
 * m: month
 * type: payment advance or not
 */
function monthlyPayment (p, dp, rpa, ppa, fv, m, type) {
	var pv = p - dp;
	var pmt = 0;
		
	if (_COUNTRY == "TR") {
		var rpp;
		var nper = m;
	
		if ("private" == _CUSTOMERTYPE) rpp = rpa * (1 + _BSMV + _KKDF) / 12;
		if ("corporate" == _CUSTOMERTYPE) rpp = rpa * (1 + _BSMV) / 12;
		
		var temp = Math.pow((rpp + 1), nper );
		if ( 0 == m) pmt = pv - fv;
		else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
	}
	if (_COUNTRY == "SG") {
		if (0 == m) pmt = pv;
		else pmt = (1 + rpa * m / 12) * pv / m;
	}
	if (_COUNTRY == "CN") {
		var rpp;
		var nper = m;
		
		rpp = rpa / 12;
		
		var temp = Math.pow((rpp + 1), nper );
		if ( 0 == m) pmt = pv - fv;
		else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
	}
	if (_COUNTRY == "TW") {
		var rpp;
		var nper = m;
		
		rpp = rpa / 12;
		var temp = Math.pow((rpp + 1), nper );
		if ( 0 == m) pmt = pv - fv;
		else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
		
				
	}
	if (_COUNTRY == "AU") {
		var rpp;
		var nper = m;
	
		rpp = rpa / 12;
		
		var temp = Math.pow((rpp + 1), nper );
		if ( 0 == m) pmt = pv - fv;
		else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
		
	}
	if ((_COUNTRY == "CH") && (_FINPRODUCT == "F")) {
		var rpp;
		var nper = m;
	
		rpp = rpa / 12;
		
		var temp = Math.pow((rpp + 1), nper );
		if ( 0 == m) pmt = pv - fv;
		else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
	}
	if ((_COUNTRY == "CH") && (_FINPRODUCT == "L")) {
		if (dp == 0){
			var rpp;
			var nper = m;
	
			rpp = rpa / 12;
		
			var temp = Math.pow((rpp + 1), nper );
			if ( 0 == m) pmt = pv - fv;
			else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
		}
		if (dp > 0){
			var rpp;
			var nper = m;
			var fv1 = 0;
	
			rpp = rpa / 12;

			var temp = Math.pow((rpp + 1), (nper-1) );

			fv1 = (p * (rpp + 1))-((((rpp+1)-1)*(1+rpp*type)*(dp/(1 + _VAT)))/rpp);

			if ( 0 == m) pmt = pv - fv;
			else pmt = rpp * (fv1 * temp - fv) / ((1 + rpp * type) * (temp - 1));
		}
	}
	if ((_COUNTRY == "SE") && (_FINPRODUCT == "F")) {
		var rpp;
		var nper = m;
	
		rpp = rpa / 12;
		
		var temp = Math.pow((rpp + 1), nper );
		if ( 0 == m) pmt = pv - fv;
		else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
		
	}
	
	if ((_COUNTRY == "SE") && (_FINPRODUCT == "L")) {
		var rpp;
		var nper = m;
	
		rpp = rpa / 12;
		
		var temp = Math.pow((rpp + 1), nper );
		if ( 0 == m) pmt = pv - fv;
		else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
	}
	
	if (_COUNTRY == "DK") {
		var rpp;
		var nper = m;
	    var fee;
		var newpv;
		
		var _EXPENSIVE = 530242;
  	    var _DOCFEE = 1950;
        var _STARTFEE = 2750;
        var _GOVTFEE = 2150;
        var _FEEPERCENT = 0.015;
		
		/* Calculate fees first if downpayment is more than 0*/
		if ((dp > 0) && (dp < p)) {
			
			/*fee = (Math.ceil(((_FEEPERCENT * pv) - 9)/100) * 100) + _GOVTFEE + _DOCFEE + _STARTFEE;*/
			fee = (Math.ceil((_FEEPERCENT * pv)/100) * 100) + _GOVTFEE + _DOCFEE + _STARTFEE;
			newpv = fee + pv;
			/*fee =  (Math.ceil(((_FEEPERCENT * newpv) - 9)/100) * 100) + _GOVTFEE + _DOCFEE + _STARTFEE;*/
			fee =  (Math.ceil((_FEEPERCENT * newpv)/100) * 100) + _GOVTFEE + _DOCFEE + _STARTFEE;
			
			newpv = fee + pv;
			pv = newpv;
			
		}
		
		rpp = rpa / 12;
		
		var temp = Math.pow((rpp + 1), nper );
		if ( 0 == m) pmt = pv - fv;
		else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
				
	}
	
	if (_COUNTRY == "KO") {
		var rpp;
		var nper = m;
	
		rpp = rpa / 12;
		
		var temp = Math.pow((rpp + 1), nper );
		if ( 0 == m) pmt = pv - fv;
		else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
		
	}
	
	if ((pmt < 0)||(isNaN(pmt))) return 0; 

	return pmt;
}

/* *********************************************************************************************************************
 * Author        : Norliza Jumari (norliza.jumari@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 December, 2009                                                                                    *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Calculate weekly payment for Payment Calculator - Australia				 	              	  	  *
 **********************************************************************************************************************/
function weeklyPayment (p, dp, rpa, ppa, fv, m, type) {
	var pv = p - dp;
	var pmt = 0;
	var pwt = 0;
	var rpp;
	var nper = m;
	
	rpp = rpa / 12;
		
	var temp = Math.pow((rpp + 1), nper );
	if ( 0 == m) pmt = pv - fv;
	else pmt = rpp * (pv * temp - fv) / ((1 + rpp * type) * (temp - 1));
	
	pwt = (pmt * 12) / 52;
	
	if ((pwt < 0)||(isNaN(pwt))) return 0; 
	/*return Math.round(pwt);*/
	return pwt;
}

/* *********************************************************************************************************************
 * Author        : David Li (david.li@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 09 April, 2008                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Calculate total financed amount for Model Finder				 	              	  				  *
 **********************************************************************************************************************/
/* Calculate total financed amount
 * dp: Downpayment
 * rpa: interest rate per annual
 * ppa: payment per annual
 * fv: future value (balloon)
 * m: month
 * type: payment advance or not
 * pmt: payment per period
 */
function totalAmount (dp, rpa, ppa, fv, m, type, pmt) {
	var p = 0;
	
	if (_COUNTRY == "TR") {
		var rpp;
		var nper = m;
		
		if ("private" == _CUSTOMERTYPE) rpp = rpa * (1 + _BSMV + _KKDF) / 12;
		if ("corporate" == _CUSTOMERTYPE) rpp = rpa * (1 + _BSMV) / 12;
		
		var temp = Math.pow((rpp + 1), nper);
		p = (pmt * (1 + rpp * type) * (temp - 1 )/ rpp + fv) / temp + dp; 
	}
	if (_COUNTRY == "SG") {
		p = dp + (pmt * m)/(1 + rpa * m / 12);
	}
	
	if (_COUNTRY == "CN") {
		var rpp;
		var nper = m;
		
		rpp = rpa / 12;
		
		var temp = Math.pow((rpp + 1), nper);
		p = (pmt * (1 + rpp * type) * (temp - 1 )/ rpp + fv) / temp + dp; 
	}
	
	if (_COUNTRY == "TW") {
		var rpp;
		var nper = m;
		
		rpp = rpa / 12;
					
		var temp = Math.pow((rpp + 1), nper);
		p = (pmt * (1 + rpp * type) * (temp - 1 )/ rpp + fv) / temp + dp; 
	}

	if ((_COUNTRY == "CH") && (_FINPRODUCT == "F")) {
		var rpp;
		var nper = m;
		
		rpp = rpa / 12;
		
		var temp = Math.pow((rpp + 1), nper);
		p = (pmt * (1 + rpp * type) * (temp - 1 )/ rpp + fv) / temp + dp; 
	}

	if ((_COUNTRY == "CH") && (_FINPRODUCT == "L")) {
		if (dp == 0){		
			var rpp;
			var nper = m;
		
			rpp = rpa / 12;
		
			var temp = Math.pow((rpp + 1), nper);
			p = (pmt * (1 + rpp * type) * (temp - 1 )/ rpp + fv) / temp + dp; 
		}
		if (dp > 0){	
			var rpp;
			var nper = m;
		
			rpp = rpa / 12;
		
			var temp = Math.pow((rpp + 1), nper);
			p = (pmt * (1 + rpp * type) * (temp - 1 )/ rpp + fv) / temp + dp;
		}
	}

	if ((_COUNTRY == "KO") && (_FINPRODUCT == "F")) {
		var rpp;
		var nper = m;
		
		rpp = rpa / 12;
					
		var temp = Math.pow((rpp + 1), nper);
		p = (pmt * (1 + rpp * type) * (temp - 1 )/ rpp + fv) / temp + dp; 
		}
	if ((_COUNTRY == "KO") && (_FINPRODUCT == "L")) {
		var rpp;
		var nper = m;
		
		rpp = rpa / 12;
					
		var temp = Math.pow((rpp + 1), nper);
		p = (pmt * (1 + rpp * type) * (temp - 1 )/ rpp + fv) / temp + dp; 
	}
	if ((_COUNTRY == "KO") && (_FINPRODUCT == "OL")) {
		var rpp;
		var nper = m;
		
		rpp = rpa / 12;
					
		var temp = Math.pow((rpp + 1), nper);
		p = (pmt * (1 + rpp * type) * (temp - 1 )/ rpp + fv) / temp + dp; 
	}
	return Math.round(p);
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 May, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Calculate residual value percentage				 	              	  				  *
 **********************************************************************************************************************/
function RVpercent (M, Lpa, GP, IV, Fm, FI) {
	var p = 0.00;
	var L = M/12 * Lpa;

	var temp1 = Math.pow((1-FI), (L/10000-1));
	var temp2 = Math.pow((1-Fm), (M/6-2));

	p = (IV*temp1*temp2) + GP;
	
	if (_COUNTRY == "CH") p = Math.round(p * 200)/200;
	if (_COUNTRY == "KO") p = Math.round(p * 1000)/1000;
    
	return p;
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 May, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Retrieve the specific interest rate based on financed amount - Switzerland				 	       *
 **********************************************************************************************************************/
function getRateByFA () {
	if (_COUNTRY == "CH") {
		var rate = 0.00;
		if (_FAINTERESTRATE < 10000) {
			rate = 7.50;
		} 
		else if ((_FAINTERESTRATE >= 10000) && (_FAINTERESTRATE < 25000)) { 
			rate = 6.90;
		}	
		else if ((_FAINTERESTRATE >= 25000) && (_FAINTERESTRATE < 50000)) { 
			rate = 6.70;
		}
		else if ((_FAINTERESTRATE >= 50000) && (_FAINTERESTRATE < 80000)) { 
			rate = 6.40;
		}
		else if (_FAINTERESTRATE >= 80000) { 
			rate = 6.10;
		}
		return rate;
	}	
}

/* *********************************************************************************************************************
 * Author        : Kirill Lastowezky (kirill.lastowezky@daimler.com) @ DFS AAP, HQ in Singapore                                         *
 * Date          : 31 May, 2009                                                                                     *
 * Last Change   : Norliza Jumari @ 31 May, 2010                                                                      *
 * Description   : Retrieve the specific interest rate based on amount - Switzerland				 	       *
 **********************************************************************************************************************/
function getRateByAmount (amount) {
	if (_COUNTRY == "CH") {
		var rate = 0.00;
		if (amount < 10000) {
			rate = 7.50;
		} 
		else if ((amount >= 10000) && (amount < 25000)) { 
			rate = 6.90;
		}	
		else if ((amount >= 25000) && (amount < 50000)) { 
			rate = 6.70;
		}
		else if ((amount >= 50000) && (amount < 80000)) { 
			rate = 6.40;
		}
		else if (amount >= 80000) { 
			rate = 6.10;
		}
		return rate;
	}	
}
