﻿(function ($) {
    $(document).ready(function () {
        //$.MasterJS.Initialize();
    });
})(jQuery);

$.MasterJS = {

    //DefaultController: 'Dashboard/Index',
    CurrentLocation: '',
    CurrentController: '',
    CurrentVars: '',
    CurrentVarsParsed: '',

    getIEVersion: function () {
        var rv = -1; // Return value assumes failure.
        if (navigator.appName == 'Microsoft Internet Explorer') {
            var ua = navigator.userAgent;
            var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
            if (re.exec(ua) != null)
                rv = parseFloat(RegExp.$1);
        }
        return rv;
    },

    SendEmail: function () {
        $.HelperJS.Ajax({ type: 'POST', url: 'Public/SendEmail', data: $('#frmSendEmail').serialize() });
        $.MasterJS.CloseProfile();
    },

    UploadToInstitute: function () {
        var data = $("#frmUploadToInstitute").serialize();
        $.HelperJS.Ajax({ type: 'POST', url: 'ResearchCommentary/FISGroupInstituteFilesSend', data: data });
        $.MasterJS.CloseProfile();
    },

    UploadBIC: function () {
        var clean = true;
        $("#frmUploadBIC input, #frmUploadBIC select").not("#Suite").each(function () {
            if ($(this).val() == "")
                clean = false;

        });

        if (!clean) {
            alert("All fields are required");
            return;
        }

        var data = $("#frmUploadBIC").serialize();
        $.HelperJS.Ajax({ type: 'POST', url: 'ResearchCommentary/BICFilesSend', data: data, success: function () { $.MasterJS.ChangeSubDivBIC('divProfileBIC', 'ResearchCommentary/BICThankYou'); } });

    },

    ChangeSubDiv: function (div, link) {
        $("#divProfile2").html("");
        $.HelperJS.Ajax({ div: div, type: 'GET', url: link });
        var maskHeight = $.MasterJS.getIEVersion() >= 8 ? $(document).height() - 4 : $(document).height();
        var maskWidth = $.MasterJS.getIEVersion() >= 8 ? $(document).width() - 4 : $(document).width();
        $('#mask').css({ 'width': maskWidth, 'height': maskHeight });
        $('#mask').fadeTo("slow", 0.2);
        $("#divProfileContainer").center();
        $("#divProfileContainer").fadeTo("slow", 1);
    },



    ChangeSubDivBIC: function (div, link) {
        window.scrollTo(0, 0);
        $("#divProfileBIC").html("");
        $.HelperJS.Ajax({ div: div, type: 'GET', url: link });
        var maskHeight = $.MasterJS.getIEVersion() >= 8 ? $(document).height() - 4 : $(document).height();
        var maskWidth = $.MasterJS.getIEVersion() >= 8 ? $(document).width() - 4 : $(document).width();
        $('#mask').css({ 'width': maskWidth, 'height': maskHeight });
        $('#mask').fadeTo("slow", 0.2);
        $("#divProfileContainerBIC").center();
        $("#divProfileContainerBIC").fadeTo("slow", 1);
    },

    ChangeSubDivFromDiv: function (divTo, divFrom) {
        $("#divProfile2").html("");
        $("#divProfile2").html($("#" + divFrom).html());
        var maskHeight = $.MasterJS.getIEVersion() >= 8 ? $(document).height() - 4 : $(document).height();
        var maskWidth = $.MasterJS.getIEVersion() >= 8 ? $(document).width() - 4 : $(document).width();
        $('#mask').css({ 'width': maskWidth, 'height': maskHeight });
        $('#mask').fadeTo("slow", 0.2);
        $("#divProfileContainer").center();
        $("#divProfileContainer").fadeTo("slow", 1);
    },

    CloseProfile: function () {
        $("#mask").hide();
        $("#divProfileContainer").hide();
    },


    CloseProfileBIC: function () {
        $("#mask").hide();
        $("#divProfileContainerBIC").hide();
    },


    NotifyMainDiv: function () {
        return true;
    },

    ValidateMainDiv: function (isChanged, vars) {
        return true;
    },
    ResetMainDivFunctions: function () {
        $.MasterJS.NotifyMainDiv = function () { return true; };
        $.MasterJS.ValidateMainDiv = function (isChanged, vars) { return true; };
    },

    Initialize: function () {
        $.MasterJS.CurrentLocation = window.location.toString();
        $.MasterJS.UrlChanged();

        $(window).resize(function () {
            var maskHeight = $.MasterJS.getIEVersion() >= 8 ? $(document).height() - 4 : $(document).height();
            var maskWidth = $.MasterJS.getIEVersion() >= 8 ? $(document).width() - 4 : $(document).width();
            $('#mask').css({ 'width': maskWidth, 'height': maskHeight });
            $("#divProfileContainer").center();

        });

        $(document).click(function (e) {
            var v = e.currentTarget.activeElement;
        });

        // create timer to check for URL changes
        window.setInterval(function () {
            if ($.MasterJS.CurrentLocation != window.location.toString()) {
                $.MasterJS.CurrentLocation = window.location.toString();
                $.MasterJS.UrlChanged();
            }
        }, 100);
    },

    LoadDefault: function () {
        if (DefaultController == null || DefaultController == "")
            return;
        var url = window.location.toString();
        // Get everything left of the # sign if it exists
        var tmp = url.indexOf("#") > -1 ? url.substring(0, url.indexOf("#") - 1) : url;
        // Determine if '/' character is needed before adding default #Controller/Method
        var def = tmp.substring(tmp.length - 1) == "/" ? "#" + DefaultController : "/#" + DefaultController;
        // Navigate to Default URL
        window.location = tmp + def;
    },

    UrlChanged: function () {
        if ($.MasterJS.ParseUrl() || $.MasterJS.CurrentController == '')
            $.MasterJS.CurrentController == '' ? $.MasterJS.LoadDefault() : $.MasterJS.LoadMainDiv();
        else {
            $.MasterJS.NotifyMainDiv();
        }
    },

    LoadMainDiv: function (div) {
        $.HelperJS.Ajax({ div: 'divMain', resetMain: true, type: 'GET', url: $.MasterJS.CurrentController, data: $.MasterJS.CurrentVars });
    },

    GetControllerFromUrl: function (url) {
        // Location of '#' in URL
        var iPound = url.indexOf('#');
        var iVars = url.indexOf('?');

        return iVars > -1 ? url.substring(iPound + 1, iVars) : url.substring(iPound + 1);
    },

    ParseUrl: function () {
        var tmpView = '';
        var tmpVars = '';
        // variable to return if Controller/Method changed or not
        var bControllerChanged = false;

        // Location of '#' in URL
        var iPound = $.MasterJS.CurrentLocation.indexOf('#');

        // Location of '?' in URL
        var iVars = $.MasterJS.CurrentLocation.indexOf('?');

        // string that contains name of Controller (between # and ? (if ? exists))
        if (iPound > -1 && $.MasterJS.CurrentLocation.length > (iPound + 1)) {
            // Get Controller (between # and ?)
            if (iVars > -1 && $.MasterJS.CurrentLocation.length > (iVars + 1)) {
                tmpView = $.MasterJS.CurrentLocation.substring(iPound + 1, iVars)
            }
            // Get Controller (there are no vars)
            else {
                tmpView = iVars > -1 ? $.MasterJS.CurrentLocation.substring(iPound + 1, iVars) : $.MasterJS.CurrentLocation.substring(iPound + 1);
            }
        }

        // Get Vars after ?
        tmpVars = iVars > -1 && $.MasterJS.CurrentLocation.length > (iVars + 1) ? $.MasterJS.CurrentLocation.substring(iVars + 1) : '';

        bControllerChanged = $.MasterJS.CurrentController == tmpView ? false : true;

        $.MasterJS.CurrentController = tmpView;
        $.MasterJS.CurrentVars = tmpVars;
        $.MasterJS.CurrentVarsParsed = $.MasterJS.ParseUrlVars($.MasterJS.CurrentVars);

        return bControllerChanged;
    },

    ParseUrlVars: function (urlVars) {
        var vars = [], hash;
        var hashes = urlVars.slice(urlVars.indexOf('?') + 1).split('&');

        for (var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }

        return vars;
    },

    NavigateTo: function (link) {
        var isChanged = $.MasterJS.GetControllerFromUrl(link) == $.MasterJS.CurrentController ? false : true;
        var tmp = $.MasterJS.CurrentVars != "" ? "?" + $.MasterJS.CurrentVars : "";
        if (link == '#' + $.MasterJS.CurrentController + tmp)
            $.MasterJS.LoadMainDiv();
        else {
            if ($.MasterJS.ValidateMainDiv(isChanged, $.MasterJS.ParseUrlVars(link))) {
                window.location = SITE_ROOT + link;
            }
        }
    },

    ResetValidationMessages: function (form) {
        if (form != "")
            form = form.substring(0, 1) == "#" ? form + " " : "#" + form + " ";
        // removes validation from input fields
        $(form + ".input-validation-error").addClass("input-validation-valid");
        $(form + ".input-validation-error").removeClass("input-validation-error");

        //removes validation after input fields
        $(form + ".field-validation-error").addClass("field-validation-valid");
        $(form + ".field-validation-error").removeClass("field-validation-error");

        //removes validation summaries
        $(form + ".validation-summary-errors").addClass("validation-summary-valid");
        $(form + ".validation-summary-errors").removeClass("validation-summary-errors");

        //removes custom validation messages
        $(form + ".val-box").hide();
    },

    FadeImagesWithTimer: function (div) {

        var newDiv = "";
        switch (div) {
            case "divh1":
                newDiv = "divh2";
                break;
            case "divh2":
                newDiv = "divh3";
                break;
            case "divh3":
                newDiv = "divh4";
                break;
            case "divh4":
                newDiv = "divh1";
                break;
        }

        $.MasterJS.FadeImages("divHomeImages", newDiv);

        setTimeout("$.MasterJS.FadeImagesWithTimer('" + newDiv + "');", 5000);

    },

    FadeImages: function (con, div) {

        var $active = $('#' + con + ' div.active');
        var $next = $("#" + div);

        if ($active.attr("id") == $next.attr("id"))
            return;

        $active.addClass('last-active');

        $next.css({ opacity: 0.0 })
            .addClass('active')
            .animate({ opacity: 1.0 }, 1000, function () {
                $active.removeClass('active last-active');
            });

        $("[id^='a_']").attr("class", "");
        $("#a_" + div.replace("div", "")).attr("class", "selected");
    },

    ToggleFAQ: function (id) {
        $("[id^='faqq']").each(function () {
            var a = this.id.replace("faqq", "faqa");
            $("#" + a).hide();
        });
        $("#" + id.replace("faqq", "faqa")).show();
    },

    ShowDiv: function (div) {
        $("#" + div).fadeIn(2000);
        return;
        $("#" + div).show();
    },

    HideDiv: function (div) {
        $("#" + div).hide();
    },

    ToggleDiv: function (div) {
        $("#" + div).toggle();
    },

    CycleEmployeesIsRunning: false,

    CycleEmployeesStart: function () {
        if ($.MasterJS.CycleEmployeesIsRunning == true)
            return;
        $.MasterJS.CycleEmployeesIsRunning = true;
        $.MasterJS.CycleEmployees();
    },

    CycleEmployees: function () {

        var newpage = 1;
        if ($("#CurrentEmployee").length) {
            newpage = parseInt($("#CurrentEmployee").val()) + 1;
        }
        newpage = newpage < 1 ? 1 : newpage;
        $("#CurrentEmployee").val(newpage);
        $("#divcepics").hide();
        $.HelperJS.Ajax({ div: 'divCycleEmployees', type: 'GET', url: 'Public/CycleEmployees', data: 'Id=' + newpage, success: function () { window.setTimeout("$.MasterJS.CycleEmployees()", 5000); } });
        $("#divCycleEmployees").fadeIn(1500);


    },

    FadeIPImages: function (div) {

        $("#divipimages").show();

        switch (div) {
            case "divip1":
                $("#" + "divip1").delay(50).fadeIn(2000);
                $("#" + "divip2").delay(100).fadeOut(2000)
                $("#" + "divip3").delay(150).fadeOut(2000);
                $("#" + "divip4").delay(200).fadeOut(2000);
                $("#" + "divip5").delay(250).fadeOut(2000);
                break;
            case "divip2":
                $("#" + "divip1").delay(50).fadeIn(2000);
                $("#" + "divip2").delay(100).fadeIn(2000)
                $("#" + "divip3").delay(150).fadeOut(2000);
                $("#" + "divip4").delay(200).fadeOut(2000);
                $("#" + "divip5").delay(250).fadeOut(2000);
                break;
            case "divip3":
                $("#" + "divip1").delay(50).fadeIn(2000);
                $("#" + "divip2").delay(100).fadeIn(2000)
                $("#" + "divip3").delay(150).fadeIn(2000);
                $("#" + "divip4").delay(200).fadeOut(2000);
                $("#" + "divip5").delay(250).fadeOut(2000);
                break;
            case "divip4":
                $("#" + "divip1").delay(50).fadeIn(2000);
                $("#" + "divip2").delay(100).fadeIn(2000)
                $("#" + "divip3").delay(150).fadeIn(2000);
                $("#" + "divip4").delay(200).fadeIn(2000);
                $("#" + "divip5").delay(250).fadeOut(2000);
                break;
            case "divip5":
                $("#" + "divip1").delay(50).fadeIn(2000);
                $("#" + "divip2").delay(100).fadeIn(2000)
                $("#" + "divip3").delay(150).fadeIn(2000);
                $("#" + "divip4").delay(200).fadeIn(2000);
                $("#" + "divip5").delay(250).fadeIn(2000);
                break;
        }

    },

    FFFadeImagesWithTimer: function (div) {

        var newDiv = "";
        switch (div) {
            case "divff1":
                newDiv = "divff2";
                break;
            case "divff2":
                newDiv = "divff3";
                break;
            case "divff3":
                newDiv = "divff4";
                break;
            case "divff4":
                newDiv = "divff5";
                break;
            case "divff5":
                newDiv = "divff6";
                break;
            case "divff6":
                newDiv = "divff7";
                break;
            case "divff7":
                newDiv = "divff8";
                break;
            case "divff8":
                newDiv = "divff9";
                break;
            case "divff9":
                newDiv = "divff10";
                break;
            case "divff10":
                newDiv = "divff11";
                break;
            case "divff11":
                newDiv = "divff12";
                break;
            case "divff12":
                newDiv = "divff13";
                break;
            case "divff13":
                newDiv = "divff4";
                break;
            case "divff14":
                newDiv = "divff15";
                break;
            case "divff15":
                newDiv = "divff16";
                break;
            case "divff16":
                newDiv = "divff17";
                break;
            case "divff17":
                newDiv = "divff1";
                break;

        }

        $.MasterJS.FadeImages("divffpics", newDiv);

        setTimeout("$.MasterJS.FFFadeImagesWithTimer('" + newDiv + "');", 5000);

    },

    CEFadeImagesWithTimer: function (div) {

        var newDiv = "";
        switch (div) {
            case "divce1.1":
                newDiv = "divce1";
                break;
            case "divce1":
                newDiv = "divce2";
                break;
            case "divce2":
                newDiv = "divce3";
                break;
            case "divce3":
                newDiv = "divce4";
                break;
            case "divce4":
                newDiv = "divce5";
                break;
            case "divce5":
                newDiv = "divce6";
                break;
            case "divce6":
                newDiv = "divce7";
                break;
            case "divce7":
                newDiv = "divce8";
                break;
            case "divce8":
                newDiv = "divce1";
                break;

        }

        $.MasterJS.FadeImages("divcepics", newDiv);

        setTimeout("$.MasterJS.CEFadeImagesWithTimer('" + newDiv + "');", 8000);

    }

};    

