﻿var login = null;
Type.registerNamespace("cancercompass.controls");
cancercompass.controls.Login = function(){
    this._returnURL = "";
    this._message = "";
    this._useFacebox = false;
    this._divToDisplay = "";
}
cancercompass.controls.Login.prototype = {
    initialize : function(){
        $(document).bind('reveal.facebox', function() {
            if(login._message && login._message.length > 0){
                login.setLoginProperties();
            }
            if($("#facebox div.login").length > 0){
                $("input[id*='txtUsername']").focus();
            }
        });
        $(".loginButton").removeAttr("disabled").val("Login");
        $(".loginButton").click(function(){
            if(Page_ClientValidate("login")){
                login.userLogin($("input[id*='txtUsername']").val(),$("input[id*='txtPassword']").val(),$("input[id*='chkRemember']").is(":checked"));
                $("span[id*='lblLoginError']").removeClass("displayInline").text("");
                $(this).attr("disabled","true").val("Logging In...").after("<img src='/images/loader.gif' />");
            }
            return false;
        });
        $("input[id*='btnRetrievePassword']").click(function(){
            if(Page_ClientValidate("retrievePassword")){
                $(this).attr("disabled","true").val("Retrieving Password...");
                login.retrievePassword($("input[id*='txtRetrievePasswordEmail']").val());
                $("span[id*='lblRetrievePasswordError']").removeClass("displayInline").text("");
                $("span[id*='lblRetrievePasswordSuccess']").removeClass("displayInline").text("");
            }
            return false;
        });
        $(".retrievePassword").css("display","none");
        $(".openRetrieve").css("display","inline").toggle(function(){
            $(".retrievePassword").animate({ height: 'show', opacity: 'show' }, 'slow', function(){
                $("input[id*='txtRetrievePasswordEmail']").focus();
            });
        },function(){
            $(".retrievePassword").animate({ height: 'hide', opacity: 'hide' }, 'slow', function(){
                $("input[id*='txtUsername']").focus();
            });
        });
        login._returnURL = $.URLDecode($("input[id*='hidReturnURL']").val());
        login._message = $("input[id*='hidMessage']").val();
        login._useFacebox = $("input[id*='hidFacebox']").val();
        login._divToDisplay = $("input[id*='hidDivToLoad']").val();
        $("input[id*='txtUsername']").focus();
        if($("div.homeBanner").length===0){
            createPageView("Compass: Connect: Login","Compass: Connect","Compass: Connect: Login","","Form","","event17");
        }
    },
    userLogin : function(userName,password,rememberMe,returnURL){
        if(returnURL && returnURL.length > 0){
            login._returnURL = returnURL;
            login._useFacebox = "false";
        }
        if(login._useFacebox === "true" || !login._returnURL || (login._returnURL && login._returnURL.length === 0)){
            AuthService.loginUser(userName,password,rememberMe);
        }else if(login._returnURL && login._returnURL.length > 0){
            AuthService.loginUser(userName,password,rememberMe,this._returnURL);
        }else{
            AuthService.loginUser(userName,password,rememberMe);
        }
    },
    userLoginCompleted : function(result,userContext,method,complete){
        if(complete && result){
            //Things to do to the page when the user logs in
            createPageView("Compass: Connect: Login Completed","Compass: Connect","Compass: Connect: Login Completed","","Form","","event17");
            
            if(typeof(messages) != "undefined" && $(".a_track").length > 0){messages.isDiscussionTracked($(".a_track").attr("title"));$("#facebox span").text(messages._userName);}         
            if(login._useFacebox === "true" && login._returnURL.length > 0){
                $("#secondHeader").load("/logged-in-content.html #secondHeader div");
                jQuery.facebox({ ajax: login._returnURL });
                login._returnURL = "";
                login._useFacebox = "";
            }else if(login._useFacebox === "true" && login._divToDisplay.length > 0){
                $("#secondHeader").load("/logged-in-content.html #secondHeader div");
                jQuery.facebox({ div: login._divToDisplay });
                login._divToDisplay = "";
                login._useFacebox = "";
            }else if(login._useFacebox.length === 0 && login._returnURL.length > 0){
                if(login._returnURL === window.location.href){
                    location.reload(true);
                }else{
                    window.location = login._returnURL;
                }
            }else{
                jQuery(document).trigger('close.facebox');
            }
        }else if(complete && !result){
            $("span[id*='lblLoginError']").addClass("displayInline").text("Login failed due to invalid credentials");
            $(".loginButton").removeAttr("disabled").val("Login").next().remove();
        }else if(!complete){
            $("span[id*='lblLoginError']").addClass("displayInline").text("Login failed due to exception: " + result.get_message() + " on method " + method + ". Stack Trace: " + result.get_stackTrace());
            $(".loginButton").removeAttr("disabled").val("Login").next().remove();
        }
    },
    userLoggedIn : function(){
        return AuthService.get_isLoggedIn();
    },
    retrievePassword : function(emailAddress){
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "/common/webservices/authentication.asmx/RetrievePassword",
            data: "{'Email':'" + emailAddress + "'}",
            dataType: "json",
            success: function(data, textStatus){
                if(data.d.length > 0){
                    $("span[id*='lblRetrievePasswordError']").addClass("displayInline").text(data.d);
                }else{
                    $("span[id*='lblRetrievePasswordSuccess']").addClass("displayInline").text("An Email has been sent to your address with your password.");
                    setTimeout("$('.retrievePassword').animate({ height: 'hide', opacity: 'hide' }, 'slow');",3500);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown){
                $("span[id*='lblRetrievePasswordError']").addClass("displayInline").text("An error has occured.");
            },
            complete: function(XMLHttpRequest, textStatus){
                $("input[id*='btnRetrievePassword']").removeAttr("disabled").val("Retrieve Password");
            }
        });
    },
    setLoginProperties : function(){
        $("#facebox h2").after(login._message);
        login._message = "";
    }
}
$(document).ready(function(){   
    login = new cancercompass.controls.Login;
    login.initialize();
});