﻿function Security()
{
    this.Login = Login;
    this.LoginPrompt = LoginPrompt;
    this.Logout = Logout;
    this.HeaderRetrieve = HeaderRetrieve;
    this.RememberMe = RememberMe;
    this.MyFavoritesPageLoad = MyFavoritesPageLoad;
        
    function Login(redirectUrl, useAlternateFields)
    {
        var un, pwd;
        
        if (useAlternateFields == 1)
        {
            un = $('#iLoginEmail').val();
            pwd = $('#iLoginPassword').val();        
        }
        else
        {
            un = $('#loginEmail').val();
            pwd = $('#loginPassword').val();
        }
        
        if(un.length == 0 || pwd.length == 0)
            alert('Username and password is required');
        else
        {
            var context = {RedirectUrl: redirectUrl}
            Deluxe.SecurityAPI.Login(un, pwd, Login_callback, context);
        }        
    }
    function Login_callback(res)
    {
        if (res.error && res.error.Message != 'Unknown')
            alert(res.error.Message)
        else
        {
            var x = res.value;
            var errMsg = $(x).find('err').text();
            if (errMsg.length > 0)
            {
                alert(errMsg);
            }
            else
            {
                if (res.context.RedirectUrl != null)
                    window.location = res.context.RedirectUrl;
                else
                    window.location.reload();
            }
        }
    }

    function LoginPrompt(redirectUrl, useAlternateFields, process, itemID)
    {
        var un, pwd;
        
        if (useAlternateFields == 1)
        {
            un = $('#iLoginEmail').val();
            pwd = $('#iLoginPassword').val();        
        }
        else
        {
            un = $('#loginEmailVersion2').val();
            pwd = $('#loginPasswordVersion2').val();
        }
        
        if(un.length == 0 || pwd.length == 0)
            alert('Username and password is required');
        else
        {
            var context = {RedirectUrl: redirectUrl, ItemID: itemID, Process: process}
            Deluxe.SecurityAPI.Login(un, pwd, LoginPrompt_callback, context);
        }
    }

    function LoginPrompt_callback(res)
    {
        if (res.error && res.error.Message != 'Unknown')
            alert(res.error.Message)
        else
        {
            var _insightPrompt = new Insight();
            var x = res.value;
            var errMsg = $(x).find('err').text();
            if (errMsg.length > 0)
            {
                alert(errMsg);
            }
            else if (res.context.Process == 'AddFav')
            {
                // continue 'Add Insight to Favorites' process here
                _insightPrompt.AddInsightToFavorites(res.context.ItemID, 1, 1)
            }
            else if (res.context.Process == 'AddSolFav')
            {
                // continue 'Add Solution to Favorites' process here
                _insightPrompt.AddSolutionToFavorites(res.context.ItemID, 1)
            }
            else if (res.context.Process == 'GoToUrl')
            {
                // continue 'Insight redirect' process here
                _insightPrompt.RedirectToInsight(res.context.ItemID)
            }
            else if (res.context.Process == 'GoToAsset')
            {
                // continue 'Insight redirect' process here
                _insightPrompt.RedirectToAsset(res.context.ItemID)
            }
            else if (res.context.Process == 'GoToKQIssue')
            {
                // continue 'Insight redirect' process here
                _insightPrompt.RedirectToKQIssue(res.context.ItemID)
            }
            else if (res.context.Process == 'RegisterWeb')
            {
                // continue 'Webinar Register' process here
                _insightPrompt.WebinarRegister(res.context.ItemID, 1)
            }
        }
    }

    function Logout()
    {
        Deluxe.SecurityAPI.Logout(Logout_callback);
    }
    function Logout_callback(res)
    {
        var url = window.location.href;
        url = url.toLowerCase();
        if (url.indexOf('my_profile.aspx') > 0 || url.indexOf('new_member.aspx') > 0)
        {
            window.location.href = 'http://www.deluxeknowledgeexchange.com';
        }
        else
        {
            window.location.reload();
        }
    }
    
    function HeaderRetrieve()
    {
        Deluxe.SecurityAPI.HeaderRetrieve(HeaderRetrieve_callback);
    }
    
    function HeaderRetrieve_callback(res)
    {
        if (res.error && res.error.Message != 'Unknown')
        {
            alert(res.error.Message);
        }
        else
        {
            var x = res.value;
            var xnode = $(x).find('Login');
            $('#Login').html(xnode.text());
                
            xnode = $(x).find('LoginOverlay');
            if (xnode != null)
            {
                $('#Navigation').append(xnode.text());
                
                var c = GetLoginCookie();
                if (c != null)
                {
                    $('#rememberMe').attr('checked', true);
                    $('#iRememberMe').attr('checked', true);
                    $('#iLoginEmail').val(c);
                    $('#loginEmail').val(c);
                }
            }
        }
        SetURL();
    }
    
    function SetURL()
    {
        var prot = window.location.protocol;
        var host = window.location.host;
        var page = window.location.pathname;
        var url = prot + "//" + host + page;
        $('#pgUrl').val(url);
    }
    
    function RememberMe(x, c)
    {
        if (x.checked == true)
        {
            SetLoginCookie(c);
        }
        else
        {
            DeleteLoginCookie();
        }
    }
    
    function SetLoginCookie(c)
    {
        var date = new Date();
        date.setTime(date.getTime() + (10800 * 24 * 60 * 60 * 1000));
        expires = "; expires=" + date.toGMTString();;
        document.cookie = "DeluxeLogin" + "=" + escape($('#' + c).val()) + expires + "; path=/"; 
    }
    
    function DeleteLoginCookie()
    {
        var expiredate = new Date();
        expiredate.setTime(expiredate.getTime() - 1);
        document.cookie = "DeluxeLogin=; expires=" + expiredate.toUTCString() + "; path=/;";
    }
    
    function GetLoginCookie() 
    {
	    var nameEQ = 'DeluxeLogin=';
	    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 MyFavoritesPageLoad()
    {
        Deluxe.Registration.MyFavoritesRetrieve(MyFavoritesPageLoad_callback);
    }
    function MyFavoritesPageLoad_callback(res)
    {
        if (res.error && res.error.Message != 'Unknown')
        {
            alert(res.error.Message);
        }
        else
        {
            var x = res.value;
            var xnode = $(x).find('Favorites');
            $('#divResultsTable').html(xnode.text());

            xnode = $(x).find('Solutions');
            $('#divResultsSolutions').html(xnode.text());
        }
    }
};
