﻿var FedRegApiJsonUrl = "/jsonrequests/fedregapi.aspx";
var IGN_LOGIN_COOKIE_NAME = "ignlogin";
var COOKIE_LIFE_DAYS = 365*5;
var FED_REG_ACTION_LOGIN = "login";
var FED_REG_ACTION_WRITE_COOKIE = "writecookie";
var loginEmail;
var LoginStatus = {
    "Invalid" : 0,
    "Good" : 1,
    "Error" : 2,
    "IncorrectLogin" : 3,
    "LoginRateExceeded" : 4
}
var ProfileStatus = {
    "Invalid" : 0,
    "Good" : 1,
    "Error" : 2,
    "RequireUniqueNick" : 3,
    "RequireVerifiedEmail" : 4
}

$(document).ready( function() { 
	// bind enter key in email field
    $("#fedregLoginEmail").keyup(function(e) 
    {
        if(e.keyCode == 13)
            fedreg_submitLogin();
    });
    
    // bind enter key in password field
    $("#fedregLoginPassword").keyup(function(e) 
    {
        if(e.keyCode == 13)
            fedreg_submitLogin();
    });
    
})

function showLoginOverlay()
{
    showLoading();
    setUpLoginOverlay();
    
    // Post event to Omniture
    if (typeof(s_AjaxLinkTrackEvent) != "undefined")
	{
		s_AjaxLinkTrackEvent("event5", "Show Login Overlay");
	}
    
    // Load the overlay
    var height = $("#fedregLoginOverlayWrapper").height() + 10;
    tb_callshow("", "#TB_inline?width=584&height=" + height + "&inlineId=fedregLoginOverlayWrapper", "");
}

function fedreg_submitLogin() 
{  
     if (validateEmail() && validatePassword()) 
     {
        $("#loginOverlay_error").hide();
        document.body.style.cursor = "wait";

        loginEmail = $.trim($("#fedregLoginEmail").val());
        var password = $.trim($("#fedregLoginPassword").val());

        $.ajax({
            type: "POST",
            url: FedRegApiJsonUrl,
            data: { a: FED_REG_ACTION_LOGIN, e: loginEmail, p: password },
            cache: false,
            dataType: "json",
            success: function(jsonData) { checkLogin(jsonData); },
            error: function() { showLoginError(""); }
        })
    }
}

function setUpLoginOverlay()
{   
    $("#fedregLogin").show();
    $("#fedregLoginMultiple").hide();
    $("#loginOverlay_error").hide();
    
    $("#fedregLoginEmail").val("");
    $("#fedregLoginPassword").val("");
    
    $("#fedregLoginEmail").focus();

    $("#fedregLoginEmail_error").text("");
    $("#fedregLoginPassword_error").text("");
}

function checkLogin(jsonData)
{   
    switch (jsonData.LoginStatus)
    {
        case LoginStatus.Good :
            if (jsonData.LoginCookie.length == 1)
                doSingleLogin(jsonData);
            else if (jsonData.LoginCookie.length > 1)
                doMultipleLogins(jsonData);
            break;
        case LoginStatus.IncorrectLogin :
            showLoginError("Incorrect login.");
            break;
        case LoginStatus.LoginRateExceeded :
            showLoginError("Login rate exceeded.");
            break;
        case LoginStatus.Error :
            showLoginError("Login error: " + jsonData.ErrorMessage);
            break;
        case LoginStatus.Invalid :
            showLoginError("");
            break;
    }
    
}

function doSingleLogin(jsonData)
{
    document.body.style.cursor = 'wait';
    window.location = location.pathname + "?lo=1";
}

function doMultipleLogins(jsonData)
{
    document.body.style.cursor = "default";
    
    $("#fedregLogin").hide();
    $("#fedregLoginMultiple").show();
    $("#fedregMultipleLogins").html("");
    
    $(".loginOverlayEmail").html(loginEmail);
    
    var profileClass;
    $.each(jsonData.LoginCookie, function(index, cookie) {
        //global replace to add back the extra back slashes
        cookie = cookie.replace(/\\/g, "\\\\");
        
        profileClass = (index % 2) + 1;
        
        $("#fedregMultipleLogins").append('<div class="profile' + profileClass + '"><a href="#" onclick="writeLoginCookie(\'' + cookie + '\')">' + jsonData.Nick[index] + '</a></div>');
    });
}

function writeLoginCookie(ignLoginCookie)
{    
    document.body.style.cursor = "wait";
    
    $.ajax({
        type: "POST",
        url: FedRegApiJsonUrl,
        cache: false,
        data: { a: FED_REG_ACTION_WRITE_COOKIE, c: ignLoginCookie },
        dataType: "json",
        success: function(jsonData) { checkWrite(jsonData); },
        error: function() { showLoginError(""); }
    })
}

function checkWrite(jsonData)
{
    switch (jsonData.LoginStatus)
    {
        case LoginStatus.Good :
            doSingleLogin(jsonData);
            break;
        case LoginStatus.IncorrectLogin :
            showLoginError("Incorrect login.");
            break;
        case LoginStatus.LoginRateExceeded :
            showLoginError("Login rate exceeded.");
            break;
        case LoginStatus.Error :
            showLoginError("Login error: " + jsonData.ErrorMessage);
            break;
        case LoginStatus.Invalid :
            showLoginError("");
            break;
    }
}

function showLoginError(message)
{
    document.body.style.cursor = "default";
    $("#loginOverlay_error").show();
    
    if (message.length > 0)
        $("#loginOverlay_error").text(message);
    else
        $("#loginOverlay_error").text("Error.");
}

function validateEmail()
 {
    var regexValidEmail = new RegExp("^([a-zA-Z0-9_\\-])+(\\.([a-zA-Z0-9_\\-])+)*@((\\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\\]))|((([a-zA-Z0-9])+(([\\-])+([a-zA-Z0-9])+)*\\.)+([a-zA-Z])+(([\\-])+([a-zA-Z0-9])+)*))$");
    
    $("#fedregLoginEmail_error").text(""); 
    
    if ($("#fedregLoginEmail").val().length == 0) 
    {
        $("#fedregLoginEmail_error").text("*");    
        return false;
    }

    if (!regexValidEmail.test($("#fedregLoginEmail").val())) 
    {
        $("#fedregLoginEmail_error").text("Invalid Email Format");
        return false;
    }

    return true;
}

function validatePassword() 
{
    $("#fedregLoginPassword_error").text(""); 
    
    if ($("#fedregLoginPassword").val().length == 0) 
    {
        $("#fedregLoginPassword_error").text("*");
        return false;
    }
    
    return true;
}
