﻿
/**********************   Version 0.4   ****************************************/

//PUBLIC DECLERATIONS
var affiliateLoginUi = new AffiliateLoginUiClass();         //LOGIN - 2
var affiliateSignUpUi = new AffiliateSignUpUiClass();       //SIGNUP - 3
var AffiliateReportsUI = new AffiliateReportsUIClass();     //REPORTS - 4
var affiliateCampaignUI = new affiliateCampaignUIClass();   //CAMPAIGN - 5
var affiliateAccountUI = new AffiliateAccountUIClass();      //MY ACCOUNT - 6
var dialogBox = new DialogBoxClass();
//var dashboard = new AffiliateDashBoardClass();
var spinner = new UiSpinnerClass();
var uivalidation = new UiValidationClass();
var passreq = new PassRequest();
var completepass = new ResetComplete();
var loginM = new LoginFormManipulation();
var shReports = new ReportsToggle();
var showRepTip = new ReportHoverTip();
var FilterCampaign = new Comparison();
var AffSearch = new AffiliateSearch();
var promotion = new PromotionInteraction();

//function preventDefault(e) {
//        e.preventDefault();
//    }   
/********************************************************DOCUMTNE READY - 0 ************************************************************************/
$(
    function() {//RUNS PAGE LOAD FUNCTIONS AND DETETS USER INTERACTIONS WHCIH CALLS THE APROPRATE CLASS
        //$("#documentDisplay tr:odd").css("background-color", "#ccc");
        //$("a#lightbox").lightBox();

        //$("form").bind("submit", preventDefault);

        $("form#formReset").submit(function() {
            return false;
        });
        $("#formForgot").submit(function() { return false; });
        $("form > input:eq(0)").focus();
        $("form > input:eq(0)").blur().next().focus();

        $("#dateFromFilter", "#Toolbar").datepicker();
        $("#dateFromFilter").datepicker('option', 'dateFormat', 'yy-mm');
        //$("#DealOwnerDate").datepicker();
        $("input.affDOB,input.PartnerDOB,input.DependantDOB").datepicker({
            changeMonth: true,
            changeYear: true,
            yearRange: '1960:2100'
        });
        $("#DealOwnerDate").datepicker({
            changeMonth: true,
            showOn: "button",
            buttonImage: "/images/calendar.gif",
            buttonImageOnly: true,
            changeYear: true
        });

        $("#AccountManagerDate").datepicker({
            changeMonth: true,
            changeYear: true,
            showOn: "button",
            buttonImage: "/images/calendar.gif",
            buttonImageOnly: true
        });
        $("#inputDateOfBirth").datepicker({ dateFormat: 'dd-mm-yy', changeMonth: true, changeYear: true, yearRange: '1930:2011' });
        //        $("#ui-datepicker-div").css({'z-index':'999999'});
        //DETERMINE WHICH LANGUAGE THE USER IS USING
        var language = $.cookie('language');
        switch (language) {
            case 'de':
                {
                    $.getScript('/scripts/resources.de.js');
                    break;
                }
            case 'es':
                {
                    $.getScript('/scripts/resources.es.js');
                    break;
                }
            case 'fr':
                {
                    $.getScript('/scripts/resources.fr.js');
                    break;
                }
            case 'it':
                {
                    $.getScript('/scripts/resources.it.js');
                    break;
                }
            default:
                {
                    $.getScript('/scripts/resources.en.js');
                    break;
                }
        }

        //CREATE THE SPINNER IMAGE AND INSERT IT, BUT KEEP IT HIDDEN UNTILL CALLED
        $("body").append("<div class='spinner'></div>");
        $(".spinner").hide(); //#divSpinner

        //CREATE THE DIALOG BOX CONTAINER, KEEP IT HIDDEN UNTILL CALLED
        $("body").append("<div id='divDialogBox'><p id='dialogContent'></p></div>");
        $("#divDialogBox").hide();

        //HACK FOR REQUEST PASSWORD
        //        $(".requestOverlay").remove();
        //        $("body").append("<div class='requestOverlay'></div>");
        //        $(".requestOverlay").hide();

        //Login password box swop
        loginM.changeBox();

        //login
        //        if ($("#buttonLogin").length > 0) {
        $("#buttonLogin").click(affiliateLoginUi.LoginButtonClicked);
        $("#buttonAdminLogin").click(function() {
            $("#formLogin").submit(function() { return false; });
            affiliateLoginUi.AdminLoginButtonClicked();
        });
        //        }

        //Admin login
        //$("#buttonAdminLogin").click(affiliateLoginUi.AdminLoginButtonClicked);


        if ($("#btnRequestPass").length > 0) {
            $("#btnRequestPass").click(affiliateLoginUi.RequstPasswordButtonClicked);
        }

        if ($("#buttonResetPassword").length > 0) {
            $("#buttonResetPassword").click(affiliateLoginUi.ResetPasswordButtonClicked);
        }
        $("#inputCheckbox").click(affiliateSignUpUi.SignUpcheckBoxClicked);
        $("#SignUpTable > #buttonSignup").click(affiliateSignUpUi.SignupButtonClicked);
        $("#SignUpTable > #inputCheckbox").click(affiliateSignUpUi.SignUpcheckBoxClicked);
        if ($("#buttonSignup").length > 0) {
            $("#divAffiliateURL").hide();
            $("#buttonSignup").attr("disabled", "disabled");

            //            $("#buttonSignup").click(function() {
            //                affiliateSignUpUi.SignupButtonClicked();
            //            });
            $("#SignUpTable > #inputCheckbox").click(affiliateSignUpUi.SignUpcheckBoxClicked);
            $("input[name=\"inputAffiliateType\"]").click(affiliateSignUpUi.SignUpRadioButtonChanged);
            affiliateSignUpUi.SignUpRadioButtonChanged();
        }
        //login tooltip
        //affiliateLoginUi.LoginToolTip();
        affiliateLoginUi.ForgotPassword();

        //reports
        //INSERT THE EXPORT BUTTON ON THE VIEW
        $("#buttonGetReport").after("<input type='submit' id='buttonExportReport' value='Export Report'>");

        $("#ui-datepicker-div").hide();
        $("#dateFrom").datepicker();
        $("#dateFrom").datepicker('option', 'dateFormat', 'yy-mm');
        $("#dateTo").datepicker();
        $("#dateTo").datepicker('option', 'dateFormat', 'yy-mm');

        $("#selectReport").change(function() {

            switch ($("#selectReport").val()) {
                case "financialMTD":
                    {
                        $("#MTDDates").hide();
                        $("#MTDMessage").show();
                        break;
                    }

                case "usPartnerReport":
                    {
                        $("table, h2, #tableheaders").remove();
                        $("#tableReportUSPartner").show();
                        window.open($("#partnerTargetLink").text());
                        break;
                    }
                default:
                    {
                        $("#MTDDates").show();
                        $("#MTDMessage").hide();
                        $("#tableReportUSPartner").hide();
                        break;
                    }

            }
            //            if ($("#selectReport").val() == "financialMTD") {
            //                $("#MTDDates").hide();
            //                $("#MTDMessage").show();
            //            }
            //            else {
            //                $("#MTDDates").show();
            //                $("#MTDMessage").hide();
            //            }
            //            if ($("#selectReport").val() == "usPartnerReport") {
            //                $("#tableReportUSPartner").show();
            //                //                $("table").hide();
            //                //                $("#tableReportUSPartner").show();
            //                window.open($("#partnerTargetLink").text());
            //            }
            //            else if ($("#selectReport").val() != "usPartnerReport") {
            //                $("#tableReportUSPartner").hide();
            //            }
        });
        $("form#formReports").submit(function() {
            $("#tableReportUSPartner").hide();
            if ($("#selectReport").val() == "financialMTD") {
                return true;
            }
            else {
                AffiliateReportsUI.ValidateReportSelection();
                if (validation.valid) {
                    return true;
                }
                else if (validation.valid == false) {
                    return false;
                }
            }
        });
        var reportType = $(".content").find("h2").text();
        switch (reportType) {
            //other                                                               
            case "Demographic Report":
                var optionItem = $(".content").find("option");
                $(optionItem).removeAttr('selected');
                $(optionItem).each(function(index, ele) {
                    if (reportType == $(this).text()) {
                        $(this).attr('selected', 'selected');
                    }
                });

                break;
            case "Referring URL Report":
                var optionItem = $(".content").find("option");
                $(optionItem).removeAttr('selected');
                $(optionItem).each(function(index, ele) {
                    if (reportType == $(this).text()) {
                        $(this).attr('selected', 'selected');
                    }
                });
                break;
            case "Payment Report":
                var optionItem = $(".content").find("option");
                $(optionItem).removeAttr('selected');
                $(optionItem).each(function(index, ele) {
                    if (reportType == $(this).text()) {
                        $(this).attr('selected', 'selected');
                    }
                });
                break;

            //financial                                                   
            case "Financial Report":
                var optionItem = $(".content").find("option");
                $(optionItem).removeAttr('selected');
                $(optionItem).each(function(index, ele) {
                    if (reportType == $(this).text()) {
                        $(this).attr('selected', 'selected');
                    }
                });
                break;
            case "Financial Month To Date Report":
                var optionItem = $(".content").find("option");
                reportType = "MTD Financial Report";
                $(optionItem).removeAttr('selected');
                $(optionItem).each(function(index, ele) {
                    if (reportType == $(this).text()) {
                        $(this).attr('selected', 'selected');
                        $("#MTDDates").hide();
                        $("#MTDMessage").show();
                    }
                });
                break;

            //sub affiliates                                                   
            case "Sub Affiliate Contribution":
                var optionItem = $(".content").find("option");
                $(optionItem).removeAttr('selected');
                $(optionItem).each(function(index, ele) {
                    if (reportType == $(this).text()) {
                        $(this).attr('selected', 'selected');
                    }
                });
                break;
            case "Sub Affiliate Traffic":
                var optionItem = $(".content").find("option");
                $(optionItem).removeAttr('selected');
                $(optionItem).each(function(index, ele) {
                    if (reportType == $(this).text()) {
                        $(this).attr('selected', 'selected');
                    }
                });
                break;
            case "Sub Affiliate Sign Up":
                var optionItem = $(".content").find("option");
                $(optionItem).removeAttr('selected');
                $(optionItem).each(function(index, ele) {
                    if (reportType == $(this).text()) {
                        $(this).attr('selected', 'selected');
                    }
                });
                break;
            case "Partner Reports":
                var optionItem = $(".content").find("option");
                $(optionItem).removeAttr('selected');
                $(optionItem).each(function(index, ele) {
                    if (reportType == $(this).text()) {
                        $(this).attr('selected', 'selected');
                    }
                });
                break;

            default:
                break;
        }
        /*$("#selectReport").change(AffiliateReportsUI.ReportSelectionChanged);
        $("#selectReport").change(AffiliateReportsUI.ReportButtonClicked);*/
        //$("#buttonGetReport").click(AffiliateReportsUI.ReportButtonClicked);
        //$("#buttonExportReport").click(AffiliateReportsUI.ExportReportButtonClicked);
        //AffiliateReportsUI.ReportSelectionChanged();

        $('#buttonGetReport').click(function(event) {
            event.preventDefault();
            $('#hdnReportType').attr('value', 'view');
            submitReportForm();
        });

        $('#buttonExportReport').click(function(event) {
            event.preventDefault();
            $('#hdnReportType').attr('value', 'csv');
            submitReportForm();
        });

        function submitReportForm() {
            validation.valid = true;
            if ($("#selectReport").val() == "financialMTD") {
                validation.valid = true;
            }
            else {
                AffiliateReportsUI.ValidateReportSelection();
            }
          
            if (validation.valid) {
                $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                //$("#formReports").attr('action', "/" + User + '/reports/export/' + affId);

                $("#formReports").submit();
            }
        }

        //campaigns
        //$("#tblCampaignIndex").find("a").click(function(e) { e.preventDefault(); return false; });
        $("#tblCampaignIndex").find("a").click(affiliateCampaignUI.DisplayCampaign);


        $("div#Campaign-help,div#report-content").hide();
        if ($("#buttonCreateCampaign").length > 0) {
            $("p#camp-show-help").click(function() {
                $("div#Campaign-help").slideToggle("slow");
            });
            $("p#report-help").click(function() {
                $("div#report-content").slideToggle("slow");
            });

            $("#selectCampaignBrand").change(affiliateCampaignUI.selectBoxCampaignBrandChanged);
            //$("#buttonCreateCampaign").click(affiliateCampaignUI.NewCampaignButtonClicked);
        }

        //media library
        if ($("#menu-left").length > 0) {
            $("#menu-left").accordion({ header: "h1" });
            $("#menu-left a").click(function() {
                var title = $(this).text();
                $("#inputSearch").val(title);
                document.forms[0].submit();
            });
        }

        //my account
        if ($("#buttonUpdateAccount").length > 0) {
            //$("#buttonUpdateAccount").click(affiliateAccountUI.AccountUpdateDetailsButtonClicked);
            $("#selectPaymentType").click(affiliateAccountUI.selectBoxPaymentChanged);
            $("#selectCountry").click(affiliateAccountUI.selectBoxCountryChanged);

            //affiliateAccountUI.selectBoxCountryChanged();
            //affiliateAccountUI.selectBoxPaymentChanged();
        }
        if ($(".btnAccountPaymentSubmit").length > 0) {
            //$(".btnAccountPaymentSubmit").click(affiliateAccountUI.AccountUpdatePaymentDetailsButtonClicked);
        }

        //site reviews
        //alert($("#selectsitereview option:selected").text());
        if ($("#selectsitereview option:selected").text() != "0") {
            //alert($("#selectsitereview option:selected").text());
            //$("#selectsitereview").change(selectSiteReviewChange);
        }
        affiliateAccountUI.SelectedLeftNav();

        /*************reset password************/
        if ($("#buttonResetPassword").length > 0) {
            $("input[name='password']").passStrength({ userid: "input[name='confirmPassword']" });
        }
        /*************Admin Search***************/
        $("#adminSearch").click(AffSearch.AffliateLookUp);
        $("#allAffiliates").click(AffSearch.MyAffiliates);
        AffSearch.SearchAffiliate();

        /*******Promo*******/
        $("#promoForm").submit(function() { return false; });
        $("#Optin").click(function() {
            var formResult = true;
            var formElement = $("#promoForm").children().filter("input");
            promotion.PromoValidation(formElement, formResult);
            //if (formResult) {
            //promoAjax.SendPromo("promoForm");
            //}
        });


    }
);
/****************************************************************************/
function AffiliateSearch() {

    var searchType;
    var searchCriteria;
    
    this.SearchAffiliate = function() {

        $("#affSearchField").children().children().filter(':input').val('');

        $("select#affiliateSearchOption").children(":first").addClass("selected");
        $("#affSearchField").children(":first").show();

        $("select#affiliateSearchOption").change(function() {

            $("#affSearchField").children().hide();
            $("select#affiliateSearchOption").children().removeAttr("class");

            var name = $("select option:selected").attr("id");
            var $this = $("#affSearchField").children().filter('span.' + name + '');

            switch (name) {

                case "affilateID":
                    $($this).removeAttr("style");
                    $("select option:selected").addClass("selected");
                    break;

                case "affiliateEmail":
                    $($this).removeAttr("style");
                    $("select option:selected").addClass("selected");
                    break;

                case "affiliateName":
                    $($this).removeAttr("style");
                    $("select option:selected").addClass("selected");
                    break;

                case "affiliateURL":
                    $($this).removeAttr("style");
                    $("select option:selected").addClass("selected");
                    break;

                default:
                    break;
            }

        });
    }
    this.Validate = function(searchType, searchCriteria, form) {

        switch (searchType) {

            case "Affiliate id":
                if (searchCriteria == "" || searchCriteria == undefined) {
                    form.submit(function() { return false; });
                    //dialogBox
                    alert("Please enter an affiliate id.");
                }
                else {
                    var regex = new RegExp(/^[0-9]+$/i);
                    var result = regex.test(searchCriteria);
                    if (result) {
                        form.submit(function() { return true; });
                        AffiliateAjaxSearch.GetAffiliates('AffiliateSearch', AffSearch.DisplaySearch);
                    }
                }
                break;

            case "Email":
                if (searchCriteria == "" || searchCriteria == undefined) {
                    form.submit(function() { return false; });
                    //dialogBox
                    alert("Please enter an email addres.s");
                }
                else {
                    var regex = new RegExp(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/i);
                    var result = regex.test(searchCriteria);
                    if (result) {
                        form.submit(function() { return true; });
                        AffiliateAjaxSearch.GetAffiliates('AffiliateSearch', AffSearch.DisplaySearch);
                    }
                    else {
                        form.submit(function() { return false; });
                        alert("Please enter a proper email address.");
                    }
                }
                break;

            case "Name":
                if (searchCriteria == "" || searchCriteria == undefined) {
                    form.submit(function() { return false; });
                    //dialogBox
                    alert("Please enter a your affiliates name.");
                }
                else {
                    var regex = new RegExp(/[a-zA-Z]+$/i);
                    var result = regex.test(searchCriteria);
                    if (result) {
                        form.submit(function() { return true; });
                        AffiliateAjaxSearch.GetAffiliates('AffiliateSearch', AffSearch.DisplaySearch);
                    }
                    else {
                        form.submit(function() { return false; });
                        alert("No numbers or special characters please.");
                    }
                }
                break;

            case "URL":
                if (searchCriteria == "" || searchCriteria == undefined) {
                    form.submit(function() { return false; });
                    //dialogBox
                    alert("Please enter a proper URL.");
                }
                else {
                    var regex = /^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/i;
                    var result = regex.test(searchCriteria);
                    if (result) {
                        form.submit(function() { return true; });
                        AffiliateAjaxSearch.GetAffiliates('AffiliateSearch', AffSearch.DisplaySearch);
                    }
                    else {
                        form.submit(function() { return false; });
                        alert("Your URL is malformed.");
                    }
                }
                break;

            default:
                break;
        }
    }
    this.DisplaySearch = function(data) {

        $(".content").empty();
        $(".content").append(data);
    }

    this.AffliateLookUp = function(event) {

        var target = $(event.target);
        var form = $(target).parent();
        
        var searchCriteria = target.siblings().filter("input#affSearchField");
        var searchType = target.siblings().filter("select#searchType");

        searchType = $(searchType + "option:selected").val();
        searchCriteria = $(searchCriteria).val();

        AffSearch.Validate(searchType, searchCriteria,form);
        //.Validate(searchType,searchCriteria);

        // var affID = $(":input[name|='affilateID']").val();
        //AffiliateAjaxSearch.GetAffiliates('AffiliateSearch', AffSearch.DisplaySearch);

    }
    this.MyAffiliates = function() {

        $("#DisplayAff").remove();
        $("#YourAffiliates").show();
    }
    
}
function LoginFormManipulation() {

    this.changeBox = function() {

        $("#inputLogin").focus();
        $("#inputLogin,#tempPassword").click(function() {
            $("#inputLogin").keydown(function(event) {
                if (event.keyCode == '9') {
                    $("#inputPassword").removeAttr('style');
                    $("#tempPassword").remove();
                    $("#formLogin").children().filter('input:eq(0)').focus();
                    event.stopPropagation();
                }
            });
            if ($(this).attr('id') == 'inputLogin') {
                $(this).val('');
                $(this).removeAttr('style');
                $(this).css({ 'color': '#000', 'font-style': 'normal' });
                $(this).focus();
            }
            if ($(this).attr('id') == 'tempPassword') {
                $(this).remove();
                $("#inputPassword").removeAttr('style');
                $("#inputPassword").focus();
            }
        });
    }
}
/*************************** VALIDATION CLASS ****************************/
function UiValidationClass() {

    this.error = function(control) {

        //CLEAR ALL VALIDATION FORMATTING FROM CONTROLS
        $("form > :not(:button").css({ 'border': '' });
        $("#" + control).focus()
        .css({ 'border': 'solid 2px red' });
    }

    this.success = function(control) {

        $("#" + control).css({ 'border': 'none' });

    }

}
function PassRequest() {

    this.PopupNotice = function() {

        var documentHeight = $(document).height();
        $(".requestOverlay").show().css({ height: documentHeight }).append("<div class='request'><a href='/' class='requestClose'>Close</a>An email has been sent to your registered email address, please check your email to continue the reset password process.<br/>If you do not recieve an email please contact <a href='mailto:support@referback.com'>support@referback.com</a></div>");
        $(".requestOverlay").css({ opacity: 0.9 });
        $(".request").css({ opacity: 1 });
        $(".requestClose").click(function() {
            $(".requestOverlay").fadeOut();
        });
        //alert("An email has been sent to your registered email address, for you to reset your password.");
    }
}
function ResetComplete() {

    this.ResetDone = function() {

        var documentHeight = $(document).height();
        $(".requestOverlay").show().css({ height: documentHeight }).append(
            "<div class='request'>" +
            "<a href='/login' class='requestClose'>Close</a>" +
            "You have reset your password. Please <a href='/login'>login</a> using your new password.</div>");
        $(".requestOverlay").css({ opacity: 0.9 });
        $(".request").css({ opacity: 1 });
        $(".requestClose").click(function() {
            $(".requestOverlay").fadeOut();
            window.location = "http://www.referback.com/";
        });
    }

}
function ReportsToggle() {

    this.ToggleReports = function() {

        //$("#tableReportFinancialData").hide();
        $("#tableReportFinancial").bind('click', function() {
            //$("#tableReportFinancialData").toggle();
        });
    }
}
function ReportHoverTip() {

    this.ShowTip = function() {

        $(".reportTip").bind({
            mouseenter: function() {
                var MOtext = $(this).parent().text();

                $(this).parent().append($("<div id='reportTipBox'>"));
                switch (MOtext) {

                    case "Visits":
                        $("#reportTipBox").text("A potential player who has clicked on a banner or link of the casino in question and has visited the casino website.");
                        break;
                    case "D/loads":
                        $("#reportTipBox").text("The sum of all attempted and completed downloads.  This is counted as soon as someone clicks on the download button, regardless of completion of the download.");
                        break;
                    case "Downloads":
                        $("#reportTipBox").text("The sum of all attempted and completed downloads.  This is counted as soon as someone clicks on the download button, regardless of completion of the download.");
                        break;
                    case "Opens":
                        $("#reportTipBox").text("Potential players who have downloaded, installed and registered at the casino but never deposited.");
                        break;
                    case "Actives":
                        $("#reportTipBox").text("A player who makes at least one purchase and places at least one wager for the first time at the brand in question.");
                        break;
                    case "NetWin":
                        $("#reportTipBox").text("Grosswin less Progressive Contribution less Non-cash Incentive");
                        break;
                    case "PosNetWin":
                        $("#reportTipBox").text("The standard netwin calculation which has the modification of reducing brands with negative values to zero before calculating the affiliate’s commission.");
                        break;
                    case "NetRake":
                        $("#reportTipBox").text("This is only the calculation of the casino contribution after the ring hand has been completed, not at the end if the game. Note: if a player is seated at multiple tables, then each instance of that player adds one to the rake total.");
                        break;
                    case "GrossComm":
                        $("#reportTipBox").text("Accumulated player wagers (income) less accumulated player wins (payouts)");
                        break;
                    case "Registrations":
                        $("#reportTipBox").text("Potential players who have downloaded, installed and registered at the casino but never deposited.");
                        break;
                    case "1st Time Depositors":
                        $("#reportTipBox").text("A player who makes at least one purchase and places at least one wager for the first time at the brand in question.");
                        break;
                    default:
                        $("#reportTipBox").text();
                        break;
                }
                var repHeight = $("#reportTipBox").height();
                $("#reportTipBox").css(
                    {
                        'left': '85px',
                        'height': 'auto',
                        'position': 'absolute',
                        'width': '150px',
                        'background': '#b34040',
                        'color': '#fff',
                        'padding': '10px',
                        'bottom': '25px',
                        '-moz-border-radius': '7px',
                        'text-align': 'left'
                    });



            },
            mouseleave: function() {
                $(this).siblings().filter("div#reportTipBox").remove();

            }
        });
    }

}
function Comparison() {

    this.Compare = function() {


        $("#tbodyCampaigns tr").removeAttr('style');
        var startDate = $("#dateFromFilter", "#Toolbar").val();
        var endDate = $("#dateToFilter", "#Toolbar").val();
        var evalDate;
        var markerDD, markerMM;
        var evalmarkerDD, evalmarkerMM;

        startDate = startDate.split("-");
        markerDD = startDate[0].lastIndexOf("0");
        markerMM = startDate[1].lastIndexOf("0");

        if ((markerDD === 0) && (markerMM === 0)) {
            startDate[0] = startDate[0].replace("0", "");
            startDate[1] = startDate[1].replace("0", "");
        }

        startDate = startDate[2] + startDate[1] + startDate[0];

        endDate = endDate.split("-");

        endDate[0] = endDate[0].replace("0", "");
        endDate[1] = endDate[1].replace("0", "");

        endDate = endDate[2] + endDate[1] + endDate[0];

        // alert(startDate + "--" + endDate);

        $("#tbodyCampaigns tr td.Date").each(function() {
            evalDate = $(this).text();

            evalDate = evalDate.split("/");

            evalmarkerDD = evalDate[0].lastIndexOf("0");
            evalmarkerMM = evalDate[1].lastIndexOf("0");

            if ((evalmarkerDD === 0) && (evalmarkerMM === 0)) {
                evalDate[0] = evalDate[0].replace("0", "");
                evalDate[1] = evalDate[1].replace("0", "");
            }
            evalDate = evalDate[2] + evalDate[1] + evalDate[0];

            if ((evalDate >= startDate) && (evalDate <= endDate)) {
                $(this).removeAttr('style');
                $(this).parent().show();

            }
            else {
                $(this).parent().hide();
            }

        });


    }
    this.ClearRange = function() {
        $("#dateFromFilter", "#Toolbar").val("");
        $("#dateToFilter", "#Toolbar").val("");
        $("#tbodyCampaigns tr").removeAttr('style');
    }

}
/*****************Promotion JS******************/
function PromotionInteraction() {

    this.AjaxPost = function(formResult) {
        if (formResult) {
            promoAjax.SendPromo("promoForm");
        }
        else {

            var message = "You are missing some mandatory information in the form. Please check if all the mandatory fields are filled in!";
            dialogBox.PromotionWindow(message);
        }
    }

    this.PromoResult = function(data, textstatus) {
        var action = "";
        var dialogBoxTitle = "Referback Cruise Promotion";
        var message = "Thank you for entering the promotion";
        dialogBox.PromotionWindow(message, action, dialogBoxTitle);
        //alert("Thank you for entering the promotion");

    }

    this.PromoValidation = function(formElements, formResult) {
        $("#promoForm").submit(function() { return false; });
        formResult;
        $(formElements).each(function() {
            var $text = $(this).val();
            var $name = $(this).attr('name');
            var $type = $(this).attr('type');
            var $checker = $(this).parent().children().hasClass('promoError');
            if (($text != "") && ($type == 'text')) {
                $(this).removeClass("promoError");
                formResult = true;
            }
            else {
                if (($name == 'affiliateId') || ($name == 'affiliateURL') || ($type == 'submit')) {
                    $(this).removeClass("promoError");
                    if (($text == "") || ($type == 'submit')) {
                        if ($checker == true) {
                            formResult = false;
                            return;
                        }
                        else {
                            formResult = true;
                            return;
                        }
                    }
                }
                $(this).addClass("promoError");
                formResult = false;
            }
        });
        promotion.AjaxPost(formResult);
    }

    
}
/******************end romotion js******************/
//*************************SPINNER CONTROL********************************
function UiSpinnerClass() {

    var spinnerCanHide = false;
    var spinnerTimedOut = false;

    this.ShowSpinner = function() {

        var DocH = $(document).height();

        $(".spinner").show(); //.animate({ backgroundColor: "#333", opacity: .9 }, 500);
        $(document).scrollTop(0);
        if ($(".actualSpin").length === 0) {

            $(".spinner").height(DocH + "px").append("<div class='actualSpin'><img src='/images/loader.gif' /></div>");
        }

        setTimeout(function() {
            spinnerTimedOut = true;

            if (spinnerCanHide) {
                $(".spinner").fadeOut(500);
                spinnerTimedOut = false;
                spinnerCanHide = false;
            }
        }, 2000);
    }

    this.HideSpinner = function() {

        spinnerCanHide = true;

        if ((spinnerTimedOut)||(spinnerCanHide)) {
            $(".spinner").fadeOut(500);
            spinnerTimedOut = false;
            spinnerCanHide = false;
        }
    }


    this.Abort = function() {
        $(".spinner").fadeOut(10);
    }
}

// ************************DIALOG BOX CLASS********************************
function DialogBoxClass() {

    this.InPageMessages = function(divId, message) {
        $(".divMessageBox")
        .addClass("dims")
        .fadeIn("slow")
        .css("border", "1px dotted #cc0000")
        .empty()
        .append("<span class='ui-icon ui-icon-alert iconfloat'></span><span class='pPadding'>" + message + "</span>");
    }

    this.validationErrorMessage = function(message) {

        spinner.Abort();  //IF THE SPINNER IS VISIBLE HIDE IT BEFORE DISPLAYING THE DIALOG

        //CREATE DIALOG BOX, REMOVE ANY PREVOUS CONTENT FROM THE DIALOG DIV.  ADD AN OK BUTTON WHICH DESTROYS THE DIALOG BOX WHEN CLICKED
        $("#divDialogBox").dialog({
            beforeclose: function(event, ui) { EmptyDialog(); },
            buttons: { "Ok": function() { $(this).dialog("destroy"); EmptyDialog(); } },
            modal: true,
            title: errorMessages["ValidationErrorTitle"],
            open: function(event, ui) { $(this).append("<p id=dialogContent>" + message + "</p>"); }
        });
        //ADD MESSAGE TO DIALOG BOX

        //$("#divDialogBox").dialog('open');

        function EmptyDialog() {
            $("#divDialogBox > *").remove();
        }
    }

    this.UserInformationOkCancel = function(message, okAction, cancelAction, dialogBoxTitle) {

        spinner.HideSpinner();  //IF THE SPINNER IS VISIBLE HIDE IT BEFORE DISPLAYING THE DIALOG

        if (dialogBoxTitle === null) {
            dialogBoxTitle = "";
        }
        else {
            //dialogBoxTitle = errorMessages["UserInformationTitle"];
            $("#divDialogBox").dialog({
                beforeclose: function(event, ui) { EmptyDialog(); },
                buttons: { "Ok": function() {
                    $(this).dialog("destroy");
                    EmptyDialog();
                    okAction();
                }, "Cancel": function() {
                    $(this).dialog("destroy");
                    EmptyDialog();
                    cancelAction();
                }
                },
                modal: true,
                title: errorMessages["UserInformationTitle"],
                open: function(event, ui) { $(this).append("<p id=dialogContent>" + message + "</p>"); }
            });
        }
        function EmptyDialog() {
            $("#divDialogBox > *").remove();
        }
        //CREATE DIALOG BOX, REMOVE ANY PREVOUS CONTENT FROM THE DIALOG DIV.  ADD AN OK BUTTON WHICH DESTROYS THE DIALOG BOX WHEN CLICKED
    }

    this.UserInformation = function(message, action, dialogBoxTitle) {

        spinner.HideSpinner();  //IF THE SPINNER IS VISIBLE HIDE IT BEFORE DISPLAYING THE DIALOG

        if (dialogBoxTitle === null) {
            dialogBoxTitle = "";
        }
        else {
            //dialogBoxTitle = errorMessages["UserInformationTitle"];
            $("#divDialogBox").dialog({
                beforeclose: function(event, ui) { EmptyDialog(); },
                buttons: { "Ok": function() {
                    window.location = "/member/login"; //parent.location.href = "member/login";
                    $(this).dialog("destroy");
                    EmptyDialog();
                    if ($("#promoForm").length > 0) {
                        $("#promoForm").children().filter('input[type|="text"]').val("");
                    }

                    //self.parent.location = "/";
                }
                },
                modal: true,
                title: errorMessages["UserInformationTitle"],
                open: function(event, ui) { $(this).append("<p id=dialogContent>" + message + "</p>"); }
            });
        }
        function EmptyDialog() {
            $("#divDialogBox > *").remove();
        }
        //CREATE DIALOG BOX, REMOVE ANY PREVOUS CONTENT FROM THE DIALOG DIV.  ADD AN OK BUTTON WHICH DESTROYS THE DIALOG BOX WHEN CLICKED
    }
    this.PromotionWindow = function(message, action, dialogBoxTitle) {
   
        spinner.HideSpinner();  //IF THE SPINNER IS VISIBLE HIDE IT BEFORE DISPLAYING THE DIALOG

        if (dialogBoxTitle === null) {
            dialogBoxTitle = "";
        }
        else {
            //dialogBoxTitle = errorMessages["UserInformationTitle"];
            $("#divDialogBox").dialog({
                beforeclose: function(event, ui) { EmptyDialog(); },
                buttons: { "Ok": function() {
                    //parent.location.href = "member/login";
                    $(this).dialog("destroy");
                    EmptyDialog();
//                    if ($("#promoForm").length > 0) {
//                        $("#promoForm").children().filter('input[type|="text"]').val("");
//                    }

                    //self.parent.location = "/";
                }
                },
                modal: true,
                title: errorMessages["UserInformationTitle"],
                open: function(event, ui) { $(this).append("<p id=dialogContent>" + message + "</p>"); }
            });
        }
        function EmptyDialog() {
            $("#divDialogBox > *").remove();
        }

    }
    
    this.AjaxServerError = function() {

        spinner.HideSpinner();  //IF THE SPINNER IS VISIBLE HIDE IT BEFORE DISPLAYING THE DIALOG

        //CREATE DIALOG BOX, REMOVE ANY PREVOUS CONTENT FROM THE DIALOG DIV.  ADD AN OK BUTTON WHICH DESTROYS THE DIALOG BOX WHEN CLICKED
        $("#divDialogBox").dialog({ buttons: {
            "Ok": function() {
                $(this).dialog("destroy");
                $("#divDialogBox > *").empty();
            }
        },
            modal: true,
            title: errorMessages["ServerErrorTitle"]
        });
        $("#dialogContent").append(errorMessages["ServerErrorMessage"]); //ADD MESSAGE TO DIALOG BOX
        $("#divDialogBox").dialog('open');
    }

    this.SessionTimeOut = function() {

        spinner.HideSpinner();  //IF THE SPINNER IS VISIBLE HIDE IT BEFORE DISPLAYING THE DIALOG

        //CREATE DIALOG BOX, REMOVE ANY PREVOUS CONTENT FROM THE DIALOG DIV.  ADD AN OK BUTTON WHICH DESTROYS THE DIALOG BOX WHEN CLICKED
        $("#divDialogBox").dialog({ buttons: { "Ok": function() {
            $(this).dialog("destroy");
            $("#divDialogBox > *").empty();
            //self.parent.location = "/";
        }
        },
            modal: true,
            title: errorMessages["SessionTimeOutErrorTitle"]
        });
        $("#dialogContent").append(errorMessages["SessionTimeOutErrorMessage"]); //ADD MESSAGE TO DIALOG BOX
        $("#divDialogBox").dialog('open');
    }
}
// ************************ LOGIN - 2**********************
function AffiliateLoginUiClass() {

    this.LoginValidationError = function(validationErrors, formControl) {
        //CYCLES THROUGH ALL VALIDATION ERRORS AND TESTS WHICH ONES HAVE OCCURED
        for (var i = 0; i < 7; i++) {
            switch (validationErrors[i]) {
                case 1:
                    {
                        if (formControl === "inputLogin") {
                            this.message = errorMessages["LoginErrorMissingIdPassword"];
                        }
                        if (formControl === "inputPassword") {
                            this.message = errorMessages["LoginErrorMissingPassword"];
                        }
                        if (formControl === "affID") {
                            this.message = errorMessages["ForgotPasswordMissingId"];
                        }
                        if (formControl === "affEmail") {
                            this.message = errorMessages["ForgotPasswordMissingEmail"];
                        }
                        break;
                    }
                case 2: { }
                case 3: { }
                case 4:
                    {
                        if (formControl === "affEmail") {
                            this.message = errorMessages["ForgotPasswordBadEmail"];
                        }
                        break;
                    }
                case 5: { }
                case 6: { }
            }
        }
        uivalidation.error(formControl);
        dialogBox.InPageMessages("#divMessageBox", this.message); //DIPLAYS ALL VALIDATION ERRORS
    }

    this.ResetPasswordValidationError = function(validationErrors, formControl) {
        this.message = undefined;
        //CYCLES THROUGH ALL VALIDATION ERRORS AND TESTS WHICH ONES HAVE OCCURED
        for (var i = 0; i <= 7; i++) {
            switch (validationErrors[i]) {
                case 1:
                    {
                        if (formControl === "newPassword") {
                            this.message = errorMessages["ForgotPasswordMissingNewPassword"];
                        }
                        if (formControl === "newPasswordConfirmed") {
                            this.message = errorMessages["ForgotPasswordMissingConfirmPassword"];
                        }
                        break;
                    }
                case 7:
                    {
                        this.message = errorMessages["ForgotPasswordMissMatch"]
                        break;
                    }
            }
        }
        uivalidation.error(formControl);
        dialogBox.InPageMessages("#divMessageBox", this.message); //DIPLAYS ALL VALIDATION ERRORS
    }

    this.LoginButtonClicked = function() {
        //LOGIN VALIDATION
        validation.valid = true;
        validation.ValidateFields(affiliateLoginUi.LoginValidationError, "inputLogin", true, false, false, false, false, false);
        validation.ValidateFields(affiliateLoginUi.LoginValidationError, "inputPassword", true, false, false, false, false, false);
        if (validation.valid === true) {
            $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
            spinner.ShowSpinner(); //DISPLAY SPINNER
            login.LogUserIn("formLogin");
        }
    }

    this.AdminLoginButtonClicked = function() {
        //LOGIN VALIDATION
        validation.valid = true;
        validation.ValidateFields(affiliateLoginUi.LoginValidationError, "inputLogin", true, false, false, false, false, false);
        validation.ValidateFields(affiliateLoginUi.LoginValidationError, "inputPassword", true, false, false, false, false, false);
        if (validation.valid === true) {
            $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
            spinner.ShowSpinner(); //DISPLAY SPINNER
            login.LogAdminIn("formLogin");
        }
    }

    this.DisplayAffiliateLoginResult = function(data) {

        //var data = $.parseJSON(data);

        this.message = undefined;

        if (data === SessionEnum.SessionTimeOut) {
            dialogBox.SessionTimeOut();
        }
        else if (data.Result) {//USER IS CLEARED TO LOG IN
            self.parent.location = data.DestinationUrl;
            spinner.HideSpinner();
        }
        else {//USER HAS FAILED LOGIN CHECK, DISPLAY ERROR MESSAGE BASED ON ENUM
            switch (data) {

                case 0:
                    {
                        this.message = errorMessages["LoginErrorIdPasswordIncorrect"];
                        break;
                    }
                case -1:
                    {
                        this.message = errorMessages["LoginErrorAccountLocked"];
                        break;
                    }
                case -2:
                    {
                        break;
                    }
                case -3:
                    {
                        break;
                    }
                case -4:
                    {
                        break;
                    }
                case -5:
                    {
                        this.message = errorMessages["LoginErrorIdPasswordIncorrect"];
                        break;
                    }
                default:
                    {
                        this.message = errorMessages["LoginErrorIdPasswordIncorrect"];
                        break;
                    }
            }
            spinner.HideSpinner();
            dialogBox.UserInformation(this.message); //DIPLAYS ALL VALIDATION ERRORS
        }
    }

    this.AjaxLoginResult = function(data, textStatus) {

        if (data === SessionEnum.SessionTimeOut) {
            dialogBox.SessionTimeOut();
        }
        else if (data === ajaxErrorEnum.ServerError) {
            dialogBox.AjaxServerError();
        }
        else if (data != false) {//SERVER RESPONDED OK
            affiliateLoginUi.DisplayAffiliateLoginResult(data);
        }
        else {//SERVER ERROR
            dialogBox.AjaxServerError();
        }
    }

    this.AjaxRequestPasswordResponse = function(data, textStatus) {

        spinner.HideSpinner();
        if (data === SessionEnum.SessionTimeOut) {
            dialogBox.SessionTimeOut();
        }
        else if (data) {
            dialogBox.UserInformation(errorMessages["ResetPasswordEmailNotification"], "/");
        }
        else if (data === false) {
            dialogBox.validationErrorMessage(errorMessages["ResetPasswordError"]);
        }
        else if (data === ajaxErrorEnum.ServerError) {
            dialogBox.AjaxServerError();
        }
    }

    this.AjaxResetPasswordResponse = function(data, textStatus) {

        spinner.HideSpinner();

        if (data === SessionEnum.SessionTimeOut) {
            dialogBox.SessionTimeOut();
        }
        if (data === ajaxErrorEnum.ServerError) {
            dialogBox.AjaxServerError();
        }
        else if (data === "true") {
            dialogBox.UserInformation(errorMessages["ResetPasswordResetSuccessfull"], data.RedirectURL);
        }
        else {
            dialogBox.UserInformation(errorMessages["ResetPasswordExpired"], data.RedirectURL);
        }
    }

    this.RequstPasswordButtonClicked = function() {
        //VALIDATION
        validation.valid = true;
        validation.ValidateFields(affiliateLoginUi.LoginValidationError, "affID", true, false, false, false, false, false);
        validation.ValidateFields(affiliateLoginUi.LoginValidationError, "affEmail", true, false, false, true, false, false);
        if (validation.valid) {//VALIDATION SUCCESSFUL FIRE EVENT
            $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
            spinner.ShowSpinner(); //DISPLAY SPINNER
            $(this).parent().parent().hide();
            login.requestFogottenPassword("formForgot");
            $(this).siblings().val("");
            //passreq.PopupNotice();
        }
    }

    this.ResetPasswordButtonClicked = function() {
        //VALIDATION
        validation.valid = true;
        validation.ValidateFields(affiliateLoginUi.ResetPasswordValidationError, "newPassword", true, false, false, false, false, false);
        validation.ValidateFields(affiliateLoginUi.ResetPasswordValidationError, "newPasswordConfirmed", true, false, false, false, false, false);
        validation.FieldsEqual(affiliateLoginUi.ResetPasswordValidationError, "newPassword", "newPassword", "newPasswordConfirmed");
        if (validation.valid === true) { //VALIDATION SUCCESSFUL
            $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
            spinner.ShowSpinner(); //DISPLAY SPINNER
            login.ResetPassword("formReset");
            // completepass.ResetDone();
        }


    }
    this.ForgotPassword = function() {
    function preventDefault(e) {
            e.preventDefault();
        }
        $("#Loginforgot > a").click(preventDefault);
        $("#Loginforgot > #resetPasswordNotice").click(function() {
            $("#login > form > *").attr("disabled", "disabled");
            $("#login > form").animate({ 'opacity': '0.3' });
            var winWidth = $(window).width(); 
            var popUpLeft = winWidth / 2 + $("#ForgotenPasswordReset").innerWidth();
            $("#ForgotenPasswordReset").fadeIn().css({ 'left': +popUpLeft, 'backgroundColor': '#f1f1f1', 'display': 'block', 'position': 'absolute', 'z-index': '999999' });
            $("#ForgotenPasswordReset > form > input:eq(0)").focus();
        });
        $("#ReturnToLogin").click(function() {
            $("#login > form > *").removeAttr("disabled");
            $("#login > form").animate({ 'opacity': '1' });
            $("form > input:eq(0)").focus();
            $("#ForgotenPasswordReset").fadeOut(500).css({ 'backgroundColor': '#f1f1f1' });
        });

    }

    this.AdminSearch = function() {
        $("#adminSearch").click(function() {
            validation.valid = true;
            validation.ValidateFields();
        });
    }
}
// ********************** SIGNUP - 3 **********************
//
function AffiliateSignUpUiClass() {

    this.SignUpValidation = function(validationErrors, formControl) {

        this.message = undefined;
        
        for(var i = 0; i <= 7; i++){
            switch(validationErrors[i]){
                case 1: {
                    if(formControl === "inputEmail"){
                        this.message = errorMessages["SignupMissingEmail"];}
                    if(formControl === "inputPassword"){
                        this.message = errorMessages["SignupMissingPassword"];}
                    if(formControl === "inputFirstName"){
                        this.message = errorMessages["SignupMissingFirstName"];}
                    if(formControl === "inputLastName"){
                        this.message = errorMessages["SignupMissingLastName"];}
                    if(formControl === "inputPhone"){
                        this.message = errorMessages["SignupMissingPhoneNumber"];
                    }
                    if (formControl === "inputDateOfBirth") {
                        this.message = errorMessages["SignupMissingDateOfBirth"];
                    }                        
                    break;
                }
                case 2: {}
                case 3: {}
                case 4: {
                    if(formControl === "inputEmail"){
                        this.message = errorMessages["SignupBadEmail"];}
                    break;
                }
                case 5: {}
                case 6: {}
                case 7: {}
            }
        }
        uivalidation.error(formControl);
        dialogBox.InPageMessages("#divMessageBox", this.message); //DIPLAYS ALL VALIDATION ERRORS
    }

    this.AjaxSignUpAffiliateResponse = function(data, textStatus) {

        if (data === SessionEnum.SessionTimeOut) {
            dialogBox.SessionTimeOut();
        }
        else {
            spinner.HideSpinner(); //HIDE SPINNER

            if (data === ajaxErrorEnum.ServerError) {
                dialogBox.AjaxServerError();
            }
            else {
                affiliateSignUpUi.SignUpUiRederect(data, textStatus);
            }
        }
    }

    this.SignupButtonClicked = function() {

        validation.valid = true;
        validation.ValidateFields(affiliateSignUpUi.SignUpValidation, "SignUpEmail", true, false, false, true, false, false);
        validation.ValidateFields(affiliateSignUpUi.SignUpValidation, "SignUpPassword", true, false, false, false, false, false);
        validation.ValidateFields(affiliateSignUpUi.SignUpValidation, "inputFirstName",true, true,false,false,false,false);
        validation.ValidateFields(affiliateSignUpUi.SignUpValidation, "inputLastName",true, true,false, false,false,false);
        validation.ValidateFields(affiliateSignUpUi.SignUpValidation, "inputPhone", true, false, false, false, false, false);
        validation.ValidateFields(affiliateSignUpUi.SignUpValidation, "inputDateOfBirth", true, false, false, false, false, false);
        if(validation.valid){ 
            $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
            spinner.ShowSpinner(); //SHOW SPINNER
            SignUp.SignUpAffiliate("formSignup");
        }
    }

    this.SignUpUiRederect = function(data, textStatus) {

        if (data === SessionEnum.SessionTimeOut) {
            dialogBox.SessionTimeOut();
        }
        else {
            spinner.HideSpinner();

            if (data == true) {//SIGNUP SUCCESS
                self.parent.location = "/signup/successful";
            }
            else {//SIGNUP FAILED
                self.parent.location = "/signup/unsuccessful";
            }
        }
    }

    this.SignUpRadioButtonChanged = function() {
        var value = $("input[name='inputAffiliateType']:checked").val();

        if ($("input[name='inputAffiliateType']:checked").val() == "3")
            $("#divAffiliateURL").show();
        else
            $("#divAffiliateURL").hide();
    }

    this.SignUpcheckBoxClicked = function() {
        if ($("#inputCheckbox").is(":checked")) {
            $("#buttonSignup").removeAttr("disabled");
        }
        else
            $("#buttonSignup").attr("disabled", "disabled");
    }
}
// ********************** REPORTS - 4 **********************

function AffiliateReportsUIClass() {


    this.ReportValidationResponse = function(validationErrors, formControl) {

        this.message = undefined;
        for (var i = 0; i <= 7; i++) {
            switch (validationErrors[i]) {
                case 1:
                    {
                        if (formControl === "dateFrom") {
                            this.message = errorMessages["ReportsMissingFromDate"];
                        }
                        if (formControl === "dateTo") {
                            this.message = errorMessages["ReportsMissingToDate"];
                        }
                        break;
                    }

            }
        }
        uivalidation.error(formControl);
        dialogBox.InPageMessages("#divMessageBox", this.message); //DIPLAYS ALL VALIDATION ERRORS 
    }

    this.ValidateReportSelection = function() {
        validation.valid = true;
        validation.ValidateFields(AffiliateReportsUI.ReportValidationResponse, "selectReport", true, false, false, false, false, false);
        validation.ValidateFields(AffiliateReportsUI.ReportValidationResponse, "dateFrom", true, false, false, false, false, false);
        validation.ValidateFields(AffiliateReportsUI.ReportValidationResponse, "dateTo", true, false, false, false, false, false);
         
    }

    //this.ReportButtonClicked = function(event) {

        //AffiliateReportsUI.ValidateReportSelection();

//        if (validation.valid === false) {
//            $("form#formReports").submit(function() { return false; });
//            //event.preventDefault();
//            //$("#dateFrom,#dateTo").bind('event');
//            //parentBlock.submit(function() { $(this).preventDefault(); });
//        }
//        else {
            //event.unbind('event', preventDefault);
            //event.bind('event');
            $("form#formReports").submit(function() { return true; });
            //Reports.GetReport("formReports");
//        }

    //}
    /*this.ReportButtonClicked = function() {
        if ($("#selectReport").val() !== "usPartnerReport") {
            AffiliateReportsUI.ValidateReportSelection();
            if (validation.valid === true) {
                $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                // spinner.ShowSpinner(); //SHOW SPINNER
                if ($("#tableReportReferURL").length === 0) {
                Reports.GetReport("formReports");
                }
                else {
                $("#tableReportReferURL").remove();
                Reports.GetReport("formReports");
                }
                $("#divMessageBox").hide();
            }
        }
        else {
            Reports.GetReport("formReports");
        }
    }*/

            this.ExportReportButtonClicked = function() {
                validation.valid = true;
                var affId = $("#formReports").attr('action');
                var User = $("#formReports").attr('action');
                affId = affId.split("/");
                affId = affId[3];
                User = User.split("/");
                User = User[1];
                AffiliateReportsUI.ValidateReportSelection();
                if (validation.valid) {
                    $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                    //$("#formReports").attr('action', "/" + User + '/reports/export/' + affId);
                    
                    
                    $("#formReports").submit();
                }
            }

            this.CreateReportFromClick = function() {
                validation.valid = true;
                var affId = $("#formReports").attr('action');
                var User = $("#formReports").attr('action');
                affId = affId.split("/");
                affId = affId[3];
                User = User.split("/");
                User = User[1];
                AffiliateReportsUI.ValidateReportSelection();
                if (validation.valid) {
                    $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                    //$("#formReports").attr('action', "/" + User + '/reports/export/' + affId);

                    $("#formReports").submit();
                }
            }

    this.AjaxReportResponse = function(data, textStatus) {
        // $("#Reports").after(data);
        /*if (parseInt(data) === SessionEnum.SessionTimeOut) {
        dialogBox.SessionTimeOut();
        }
        else {
        spinner.HideSpinner(); //HIDE SPINNER

            if (data === ajaxErrorEnum.ServerError) {
        dialogBox.AjaxServerError();
        }
        if (data.length === 0) {
        $("#tableReportDemographic, #tableReportFinancial, #tableFinanceAddendumReport, #tableReportPaymentSchedule").remove();
        $("#Reports").after(data);
        }
        else {
        //$(".tableheaders").remove();
        $("h1:contains('Month To'), .tableheaders, #tableheaders, table, #tableReportUSPartner").remove();
        $("h1:contains('Date from')").remove();
        $("#Reports").after(data);
        shReports.ToggleReports();
        showRepTip.ShowTip();
        }
        }*/
    }

    this.AjaxExportReportResponse = function(data, textStatus) {
        if (data === SessionEnum.SessionTimeOut) {
            dialogBox.SessionTimeOut();
        }
        else if (data === ajaxErrorEnum.ServerError) {
            //            ajaxErrorMessage.AjaxError();
        }
        else {
            //NO RESPONSE BROWSER OUTPUTS A CSV FILE
        }
    }

    this.ReportSelectionChanged = function() {
        //currentTable = null;

        switch ($("#selectReport").val()) {
            case "demographics":
                {
                    //$("table").hide();
                    $("#tableReportDemographic").show();


                    break;
                }

            case "financials":
                {
                    //$("table").hide();
                    $("#tableReportFinancial").show();
                    break;
                }

            case "games":
                {
                    //$("table").hide();
                    $("#tableReportGames").show();
                }

            case "referurl":
                {
                   // $("table").hide();
                    $("#tableReportReferURL").show();
                    break;
                }

            case "payments":
                {
                   // $("table").hide();
                    $("#tableReportPaymentSchedule").show();
                    break;
                }
            case "subContribution":
                {
                    //$("table").hide();
                    $("#tableReportReferURL").show();
                    break;
                }
            case "subContribution":
                {
                    //$("table").hide();
                    $("#tableReportReferURL").show();
                    break;
                }

            case "usPartnerReport":
                {
                    $("table").hide();
                    window.open($("#partnerTargetLink").text());
                    break;
                }
        }
    }
}
//
// ********************** CAMPAIGNS - 5 *********************
//
function affiliateCampaignUIClass() {

    this.CampaignValidationResponse = function(validationErrors, formControl) {

        for (var i = 0; i <= 7; i++) {
            switch (validationErrors[i]) {
                case 1:
                    {
                        if (formControl === "inputCampaignName") {
                            this.message = errorMessages["CampaignMissingName"];
                        }
                        if (formControl === "selectCampaignBrand") {
                            this.message = errorMessages["CampaignMissingBrand"];
                        }
                        break;
                    }

            }
        }
        uivalidation.error(formControl);
        dialogBox.InPageMessages("#divMessageBox", this.message); //DIPLAYS ALL VALIDATION ERRORS
    }

    this.AjaxAddCampaignResponse = function(data, textStatus) {

        window.location = "/campaigns";
        /*if (data === SessionEnum.SessionTimeOut) {
        dialogBox.SessionTimeOut();
        }
        else if (data === ajaxErrorEnum.ServerError) {
        spinner.HideSpinner();
        dialogBox.AjaxServerError();
        }*/
        //else if (data.length > 0) {
        //spinner.Abort();
        //REMOVE USER INPUT FROM CAMPAIGN NAME AND DROPDOWN BOXES
        $("#inputCampaignName").attr({ value: "" });
        $("#selectCampaignBrand").attr({ value: "" });
        $("#selectCampaignBrandLanguage").attr({ value: "" });

        //POPULATE CAMPAIGN DATA WITH THE NEW CAMPAIGN
        $("body > *").remove();
        //$("#tbodyCampaigns > *").remove(); //remove all table data

        $("body > *").append(data);
        
    }

    this.NewCampaignButtonClicked = function() {

        //VALIDATION
        validation.valid = true;
        validation.ValidateFields(affiliateCampaignUI.CampaignValidationResponse, "inputCampaignName", true, false, false, false, false, false);
        validation.ValidateFields(affiliateCampaignUI.CampaignValidationResponse, "selectCampaignBrand", true, false, false, false, false, false);
        validation.ValidateFields(affiliateCampaignUI.CampaignValidationResponse, "selectCampaignBrandLanguage", true, false, false, false, false, false);
        if (validation.valid) {
            $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
            // spinner.ShowSpinner(); //SHOW SPINNER
            Campaign.CreateCampaign("formCampaign");
        }
    }
    this.CampaignDetailBox = function(data, textStatus) {
        /*$(".content").children().filter("h2,div").hide();

        if (data.length > 0) {
            $("#export").after(data);
            $(document).scrollTop(0);
        }
        if (data === SessionEnum.SessionTimeOut) {
            dialogBox.SessionTimeOut();
        }
        else if (data.length === 0) {
            dialogBox.UserInformation(errorMessages["CampaignNoData"]);
        }
        $("#tbodyCampaigns tr:odd").css({ 'background': '#e4e4e4' });
        //$(".Date").css({'color':'red'});
        var arrText = new Array;
        $(".Date").each(function() {
            var DateTDtext = $(this).text();
            DateTDtext = DateTDtext.replace(" 12:00:00 AM", "");
            $(this).text(DateTDtext);
        });
        $(".datepicker", "#Toolbar").datepicker({
            dateFormat: 'dd-mm-yy',
            changeMonth: true,
            changeYear: true
        });
        $("#FilterRange").click(function() {
            FilterCampaign.Compare();
        });
        $("#ClearRange").click(function() {
            FilterCampaign.ClearRange();
        });
       */ 
    }
    this.DisplayCampaign = function() {
        Campaign.AjaxCampaignDetail($(this).attr("href"), affiliateCampaignUI.CampaignDetailBox);
    }
    //end  campaign detial in lightbox

    this.selectBoxCampaignBrandChanged = function() {
        $("#selectCampaignBrandLanguage").empty();

        switch ($("#selectCampaignBrand").val()) {
            case "CHP":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"da\">Danish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"nl\">Dutch</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"fi\">Finnish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"fr\">French</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"de\">German</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"hu\">Hungarian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"it\">Italian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"no\">Norwegian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"es\">Spanish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"sv\">Swedish</option>");

                    break;
                }

            case "GCC":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"nl\">Dutch</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"fr\">French</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"de\">German</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"it\">Italian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"es\">Spanish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"sv\">Swedish</option>");

                    break;
                }

            case "JPC":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"da\">Danish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"nl\">Dutch</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"fr\">French</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"fi\">Finnish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"de\">German</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"el\">Greek</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"it\">Italian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"ja\">Japanese</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"no\">Norwegian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"pl\">Polish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"pt\">Portuguese</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"ru\">Russian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"es\">Spanish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"sv\">Swedish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"tr\">Turkish</option>");

                    break;
                }

            case "JPB":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");

                    break;
                }

            case "JPM":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");

                    break;
                }

            case "KNC":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"ja\">Japanese</option>");

                    break;
                }

            case "LNC":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"nl\">Dutch</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"fr\">French</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"de\">German</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"it\">Italian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"es\">Spanish</option>");

                    break;
                }

            case "RBC":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"nl\">Dutch</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"fr\">French</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"de\">German</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"it\">Italian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"es\">Spanish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"tr\">Turkish</option>");

                    break;
                }
            case "SSC":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"da\">Danish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"nl\">Dutch</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"fr\">French</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"fi\">Finnish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"de\">German</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"el\">Greek</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"it\">Italian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"ja\">Japanese</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"no\">Norwegian</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"pt\">Portuguese</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"es\">Spanish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"sv\">Swedish</option>");

                    break;
                }
            case "EPC":
                {
                    $("#selectCampaignBrandLanguage").append("<option value=\"en\">English</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"es\">Spanish</option>");
                    $("#selectCampaignBrandLanguage").append("<option value=\"pt\">Portuguese</option>");
                }
        }
    }
}

// ********************** MY ACCOUNT - 6 *********************

function AffiliateAccountUIClass() {

    this.DetailsValidation = function(validationErrors, formControl) {
        //CYCLES THROUGH ALL VALIDATION ERRORS AND TESTS WHICH ONES HAVE OCCURED
        for (var i = 0; i < 7; i++) {
            switch (validationErrors[i]) {
                case 1:
                    {
                        if (formControl === "inputFirstName") {
                            this.message = errorMessages["MyAccountDetailsMissingFirstName"];
                            break;
                        }
                        if (formControl === "inputLastName") {
                            this.message = errorMessages["MyAccountDetailsMissingLastName"];
                            break;
                        }
                        if (formControl === "inputEmail") {
                            this.message = errorMessages["MyAccountDetailsMissingEmail"];
                            break;
                        }
                        if (formControl === "inputPhone") {
                            this.message = errorMessages["MyAccountDetailsMissingPhoneNumber"];
                            break;
                        }
                        if (formControl === "inputAddress1") {
                            this.message = errorMessages["MyAccountDetailsMissingAddress1"];
                            break;
                        }
                        if (formControl === "inputAddressState") {
                            this.message = errorMessages["MyAccountDetailsMissingState"];
                            break;
                        }
                        if (formControl === "inputAddressZip") {
                            this.message = errorMessages["MyAccountDetailsMissingZip"];
                            break;
                        }
                    }

                case 4:
                    {
                        if (formControl === "inputEmail") {
                            this.message = errorMessages["MyAccountDetailsBadEmail"];
                        }
                        break;
                    }

            }
        }
        uivalidation.error(formControl);
        dialogBox.InPageMessages("#divMessageBox", this.message); //DIPLAYS ALL VALIDATION ERRORS
    }

    this.SelectedLeftNav = function() {

        $("ul.ItemsHolder > li > a").click(function() {
            $("ul.ItemsHolder > li").removeClass("leftNavSelected");
            $(this).parent().addClass("leftNavSelected");
        });
    }

    this.AccountPaymentDetailValidationError = function(validationErrors, formControl) {
        //THIS DISPLAYS THE ERROR MESSAGES FOR PAYMENT UPDATES    
        var message = "";

        switch ($("#selectPaymentType option:selected").val()) {

            case "Check":
                {
                    if (formControl === "inputPaymentCheckPayeeName") {

                        var accountValidationMessages = { 1: errorMessages["MyAccountCheckMissingPayeeName"]
                        };
                    }
                    break;
                }

            case "Click2Pay":
                {
                    if (formControl === "inputPaymentClick2PayPayeeName") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountClick2PayMissingPayeeName"] };
                    }
                    if (formControl === "inputPaymentClick2PayEmail") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountClick2PayMissingEmail"],
                            2: "",
                            3: "",
                            4: errorMessages["MyAccountClick2PayBadEmail"],
                            5: "",
                            6: ""
                        };
                    }
                    if (formControl === "inputPaymentClick2PayPAN") {

                        var accountValidationMessages = { 1: errorMessages["MyAccountClick2PayMissingPaymentAccountNumber"] };
                    }

                    break;
                }

            case "EcoCard":
                {
                    if (formControl === "inputPaymentEcoCardName") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountEcocardMissingName"] };
                    }
                    if (formControl === "inputPaymentEcoCardSurname") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountEcocardMissingSurname"] };
                    }
                    if (formControl === "inputPaymentEcoCardEmail") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountEcocardMissingEmail"],
                            4: errorMessages["MyAccountEcocardBadEmail"]
                        };
                    }
                    if (formControl === "inputPaymentEcoCardAccountNumber") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountEcocardMissingAccountNumber"] };
                    }
                    if (formControl === "inputPaymentEcoCardPayeeName") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountEcocardMissingPayeeName"] };
                    }

                    break;
                }
            case "Neteller":
                {
                    if (formControl === "inputPaymentNetellerID") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountNetellerMissingId"] };
                    }
                    if (formControl === "inputPaymentNetellerPayeeName") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountNetellerMissingPayeeName"] };
                    }

                    break;
                }

            case "Payspark":
                {
                    if (formControl === "inputPaymentPaysparkCardNumber") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountPaysparkMissingCardNumber"] };
                    }
                    if (formControl === "inputPaymentPaysparkPayeeName") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountPaysparkMissingPayeeName"] };
                    }
                    if (formControl === "inputPaymentPaysparkAccountNumber") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountPaysparkMissingAccountNumber"] };
                    }
                    if (formControl === "inputPaymentPaysparkDACNumber") {
                        var accountValidationMessages = { 1: errorMessages["MyAccountPaysparkMissingDACNumber"] };
                    }

                    break;
                }
            case "WireTransfer":
                {
                    var country = $("#inputPaymentWireTransferPayeeCountry").val();

                    switch (country) { //WIRE TRANSFER PAYEE NAME ERROR MESSAGE
                        case "au":
                        case "at":
                        case "be":
                        case "cz":
                        case "dk":
                        case "ee":
                        case "fi":
                        case "lv":
                        case "lt":
                        case "sk":
                        case "se":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeName") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeName"],

                                        5: errorMessages["MyAccountWireTransferPayeeName35"],
                                        6: errorMessages["MyAccountWireTransferPayeeName35"]
                                    };
                                }
                                break;
                            }

                        case "ie":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeName") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeName"],

                                        5: errorMessages["MyAccountWireTransferPayeeName18"],
                                        6: errorMessages["MyAccountWireTransferPayeeName18"]
                                    };
                                }
                                break;
                            }

                        case "fr":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeName") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeName"],

                                        5: errorMessages["MyAccountWireTransferPayeeName24"],
                                        6: errorMessages["MyAccountWireTransferPayeeName24"]
                                    };
                                }
                                break;
                            }

                        case "de":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeName") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeName"],

                                        5: errorMessages["MyAccountWireTransferPayeeName27"],
                                        6: errorMessages["MyAccountWireTransferPayeeName27"]
                                    };
                                }
                                break;
                            }

                        case "no":
                        case "sg":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeName") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeName"],

                                        5: errorMessages["MyAccountWireTransferPayeeName30"],
                                        6: errorMessages["MyAccountWireTransferPayeeName30"]
                                    };
                                }
                                break;
                            }

                        case "hu":
                        case "nl":
                        case "pl":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeName") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeName"],

                                        5: errorMessages["MyAccountWireTransferPayeeName30"],
                                        6: errorMessages["MyAccountWireTransferPayeeName30"]
                                    };
                                }
                                break;
                            }

                        case "ca":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeName") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeName"],

                                        5: errorMessages["MyAccountWireTransferPayeeName50"],
                                        6: errorMessages["MyAccountWireTransferPayeeName50"]
                                    };
                                }
                                break;
                            }
                        default:
                            {
                                if (formControl === "inputPaymentWireTransferPayeeName") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeName"] };
                                }
                                break;
                            }
                    }

                    switch (country) { //WIRE TRANSFER BANK ADDRESS ERROR MESSAGE
                        case "au":
                        case "at":
                        case "be":
                        case "ca":
                        case "cz":
                        case "dk":
                        case "ee":
                        case "fi":
                        case "fr":
                        case "de":
                        case "hu":
                        case "ie":
                        case "lv":
                        case "lt":
                        case "nl":
                        case "no":
                        case "sg":
                        case "sk":
                        case "se":
                        case "gb":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAddress") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAddress"],

                                        5: errorMessages["MyAccountWireTransferPayeeAddress50"],
                                        6: errorMessages["MyAccountWireTransferPayeeAddress50"]
                                    };
                                }
                                break;
                            }

                        case "pl":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAddress") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAddress"],

                                        5: errorMessages["MyAccountWireTransferPayeeAddress34"],
                                        6: errorMessages["MyAccountWireTransferPayeeAddress34"]
                                    };
                                }
                                break;
                            }
                        default:
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAddress") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAddress"] };
                                }
                                break;
                            }
                    }

                    switch (country) { //WIRE TRANSFER ACCOUNT ERROR MESSAGE

                        case "cz":
                        case "de":
                        case "nl":
                        case "se":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeAccountNumber10"]
                                    };
                                }
                                break;
                            }

                        case "ie":
                        case "gb":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeAccountNumber8"]
                                    };
                                }
                                break;
                            }

                        case "au":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeAccountNumber9"]
                                    };
                                }
                                break;
                            }

                        case "no":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeAccountNumber11"]
                                    };
                                }
                                break;
                            }

                        case "be":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeAccountNumber12"]
                                    };
                                }
                                break;
                            }

                        case "fr":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeAccountNumber13"]
                                    };
                                }
                                break;
                            }

                        case "fi":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeAccountNumber14"]
                                    };
                                }
                                break;
                            }

                        case "pl":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeAccountNumber26"]
                                    };
                                }
                                break;
                            }

                        case "at":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        6: errorMessages["MyAccountWireTransferPayeeAccountNumber4-11"],
                                        7: ""
                                    };
                                }
                                break;
                            }

                        case "dk":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        6: errorMessages["MyAccountWireTransferPayeeAccountNumber4-10"],
                                        7: ""
                                    };
                                }
                                break;
                            }

                        case "hu":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        6: errorMessages["MyAccountWireTransferPayeeAccountNumber7-15"],
                                        7: ""
                                    };
                                }
                                break;
                            }

                        case "lv":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        6: errorMessages["MyAccountWireTransferPayeeAccountNumber19-21"],
                                        7: ""
                                    };
                                }
                                break;
                            }

                        case "sg":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        6: errorMessages["MyAccountWireTransferPayeeAccountNumber10-11"],
                                        7: ""
                                    };
                                }
                                break;
                            }

                        case "sk":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"],
                                        6: errorMessages["MyAccountWireTransferPayeeAccountNumber6-20"],
                                        7: ""
                                    };
                                }
                                break;
                            }
                        default:
                            {
                                if (formControl === "inputPaymentWireTransferPayeeAccountNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeAccountNumber"] };
                                }
                                break;
                            }
                    }

                    switch (country) {  //WIRE TRANSFER SORT CODE ERROR MESSAGE
                        case "ca":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeSortCode") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferPayeeSortCode"],
                                        7: errorMessages["MyAccountWireTransferPayeeSortCode3"]
                                    };
                                }
                                break;
                            }

                        case "cz":
                        case "dk":
                        case "sg":
                        case "se":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeSortCode") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferPayeeSortCode"],
                                        7: errorMessages["MyAccountWireTransferPayeeSortCode4"]
                                    };
                                }
                                break;
                            }

                        case "at":
                        case "fr":
                        case "de":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeSortCode") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferPayeeSortCode"],
                                        7: errorMessages["MyAccountWireTransferPayeeSortCode5"]
                                    };
                                }
                                break;
                            }

                        case "au":
                        case "ie":
                        case "gb":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeSortCode") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferPayeeSortCode"],
                                        7: errorMessages["MyAccountWireTransferPayeeSortCode6"]
                                    };
                                }
                                break;
                            }

                        case "hu":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeSortCode") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferPayeeSortCode"],
                                        7: errorMessages["MyAccountWireTransferPayeeSortCode7"]
                                    };
                                }
                                break;
                            }
                        default:
                            {
                                if (formControl === "inputPaymentWireTransferPayeeSortCode") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferPayeeSortCode"] };
                                }
                                break;
                            }
                    }

                    switch (country) { //WIRE TRANSFER BANK NAME ERROR MESSAGE
                        case "au":
                        case "at":
                        case "be":
                        case "ca":
                        case "cz":
                        case "dk":
                        case "ee":
                        case "fi":
                        case "fr":
                        case "de":
                        case "hu":
                        case "ie":
                        case "lv":
                        case "lt":
                        case "nl":
                        case "no":
                        case "sg":
                        case "sk":
                        case "se":
                        case "gb":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeHoldingBranch") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingHoldingBranch"],
                                        6: errorMessages["MyAccountWireTransferPayeeHoldingBranch50"],
                                        7: errorMessages["MyAccountWireTransferPayeeHoldingBranch50"]
                                    };
                                }
                                break;
                            }

                        case "pl":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeHoldingBranch") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingHoldingBranch"],
                                        6: errorMessages["MyAccountWireTransferPayeeHoldingBranch34"],
                                        7: errorMessages["MyAccountWireTransferPayeeHoldingBranch34"]
                                    };
                                }
                                break;
                            }
                        default:
                            {
                                if (formControl === "inputPaymentWireTransferPayeeHoldingBranch") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingHoldingBranch"] };
                                }
                                break;
                            }
                    }

                    switch (country) {  //WIRE TRANSFER IBAN ERROR MESSAGES
                        case "no":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber15"]
                                    };
                                }
                                break;
                            }

                        case "be":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber16"]
                                    };
                                }
                                break;
                            }

                        case "dk":
                        case "fi":
                        case "nl":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber18"]
                                    };
                                }
                                break;
                            }

                        case "mk":
                        case "sk":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber19"]
                                    };
                                }
                                break;
                            }

                        case "at":
                        case "ee":
                        case "lt":
                        case "lu":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber20"]
                                    };
                                }
                                break;
                            }

                        case "hr":
                        case "lv":
                        case "ch":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber21"]
                                    };
                                }
                                break;
                            }

                        case "bg":
                        case "de":
                        case "ie":
                        case "rs":
                        case "gb":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber22"]
                                    };
                                }
                                break;
                            }

                        case "gi":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber23"]
                                    };
                                }
                                break;
                            }

                        case "cz":
                        case "ro":
                        case "sk":
                        case "es":
                        case "se":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber24"]
                                    };
                                }
                                break;
                            }

                        case "pt":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber25"]
                                    };
                                }
                                break;
                            }

                        case "is":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber26"]
                                    };
                                }
                                break;
                            }

                        case "fr":
                        case "gr":
                        case "it":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber27"]
                                    };
                                }
                                break;
                            }

                        case "cy":
                        case "hu":
                        case "pl":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber28"]
                                    };
                                }
                                break;
                            }

                        case "mt":
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"],
                                        7: errorMessages["MyAccountWireTransferPayeeIBANNumber31"]
                                    };
                                }
                                break;
                            }
                        default:
                            {
                                if (formControl === "inputPaymentWireTransferPayeeIBANNumber") {
                                    var accountValidationMessages = { 1: errorMessages["MyAccountWireTransferMissingPayeeIBANNumber"] };
                                }
                                break;
                            }
                    }
                }
        }

        //Display error messages
        for (var i = 0; i < validationErrors.length; i++) {

            message = message + accountValidationMessages[validationErrors[i]] + "\n";
        }
        uivalidation.error(formControl);
        dialogBox.InPageMessages("#divMessageBox", message); //DIPLAYS ALL VALIDATION ERRORS
    }

    this.AjaxResponse = function(data, textStatus) {

        if (data === SessionEnum.SessionTimeOut) {
            dialogBox.SessionTimeOut();
        }
        else {
            spinner.HideSpinner(); //HIDE SPINNER

            //DISPLAYS MESSAGES BASED ON SERVER RESPONSE
            if (data) {
                dialogBox.UserInformation(errorMessages["MyAccountUpdatePaymentDetailsSuccess"], null, null);
            }
            else {
                dialogBox.UserInformation(errorMessages["MyAccountUpdatePaymentDetailsFail"]);
            }
        }
    }

    this.AccountUpdateDetailsButtonClicked = function() {
        //VALIDATION
        validation.valid = true;
        validation.ValidateFields(affiliateAccountUI.DetailsValidation, "inputFirstName", true, false, false, false, false, false);
        validation.ValidateFields(affiliateAccountUI.DetailsValidation, "inputLastName", true, false, false, false, false, false);
        validation.ValidateFields(affiliateAccountUI.DetailsValidation, "inputEmail", true, false, false, true, false, false);
        validation.ValidateFields(affiliateAccountUI.DetailsValidation, "inputPhone", true, false, false, false, false, false);
        validation.ValidateFields(affiliateAccountUI.DetailsValidation, "inputAddress1", true, false, false, false, false, false);
        validation.ValidateFields(affiliateAccountUI.DetailsValidation, "inputAddress2", true, false, false, false, false, false);
        validation.ValidateFields(affiliateAccountUI.DetailsValidation, "inputAddressState", true, false, false, false, false, false);
        validation.ValidateFields(affiliateAccountUI.DetailsValidation, "inputAddressZip", true, false, false, false, false, false);
        if (validation.valid) {
            $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
            spinner.ShowSpinner(); //SHOW SPINNER
            MyAccount.UpdateAffiliateContactDetails("form1");
        }
    }

    this.AccountUpdatePaymentDetailsButtonClicked = function() {
        validation.valid = true;
        switch ($("#selectPaymentType option:selected").val()) {

            case "Check":
                {
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentCheckPayeeName", true, false, false, false, false, false);
                    if (validation.valid === true) {
                        $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                        spinner.ShowSpinner();
                        MyAccount.UpdateAffiliatePaymentDetails("frmCheck", $("#selectPaymentType option:selected").val());
                    }
                    break;
                }
            case "Click2Pay":
                {
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentClick2PayPayeeName", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentClick2PayEmail", true, false, false, true, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentClick2PayPAN", true, false, false, false, false, false);
                    if (validation.valid === true) {
                        $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                        spinner.ShowSpinner();
                        MyAccount.UpdateAffiliatePaymentDetails("frmClick2Pay", $("#selectPaymentType option:selected").val());
                    }
                    break;
                }
            case "EcoCard":
                {
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentEcoCardPayeeName", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentEcoCardName", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentEcoCardSurname", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentEcoCardEmail", true, false, false, true, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentEcoCardAccountNumber", true, false, false, false, false, false);
                    if (validation.valid === true) {
                        $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                        spinner.ShowSpinner();
                        MyAccount.UpdateAffiliatePaymentDetails("frmEcoCard", $("#selectPaymentType option:selected").val());
                    }
                    break;
                }
            case "Neteller":
                {
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentNetellerPayeeName", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentNetellerID", true, false, false, false, false, false);
                    if (validation.valid === true) {
                        $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                        spinner.ShowSpinner();
                        MyAccount.UpdateAffiliatePaymentDetails("frmNeteller", $("#selectPaymentType option:selected").val());
                    }
                    break;
                }

            case "Moneybookers":
                {
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentMoneybookersName", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentMoneybookersEmail", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentMoneybookersCurrency", true, false, true, false, false, false);
                    if (validation.valid === true) {
                        $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                        spinner.ShowSpinner();
                        MyAccount.UpdateAffiliatePaymentDetails("frmMoneybookers", $("#selectPaymentType option:selected").val());
                    }
                    break;
                }

            case "Payspark":
                {
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentPaysparkPayeeName", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentPaysparkCardNumber", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentPaysparkAccountNumber", true, false, false, false, false, false);
                    validation.ValidateFields(affiliateAccountUI.AccountPaymentDetailValidationError, "inputPaymentPaysparkDACNumber", true, false, false, false, false, false);
                    if (validation.valid === true) {
                        $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                        spinner.ShowSpinner();
                        MyAccount.UpdateAffiliatePaymentDetails("frmPayspark", $("#selectPaymentType option:selected").val());
                    }
                    break;
                }

            case "WireTransfer":
                {  //VALIDATION
                    if (validation.valid === true) {
                        $("#divMessageBox").empty(); //CLEAR THE INPAGE ERROR BOX
                        spinner.ShowSpinner();
                        MyAccount.UpdateAffiliatePaymentDetails("frmWireTransfer", $("#selectPaymentType option:selected").val());
                    }
                    break;
                }
        }
    }
}


