﻿//extension methods
String.prototype.Replace = function(strFind, strRep)
{
    return this.split(strFind).join(strRep);
};
    
String.prototype.trim = function()      
{
    return this.replace(/(^\s*)|(\s*$)/g, "");
};

String.prototype.toTitleCase = function()
{
    return this.substr(0,1).toUpperCase() + this.substr(1,this.length-1).toLowerCase();
};

//Get UpdateContactDetailsRequest Object
var getUpdateContact = function() {
var result;
$.webMethod("/includes/DStvServices/updatedetails.aspx",
        "getNewUpdateContactDetailsRequest",
        {},
        function(msg) {
            UpdateContactDetailsRequest = msg;
        },
        function(msg) {
            result.error = JSON.parse(msg.responseText);
            alert(result.error.Message + "\n\n" + result.error.StackTrace);
            UpdateContactDetailsRequest = {};
        }
);
};

//Get Address Object
var getAddress = function() {
var result;
$.webMethod("/includes/DStvServices/updatedetails.aspx",
    "getNewAddress",
    {},
    function(msg) {
        Address = msg;
    },
    function(msg) {
        result.error = JSON.parse(msg.responseText);
        alert(result.error.Message + "\n\n" + result.error.StackTrace);
        Address = {};
    }
);
};

//Get CreateCustomerRequest Object
var getNewCreateCustomerRequest = function() {
    var result;
    $.webMethod("/includes/DStvServices/getdstv/accountDetails.aspx",
    "getNewCreateCustomerRequest",
    {},
    function(msg) {
        CreateCustomerRequest = msg;
    },
    function(msg) {
        result.error = JSON.parse(msg.responseText);
        alert(result.error.Message + "\n\n" + result.error.StackTrace);
        CreateCustomerRequest = {};
    }
);
};

//Get Reference Object
var getNewReference = function() {
    var result;
    $.webMethod("/includes/DStvServices/getdstv/accountDetails.aspx",
    "getNewReference",
    {},
    function(msg) {
        Reference = msg;
    },
    function(msg) {
        result.error = JSON.parse(msg.responseText);
        alert(result.error.Message + "\n\n" + result.error.StackTrace);
        Reference = {};
    }
);
};

//saveDecoderSmartcardURL
var saveDecoderSmartcardURL = function() {
    var result;
    $.webMethod("/includes/DStvServices/getdstv/decoderSmartcardDetails.aspx",
    "saveDecoderSmartcardURL",
    { url: location.href + "&DecoderSerialNumber=" + $("#DecoderSerialNumber").val() + "&SmartcardNumber=" + $("#SmartcardNumber").val() },
    function(msg) {
        if (msg) {
            alert("Decoder & Smartcard details were saved for when you next Login");
        }
    },
    function(msg) {
        result.error = JSON.parse(msg.responseText);
        alert(result.error.Message + "\n\n" + result.error.StackTrace);
    }
);
};

//saveFinalConfirm
var saveFinalConfirm = function() {
    var result;
    $.webMethod("/includes/DStvServices/getdstv/finalQuote.aspx",
    "saveFinalConfirm",
    { url: location.href },
    function(msg) {
        if (msg) {
            alert("Product Details were saved for when you next Login");
        }
    },
    function(msg) {
        result.error = JSON.parse(msg.responseText);
        alert(result.error.Message + "\n\n" + result.error.StackTrace);
    }
);
};

//upgradeBouquet
var upgradeBouquet = function() {
    var result = {};
    var buttonID = $(this).attr("id");
    var psNumber = buttonID.split("_")[1];
    var fromProductKey = buttonID.split("_")[2];
    var toProductKey = $(this).parent().parent().find("input.upgrade:checked").val();
    if (toProductKey == undefined) {
        alert("Please first choose a Bouquet to upgrade to.");
        return;
    }
    $(".loadingdiv").show();
    $.webMethod("/includes/DStvServices/selectSmartcard.aspx",
    "upgradeBouquet",
    { "psNumber": psNumber, "fromProductKey": fromProductKey, "toProductKey": toProductKey },
    function(msg) {
        if (msg) {
            $(".loadingdiv").hide();
            alert("Your bouquet has been upgraded");
        }
    },
    function(msg) {
        $(".loadingdiv").hide();
        result.error = JSON.parse(msg.responseText);
        alert(result.error.Message + "\n\n" + result.error.StackTrace);
    }
);
};

//suggestAddOns( decoderModelKey , smartCardSerial ,  primaryProduct )
var suggestAddOns = function() {
    var result = {};
    var buttonID = $(this).attr("id");
    var smartCardSerial = buttonID.split("_")[1];
    var primaryProduct = buttonID.split("_")[2];
    var psNumber = buttonID.split("_")[3];
    var addons = [];
    var decoderModelKey = $("#" + buttonID.replace("b_", "th_") + " select").val();
    $(this).parent().parent().find("input.new:checked").each(function() {
        addons.push($(this).val());
    });
    $("#" + buttonID.replace("b_", "l_")).show();
    if ($(this).attr("src").indexOf("next.gif") > -1) {
        $.webMethod("/includes/DStvServices/selectAddOns.aspx",
        "suggestAddOns",
        { "decoderModelKey": decoderModelKey, "smartCardSerial": smartCardSerial, "primaryProduct": primaryProduct },
        function(msg) {
            if (msg) {
                $("#" + buttonID.replace("b_", "l_")).hide();
                $("#" + buttonID.replace("b_", "tb_")).empty().append(msg);
                $("#" + buttonID).attr("src", $("#" + buttonID).attr("src").replace("next.gif", "but_update.png"));
            }
        },
        function(msg) {
            $("#" + buttonID.replace("b_", "l_")).hide();
            result.error = JSON.parse(msg.responseText);
            alert(result.error.Message); //+ "\n\n" + result.error.StackTrace
        });
    }
    else {
        $.webMethod("/includes/DStvServices/selectAddOns.aspx",
        "addAddOns",
        { "psNumber": smartCardSerial, "AddOns": addons },
        function(msg) {
            if (msg) {
                alert("Your Add-On products were added");
                location.reload();
            }
            else {
                alert("Your Add-On products were added!");
                location.reload();
            }
            $("#" + buttonID.replace("b_", "l_")).hide();
        },
        function(msg) {
            $("#" + buttonID.replace("b_", "l_")).hide();
            result.error = JSON.parse(msg.responseText);
            alert(result.error.Message); //+ "\n\n" + result.error.StackTrace
        });
    }
};


//upgradeDCC
var upgradeDCC = function() {
    if ($("input#terms:checked").length == 0) {
        alert("Please first verify that you have read and understood the terms and conditions.");
        return;
    }
    var result = {};
    var DecoderSerialCodes = [];
    $("input.dccSerial:checked").each(function() {
        DecoderSerialCodes.push($(this).val());
    });
    if (DecoderSerialCodes.length == 0) {
        alert("Please first select a decoder to add a Decoder Care Contract to.");
        return;
    }
    $(".loadingdiv").show();
    $.webMethod("/includes/DStvServices/addDecoderInsurance.aspx",
    "AddDCCProducts",
    { "DecoderSerialCodes": DecoderSerialCodes },
    function(msg) {
        if (msg) {
            $(".loadingdiv").hide();
            alert("Your Decoder Insurance has been updated.");
            location.reload();
        }
        else {
            $(".loadingdiv").hide();
            alert("Your Decoder Insurance has been updated!");
            location.reload();
        }
    },
    function(msg) {
        $(".loadingdiv").hide();
        result.error = JSON.parse(msg.responseText);
        alert(result.error.Message + "\n\n" + result.error.StackTrace);
    }
);
};

//copyAddress

var copyAddress = function() {
    $("fieldset.Residential").find("input, select").each(function() {
        if ($(this).attr("name") != "Type") {
            $("fieldset.Postal [name='" + $(this).attr("name") + "']").val($(this).val());
        }
    });
}



//create Customer - CreateCustomerRequest
var saveCreateCustomerRequest = function(frm, justSave) {
    var intList = "Province,Language,MagazineIndicator";
    var dateList = "DateOfBirth,PassportExpiryDate";
    var ignoreList = "ReferenceType";
    var result = {};
    if (!justSave)
        if (!validate(frm)) return;
    //create Address Array
    $(".Address").each(function() {
        Address = {};
        getAddress();
        $(this).find("input, select").each(function() {
            if (intList.indexOf(this.name) > -1) {
                Address[this.name] = parseInt(this.value.trim(), 10);
            }
            else {
                Address[this.name] = this.value.trim();
            }
        });

        while (Address.PostalCode.length < 5) {
            Address.PostalCode = "0" + Address.PostalCode;
        }
        Addresses.push(Address);
    });
    CreateCustomerRequest.Addresses = Addresses;
    //create Reference 
    Reference.Description = $("#ReferenceType :selected").text();
    Reference.Type = $("#ReferenceType :selected").val();
    Reference.Value = $("#ReferenceValue").val();
    CreateCustomerRequest.Reference = Reference;
    //create Customer
    $(".Customer input, .Customer select").each(function() {
        if (ignoreList.indexOf(this.name) == -1) {
            if (intList.indexOf(this.name) > -1) {
                CreateCustomerRequest[this.name] = parseInt(this.value.trim(), 10);
            }
            else if (dateList.indexOf(this.name) > -1) {
                CreateCustomerRequest[this.name] = parseDate(this.value.trim());
            }
            else {
                CreateCustomerRequest[this.name] = this.value.trim();
            }
        }
    });
    $(".loadingdiv").show();
    $.webMethod("/includes/DStvServices/getdstv/accountDetails.aspx",
    "saveCreateCustomerRequest",
    { "createCustomerRequest": CreateCustomerRequest, "justSave": justSave, "url": location.href },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg.responseCode == true) {
            if (msg.createCustomerResponse.CustomerNumber == 0) {
                alert(msg.infoMessage);
            }
            else {
                $("#CustomerNumber").val(msg.createCustomerResponse.CustomerNumber);
                $("#CustomerAccount").val(msg.createCustomerResponse.CustomerAccount);
                alert(msg.infoMessage + " Your Customer Number is : " + msg.createCustomerResponse.CustomerNumber);
                $("#EnterDecoderSmartCard").submit();
            }
        }
        else {
            alert(msg.infoMessage);
        }
        CreateCustomerRequest = {};
        Address = {};
        Reference = {};
        Addresses = []
        return;
    },
    function(msg) {
        CreateCustomerRequest = {};
        Address = {};
        Reference = {};
        Addresses = []
        $(".loadingdiv").hide();
        result.error = JSON.parse(msg.responseText);
        alert("We were unable to create your customer account!\r\n" + result.error.Message);
    });
};

//validatePackage
var validatePackage = function(frm) {
    var result = {};
    if (!$("#InstallationComplete").attr("checked")) {
        alert("Your Installation must be complete in order to progress to the next step of the activation process!");
        return;
    }
    if (!validate(frm)) return;
    $(".loadingdiv").show();
    var addons = [];
    if ($("#AddOnCodes").val().trim().length > 0) {
        addons = $("#AddOnCodes").val().indexOf("%2c") > -1 ? $("#AddOnCodes").val().split("%2c") : $("#AddOnCodes").val().split(",");
    }
    var data = { "package": $("#Package").val(), "primary": $("#ProductCode").val(), "addons": addons, "decoder": $("#DecoderSerialNumber").val(), "smartcard": $("#SmartcardNumber").val() };
    $.webMethod("/includes/DStvServices/getdstv/decoderSmartcardDetails.aspx",
    "validatePackage",
    data,
    function(msg) {
        $(".loadingdiv").hide();
        if (msg) {
            alert("Your Package selection, Decoder and Smartcard numbers have been validated.");
            $("#DecoderSmartcard").submit();
        }
        return;
    },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg.responseText == "") {
            alert("We were unable to validate your Package selection, Decoder and Smartcard numbers!\r\nNo response from the validator...");
        }
        else {
            result.error = JSON.parse(msg.responseText);
            alert("We were unable to validate your Package selection, Decoder and Smartcard numbers!\r\n" + result.error.Message);
        }
    });

};

//activatePackage
var activatePackage = function() {
    var result = {};
    if (!$("#terms").attr("checked")) {
        alert("You must confirm that you have read the Terms and Conditions before completing the activation process!");
        return;
    }
    $("div.loadingdiv").show();
    var addons = [];
    if ($("#AddOnCodes").val().trim().length > 0) {
        addons = $("#AddOnCodes").val().indexOf("%2c") > -1 ? $("#AddOnCodes").val().split("%2c") : $("#AddOnCodes").val().split(",");
    }
    var data = { "decoderSerial": $("#DecoderSerialNumber").val(), "smartCard": $("#SmartcardNumber").val(), "package": $("#Package").val(), "primaryProduct": $("#ProductCode").val(), "addOns": addons, "DCC": $("#DCC").val() == "yes" };
    $.webMethod("/includes/DStvServices/getdstv/finalQuote.aspx",
    "activateProducts",
    data,
    function(msg) {
        $(".loadingdiv").hide();
        if (msg.responseCode == true) {
            alert(msg.infoMessage);
            $("form#AccountActivationDetail")[0].submit();
        }
        else {
            alert(msg.infoMessage);
        }
        return;
    },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg.responseText == "") {
            alert("We were unable to activate your Package selection, Decoder and Smartcard numbers!\r\nNo response from the activator...");
        }
        else {
            result.error = JSON.parse(msg.responseText);
            alert("We were unable to activate your Package selection, Decoder and Smartcard numbers!\r\n" + result.error.Message);
        }
    });

};

//doPayment
var doPayment = function(payType) {
    var result = {};
    $(".loadingdiv").show();
    $.webMethod("/includes/DStvServices/creditcardpayments.aspx",
    "doPayment",
    { "payType": payType },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg.responseCode == true) {
            $("#xmlPOst").val(msg.xmlMessage);
            $("#frmPayment").submit();
        }
        else {
            alert(msg.infoMessage);
        }
        return;
    },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg.responseText == "") {
            alert("We were unable to initiate the payment gateway.");
        }
        else {
            result.error = JSON.parse(msg.responseText);
            alert("We were unable to initiate the payment gateway.\r\n" + result.error.Message);
        }
    });

};

var parseDate = function(sDate) {
    if (sDate.trim().length == 0) return null;
    aStr = sDate.trim().split(" ");
    if (aStr.length < 3) return null;
    var d = parseInt(aStr[0], 10);
    var m;
    for (var i = 0; i < months.length; i++) {
        if (months[i] == aStr[1]) {
            m = i;
            break;
        }
    }
    var y = parseInt(aStr[2], 10);
    return new Date(y, m, d);
}

// update DStvConnect Password
var UpdateWebsiteLogin = function(frm) {
    var result;
    if (!validate(frm)) return;
    if ($("#NewPassword").val().trim() != $("#ConfirmPassword").val().trim()) {
        alert("New and Confirm Passwords do not match!");
        return;
    }
    $(".loadingdiv").show();
    $.webMethod("/includes/DStvServices/updatedetails.aspx",
    "UpdateWebsiteLogin",
    { "UserName": $("#UserName").val(), "CurrentPassword": $("#CurrentPassword").val(), "NewPassword": $("#NewPassword").val(), "ConfirmPassword": $("#ConfirmPassword").val() },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg) {
            alert("Your Website Login details were updated");
        }
        else {
            alert("We were unable to update your Website Login details!");
        }
        return;
    },
    function(msg) {
        $(".loadingdiv").hide();
        result.error = JSON.parse(msg.responseText);
        alert("We were unable to update your Website Login details!" + "\n\n" + result.error.Message + "\n\n" + result.error.StackTrace);
    });
};

// check if Email exists
var Exists = function(obj) {
    var result;
    $.webMethod("/includes/DStvServices/register.aspx",
    "Exists",
    { "value": obj.value.trim() },
    function(msg) {
        if (msg == false) {
            alert("Your Email Address already exists in our system.");
            try {
                obj.focus();
            }
            catch (e) { } //unable to set focus to element
        }
        return;
    },
    function(msg) {
        $(".loadingdiv").hide();
        result.error = JSON.parse(msg.responseText);
        alert("We were unable to update your Website Login details!" + "\n\n" + result.error.Message + "\n\n" + result.error.StackTrace);
    });
};



//update Contact and Address Details
var UpdateContactAddresses = function(frm) {
    var intList = "CustomerNumber,Province,Language,MagazineIndicator";
    var result = {};
    if (!validate(frm)) return;
    $(".Contact input, .Contact select").each(function() {
        if (intList.indexOf(this.name) > -1) {
            UpdateContactDetailsRequest[this.name] = parseInt(this.value.trim(), 10);
        }
        else {
            UpdateContactDetailsRequest[this.name] = this.value.trim();
        }
    });
    $(".Address").each(function() {
        Address = {};
        getAddress();
        $(this).find("input, select").each(function() {
            if (intList.indexOf(this.name) > -1) {
                Address[this.name] = parseInt(this.value.trim(), 10);
            }
            else {
                Address[this.name] = this.value.trim();
            }
        });
        while (Address.PostalCode.length < 5) {
            Address.PostalCode = "0" + Address.PostalCode;
        }        
        Addresses.push(Address);
    });
    $(".loadingdiv").show();
    $.webMethod("/includes/DStvServices/updatedetails.aspx",
    "UpdateContactAddresses",
    { "addresses": Addresses, "updateContactdetailsRequest": UpdateContactDetailsRequest },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg.length == 0) {
            alert("Your details have been updated");
        }
        else {
            alert("We were unable to update your details!\r\n" + msg);
        }
        UpdateContactDetailsRequest = {};
        Address = {};
        Addresses = []
        return;
    },
    function(msg) {
        UpdateContactDetailsRequest = {};
        Address = {};
        Addresses = []
        $(".loadingdiv").hide();
        result.error = JSON.parse(msg.responseText);
        alert("We were unable to update your details!" + "\n\n" + result.error.Message + "\n\n" + result.error.StackTrace);
    });
};

// Reset Decoders 
var ResetDevice = function(smartCard, reasonCode) {
    var result;
    $(".loadingdiv").show();
    $.webMethod("/includes/DStvServices/clearerrorcodes.aspx",
    "ResetDevice",
    { "smartCard": smartCard.trim(), "reasonCode": reasonCode.trim() },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg) {
            alert(msg);
        }
        return;
    },
    function(msg) {
        $(".loadingdiv").hide();
        result.error = JSON.parse(msg.responseText);
        alert("We were unable to reset your device!" + "\n\n" + result.error.Message + "\n\n" + result.error.StackTrace);
    });
};


// SmartCard Connections
var smartcardConnections = function(smartcard, reconnects, disconnects) {
    $(".loadingdiv").show();
    $.webMethod("/includes/DStvServices/ServiceConnections.aspx",
    "smartcardConnections",
    { "smartcard": smartcard.trim(), "reconnects": reconnects, "disconnects": disconnects },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg) {
            alert(msg);
            location.reload();
        }
        return;
    },
    function(msg) {
        $(".loadingdiv").hide();
        var error = JSON.parse(msg.responseText);
        alert("We were unable to alter your device's connected services" + "\n\n" + error.Message + "\n\n" + error.StackTrace);
    });
};

var GetNames = function(stype, svalue) {
var result;
    $(".loadingdiv").show();
    $.webMethod("/includes/DStvServices/linkProfile.aspx",
    "GetNames",
    { "stype": stype, "svalue": svalue.trim() },
    function(msg) {
        $(".loadingdiv").hide();
        if (msg.length > 0) {
            $("#randomNames").html(msg);
            $("a.rName").click(function() {
                creatProfile($(this).attr("id"));
            });
            $(".randoms").slideDown();
        }
        return;
    },
    function(msg) {
        $(".loadingdiv").hide();
        result.error = JSON.parse(msg.responseText);
        alert("We were unable to update your Website Login details!" + "\n\n" + result.error.Message + "\n\n" + result.error.StackTrace);
    });
};

var creatProfile = function(sguid) {
var result;
    $(".loadingdiv").hide();
    $.webMethod("/includes/DStvServices/linkProfile.aspx",
    "creatProfile",
    { "sguid": sguid.trim() },
    function(msg) {
        location.href = msg;
    },
    function(msg) {
        $(".loadingdiv").hide();
        result.error = JSON.parse(msg.responseText);
        alert("We were unable to update your Website Login details!" + "\n\n" + result.error.Message + "\n\n" + result.error.StackTrace);
    });
};

var setIDMask = function() {
    $("#ReferenceValueLabel").text($('#ReferenceType :selected').text() + " Value:")
    if ($('#ReferenceType :selected').text() == "Passport") {
        $("#ReferenceValue").val("");
        $("#passportDiv").slideDown();
        $("#CountryOfOriginDiv").slideDown();
        $("#CountryOfOrigin").attr("title", "Please enter your Country Of Origin|\\w");
        setupValidation();
    }
    else {
        $("#ReferenceValue").val("");
        $("#passportDiv").slideUp();
        $("#CountryOfOrigin").attr("title", "Please enter your Country Of Origin");
        $("#CountryOfOriginDiv").slideUp();
        setupValidation();
    }
    if ($('#ReferenceType :selected').text() == "ID Number") {
        $("#ReferenceValue").mask("9999999999999");
        $("#ReferenceValue").attr("title", "Incorrect ID Number supplied. Please try again.|ValidateIDNumber");
        setupValidation();
    }
    else {
        $("#ReferenceValue").unmask();
        if ($('#ReferenceType :selected').text() != "Unknown") {
            $("#ReferenceValue").attr("title", "Please enter a valid " + $('#ReferenceType :selected').text() + "|\\w");
        }
        setupValidation();
    }
}

var UpdateContactDetailsRequest = {};
var Address = {};
var Addresses = [];
var CreateCustomerRequest = {};
var Reference = {};
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];


//initialization script
$(document).ready(function() {
    $(".imageButton").click(function() {
        if (typeof window[$(this).parents("form").attr("id")] === "function") {
            window[$(this).parents("form").attr("id")]($(this).parents("form").get(0));
        }
    });

    $("form#UpdateContactAddresses").each(function() {
        getUpdateContact();
    });

    $(".validate").submit(function() {
        return validate(this);
    });

    $("img#requireInstallation").click(function() {
        $("form#nextRequireInstallation").attr("action", "/Do you require installation").submit();
    }).css("cursor", "pointer");

    $("#findInstaller").click(function() {
        $("#installerButtons").slideUp("fast");
        $("#getDStvInstallerSearch").slideDown("fast");
    }).css("cursor", "pointer");

    $("#reg_email").blur(function() {
        Exists(this);
    });

    //$("#PostalCode").mask("99999");

    // $("#DecoderSerialNumber").mask("*999999999");
    //$("#SmartcardNumber").mask("9999999999");


    $("#registerForm").submit(function() {
        if (!$('#reg_toc').attr('checked')) {
            alert("You need to confirm that you understood the terms and conditions!");
            return false;
        }
        if ($('#reg_password').val() != $('#reg_password_confirm').val()) {
            alert("Your password and retyped password are not the same!");
            return false;
        }
        return true;
    });

    $("#bGetNames").click(function() {
        GetNames($("#options .inputRadio:checked").attr("id"), $("input#number").val());
    });

    $("img.resetButton").click(function() {
        var smartcard = $(this).attr("id").replace("b_", "");
        var reasoncode = $("#s_" + smartcard).val();
        ResetDevice(smartcard, reasoncode);
    });

    $("#nextDecodersSmartCards").click(function() {
        $("#CreateCustomerRequest")[0].submit();
    });

    $("#CreateCustomerRequest").submit(function() {
        return validate(this);
    });

    $("img.reconnectButton").css("cursor", "pointer").click(function() {
        var smartcard = $(this).attr("id").replace("b_", "");
        var reconnects = [];
        var disconnects = [];
        $("input.p_" + smartcard).each(function() {
            if ($(this).attr("checked") == true && $(this).hasClass("Inactive")) {
                reconnects.push(parseInt($(this).val(), 10));
            }
            if ($(this).attr("checked") == false && $(this).hasClass("Active")) {
                disconnects.push(parseInt($(this).val(), 10));
            }
        });
        smartcardConnections(smartcard, reconnects, disconnects);
    });
    var dt = new Date();
    var dt1 = dateAdd("d", 0, dt);
    var dt4 = dateAdd("d", 2, dt);
    var today = ("0" + dt.getDate()).substr(-1 + (dt.getDate().toString().length), 2) + " " + months[dt.getMonth()] + " " + dt.getFullYear();
    $("input.calendar").focus(function() { showCalendarControl(this); }).val("");
    $("#ReferenceType").change(setIDMask);
    $("#ReferenceValue").each(setIDMask);
    $("#ReferenceValue").blur(function() {
        if ($('#ReferenceType :selected').text() == "ID Number") {
            if (ValidateIDNumber($("#ReferenceValue")[0])) {
                var y = $("#ReferenceValue").val().substring(0, 2);
                y = parseInt(y, 10) > 10 ? parseInt("19" + y, 10) : parseInt("20" + y, 10);
                var m = $("#ReferenceValue").val().substring(2, 4);
                m = months[parseInt(m, 10) - 1];
                var d = $("#ReferenceValue").val().substring(4, 6);
                $("#DateOfBirth").val(d + " " + m + " " + y);
            }
        }
    });
    $("#bAccountActivate").css("cursor", "pointer").click(function() {
        activatePackage();
    });

    $("#bCreateCustomerRequest").css("cursor", "pointer").click(function() {
        saveCreateCustomerRequest($("form#CreateCustomerRequest")[0], false);
    });
    $("#bSaveCustomerRequest").css("cursor", "pointer").click(function() {
        saveCreateCustomerRequest($("form#CreateCustomerRequest")[0], true);
    });
    $("#bAccountActivationDetail").css("cursor", "pointer").click(function() {
        $("#AccountActivationDetail").submit();
    });
    $("#bDecoderSmartcard").css("cursor", "pointer").css("cursor", "pointer").click(function() {
        validatePackage($("#DecoderSmartcard")[0]);
    });
    $("a.once").css("cursor", "pointer").click(function() { doPayment("once"); });
    $("a.recurring").css("cursor", "pointer").click(function() { doPayment("recurring"); });
    $("#copyAddress").css("cursor", "pointer").click(copyAddress);
    $("#bSaveDecoderSmartcard").css("cursor", "pointer").click(saveDecoderSmartcardURL);
    $("#bSaveFinalConfirm").css("cursor", "pointer").click(saveFinalConfirm);
    $(".upgradeButton").css("cursor", "pointer").click(upgradeBouquet);
    $("#bDCC").css("cursor", "pointer").click(upgradeDCC);
    $(".addOnsButton").css("cursor", "pointer").click(suggestAddOns);
    $("#AllowSmsReminders").change(function() {
        if ($("#AllowSmsReminders:checked").length > 0) {
            $("#labCellNumber").removeClass("optional").addClass("required");
            $("#CellNumber").attr("validationRule", "\\d").attr("validationMessage", "Please enter a valid Cell Phone Number");
        }
        else {
            $("#labCellNumber").removeClass("required").addClass("optional");
            $("#CellNumber").removeAttr("validationRule").removeAttr("validationMessage");
        }
    });
    $("#emailStatement").css("cursor", "pointer").click(function() {
        if ($("input.statement:checked").length > 0) {
            $("#formaction").val("email");
            $("#statementForm")[0].submit();
        }
        else {
            alert("Please choose a statement first");
        }
    });
    $("#subscribe_btn").css("cursor", "pointer").click(function() {
        if ($("#iAgree:checked").length > 0) {
            $("#action").val("subscribe");
            $("#newsletters")[0].submit();
        }
        else {
            alert("Please accect the terms and conditions");
        }
    });
    $("#update_btn").css("cursor", "pointer").click(function() {
        if ($("#iAgree:checked").length > 0) {
            $("#action").val("update");
            $("#newsletters")[0].submit();
        }
        else {
            alert("Please accect the terms and conditions");
        }
    });
    $("#downloadStatement").css("cursor", "pointer").click(function() {
        if ($("input.statement:checked").length > 0) {
            $("#formaction").val("download");
            $("#statementForm")[0].submit();
        }
        else {
            alert("Please choose a statement first");
        }
    });
});
