﻿var RedirectURLOnCookieExpired = "/Account/LogOff";  // Redirect URL when cookie expired
var defaultDateFormat = 'dd/mm/yy';
var dateFormat_DDMMYY = 'dd/mm/y';
var viewDemoPanelShown = false; // has been used in view demo screen,
var minAge = 17;
var maxAge = 25;
var showProgress = false;
var isViewOnly = false;
var stopFormSubmit = false;
function SetQueryStringDataForRedirection(data, doneCallBack, successCallBack) {
    $.ajax({
        url: '/Home/StoreQuoteInfoInTemp',
        type: 'POST',
        cache: false,
        data: data,
        async: false,
        success: successCallBack
    }).done(doneCallBack);
}
function SetQueryStringDataForRedirectionSync(data, doneCallBack, successCallBack) {
    $.ajax({
        url: '/Home/StoreQuoteInfoInTemp',
        type: 'POST',
        cache: false,
        data: data,
        async: true,
        success: successCallBack
    }).done(doneCallBack);
}

function SetQueryStringValueInTempData(quoteId, itprequesttype, returnURL, isemail) {
    var canProceedFurther = true;
    var data = { QuoteId: quoteId, ITPRequestType: itprequesttype, ReturnURL: returnURL, TempDataName: "PrintEmailQuote", IsEmail: isemail };
    SetQueryStringDataForRedirection(data, function (result) {
        var html = $.parseHTML(result);
        if ($.isArray(html))   // If Cookied expired then redirects to login
        {
            isPageRedirected = true;
            window.location.href = RedirectURLOnCookieExpired;
            canProceedFurther = false;
        }
    }, null);

    return canProceedFurther;
}

$(function () {
    $(document).on("dialogopen", function (event, ui) {
        $.unblockUI();
    });
});
$(document).ready(function () {
    RestricSpace(); //dont allow space
    OnlyNumbers(); //allow only numbers
    DecimalsOnly(); //allow decimals
    isViewOnly = ConvertToBool($('#IsViewOnly').val());
    BreadCrumChange();
    

    $('img').each(function () {
        $(this).attr('title', $(this).attr('alt'));
    });

    $('input[type=submit]').each(function () {
        var title = $(this).attr('title');
        var alt = $(this).attr('alt');
        if ($.trim(title).length == 0) {
            $(this).attr('title', $(this).attr('value'));
        }
        if ($.trim(alt).length == 0) {
            $(this).attr('alt', $(this).attr('value'));
        }
    });

    $('input[type=button]').each(function () {
        var title = $(this).attr('title');
        var alt = $(this).attr('alt');
        if ($.trim(title).length == 0) {
            $(this).attr('title', $(this).attr('value'));
        }
        if ($.trim(alt).length == 0) {
            $(this).attr('alt', $(this).attr('value'));
        }
    });

    $('#navbar li a').click(function () {
        ChangeCursorToHourGlass();
    });

    //display loading imagge on form submit.
    $(this).submit(function (event) {
        if (stopFormSubmit) {
            event.preventDefault();
            return false;
        } else {
            ChangeCursorToHourGlass();
        }
    });
    $(document).ajaxStop(function () {
        // $.unblockUI();
        ChangeCursorToDefault();
        showProgress = false;
    });
    $(document).ajaxStart(function () {
        ChangeCursorToHourGlass();
        //LoaderWindow();
    });

    $.ajaxSetup({
        beforeSend:

            function () {
                if (showProgress) {
                    ChangeCursorToHourGlass();
                }
            },
        statusCode: {
            750: function () {
                $('#generic-error').html("Your Session time expired. You will be logged out....");

                $('#generic-error').dialog({
                    autoOpen: true,
                    modal: true,
                    resizable: false,
                    height: 200,
                    open: function (event, ui) {
                        setTimeout(function () {
                            window.location.href = RedirectURLOnCookieExpired;
                        }, 5000);
                    }
                }
                );
            }
        },
        complete: function (xhr, statusText) {
            ChangeCursorToDefault();

            showProgress = false;
        },
        error: function (xhr, props) {
            ChangeCursorToDefault();
            showProgress = false;

            if (props.status !== 750 && props.status != undefined) {
                window.location.href = '/Error/InternalServerError';
            }
        }
    });

    if (isViewOnly) {
        makeAllElementReadonlyExceptButtons();
    }
});

function IsValidDate(date, format) {
    if (format == null || format == undefined) {
        format = defaultDateFormat;
    }

    try {
        if ($.trim(date).length < 1 || $.trim(date).length != 10) {
            return false;
        }

        $.datepicker.parseDate(format, date);
        return true;
    }

    catch (err) {
        return false;
    }
}

function CalculateAge(dateofBirth, format) {
    if (format == null || format == undefined) {
        format = defaultDateFormat;
    }
    var start = $.datepicker.parseDate(format, dateofBirth);
    var end = new Date();

    var diff = end.getTime() - start.getTime();
    var age = diff / (1000 * 60 * 60 * 24 * 365.25);
    return age;
}

function OpenDialog(selector) {
    $(selector).dialog({
        autoOpen: true,
        modal: true,
        resizable: false,
        height: 200,
        buttons: {
            "OK": function () {
                $(this).dialog("close");
            }
        }
    });
}

function RestricSpace() {
    $('.restrictSpace').keydown(function (e) {
        if (e.keyCode == 32) // 32 is the ASCII value for a space
        {
            e.preventDefault();
        }
    });
}

function OnlyNumbers() {
    $(".numbersOnly").keypress(function (e) {
        //if the letter is not digit then don't type anything
        if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
            return false;
        }
    });
}

function DecimalsOnly() {
    //$(".decimalsOnly").inputmask({'alias': 'decimal', rightAlign: false, digits: 2, allowPlus: false, gready: false, radixPoint: ".", autoGroup: true, groupSeparator: ",", groupSize: 3 });
   //$(".decimalsOnlyWithMaxlimit").inputmask({ 'alias': 'decimal', rightAlign: false, digits: 2, allowPlus: false, gready: false, radixPoint: ".", autoGroup: true, groupSeparator: ",", groupSize: 3, max: 99999.99, min: 0 });   
}

function ChangeCursorToDefault() {
    $('body').css('cursor', 'auto');
}

function ChangeCursorToHourGlass() {
    $('body').css('cursor', 'wait');
}
function BlockUiOnPost() {
    //display loading imagge on form submit.
    $(this).submit(function (event) {
        ChangeCursorToHourGlass();
    });
}

function DisplayDualLesseDetails(lesseNumber) {
    $.ajax({
        url: '/Client/GetDualLesseResult',
        type: 'GET',
        cache: false,
        async: true,
        data: { lesseNumber: lesseNumber },
        success: function (data) {
            if (data.Message != null)
                $('#DualLesse').text(data.Message);
            else
                $('#DualLesse').text('');
        }
    });
}

var ValidateContactNo = function (contactNo) {
    var numberRegEx = new RegExp("((\\+44\\s?\\(0\\)\\s?\\d{2,4})|(\\+44\\s?(01|02|03|07|08)\\d{2,3})|(\\+44\\s?(1|2|3|7|8)\\d{2,3})|(\\(\\+44\\)\\s?\\d{3,4})|(\\(\\d{5}\\))|((01|02|03|07|08)\\d{2,3})|(\\d{5}))(\\s|-|.)(((\\d{3,4})(\\s|-)(\\d{3,4}))|((\\d{6,7})))");
    var phoneNumber = $.trim(contactNo).replace(/ /g, '');

    if (phoneNumber == "")
        return false;
    else if (phoneNumber.length > 11) {
        return true;
    }

    return !phoneNumber.match(numberRegEx);
}

var disableElementsById = function (elements) {
    var elementArray = new Array();
    elementArray = elements.split(",");
    $.each(elementArray, function (i, elementId) {
        $("#" + elementId).attr("disabled", "disabled");
    });
}
var enableElementById = function (elements) {
    var elementArray = new Array();
    elementArray = elements.split(",");
    $.each(elementArray, function (i, elementId) {
        $("#" + elementId).removeAttr("disabled");
    });
}
var disableElementsByClass = function (classNames) {
    var classArray = new Array();
    classArray = classNames.split(",");
    $.each(classArray, function (i, className) {
        $("." + className).attr("disabled", "disabled");
    });
}
var enableElementsByClass = function (classNames) {
    var classArray = new Array();
    classArray = classNames.split(",");
    if (classArray.length > 1) {
        $.each(classNames, function (i, className) {
            $("." + className).removeAttr("disabled");
        });
    }
    else {
        $("." + classNames).removeAttr("disabled");
    }
   
}

var checkInputTextLength = function (limit, textToCheck, charLeftLabel) {
    $('#' + textToCheck).keyup(function (e) {
        var code = e.keyCode || e.which;
        //Avoid Ctrl+A
        if (code != 65) {
            var len = this.value.length;
            if (len > limit) {
                this.value = this.value.substring(0, limit);
            }
            $('#' + charLeftLabel).text(limit - len);
        }
    });
};

var elementHasValue = function (elementId) {
    if (elementId != undefined && elementId != '')
        return false;
    var elementToCheck = $('#' + elementId);
    return !(elementToCheck == undefined || elementToCheck.val() == null || elementToCheck.val() == '');
}

//use this method to close any jquery dialog
function CloseDialogCommon() {
    try {
        $('.ui-dialog-content').dialog('close');
        $('.ui-dialog-content').dialog('destroy');
    }
    catch (exception) {
    }
}

//Since there is one more method with same name in Intelligent Options
function CloseDialog() {
    CloseDialogCommon();
}
var ConvertToBool = function (value) {
    if (value != undefined)
        return JSON.parse(value.toLowerCase());
    else return undefined;
}

//this method will make elements readonly by id   so that they will look disabled
// so there is no need to make hidden field for disabled fields
var makeElementReadonlyById = function (elements) {
    createReadOnlyCss();
    var elementArray = new Array();
    elementArray = elements.split(",");
    $.each(elementArray, function (i, elementId) {
        var element = $("#" + $.trim(elementId));
        element.attr('readonly', 'readonly');
        element.addClass('readOnlyTextBox');
        element.focus(function () {
            this.blur();
        });
        if (element.is(':radio')) {
            disableRadioButton(element);
        }
        if (element.is('select')) {
            element.addClass('readonly').data('readonly', true).prop('disabled', 'disabled');
            element.after('<input type="hidden" name="' + element[0].name + '" value="' + element[0].value + '" data-select-sham>');
        }
    });
}

//this method will make elements readonly by class   so that they will look disabled
// so there is no need to make hidden field for disabled fields
var makeElementReadonlyByClass = function (classNames) {
    createReadOnlyCss();
    var classArray = new Array();
    classArray = classNames.split(",");

    if (classArray.length > 1) {
        $.each(classArray, function (i, className) {
            $("." + $.trim(className)).each(function (index, data) {
                $(data).attr('readonly', 'readonly');
                $(data).addClass('readOnlyTextBox');
                $(data).focus(function () {
                    $(data).blur();
                });
                if ($(data).is(':radio')) {
                    disableRadioButton(data);
                }
                if ($(data).is('select')) {
                    $(data).addClass('readonly').data('readonly', true).prop('disabled', 'disabled');
                    $(data).after('<input type="hidden" name="' + $(data)[0].name + '" value="' + $(data)[0].value + '" data-select-sham>');
                }
            });
        });
    }
    else {
        $("." + $.trim(classNames)).each(function (index, data) {
            $(data).attr('readonly', 'readonly');
            $(data).addClass('readOnlyTextBox');
            $(data).focus(function () {
                $(data).blur();
            });
            if ($(data).is(':radio')) {
                disableRadioButton(data);
            }
            if ($(data).is('select')) {
                $(data).addClass('readonly').data('readonly', true).prop('disabled', 'disabled');
                $(data).after('<input type="hidden" name="' + $(data)[0].name + '" value="' + $(data)[0].value + '" data-select-sham>');
            }
        });
    }
   
}

var makeElementEditibleByClass = function (classNames) {
    var classArray = new Array();
    classArray = classNames.split(",");
    $.each(classArray, function (i, className) {
        $("." + $.trim(className)).each(function (index, data) {
            $(data).removeClass('readOnlyTextBox');
            if ($(data).is('select')) {
                $(data).removeClass('readonly').removeData('readonly');
                $(data).prop('disabled', false).next('[data-select-sham]').remove();
            }
            if ($(data).is(':radio')) {
                enableRadioButton(data);
            }
            $(data).removeClass('readonly');
            $(data).unbind("focus");
            $(data).removeAttr('disabled');
            $(data).removeAttr('readonly');
        });
    });
}

var makeElementEditibleById = function (elements) {
    var elementArray = new Array();
    elementArray = elements.split(",");
    $.each(elementArray, function (i, elementId) {
        var element = $("#" + $.trim(elementId));
        element.removeClass('readOnlyTextBox');
        if (element.is('select')) {
            element.removeClass('readonly').removeData('readonly');
            element.prop('disabled', false).next('[data-select-sham]').remove();
        }
        if (element.is(':radio')) {
            enableRadioButton(element);
        }
        element.removeClass('readonly');
        element.unbind("focus");
        element.removeAttr('disabled');
        element.removeAttr('readonly');
    });
}

var makeAllElementReadonlyExceptButtons = function () {

    createReadOnlyCss();
    $.each($(":input:not(:submit):not(:button)"), function (i, element) {
        $(element).attr('readonly', 'readonly');
        $(element).addClass('readOnlyTextBox');
       
        $(element).focus(function () {
            $(element).blur();
        });
        if ($(element).is(':radio')) {
            disableRadioButton(element);
        }
        if ($(element).is(':checkbox')) {
            disableRadioButton(element);
        }
        if ($(element).is('select')) {
            $(element).addClass('readonly').data('readonly', true).prop('disabled', 'disabled');
            $(element).after('<input type="hidden" name="' + $(element)[0].name + '" value="' + $(element)[0].value + '" data-select-sham>');
        }
    });

    EnableNavigation();
}


function createReadOnlyCss() {

    $('<style type="text/css">' +
   '.readOnlyTextBox {background-color: #F2F2F2 !important; color :rgb(139,139,139); border-color:#ddd;  }' +
    '</style>').appendTo('head');
}


function formatInteger(val) {
    return Math.round(val);
}

function formatDecimal(val) {
    return parseFloat(val).toFixed(2);
}

function disableRadioButton(element) {
    $(element).attr("disabled", "disabled");
}

function enableRadioButton(element) {
    $(element).each(function () {
        $(this).unbind("mousedown", window.radioMouseDown);
        $(this).unbind("click", window.radioClicked);
    });
}

function EnableNavigation() {
    $('#TermsAndConditions').prop('checked', true);
    $('#BigOrderButton').attr("disabled", "disabled");
    $('#SubmitOrderButton').attr("disabled", "disabled");
    $.each($(":submit"), function (i, element) {
        $(element).removeClass('readonly');
        $(element).unbind("focus");
        $(element).removeAttr('disabled');
        $(element).removeAttr('readonly');
    });
}

$(window).on(function () {
    if (isViewOnly) {
        makeAllElementReadonlyExceptButtons();
    }
});

//window.onload = function () {
//    window.addEventListener("beforeunload", function (e) {
//        setTimeout(function () {
//            //LoaderWindow();
//            $('body').css('cursor', 'wait');
//        }, 1);

//        return undefined;
//    });
//};

function LoaderWindow() {
    //$.blockUI.defaults.css.backgroundColor = '#EBEBEB';
    //$.blockUI.defaults.css.border = '0px';
    //$.blockUI.defaults.css.opacity = '.9';
    //$.blockUI.defaults.css.top = '0px';
    //$.blockUI.defaults.css.left = '0px';
    //$.blockUI.defaults.css.width = '100%';
    //$.blockUI.defaults.css.height = '100%';

    //$.blockUI({
    //    message: '<p style=\"text-align:center;margin-top:150px;\"><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><img src="/Media/images/design/shadow-box/ajax-loader.gif" alt="Loading..." /></p>',

    //    fadeIn: 0,
    //    fadeOut: 0,
    //    showOverlay: false
    //});
}

function BreadCrumChange() {
    var requireClientOrderNoInd = ConvertToBool($('#RequireClientOrderNoInd').val());
    var allowedToEnterFuelCard = ConvertToBool($('#AllowedToEnterFuelCard').val());
    var allowedToNominateSupplier = ConvertToBool($('#AllowedToNominateSupplier').val());
    if (!requireClientOrderNoInd && !allowedToEnterFuelCard) {
        $('.fiveIU a').hide();
    }
    if (!allowedToNominateSupplier) {
        $('.sixIU a').hide();
    }
}

function GetCurrentPage() {
    var currentPage;
    if (window.location.pathname.indexOf('/VehicleOrder/SupplierDetails') > -1) {
        currentPage = 'SupplierDetails';
    } else if (window.location.pathname.indexOf('/VehicleOrder/Summary') > -1) {
        currentPage = 'Summary';
    } else if (window.location.pathname.indexOf('/VehicleOrder/ClientSpecification') > -1) {
        currentPage = 'ClientSpecification';
    } else if (window.location.pathname.indexOf('/VehicleOrder/DeliveryAddress') > -1) {
        currentPage = 'DeliveryAddress';
    } else if (window.location.pathname.indexOf('/VehicleOrder/YourDetail') > -1) {
        currentPage = 'YourDetail';
    }
    return currentPage;
}

function GoToPreviousPage() {
    var requireClientOrderNoInd = ConvertToBool($('#RequireClientOrderNoInd').val());
    var allowedToEnterFuelCard = ConvertToBool($('#AllowedToEnterFuelCard').val());
    var allowedToNominateSupplier = ConvertToBool($('#AllowedToNominateSupplier').val());
    var currentPage = GetCurrentPage();

    if (currentPage == 'SupplierDetails') {
        if (!requireClientOrderNoInd && !allowedToEnterFuelCard) {
            window.location.href = '/VehicleOrder/DeliveryAddress';
        } else {
            window.location.href = '/VehicleOrder/ClientSpecification';
        }
    } else if (currentPage == 'ClientSpecification') {
        window.location.href = '/VehicleOrder/DeliveryAddress';
    } else if (currentPage == 'Summary') {
        if (!requireClientOrderNoInd && !allowedToEnterFuelCard && !allowedToNominateSupplier) {
            window.location.href = '/VehicleOrder/DeliveryAddress';
        } else if ((requireClientOrderNoInd || allowedToEnterFuelCard) && !allowedToNominateSupplier)
            window.location.href = '/VehicleOrder/ClientSpecification';
    } else {
        window.location.href = '/VehicleOrder/SupplierDetails';
    }
}

function DefaultEnterClick(cntrlid, buttonid) {
    $('#' + cntrlid).on('keypress', function (e) {
        var code = e.keyCode || e.which;
        if (code == 13) {
            e.cancelBubble = true;
            e.returnValue = false;
            e.preventDefault();
            $('#' + buttonid).trigger("click");
        }
    });
}


function getInternetExplorerVersion() {
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE ");
    var rv = -1;

    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number
    {

        if (isNaN(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))))) {
            //For IE 11 >
            if (navigator.appName == 'Netscape') {
                var ua = navigator.userAgent;
                var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
                if (re.exec(ua) != null) {
                    rv = parseFloat(RegExp.$1);
                    return rv;
                }
            }
            else {
                return 0;
            }
        }
        else {
            //For < IE11
            return parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)));
        }

    } else return 0;
}

function DisplayTextareaLength() {
    $("textarea[maxlength]").bind('input propertychange', function () {
        var maxLength = $(this).attr('maxlength');
        var currentValLength = $(this).val().length;
        $('#charLeft').text(200 - currentValLength);
        if (currentValLength > maxLength) {
            $(this).val($(this).val().substring(0, maxLength));
            $('#charLeft').text(0);
        }
    });
}

function addAntiForgeryToken(data,formId) {
    data.__RequestVerificationToken = $(formId).find('input[name="__RequestVerificationToken"]').val();;
    return data;
};