<!-- //author: jamesng
     //version: 1.0 May 20, 2007
function calculatePremium()
{
    var intSelectedCoverageType = document.formMain.intCoverageType.selectedIndex;
    var intCoverageTypeValue = Number(document.formMain.intCoverageType.options[intSelectedCoverageType].value);
    switch (intCoverageTypeValue)
    {
        case 0:
            disableAllAdditionalBenefitFields();
            break;
            
        case 1:
            calculateComprehensivePremium(); 
            break;    
        
        case 2:
            calculate3rdPartyTheftAndFire();
            break;
        
        case 3:
            calculate3rdParty();
            break;
    }  
    
}

function calculate3rdParty()
{
    //engine cc premium
    var intEngineType = num(document.formMain.intEngineType.options[document.formMain.intEngineType.selectedIndex].value);
    var floatPassengersLiabilityPremium = 0.00;
    
    switch(intEngineType)
    {
        case -1:
            float3rdPartyEngineCCPremium = 0;            
            break;
            
        case 0:
            float3rdPartyEngineCCPremium = 27.00;
            break;
        
        case 51:
            float3rdPartyEngineCCPremium = 32.40;
            break; 
        
        case 101:
            float3rdPartyEngineCCPremium = 36.50;
            break;  
            
        case 126:
            float3rdPartyEngineCCPremium = 44.60;
            break;
            
        case 226:
            float3rdPartyEngineCCPremium = 56.70;
            break;    
            
        case 351:
            float3rdPartyEngineCCPremium = 64.80;
            break;    
            
        case 501:
            float3rdPartyEngineCCPremium = 72.90;
            break;
    }
    
    //Base Premium
    var floatBasePremium = parseFloat(float3rdPartyEngineCCPremium);
    document.getElementById('floatBasePremium').innerHTML = currency(floatBasePremium);
    
    //Base Premium after loading and NCD
    var floatLoading = parseFloat(document.formMain.floatLoading.value);
    var floatNCD = parseFloat(document.formMain.floatNCD.options[document.formMain.floatNCD.selectedIndex].value);
    var floatBasePremiumAfterNCD = floatBasePremium;
    var part1 = parseFloat(1+floatLoading/100);
    var part2 = parseFloat(1-floatNCD/100);
    var part3 = part1 * part2;
    floatBasePremiumAfterNCD = parseFloat(floatBasePremium) * parseFloat(part3);
    document.getElementById('floatBasePremiumAfterNCD').innerHTML = currency(floatBasePremiumAfterNCD);
    
    var floatTotalPremium = floatBasePremiumAfterNCD;
    document.getElementById('floatTotalPremium').innerHTML = currency(floatTotalPremium);
    
}

function calculate3rdPartyTheftAndFire()
{
    //engine cc premium
    var intEngineType = num(document.formMain.intEngineType.options[document.formMain.intEngineType.selectedIndex].value);
    var floatPassengersLiabilityPremium = 0.00;
    
    switch(intEngineType)
    {
        case -1:
            float3rdPartyTheftAndFireEngineCCPremium = 0;            
            break;
            
        case 0:
            float3rdPartyTheftAndFireEngineCCPremium = 51.75;
            break;
        
        case 51:
            float3rdPartyTheftAndFireEngineCCPremium = 69.00;
            break; 
        
        case 101:
            float3rdPartyTheftAndFireEngineCCPremium = 86.25;
            break;  
            
        case 126:
            float3rdPartyTheftAndFireEngineCCPremium = 99.23;
            break;
            
        case 226:
            float3rdPartyTheftAndFireEngineCCPremium = 129.38;
            break;    
            
        case 351:
            float3rdPartyTheftAndFireEngineCCPremium = 150.98;
            break;    
            
        case 501:
            float3rdPartyTheftAndFireEngineCCPremium = 172.50;
            break;
    }

    //sum insured premium
    var floatSumInsured = parseFloat(document.formMain.floatSumInsured.value);
    floatSumInsuredPremium = parseFloat((floatSumInsured - 1000)*0.75*1.75/100);
    
    //fix < 1000 sum insured bug
    //if (floatSumInsuredPremium < 0) 
    //{
    //    floatSumInsuredPremium = 0;
    //}
    
    //Base Premium
    var floatBasePremium = parseFloat(float3rdPartyTheftAndFireEngineCCPremium) + parseFloat(floatSumInsuredPremium);
    if (intEngineType == -1)
    {    
        floatBasePremium = 0;  
    }
    document.getElementById('floatBasePremium').innerHTML = currency(floatBasePremium);
    
    //Base Premium after loading and NCD
    var floatLoading = parseFloat(document.formMain.floatLoading.value);
    var floatNCD = parseFloat(document.formMain.floatNCD.options[document.formMain.floatNCD.selectedIndex].value);
    var floatBasePremiumAfterNCD = floatBasePremium;
    var part1 = parseFloat(1+floatLoading/100);
    var part2 = parseFloat(1-floatNCD/100);
    var part3 = part1 * part2;
    floatBasePremiumAfterNCD = parseFloat(floatBasePremium) * parseFloat(part3);
    document.getElementById('floatBasePremiumAfterNCD').innerHTML = currency(floatBasePremiumAfterNCD);
    
    var floatTotalPremium = floatBasePremiumAfterNCD;
    
    //calculate additional benefits if coverage is comprehensive
    var intSelectedCoverageType = document.formMain.intCoverageType.selectedIndex;
    var intCoverageTypeValue = Number(document.formMain.intCoverageType.options[intSelectedCoverageType].value);
    
    document.getElementById('floatTotalPremium').innerHTML = currency(floatTotalPremium);
}

function calculateComprehensivePremium()
{
    //engine cc premium
    var intEngineType = num(document.formMain.intEngineType.options[document.formMain.intEngineType.selectedIndex].value);
    var floatPassengersLiabilityPremium = 0.00;
    
    switch(intEngineType)
    {
        case -1:
            floatComprehensiveEngineCCPremium = 0;
            break;
            
        case 0:
            floatComprehensiveEngineCCPremium = 69.00;
            break;
            
        case 51:
            floatComprehensiveEngineCCPremium = 92.00;
            break;     
        
        case 101:
            floatComprehensiveEngineCCPremium = 115.00;
            break;  
            
        case 126:
            floatComprehensiveEngineCCPremium = 132.30
            break;
            
        case 226:
            floatComprehensiveEngineCCPremium = 172.50;
            break;    
            
        case 351:
            floatComprehensiveEngineCCPremium = 201.30;
            break;    
            
        case 501:
            floatComprehensiveEngineCCPremium = 230.00;
            break;
            
    }

    //sum insured premium
    var floatSumInsured = parseFloat(document.formMain.floatSumInsured.value);
    floatSumInsuredPremium = parseFloat((floatSumInsured - 1000)*1.75/100);
    
    //fix < 1000 sum insured bug
    //if (floatSumInsuredPremium < 0) 
    //{
    //    floatSumInsuredPremium = 0;
    //}
    
    //Base Premium
    var floatBasePremium = parseFloat(floatComprehensiveEngineCCPremium) + parseFloat(floatSumInsuredPremium);
    if (intEngineType == -1)
    {    
        floatBasePremium = 0;  
    }
    document.getElementById('floatBasePremium').innerHTML = currency(floatBasePremium);
    
    //Base Premium after loading and NCD
    var floatLoading = parseFloat(document.formMain.floatLoading.value);
    var floatNCD = parseFloat(document.formMain.floatNCD.options[document.formMain.floatNCD.selectedIndex].value);
    var floatBasePremiumAfterNCD = floatBasePremium;
    var part1 = parseFloat(1+floatLoading/100);
    var part2 = parseFloat(1-floatNCD/100);
    var part3 = part1 * part2;
    floatBasePremiumAfterNCD = parseFloat(floatBasePremium) * parseFloat(part3);
    document.getElementById('floatBasePremiumAfterNCD').innerHTML = currency(floatBasePremiumAfterNCD);
    
    var floatTotalPremium = floatBasePremiumAfterNCD;
    
    //calculate additional benefits if coverage is comprehensive
    var intSelectedCoverageType = document.formMain.intCoverageType.selectedIndex;
    var intCoverageTypeValue = Number(document.formMain.intCoverageType.options[intSelectedCoverageType].value);
    
    if (intCoverageTypeValue == 1)
    {
        //test
        floatTotalFloodPremium = calculateFloodPremium();
        floatTotalPassengersLiabilityPremium = calculatePassengersLiabilityPremium();
        
        //calculate total premium
        floatTotalPremium = floatTotalPremium + floatTotalFloodPremium + floatTotalPassengersLiabilityPremium;
    }
    document.getElementById('floatTotalPremium').innerHTML = currency(floatTotalPremium);
}

function calculateFloodPremium()
{    
    //accessories
    var floatFloodPremium = 0.00;
    if (document.formMain.boolFloodCover.checked)
    {
        floatFloodPremium = 10.00;
        document.getElementById('floatFloodPremium').innerHTML = currency(floatFloodPremium);  
    }
    else
    {
        document.getElementById('floatFloodPremium').innerHTML = currency(0);
    }
    return floatFloodPremium;
}

function calculatePassengersLiabilityPremium()
{
    //accessories
    var floatPassengersLiabilityPremium = 0.00;
    if (document.formMain.boolPassengersCover.checked)
    {
        floatPassengersLiabilityPremium = 15.00;
        document.getElementById('floatPassengersPremium').innerHTML = currency(floatPassengersLiabilityPremium);    
    }
    else
    {
        document.getElementById('floatPassengersPremium').innerHTML = currency(0);
    }
    return floatPassengersLiabilityPremium;
}

function checkCoverageTypeFields()
{
    var intSelectedCoverageType = document.formMain.intCoverageType.selectedIndex;
    var intCoverageTypeValue = Number(document.formMain.intCoverageType.options[intSelectedCoverageType].value);
    switch (intCoverageTypeValue)
    {
        case 0:
            disableAllAdditionalBenefitFields();
            break;
            
        case 1:
            checkComprehensiveFields(); 
            break;    
        
        case 2:
            disableAllAdditionalBenefitFields();
            break;
        
        case 3:
            disableAllAdditionalBenefitFields();
            break;
    }  
}

function checkComprehensiveFields()
{
    document.formMain.boolFloodCover.disabled = false;
    document.formMain.boolPassengersCover.disabled = false;
}

function disableAllAdditionalBenefitFields()
{
    document.formMain.boolFloodCover.disabled = true;
    document.formMain.boolPassengersCover.disabled = true;
    //reset values
    document.formMain.boolFloodCover.checked = false;
    document.formMain.boolPassengersCover.checked = false;

    document.getElementById('floatFloodPremium').innerHTML = '0.00'; 
    document.getElementById('floatPassengersPremium').innerHTML = '0.00'; }

function round(number,X) 
{
    // rounds number to X decimal places, defaults to 2
    x = (!X ? 2 : X);
    return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

function num(obj) 
{
    val = parseFloat(obj);
    if (isNaN(val)) 
    { 
        val = 0; 
    }
    return val;
}

function currency(anynum) 
{
   //-- Returns passed number as string in $xxx,xxx.xx format.
   anynum=eval(anynum)
   workNum=Math.abs((Math.round(anynum*100)/100));workStr=""+workNum
   if (workStr.indexOf(".")==-1){workStr+=".00"}
   dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
   pStr=workStr.substr(workStr.indexOf("."))
   while (pStr.length<3){pStr+="0"}

   //--- Adds comma in thousands place.
   if (dNum>=1000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
   }

   //-- Adds comma in millions place.
   if (dNum>=1000000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
   }
   
   //-- Adds comma in billions place.
   if (dNum>=1000000000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000000000))+","+dStr.substring(dLen-11,dLen)
   }
   
   //-- Adds comma in trillions place.
   if (dNum>=1000000000000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000000000000))+","+dStr.substring(dLen-15,dLen)
   }
   retval = dStr + pStr 
   //-- Put numbers in parentheses if negative.
   if (anynum<0) {retval="("+retval+")"}
   return ""+retval
   //return "$"+retval
}
-->

