﻿var logonType;
var loc;
var randomNumber;
var response;
var activeId;

$(function () {
    randomNumber = $.query.get("chalVal");
    if (randomNumber) {
        parent.randomNumber = randomNumber;
        parent.$("#hiddenRandom").val(randomNumber);
        parent.redirect();
        parent.$("#hackDiv").remove();
    }    

    hookColorBox(".customersupport", 450, 540);

    loc = window.location.href;
    if (loc.indexOf("lenovo") >= 0) {
        $("#divHeader").css("background-image", "url('/Content/Account/Images/bgLogoLenovo.gif')");
        $("#Map > area").remove();
        appendPhoneModal();
    } else if (loc.indexOf("ascii") >= 0) {
        $("#divHeader").css("background-image", "url('/Content/Account/Images/bgLogoASCII.gif')");
        $("#Map > area").remove();
        appendPhoneModal();
    } else if (loc.indexOf("channelware") >= 0) {
        $("#divHeader").css("background-image", "url('/Content/Account/Images/bgLogoChannelWare.gif')");
        $("#Map > area").remove();
        appendPhoneModal();
    } else if (loc.indexOf("ingram") >= 0) {
        $("#divHeader").css("background-image", "url('/Content/Account/Images/bgLogoIngramMicro.gif')");
        $("#Map > area").remove();
        appendPhoneModal();
    } else if (loc.indexOf("va") >= 0) {
        $("#divHeader").css("background-image", "url('/Content/Account/Images/bgLogoVirtualAdmin.gif')");        
        $("#Map > area").remove();
    } else if (loc.indexOf("csd") >= 0) {
        $("#divHeader").css("background-image", "url('/Content/Account/Images/bgLogoCloud.gif')");
        $("#Map > area")
        .attr("href", "http://www.cloudservicesdepot.com/Support")
        .attr("target", "_blank")
        .attr("coords", "0,0,107,35")
        .removeAttr("onclick");
    } else if (loc.indexOf("bullterrier") >= 0) {
        $("#divHeader").css("background-image", "url('/Content/Account/Images/bgLogoTerrier.gif')");
        $("#Map > area").remove();
        appendPhoneModal();
    } else {
        $("#Map > area").remove();
        //appendPhoneModal();
    }

    if (loc.indexOf("free") >= 0) {
        $("#divContainer > h1").css("background-position", "0 900px");
        if (loc.indexOf("va") < 0 && loc.indexOf("csd") < 0) {
            appendPhoneModal();
        }
    } else if (loc.indexOf("toolkit") >= 0) {
        $("#divContainer > h1").css("background-position", "0 750px");
        if (loc.indexOf("va") < 0 && loc.indexOf("csd") < 0) {
            appendPhoneModal();
        }
    } else if (loc.indexOf("center") >= 0) {
        $("#divContainer > h1").css("background-position", "0 150px");
        $("#divContainer > h1").wrap($("<a />").attr("href", "http://www.kaseya.com/itcenter/K2v62upgrade.aspx").attr("target", "_blank"));
        if (loc.indexOf("va") < 0 && loc.indexOf("csd") < 0) {
            appendPhoneModal();
        }
    } else if (loc.indexOf("workbench") >= 0) {
        $("#divContainer > h1").css("background-position", "0 450px");
        if (loc.indexOf("va") < 0 && loc.indexOf("csd") < 0) {
            appendPhoneModal();
        }
    } else { // if (loc.indexOf("logon") >= 0) {
        $("#divContainer > h1").css("background-position", "0 300px");
        $("#divContainer > h1").wrap($("<a />").attr("href", "http://www.kaseya.com/itcenter/K2v62upgrade.aspx").attr("target", "_blank"));
        if (loc.indexOf("va") < 0 && loc.indexOf("csd") < 0) {
            appendPhoneModal();
        }
    }

    logonType = $.query.get("type");
    if (logonType) {
        switch (logonType) {
            case "free":
                $("a.customersupport").attr("href", "../CustomerSupport.aspx?serviceName=free"); break;
            case "toolkit":
                $("a.customersupport").attr("href", "../CustomerSupport.aspx?serviceName=toolkit"); break;
            case "workbench":
                $("a.customersupport").attr("href", "../CustomerSupport.aspx?serviceName=workbench"); break;
            case "center":
                $("a.customersupport").attr("href", "../CustomerSupport.aspx?serviceName=center"); break;
            case "portal":
                $("a.customersupport").attr("href", "../CustomerSupport.aspx?serviceName=portal"); break;
        }
    } else {
        if (loc.indexOf("free") >= 0) {
            logonType = "free";
        } else if (loc.indexOf("toolkit") >= 0) {
            logonType = "toolkit";
        } else if (loc.indexOf("center") >= 0) {
            logonType = "center";
        } else if (loc.indexOf("workbench") >= 0) {
            logonType = "workbench";
        }
    }

    var error = $.query.get("error");
    if (error) {
        $("ul.validation-summary-errors").append("<li>" + error + "</li>");
    }

    var indexError = document.location.href.indexOf("error");
    if (indexError > 0) {
        $("#saasGenericLogonUrl").val(document.location.href.substring(0, indexError - 1));
    }
    else $("#saasGenericLogonUrl").val(document.location.href);

    var cookieUser = readCookie("KaseyaUser");
    if (cookieUser != null) {
        $("#textBoxUsername").val(cookieUser);
        $('input[name=checkBoxRememberMe]').attr('checked', true);
    }

    var buttonForgot = $("#forgot");
    buttonForgot.click(function () {
        $("#throbber").show();
        changePassword();

        return false;
    });

    $("#buttonLogon").click(function () {
        if ($("form").valid()) {
            $("ul.validation-summary-errors > li").remove();
            submit();
        }
        return false;
    });


    var usernameElement = $.trim($("#textBoxUsername").val());
    var passwordElement = $.trim($("#textBoxPassword").val());
    if (usernameElement == '') {
        $("#textBoxUsername").focus();
    } else $("#textBoxPassword").focus();

    Recaptcha.create("6LclZsMSAAAAAB6Wlc0kgHdDqc934rzS-ZQeeXLJ}",
                "recaptcha_widget",
                {
                    theme: "custom",
                    callback: Recaptcha.focus_response_field
                }
            );
    $(document).bind('cbox_closed', function () {
        Recaptcha.reload();
    });

    $("form").validate({
        errorPlacement: function (error, element) {
            error.appendTo(element.parent());
            var pos = $(element).position();
            $(element).css({ "border": "1px solid red" });
            $(element).blur(function () {
                $(this).css({ "border": "1px solid #B5B8C8" });
            });
            $(element).nextAll("label.error").show();
            $(element).addClass("error");
        },
        rules: {
            textBoxUsername: {
                required: true,
                maxlength: 100
            },
            textBoxPassword: {
                required: true,
                maxlength: 100
            }
        }
    });
});

function appendPhoneModal() {
    var phoneArea = $("<area />")
        .attr("href", "http://www.kaseya.com/itToolkitSignup/customerService.html")
        .attr("target", "_blank")
        .attr("coords", "110,0,250,40")
        .attr("shape", "rect")
        .addClass("phoneArea");

    $("#Map").append(phoneArea);
    hookColorBox(".phoneArea", 575, 330, true);
}

function initialize() {
    var cache = Math.floor(Math.random() * 10000000);
    var url = "http://portal.kaseya.net/KaseyaCustomerPortal/announcementspage.aspx?_=" + cache + "&type=";
    switch (logonType) { //need to add FREE when announcement != toolkit
        case "center":
            url = url + "Center";
            break;
        case "workbench":
            url = url + "Workbench";
            break;
        case "portal":
            url = url + "Portal";
            break;
        case "toolkit":
            url = url + "Toolkit";
            break;
        case "free":
            url = url + "Free";
            break;
        default:
            url = url + "LogOn";
            break;
    }
    var feed = new google.feeds.Feed(url);
    feed.setNumEntries(5);
    feed.load(function (result) {
        display(result, true);
    });
}

function display(result, recurse) {
    if (!result.error) {
        appendFeed(result);
    }

    if (recurse) {
        var cache = Math.floor(Math.random() * 10000000);
        var url = "http://portal.kaseya.net/KaseyaCustomerPortal/announcementspage.aspx?_=" + cache + "&type=";

        if (loc.indexOf("lenovo") >= 0) {
            url = url + "lenovo";
        } else if (loc.indexOf("ascii") >= 0) {
            url = url + "ascii";
        } else if (loc.indexOf("channelware") >= 0) {
            url = url + "channelware";
        } else if (loc.indexOf("ingram") >= 0) {
            url = url + "ingram";
        } else if (loc.indexOf("va") >= 0) {
            url = url + "va";
        } else if (loc.indexOf("csd") >= 0) {
            url = url + "csd";
        } else if (loc.indexOf("bullterrier") >= 0) {
            url = url + "bullterrier";
        }

        var feed = new google.feeds.Feed(url);
        feed.setNumEntries(5);
        feed.load(function (result) {
            display(result, false);
        });
    }
}

function appendFeed(result) {
    var markup = "";
    for (var i = 0; i < result.feed.entries.length; i++) {
        markup += "<li>" +
                        "<h4>" + result.feed.entries[i].title + "</h4>" +
                            "<strong>" + result.feed.entries[i].publishedDate + "</strong>" +
                            " - " + result.feed.entries[i].content +
                    "</li>" +
                    "<li>";
    }

    $("#divAnnouncementFeed > ul").append(markup);
}

function hookColorBox(className, pxWidth, pxHeight, scroll) {
    $(className).colorbox({ width: pxWidth, height: pxHeight, iframe: true, opacity: 0.40, scrolling: scroll ? scroll : false, overlayClose: false });
}

function hookColorBoxWithContent(url, pxWidth, pxHeight) {
    $.fn.colorbox({ href: url, width: pxWidth, height: pxHeight, iframe: true, opacity: 0.40, scrolling: false, overlayClose: false });
}

function rememberUsername(user) {
    createCookie("KaseyaUser", user, 365);
}

function hashPwd(user, pwd) {
    return coverPass(pwd, user);
}

function hashPwd256(user, pwd) {
    return coverPass256(pwd, user);
}

function submit() {
    $("#throbber").show();
    var usernameElement = $.trim($("#textBoxUsername").val());
    var passwordElement = $.trim($("#textBoxPassword").val());

    var password = hashPwd(usernameElement, passwordElement);
    randomNumber = String(Math.random()).substring(2, 16);
    password = hashPwd(randomNumber, password);

    var password2 = hashPwd256(usernameElement, passwordElement);
    password2 = hashPwd256(randomNumber, password2);

    $('#hiddenPassword').val(password);
    $('#hiddenPassword2').val(password2);
    $('#hiddenRandom').val(randomNumber);

    var rememberMe = $('#checkBoxRememberMe:checked').val();
    if (rememberMe != "on") {
        var cookieUser = readCookie("KaseyaUser");
        if (cookieUser != null) { setCookie("KaseyaUser", null, -1); }
    } else createCookie("KaseyaUser", usernameElement, 365);

    var url = "/Handlers/Account/LogOn.ashx";
    //    $("form").ajaxSubmit({ url: url, type: "POST", dataType: "json", success: logonSuccess });
    $.ajax({
        type: "POST",
        dataType: "json",
        url: url,
        data: $("form").serialize(),
        success: logonSuccess
    });
}

$.fn.wait = function (time, type) {
    time = time || 1000;
    type = type || "fx";
    return this.queue(type, function () {
        var self = this;
        setTimeout(function () {
            $(self).dequeue();
        }, time);
    });
};

function logonSuccess(data) {
    if (data.ErrorMessage) {
        $("#throbber").hide();
        try {
            $.fn.colorbox.close();
        } catch (error) { }
        $("ul.validation-summary-errors").append("<li>" + data.ErrorMessage + "</li>");

        if ($("#areYouHuman").is(":visible")) {
            Recaptcha.reload();
        }

        if (data.SessionId == -1) {
            $("#divAnnouncements").hide();
            $("#areYouHuman").show();
        }
    } else {
        if (data.UserServices > 1) {
            var url = "/Account/UserServices.aspx?type=" + logonType;
            hookColorBoxWithContent(url, 500, 300);
            $("#throbber").hide();
        } else {
            //            var iframe = $("<iframe />").attr("id", "hack").attr("name", "hack").attr("frameborder", "0").attr("width", "0").attr("height", "0");
            //            $("#hackDiv").append(iframe);
            //            var form = $("<form />").attr("method", "POST").attr("action", data.RedirectUrl + "/access/logon.asp").attr("name", "challengeForm").attr("target", "hack").css("display", "none");
            //            var input = $("<input />").attr("type", "text").attr("id", "retChallenge").attr("name", "retChallenge").val(location.protocol + "//" + location.host + "?chalVal=");
            //            form.append(input);
            //            $("#hackDiv").append(form);
            //            form.submit();
            response = data;

            if (data.Version == "UseRedirectUrl") {
                window.location = data.RedirectUrl;
            }
            else {
                redirect();
            }
            // window.location = data.RedirectUrl;
        }
    }
}

function redirect() {
    $("form").attr("action", response.RedirectUrl + "/access/logon.asp");
    var usernameElement = $.trim($("#textBoxUsername").val());
    var passwordElement = $.trim($("#textBoxPassword").val());

    var password = hashPwd(usernameElement, passwordElement);
    randomNumber = String(Math.random()).substring(2, 16);
    password = hashPwd(randomNumber, password);

    var password2 = hashPwd256(usernameElement, passwordElement);
    password2 = hashPwd256(randomNumber, password2);

    activeId = $.query.get("activeId");

    if (activeId) {
        $('#activeId').val(activeId);
    }

    $('#hiddenPassword').val(password);
    $('#hiddenPassword2').val(password2);
    $('#hiddenRandom').val(randomNumber);

    $("#throbber").hide();
    $("form").submit();
}

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return null;
}

function deleteCookie(name) {
    document.cookie = name +
    '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
}

function changePassword() {
    var usernameElement = $("#textBoxUsername").val();
    usernameElement = $.trim(usernameElement);

    if (usernameElement) {
        var url = "/Handlers/Account/ChangePassword.ashx";
        $("ul.validation-summary-errors > li").remove();
        $("form").ajaxSubmit({ url: url, type: "POST", dataType: "json", success: changePasswordSuccess });
    } else {
        $("#textBoxUsername").css({ "border": "1px solid red" });
        $("#textBoxUsername").blur(function () {
            $(this).css({ "border": "1px solid #B5B8C8" });
        });
        $("#textBoxUsername").nextAll("label.error").show();
        $("#textBoxUsername").addClass("error");
        $("#textBoxUsername").after(
                $("<label />").addClass("error").text("THIS FIELD IS REQUIRED.")
            );
        $("#throbber").hide();
    }

    $("#textBoxUsername").keypress(function () {
        $(this).next("label").remove();
    });
}

function changePasswordSuccess(data) {
    $("#throbber").hide();
    if (data.ErrorMessage) {
        try {
            $.fn.colorbox.close();
        } catch (error) { }
        $("ul.validation-summary-errors").append("<li>" + data.ErrorMessage + "</li>");
    } else {
        if (data.UserServices > 1) {
            var url = "/Account/ChangePassword.aspx";
            hookColorBoxWithContent(url, 500, 300);
        }
    }
}

function buildServiceList(data, scope) {
    var length = data.ServiceNames.length;
    if (length > 0) {
        var ul = $("<ul />");
        for (var i = length - 1; i >= 0; i--) {
            var li = $("<li />");
            var a = $("<a />")
                            .attr("href", "#")
                            .attr("serviceName", data.ServiceNames[i])
                            .attr("serviceHost", data.ServiceHosts[i])
                            .text(data.ServiceNames[i])
                            .addClass("services");

            li.append(a);
            ul.append(li);
        }

        $("#userServices", scope).append(ul);
    }
}
