//Code to reside in top level HTML layout
var mydhr = mydhr || {};
mydhr.Layout = mydhr.Layout || {};

mydhr.Layout.initializePlugins = function (selector) {
    var $select;
    if (selector)
        $select = $(selector);
    else
        $select = $('body');

    $select.find('input:radio').screwDefaultButtons({
        image: 'url("content/images/DHR_radiobtns_emerald.png")',
        width: 26,
        height: 26
    });
    $select.find('input:checkbox').screwDefaultButtons({
        image: 'url("content/images/DHR_checkboxes_emerald.png")',
        width: 26,
        height: 26
    });

    $select.find('textarea').placeholder();
    $select.find('input').placeholder();

    $select.find('.phone').mask("(999) 999-9999");
    $select.find('.ssn').mask("999-99-9999");
    $select.find('.num').mask("?99999999999999999");
    $select.find('.ein').mask("99-9999999");
    $select.find('.zip').mask("99999");
    $select.find('.onedigit').mask("9");

    var $cField = $select.find('.currencyField');
    $cField.blur(function () {
        $cField.formatCurrency({ symbol: '' }).trigger('change');
    });

    $cField.focus(function () {
        $cField.keypress(function (event) {
            if (event.keyCode == 13) {
                $cField.formatCurrency({ symbol: '' }).trigger('change');
            }
        });
    });

    $select.find('.datepicker').datepicker({ changeMonth: true, changeYear: true, yearRange: '1910:' + (new Date().getFullYear()) });

    $select.find('.datepicker30Days').datepicker({
        changeMonth: true,
        changeYear: true,
        minDate: "-30d",
        maxDate: "0"
    });
      
    String.prototype.format = function () {
        var args = arguments;
        return this.replace(/{(\d+)}/g, function (match, number) {
            return typeof args[number] != 'undefined'
              ? args[number]
              : match
            ;
        });
    };
    if (mydhr && mydhr.ThisPage && mydhr.ThisPage.initializePlugins)
        mydhr.ThisPage.initializePlugins();
};

mydhr.Layout.initializePage = function (language) {
    this.initializePlugins();

    $("#ui-datepicker-div").css("z-index", "9999");

    //#region from _layout
    if (language == "en-US") {
        $("#spanishLanguage").removeClass("activeLanguage");
        $("#englishLanguage").addClass("activeLanguage");
    } else if (language == "es-MX") {
        $("#englishLanguage").removeClass("activeLanguage");
        $("#spanishLanguage").addClass("activeLanguage");
    }

    $("#englishLanguage").click(function () {
        $("#spanishLanguage").removeClass("activeLanguage");
        $("#englishLanguage").addClass("activeLanguage");
    });

    $("#spanishLanguage").click(function () {
        $("#englishLanguage").removeClass("activeLanguage");
        $("#spanishLanguage").addClass("activeLanguage");
    });

    // fix sub nav on scroll
    var $win = $(window),
            $header = $('#header'),
            $side = $('.sidebar'),
            $ques = $('.quickQuestion'),
            navHeight = $('.navbar-fixed-top').first().height(),
            navTop = 90,
            isFixed = 0;

    processScroll();

    $win.on('scroll', processScroll);

    function processScroll() {

        var i, scrollTop = $win.scrollTop();
        navTop = $('#mainNav').outerHeight();
        if (navTop > 0 && scrollTop >= navTop && !isFixed) {
            if ($('#helpFlyout').css('display') != 'none') {
                var helpWidth = $('#helpFlyout').width();
                var spaceAvailable = ($(window).width() - $('.main').width()) / 2;

                if (helpWidth > spaceAvailable) {
                    var topOffset = $('.subnav').offset().top + $('.subnav').height();

                    var width = $('#helpFlyout').width();
                    var spaceAvailable = ($(window).width() - $('.main').width()) / 2;

                    $('#helpFlyout').css({ 'position': 'fixed', 'top': '50px' });
                    $('#helpFlyout').height($(window).height() - $('.subnav').height());
                }
            }

            if ($('#languageFlyout').css('display') != 'none') {
                var topOffset = $('.subnav').offset().top + $('.subnav').height();
                $('#languageFlyout').css({ position: 'fixed', top: '50px' });
            }

            isFixed = 1;
            $header.addClass('subnav-fixed');
            $side.addClass('sidebar-fixed');
            $ques.addClass('ques-fixed');

        } else if (scrollTop <= navTop && isFixed) {
            if ($('#helpFlyout').css('display') != 'none') {
                var helpWidth = $('#helpFlyout').width();
                var spaceAvailable = ($(window).width() - $('.main').width()) / 2;

                if (helpWidth > spaceAvailable) {
                    var topOffset = $('.subnav').offset().top + $('.subnav').height();

                    var width = $('#helpFlyout').width();
                    var spaceAvailable = ($(window).width() - $('.main').width()) / 2;

                    $('#helpFlyout').css({ 'position': 'absolute', 'top': '140px' });
                }
            }

            if ($('#languageFlyout').css('display') != 'none') {
                var topOffset = $('.subnav').offset().top + $('.subnav').height();
                $('#languageFlyout').css({ position: 'absolute', top: '140px' });
            }

            isFixed = 0;
            $header.removeClass('subnav-fixed');
            $side.removeClass('sidebar-fixed');
            $ques.removeClass('ques-fixed');
        }

    }

    $('#subnavLanguage').click(function () {

        $('#languageFlyout').toggle();

        if ($('#helpFlyout').css('display') != 'none')
            $('#helpFlyout').toggle();

        if (isFixed) {
            var topOffset = 50;
            var rightOffset = $('.main').offset().left + $('.main').width() - $('#languageFlyout').width() + 5;
            $('#languageFlyout').css({ position: 'fixed', top: topOffset, left: rightOffset });
        } else {
            var topOffset = 140;
            var rightOffset = $('.main').offset().left + $('.main').width() - $('#languageFlyout').width() + 5;
            $('#languageFlyout').css({ position: 'absolute', top: topOffset, left: rightOffset });
        }


    });

    $(document).mouseup(function (e) {

        var container = $('#languageFlyout');

        if (container.css('display') != 'none') {

            if (!container.is(e.target) && !$('#subnavLanguage').is(e.target) && !$('#langIcon').is(e.target) && !$('#arrowIcon').is(e.target) && container.has(e.target).length === 0) {
                container.toggle();
            }
        }

        container = $('#helpFlyout');

        if (container.css('display') != 'none') {
            if (!container.is(e.target) && !$('#subnavHelp').is(e.target) && !$('#helpIcon').is(e.target) && container.has(e.target).length === 0) {
                container.toggle();
            }
        }
    });

    window.onresize = function () {
        var width = $('#helpFlyout').width();
        var spaceAvailable = ($(window).width() - $('.main').width()) / 2;

        if (width > spaceAvailable) {
            var rightOffset = $('.main').offset().left + $('.main').width() - $('#helpFlyout').width();

            if (isFixed) {
                var topOffset = 50;
                $('#helpFlyout').css({ position: 'fixed', top: topOffset, right: 0, left: rightOffset });
            } else {
                var topOffset = 140;
                $('#helpFlyout').css({ position: 'absolute', top: topOffset, right: 0, left: rightOffset });
            }

            $('#helpFlyout').height($(window).height() - $('.subnav').height());
        } else {
            var rightOffset = $('.main').offset().left + $('.main').width() + 1;
            $('#helpFlyout').css({ position: 'fixed', top: 0, right: '', left: rightOffset });
            $('#helpFlyout').height($(window).height());
        }

        if ($('#languageFlyout').css('display') != 'none') {
            var rightOffset = $('.main').offset().left + $('.main').width() - $('#languageFlyout').width() + 1;
            $('#languageFlyout').css({ left: rightOffset });
        }
    }

    var handleSidenarAndContentHeight = function () {
        var content = $('.page-content');
        var sidebar = $('.page-sidebar');

        if (!content.attr("data-height")) {
            content.attr("data-height", content.height());
        }

        if (sidebar.height() > content.height()) {
            content.css("min-height", sidebar.height() + 20);
        } else {
            content.css("min-height", content.attr("data-height"));
        }
    }

    var location = window.location.href;
    var pageName = location.substr(location.lastIndexOf('/')).toLowerCase();
    var $link = $('a[href*="' + pageName + '"]');
    if ($link != null && pageName != "/") {
        $link.parent().addClass('active');
        if ($link.parent().parent().hasClass('sub-menu')) {
            $link.parent().parent().parent().addClass('active open');
            var sub = $link.parent().parent();
            sub.slideDown(200, function () {
                handleSidenarAndContentHeight();
            });

            var $navbarLink = $('.navbar-inner > .nav li > a[href*="/home/dashboard"]');
            $navbarLink.parent().addClass('active');
        }
    }

    $('.page-sidebar li > a').on('click', function (e) {

        if ($(this).next().hasClass('sub-menu') == false) {
            return;
        }

        var parent = $(this).parent().parent();

        parent.children('li.open').children('.sub-menu').slideUp(200);
        parent.children('li.open').removeClass('open');

        $('.nav-list > li.active').find('a:first').css("background-color", "#00A78D");
        $('.nav-list > li.active').find('a:first').css("color", "white");

        var sub = $(this).next();
        if (sub.is(":visible")) {
            $('.arrow', $(this)).removeClass("open");
            $(this).parent().removeClass("open");
            sub.slideUp(200, function () {
                handleSidenarAndContentHeight();
            });
        } else {
            $('.arrow', $(this)).addClass("open");
            $(this).parent().addClass("open");
            sub.slideDown(200, function () {
                handleSidenarAndContentHeight();
            });
        }

        $(this).css("text-shadow", "none");

        e.preventDefault();
    });
    //#endregion

    //#region from formFlow ready
    //Change radio button label text color to black when selected and vice versa
    $('body').delegate('.radio-yes input:radio', 'change', function () {
        if ($(this).is(':checked')) {
            var name = $(this).attr('name');
            var id = $(this).attr('id');
            var label = $('label[for="' + id + '"]');
            var oppositeLabel = $('label[for="' + $('input.radio-no[name="' + name + '"]').attr('id') + '"]');
            label.addClass('yesNoSelected');
            oppositeLabel.removeClass('yesNoSelected');
        }
    });

    $('body').delegate('.radio-no input:radio', 'change', function () {
        if ($(this).is(':checked')) {
            var name = $(this).attr('name');
            var id = $(this).attr('id');
            var label = $('label[for="' + id + '"]');
            var oppositeLabel = $('label[for="' + $('input.radio-yes[name="' + name + '"]').attr('id') + '"]');
            label.addClass('yesNoSelected');
            oppositeLabel.removeClass('yesNoSelected');
        }
    });


    //Change checkbox label text color to black when selected and vice versa
    $('body').delegate('.checkInput', 'change', function () {
        if ($(this).is(':checked')) {
            $('label[for="' + $(this).attr('id') + '"]').addClass('yesNoSelected');
        } else {
            $('label[for="' + $(this).attr('id') + '"]').removeClass('yesNoSelected');
        }
    });

    //Show or hide 'add' section when clicking yes or no on radio buttons on some pages
    $('body').delegate('.yesSec', 'click', function () {

        if (!$(this).is(':disabled')) {
            var target = $(this).attr('data-target');
            $(this).closest('.form-section-content').find('.yes-sec[data-yes-sec="' + target + '"]').show();
            $(this).closest('.form-section-content').find('.no-sec[data-no-sec="' + target + '"]').hide();
            if ($(this).closest('div.form-section').find('.btn-next').css('display') != 'none' && $(this).closest('div.form-section').find('.addSec1').css('display') != 'none') {
                mydhr.Spacer.resize($(this).closest('div.form-section'));
            }
        }
    });

    $('body').delegate('.noSec', 'click', function () {

        if (!$(this).is(':disabled')) {
            var target = $(this).attr('data-target');
            $(this).closest('.form-section-content').find('.yes-sec[data-yes-sec="' + target + '"]').hide();
            $(this).closest('.form-section-content').find('.no-sec[data-no-sec="' + target + '"]').show();
            if ($(this).closest('div.form-section').find('.btn-next').css('display') != 'none' && $(this).closest('div.form-section').find('.addSec2').css('display') != 'none') {
                mydhr.Spacer.resize($(this).closest('div.form-section'));
            }
        }
    });

    //################ HIDE/SHOW ADDDIV ON YES/NO ###################
    var showAdd = function (me, container) {
        if (!$(me).is(':disabled')) {
            if ($(me).prop("type") == "radio" || $(me).prop("type") == "checkbox" || $(me).prop('type') == 'select-one') {
                var targetText = $(me).attr('data-target');
                var target = $(me).closest(container).find('.addDiv[data-add-div="' + targetText + '"]');
                target.show();
            }
        }
    };
    var hideAdd = function (me, container) {
        if (!$(me).is(':disabled')) {
            if ($(me).prop('type') == 'radio' || $(me).prop('type') == 'checkbox' || $(me).prop('type') == 'select-one') {
                var targetText = $(me).attr('data-target');
                var target = $(me).closest(container).find('.addDiv[data-add-div="' + targetText + '"]');
                target.hide();
            }
        }
    };

    $('body').delegate('.form-section-content .showAddDiv', 'click', function () {
        if (!$(this).is(':disabled')) {
            if ($(this).prop("type") == "radio" || $(this).prop("type") == "checkbox") {
                showAdd(this, '.form-section-content');
                ///Resize spacer if current page is last page visible
                if ($(this).closest('div.form-section').find('.btn-next').css('display') != "none") {
                    mydhr.Spacer.resize($(this).closest('div.form-section'));
                }
            }
        }
    });

    $('body').delegate('.form-section-content .hideAddDiv', 'click', function () {
        if (!$(this).is(':disabled')) {
            if ($(this).prop('type') == 'radio' || $(this).prop('type') == 'checkbox') {
                if ($(this).closest('div.form-section').find('.btn-next').css('display') != "none")
                    $('.spacer').height(1000);
                hideAdd(this, '.form-section-content');
                //Resize spacer if current page is last page visible
                if ($(this).closest('div.form-section').find('.btn-next').css('display') != "none"/* && $(this).closest('div.form-section').find('.addDiv').css('display') != "none"*/) {
                    mydhr.Spacer.resize($(this).closest('div.form-section'));
                }
            }
        }
    });

    $('body').delegate('.modal-content .selectAddDiv', 'change', function () {
        var targetVal = $(this).attr('data-value');
        if ($(this).val() == targetVal)
            showAdd(this, '.modal-body');
        else
            hideAdd(this, '.modal-body');
    });

    $('body').delegate('.modal-content .showAddDiv', 'click', function () {
        showAdd(this, '.modal-body');
    });

    $('body').delegate('.modal-content .hideAddDiv', 'click', function () {
        hideAdd(this, '.modal-body');
    });
    $('body').delegate('.disabledAnchor', 'click', function (e) {
        if ($(this).attr("disabled") == "disabled") {
            e.preventDefault();
            return false;
        }
    });
    mydhr.Spacer.resize();

    
    //#endregion


    // if ajax requests hit a 403 the application has timed out
    $(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
        if (jqXHR.status == 401) {
            window.location = jqXHR.responseText;
        }
    });
};

mydhr.FileUploader = mydhr.FileUploader || {};
mydhr.FileUploader.tags = mydhr.FileUploader.tags || {};

mydhr.FileUploader.initialize = function (selector) {
    $(selector).fileupload({
        dataType: 'json',
        url: this.tags.addURL,
        replaceFileInput: false,
        add: mydhr.FileUploader.add,
        done: mydhr.FileUploader.done
    });
};

mydhr.FileUploader.add = function (e, data) {
    $('input[type=file]').attr('readonly', true);
    var fileName = $('input[type=file]').val().replace(/^.*[\\\/]/, '');

    var fileNameFormat = fileName + "{0}";
    fileName = fileNameFormat.format("");
    var i = 1;
    while ($("span:contains('" + fileName + "')").length !== 0)
        fileName = fileNameFormat.format("[" + (i++) + "]");

    $("#uploadFile").parent().after('<div class="col-xs-12 offset2"><span>' + fileName + '</span><img src="'+ mydhr.FileUploader.tags.loadingGIF +'" id="loadingGif"><span id="scanning">&nbsp;&nbsp;&nbsp;' + mydhr.FileUploader.tags.scanning + '</span></div>');
    data.submit();
};

mydhr.FileUploader.done = function (e, data) {
    var file = $('input[type=file]').val().replace(/^.*[\\\/]/, '');
    var fileName = $("span:contains('" + file + "')").last().text();
    var returnFileName = data.result.file;
    $("#loadingGif").remove();
    $("#scanning").remove();
    if (data.result.success === "clean") {
        $("span:contains('" + fileName + "')").last().after('&nbsp;&nbsp;&nbsp;&nbsp;<a onclick="mydhr.FileUploader.removeFile(this)">'+ mydhr.FileUploader.tags.remove +'</a>');
        var $hiddenInput = $('<input/>', { type: 'hidden', name: 'Files', id: fileName });
        $hiddenInput.val(returnFileName);
        $hiddenInput.appendTo('form');
    }
    else if (data.result.success === "virus") {
        $("span:contains('" + fileName + "')").after('<span style="color:#FF0000">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'+ mydhr.FileUploader.tags.virus +'</span>')
    }
    else {
        $("span:contains('" + fileName + "')").after('<span style="color:#FF0000">&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;'+ mydhr.FileUploader.tags.error +'</span>')
    }
    //$('input[type=file]').replaceWith('<input type="file" name="uploadFile" id="uploadFile">');
    startWidget();
};

mydhr.FileUploader.removeFile = function (e) {
    var text = $(e).prev();
    var fileName = text.text();
    text.parent().remove();
    var fileinput = document.getElementById(fileName);
    var returnFileName = fileinput.value;
    fileinput.parentNode.removeChild(fileinput);
    $.post(mydhr.FileUploader.tags.removeURL, { file: returnFileName });
};;
; var mydhr = mydhr || {};
mydhr.Spacer = mydhr.Spacer || {};

mydhr.Spacer.viewportHeight = mydhr.Spacer.viewportHeight || 0;
mydhr.Spacer.navHeight = mydhr.Spacer.navHeight || 0;
mydhr.Spacer.subNavHeight = mydhr.Spacer.subNavHeight || 0;
mydhr.Spacer.footerHeight = mydhr.Spacer.footerHeight || 0;
mydhr.Spacer.otherHeight = mydhr.Spacer.otherHeight || 0;

mydhr.Spacer.resize = function (container, dontMinimizeScrolling) {
    this.updateHeights();
    if (!container)
        container = { height: function () { return -90; } };
    var containerHeight = container.height();
    //var spacerHeight = (viewportHeight - containerHeight) - (footerHeight + subNavHeight);
    var spacerHeight = this.viewportHeight - (containerHeight + /*this.navHeight +*/ this.subNavHeight + this.footerHeight + this.otherHeight);
    if (spacerHeight < 0) {
        $('.spacer').height(0);
    } else if (!dontMinimizeScrolling && spacerHeight - this.navHeight > 0 && container.offset && typeof(container.offset) == 'function' && container.offset() && container.offset().top && container.offset().top < this.navHeight + this.subNavHeight + 10) {
        $('.spacer').height(spacerHeight - this.navHeight);
    }
    else {
        $('.spacer').height(spacerHeight);
    }
    if ($('.page-sidebar').length > 0) {
        $('.page-sidebar').css('max-height', this.viewportHeight - (this.subNavHeight + this.footerHeight));
    }
};
mydhr.Spacer.resizeAndScroll = function (container, toHere) {
    this.resize(container);
    this.scroll(container, toHere);
};
mydhr.Spacer.scroll = function (container, toHere, delay, duration, forceZeros) {
    this.updateHeights();
    delay = delay || 500;
    duration = duration || 600;
    if (forceZeros)
        delay = duration = 0;
    if (!toHere) {
        if (!container || !container.offset())
            toHere = this.navHeight;
        else
            toHere = container.offset().top - this.subNavHeight - this.otherHeight + 1;
    }
    $('html, body').delay(delay).animate({
        scrollTop: toHere
    }, duration);
};
mydhr.Spacer.updateHeights = function () {
    this.viewportHeight = $(window).height();
    this.navHeight = $('#mainNav').outerHeight();
    this.subNavHeight = $('.subnav').outerHeight();
    this.footerHeight = $('.footer').outerHeight();
    this.otherHeight = 0;
    other = $('.other-fixed');
    for (var i = 0; i < other.length; i++) {
        if ($(other[i]).css('display') != 'none')
            this.otherHeight += $(other[i]).outerHeight();
    }
};
mydhr.Spacer.getCurrentLocation = function () {
    return document.body.scrollTop;
};
$(window).load(function () {
    //set spacer
    mydhr.Spacer.resize($('.form-section'));
});
;
