﻿// JScript File

function updateTotal(checkBox,currentTotal,displayDiv)
{     
    var currentValue = document.getElementById(currentTotal);
    var currentPriceLabel = document.getElementById(displayDiv);
    var currentCheckBox = document.getElementById(checkBox);
    var currentPrice=0;
    
    var currentTotalCost = document.getElementById("hiddenCarCostTotal");
    var currentPackCost = document.getElementById("lblOptionalPacks");
    var currentOptionCost = document.getElementById("lblOptionalExtras");  
        
    if(currentOptionCost != null)//There is Pack Information on the page
    {        
        currentPrice = currentOptionCost.value * 1;
                
        if (currentCheckBox.checked)
        {   currentPrice += currentCheckBox.value * 1; }
        else
        {   currentPrice -= currentCheckBox.value * 1; }
        
        currentOptionCost.value = currentPrice;        
        document.getElementById("lblCarCostTotal").value = (currentOptionCost.value * 1) + (currentPackCost.value * 1) + (currentTotalCost.value * 1);        
     }
     else /*Used in the comparison screens*/
     {
        if (currentCheckBox != null && currentValue != null && currentPriceLabel != null)
        {
            var currentPrice = currentValue.value * 1;
            
            if (currentCheckBox.checked)
            { currentPrice += currentCheckBox.value * 1; }
            else
            { currentPrice -= currentCheckBox.value * 1; }
            currentValue.value = currentPrice;
            currentPriceLabel.value = formatEuro(currentPrice);
        }
     }  
}

function fnRecalcTotal(packPrice, plus, object)
{   
    alert(object.checked);
    if(object.checked)
    {
        var varpackprice;
        
        varpackprice = document.getElementById("lblOptionalPacks").value;
        
        if(varpackprice == "0")
        {
            document.getElementById("lblOptionalPacks").value = packPrice;    
            fnTotalPrice(packPrice,plus);
        }
    }   
}

function fnRecalcTotalBarry(packPrice, plus, object)
{   
    //alert(object.name);
    var OptionalPacksPrice = Number(document.getElementById("lblOptionalPacks").value);
    if(object.checked)
    {
        document.getElementById("lblOptionalPacks").value = OptionalPacksPrice + packPrice;    
        fnTotalPrice(packPrice,true);
    } 
    else {
        document.getElementById("lblOptionalPacks").value = OptionalPacksPrice - packPrice; 
        fnTotalPrice(packPrice,false);
    }  
}

function ClearPacks() {

    var OptionalPacksPrice = Number(document.getElementById("lblOptionalPacks").value);
    document.getElementById("lblOptionalPacks").value = 0;
    
    if(document.aspnetForm.chkPacks[0]) //Packs Collection > 1
    {
        for(var i=0; i < document.aspnetForm.chkPacks.length; i++)
        {
            document.aspnetForm.chkPacks[i].checked = false;
        }
    }
    else {
        document.aspnetForm.chkPacks.checked = false;
    }
    fnTotalPrice(OptionalPacksPrice,false);
}

function fnTotalPrice(diff, plus)
{    
    var varDifference;
    var varTotalCost;
    var varRunningTotal;
    var currentPackCost;
    var varPaintTotal;
    var varPaintRunningTotal;
    
    varDifference = parseInt(diff);
    
    //if in the options screen     
    if(document.getElementById("lblCarCostTotal")){                
    
        varTotalCost = document.getElementById("lblCarCostTotal").value;
                
        if(plus){        
            varRunningTotal = parseInt(varTotalCost) + varDifference;
        }
        else
        {
            varRunningTotal = parseInt(varTotalCost) - varDifference;
        }          
      
        document.getElementById("lblCarCostTotal").value = varRunningTotal;         
    
    }
    //if in the paint colour
    else
    {   
        varTotalCost = parseInt(document.getElementById("hiddenTotal").value);        
        varPaintRunningTotal = parseInt(document.getElementById("hiddenPaintTotal").value);        
        
        if(plus){                       
            varRunningTotal = parseInt(varTotalCost) + varDifference - varPaintRunningTotal;            
        }
        document.getElementById("hiddenPaintTotal").value = varDifference;  
        document.getElementById("hiddenTotal").value = varRunningTotal;  
    }
}


function formatEuro(num) 
{
    num = num.toString().replace(/\$|\,/g,'');
    if(isNaN(num)){return "Not A Number"}
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    num = Math.floor(num/100).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 (((sign)?'':'-') + '€' + num);
}


function open_win(the_Url, WinWidth, WinHeight)
{
	WinWidth = Number(WinWidth)+55;
	WinHeight = Number(WinHeight)+100;
	newwin = window.open( the_Url, "newwin", "width=" + WinWidth + ",height=" + WinHeight + ",scrollbars=0,resizable=1,location=0,directories=0,status=0,menubar=0");
	newwin.resizeTo(WinWidth,WinHeight);
}
function open_win2(the_Url, WinWidth, WinHeight)
{
	WinWidth = Number(WinWidth)+55;
	WinHeight = Number(WinHeight)+100;
	newwin = window.open( the_Url, "newwin", "width=" + WinWidth + ",height=" + WinHeight + ",scrollbars=1,resizable=1,location=0,directories=0,status=1,menubar=0");
	newwin.resizeTo(WinWidth,WinHeight);
}


function changeObjectCssClass(objectName,newCssClass)
{
    var obj = document.getElementById(objectName);
    if (obj != null)
    {
        obj.className = newCssClass;      
    }     
}

 function checkNumber(input, min, max, msg) {
        msg = msg + " field has invalid data: " + input.value;
        var str = input.value;
        for (var i = 0; i < str.length; i++) {
            var ch = str.substring(i, i + 1)
            if ((ch < "0" || "9" < ch) && ch != '.') {
                // alert(msg);
                return false;
            }
        }
        var num = 0 + str
        if (num < min || max < num) {
            // alert(msg + " not in range [" + min + ".." + max + "]");
            return false;
        }
        input.value = str;
        return true;
    }

    function computeField(input) {
        if (input.value != null && input.value.length != 0)
            input.value = "" + eval(input.value);
        computeForm(input.form);
    }

    function computeForm(form) {
      
		if (!checkNumber(form.principal, 1000, 50000, "Amount Required")) {
            form.payment.value = "Error";
            return;
        }
		
        if (!checkNumber(form.payments, 12, 60, "Loan Term")) {
	            form.payment.value = "Term !";
            return;
        }
		
		
		

        if (form.brk.checked) {
			pmts = eval(form.payments.value);
			if (form.payments.value == 12)
				{
				// rate for 1 year loan with payment breaks 4 decimals only
					var i = 42.4618;
				}
			else if (form.payments.value == 24)
				{
				// rate for 2 year loan with payment breaks 4 decimals only
					var i = 25.6009;
				}
			else if (form.payments.value == 36)
				{
				// rate for 3 year loan with payment breaks 4 decimals only
					var i = 19.7160;
				}		
			else if (form.payments.value == 48)
				{
				// rate for 4 year loan with payment breaks 4 decimals only
					var i = 16.7234;
				}
			else if (form.payments.value == 60)
				{
				// rate for 5 year loan with payment breaks. 4 decimals only
				var i = 14.9129;
			}
			
		}
		else {
			pmts = eval(form.payments.value);
			// rate for any loan without payment breaks. 2 decimals only.
			var i = 7.02;				
		}

		
        if (i > 1.0) {
            i = i / 100.0;
            form.interest.value = i;
        }
        i /= 12;

        var pow = 1;
        for (var j = 0; j < pmts; j++)
            pow = pow * (1 + i);
		var pmt_value = (form.principal.value * pow * i) / (pow - 1)
		form.payment.value = pmt_value.toFixed(2); 
    }

    function clearForm(form) {
        form.payments.value = "";
        form.interest.value = "";
        form.principal.value = "";
        form.downpayment.value = "";
    }