﻿$(document).ready(function() {
    //allocate functions to buttons
    $("#selMakes").bind("change", getModels);
    $("#selModels").bind("change", getVariants);
    $("#selVariants").bind("change", getVariantDetails);
    $("#selPrivateFuel").bind("change", displayFuelCost);
    $("#selTaxBand").bind("change", TaxCalcPanel.hideBIK);
    $("#btnCalculate").bind("click", function(event)
    { event.preventDefault(); calculateBIK(); return false; });

    $('#selModels').attr("disabled", true);
    $('#selVariants').attr("disabled", true);
});


function displayFuelCost() {
    var dfc = $("#divPrivateFuelCost");
    var tfc = $("#trFuelCost");
    var sel = $("#selPrivateFuel");
    var dfc1 = $("#divPrivateFuel1");
    var showFuelCost = sel.find(":selected").val();

    if (showFuelCost == 'N') { dfc.hide(); tfc.hide(); dfc1.hide(); } else { dfc.show(); tfc.show(); dfc1.show(); }
}

TaxCalcPanel =
{
    taxBandChange: function() {
        TaxCalcPanel.hideBIK();
    },

    displayBIK: function() {
        var bik = $('#divBIK');
        bik.show();
    },

    hideBIK: function() {
        var bik = $('#divBIK');
        bik.hide();
    }
    
}

function getModels() {
    TaxCalcPanel.hideBIK();
    $('#divTCStart').show();
    $('#divTCNext').hide();
    clearVariantDetails();

    var sel = $("#selMakes");
    var manufacturerId = sel.find(":selected").val();
    if (manufacturerId != null) { SalesAndMarketingSite.Services.TaxCalculator.GetModels(manufacturerId, onCompletedGetModels, onFailed); }
}

function onCompletedGetModels(results) {
    //var sel = $get('selVariants');
    var sel = $('#selVariants');
    $('#selModels').removeAttr("disabled"); 
    
    
    deleteOptions(sel);
    addOption(sel, "-- Please select a model variant --", "");

    //sel = $get('selModels');
    sel = $('#selModels');
    deleteOptions(sel);
    displayKeyValue(results, sel, '-- Please select a model --');
}

function getVariants() {
    TaxCalcPanel.hideBIK();
    clearVariantDetails();    

    var sel = $("#selMakes");
    var manufacturerId = sel.find(":selected").val();
    sel = $("#selModels");
    var modelId = sel.find(":selected").val();
    if (modelId != "0") {
        SalesAndMarketingSite.Services.TaxCalculator.GetVariants(manufacturerId, modelId, onCompletedGetVariants, onFailed)
    }
}

function onCompletedGetVariants(results) {
    $('#selVariants').removeAttr("disabled");
    //var sel = $get('selVariants');
    var sel = $('#selVariants');
    displayKeyValue(results, sel, '-- Please select a model variant --');
}

var fuelId;
var isVan = false;
var listPrice;

function getVariantDetails() {
    var sel = $("#selVariants");
    var variantText = sel.find(":selected").text();
    
    if (variantText == "-- Please select a model variant --") {

        clearVariantText();
        
    } else {

        TaxCalcPanel.hideBIK();

        $('#divTCStart').hide();

        //var divWait = $get('divWait');
        var divWait = $('#divWait');
        showWaiting(divWait);

        sel = $("#selMakes");
        var manufacturerId = sel.find(":selected").val();
        sel = $("#selModels");
        var modelId = sel.find(":selected").val();
        sel = $("#selVariants");
        var variantId = sel.find(":selected").val();

        if (variantId != "0") {
            SalesAndMarketingSite.Services.TaxCalculator.GetVariantDetails(manufacturerId, modelId, variantId, onCompletedGetVariantDetails, onFailed);
        }
    }
}

function clearVariantText() {
    $('#lbMPG').text("");
    $('#lbCO2').text("");
    $('#lbFuelDescription').text("");
    $('#lbListPrice').text("");
}

function clearVariantDetails() {
    clearVariantText();
    $('#selVariants').attr("disabled", true);
}

function onCompletedGetVariantDetails(detail) {
    //var divWait = $get('divWait');
    var divWait = $('#divWait');
    hide(divWait);
    $('#divTCNext').show();

    $('#lbMPG').text(detail.MPGCombined);
    $('#lbCO2').text(detail.Co2);
    $('#lbFuelDescription').text(detail.FuelDescription);
    $('#lbListPrice').text(String.format("£{0:n}", detail.ListPrice));
    fuelId = detail.FuelTypeId;
    isVan = detail.IsVan;
    listPrice = detail.ListPrice;
}

function calculateBIK() {
    TaxCalcPanel.hideBIK();

    var buff = new StringBuffer();
    if ($('#lbListPrice').text() == "") { buff.append("Please select a vehicle\r\n") };
    if (isNaN(parseFloat($("#txtP11D").val()))) { buff.append("Please enter a valid P11d value\r\n") };
    if (isNaN(parseFloat($("#txtPrivate").val()))) { buff.append("Please enter a valid Private Usage Charge or Trade Down value\r\n") };
    if ($('#lbCO2').text() == "0") { buff.append("We are currently unable to calculate the p11d figures for your current selection.\r\nPlease contact your customer service representative for further information\r\n") };


    if (buff.length() > 0)
        alert(String.format('INVALID DETAILS!\nYour request contains the following error(s):\n\n{0}\n\rPlease correct your details and try again.\r\nThank You.', buff.toString()));
    else {
        var sel = $("#selTaxBand");
        var taxPercentage = sel.find(":selected").val();

        $('#divTCNext').hide();
        //var divWait = $get('divWait');
        var divWait = $('#divWait');
        showWaiting(divWait);

        SalesAndMarketingSite.Services.TaxCalculator.CalculateBIK(listPrice, fuelId, $('#lbCO2').text(), taxPercentage, $("#txtP11D").val(), $("#txtPrivate").val(), isVan, onCompletedCalculateBIK, onFailedCalculateBIK);
    }

    function onFailedCalculateBIK() {
        alert('We are currently unable to calculate the p11d figures for your current selection.\r\nPlease contact your customer service representative for further information\r\n');
        //var divWait = $get('divWait');
        var divWait = $('#divWait');
        hide(divWait);
    }

    function onCompletedCalculateBIK(BIK) {
        //var divWait = $get('divWait');
        var divWait = $('#divWait');
        hide(divWait);

        var idx = 0;

        $('#lbYr1').text(taxYearHeadings(BIK[idx].ProcessedYear));
        $('#lbBIK1').text(String.format("£{0:n}", BIK[idx].TaxMonthly));
        $('#lbFreeFuel1').text(String.format("£{0:n}", $('#txtPrivate').val()));
        $('#lbTotalCost1').text(String.format("£{0:n}", (BIK[idx].TaxMonthly + parseFloat($('#txtPrivate').val()))));
        $('#lbPrivateFuelCost1').text(String.format("£{0:n}", BIK[idx].FuelTaxMonthly));
        $('#lbFBiK').text(String.format("£{0:n}", BIK[idx].FreeFuelValue));


        //NB- curr year plus 2 future years data required for display. If future years data not currently available
        //on the database then display curr year data in all 3 columns but still show future year dates as headings.

        if (BIK[1].CO2 == 0) {
            $('#lbYr2').text(taxYearHeadings(BIK[idx].ProcessedYear + 1));
        }
        else {
            idx = idx + 1;
            $('#lbYr2').text(taxYearHeadings(BIK[idx].ProcessedYear));
        }

        $('#lbBIK2').text(String.format("£{0:n}", BIK[idx].TaxMonthly));
        $('#lbFreeFuel2').text(String.format("£{0:n}", $('#txtPrivate').val()));
        $('#lbTotalCost2').text(String.format("£{0:n}", (BIK[idx].TaxMonthly + parseFloat($('#txtPrivate').val()))));
        //$('#lbPrivateFuelCost2').text(String.format("£{0:n}", BIK[idx].FuelTaxMonthly));

        if (BIK[2].CO2 == 0) {
            $('#lbYr3').text(taxYearHeadings(BIK[idx].ProcessedYear + 2));
        }
        else {
            idx = idx + 1;
            $('#lbYr3').text(taxYearHeadings(BIK[idx].ProcessedYear));
        }

        $('#lbBIK3').text(String.format("£{0:n}", BIK[idx].TaxMonthly));
        $('#lbFreeFuel3').text(String.format("£{0:n}", $('#txtPrivate').val()));
        $('#lbTotalCost3').text(String.format("£{0:n}", (BIK[idx].TaxMonthly + parseFloat($('#txtPrivate').val()))));
        //$('#lbPrivateFuelCost3').text(String.format("£{0:n}", BIK[idx].FuelTaxMonthly));

        TaxCalcPanel.displayBIK();
    }

    function taxYearHeadings(processedYear) {
        var hdg = "";
        var currDate = new Date();
        var mth = currDate.getMonth() + 1; // need adjustment to compensate for the way the month value is set back, i.e. Jan = 0, Feb = 1, etc...
        var day = currDate.getDate();

        if (mth < 4)
            hdg = (processedYear - 1) + " / " + processedYear;
        else if (mth == 4 & day < 6)
            hdg = (processedYear - 1) + " / " + processedYear;
        else
            hdg = processedYear + " / " + (processedYear + 1);

        return hdg;
    }
}

