﻿
var URL_PROCESSSIGNIN = FSTPATH + "callbacks/sessions/processsignin.aspx";
var URL_PROCESSSIGNOUT = FSTPATH + "callbacks/sessions/processsignout.aspx";
var URL_GETUSERAVATAR = FSTPATH + "callbacks/sessions/useravatar.aspx";
var URL_GETREGISTERBOX = FSTPATH + "callbacks/sessions/getregisterbox.aspx";
var URL_PROCESSREGISTER = FSTPATH + "callbacks/sessions/registeraccount.aspx";
var URL_VALIDATESN = FSTPATH + 'callbacks/general/doesscreennameexist.aspx';
var URL_VALIDATEEM = FSTPATH + 'callbacks/general/doesemailexist.aspx';

/*--------------------------------------------------------------- */
function fst_DoSignOut()
{
    new Ajax.Request(URL_PROCESSSIGNOUT,
        {
            method: 'post',
	        onSuccess: function(transport)
            {
                fst_DoSignOutSuccess(transport.responseText);
            },
          onFailure: function()
            {
                alert("Unable to perform sign out");
            }
        });
}

/*--------------------------------------------------------------- */
function fst_DoSignOutSuccess(retVal)
{
    if("success" === retVal) { fst_RefreshAllDynamicContentItems(); }
}

/*--------------------------------------------------------------- */
function fst_RefreshAllDynamicContentItems()
{
    fst_GetUserAvatar();
    fst_GetAddComment();
    fst_GetToolBox();
}

/*--------------------------------------------------------------- */
function fst_GetUserAvatar()
{
   if($(_avatarPlaceholderID))
    {        
        new Ajax.Request(URL_GETUSERAVATAR,
        {
            method: 'post',
	        onSuccess: function(transport)
            {
	            fst_GetUserAvatarSuccess(transport.responseText);
            },
          onFailure: function()
            {
                fst_GetUserAvatarError("unable to retrieve user information");
            }
        });
    }
}

/*--------------------------------------------------------------- */
function fst_GetUserAvatarSuccess(retVal)
{
    if(retVal.substring(0,5) == "error") {
        fst_GetUserAvatarError(retVal);
        return;
    }
    
    if($(_avatarPlaceholderID)) {
        $(_avatarPlaceholderID).innerHTML = retVal;
        if($(_avatarSignInFormID)) { Event.observe(_avatarSignInFormID, 'submit', fst_DoAvatarSignIn); }
        else { fst_ShowAvatarSignInStatus(); }
    }
}

/*--------------------------------------------------------------- */
function fst_DoAvatarSignIn(evt)
{
    Event.stop(evt);
    _isCommentSignIn = false;
    
    if(_signinInProgress)
    {
        alert('sign in being processed, please wait');
        return;
    }
        
    var allNodes = Form.serialize(_avatarSignInFormID);
    fst_ShowAvatarSignInLoader();
    fst_PerformSignInNow(allNodes);    
}

/*--------------------------------------------------------------- */
function fst_DoCommentSignIn(evt)
{       
    Event.stop(evt);    
    
    _isCommentSignIn = true;
    
    if(_signinInProgress)
    {
        alert('sign in being processed, please wait');
        return;
    }
    
    var allNodes = Form.serialize(_commentSignInFormID);
    fst_ShowCommentSignInLoader();
    fst_PerformSignInNow(allNodes);    
}

/*--------------------------------------------------------------- */
function fst_PerformSignInNow(formNodes)
{
    new Ajax.Request(URL_PROCESSSIGNIN,
        {
          method: 'post',
          parameters: formNodes,
          onSuccess: function(transport)
            {
                if(_isCommentSignIn)
                {
                    fst_CommentSignInSuccess(transport.responseText);
                }
                else
                {
	                fst_AvatarSignInSuccess(transport.responseText);
	            }
            },
          onFailure: function()
            {
                fst_AvatarSignInError("error during sign in");
            }
        });
}

/*--------------------------------------------------------------- */
function fst_AvatarSignInSuccess(retVal)
{
    _signinInProgress = false;

    if(retVal.substring(0,5) === "error")
    {
        fst_HideAvatarSignInLoader();
        
        // need to display the error
        if($(_avatarStatusBoxID))
        {
            $(_avatarStatusBoxID).innerHTML = retVal;
        }
        
        // make sure we show the sign in box again
        if($(_avatarFormPlaceholderID)) { $(_avatarFormPlaceholderID).style.display = "block"; }

    }
    else
    {
        setTimeout("fst_RefreshAllDynamicContentItems();",300);
    }
}

/*--------------------------------------------------------------- */
function fst_CommentSignInSuccess(retVal)
{
    _signinInProgress = false;
    
    if(retVal.substring(0,5) === "error")
    {
        _signInErrorMsg = retVal;
        setTimeout("fst_ShowCommentSignInError();",300);
    }
    else
    {
    
        setTimeout("fst_RefreshAllDynamicContentItems();",300);
    
        //fst_WaitThenGetAddComment(300);
        //fst_GetUserAvatar();
    }
}

/*--------------------------------------------------------------- */
function fst_AvatarSignInError(retVal)
{
    _signinInProgress = false;
    fst_HideAvatarSignInLoader();
    fst_ShowAvatarSignInStatusWithMsg(retVal);
    //fst_ShowSignInStatusWithMsg(retVal);
    //fst_ShowSignInBox();
}

/*--------------------------------------------------------------- */
function fst_GetUserAvatarError(msg)
{
    if($(_avatarPlaceholderID)) { $(_avatarPlaceholderID).innerHTML = msg; }
}

/*--------------------------------------------------------------- */
function fst_ShowAvatarSignInStatusWithMsg(msg)
{
    if($(_avatarSignInStatusBoxID)) { $(_avatarSignInStatusBoxID).innerHTML = "<p>" + msg + "</p>"; }
}

/*--------------------------------------------------------------- */
function fst_GetRegisterBox()
{
    if($(_commentRegisterBoxPlaceholderID))
    {           
        new Ajax.Request(URL_GETREGISTERBOX,
        {
            method: "post",
	        onSuccess: function(transport)
            {
	            fst_GetRegisterBoxSuccess(transport.responseText);
            },
          onFailure: function()
            {
                alert("unable to retrieve register box");
            }
        });
    }
}

/*--------------------------------------------------------------- */
function fst_GetRegisterBoxSuccess(retVal)
{
    if(retVal.substring(0,5) == "error")
    {
        alert(retVal);
        return;
    }
    
    if($(_commentRegisterBoxPlaceholderID))
    {   
        $(_commentRegisterBoxPlaceholderID).innerHTML = retVal;
        Event.observe(_commentRegisterFormID, 'submit', fst_DoRegisterAccount);        
    }
    
    if($(_commentSignInRegisterStatusBoxID)) { $(_commentSignInRegisterStatusBoxID).style.display = "none"; }
}

/*--------------------------------------------------------------- */
function fst_DoRegisterAccount(evt)
{
    Event.stop(evt);
    
    // hide the error message (if it exists)
    if($(_commentSignInRegisterStatusBoxID))
    {
        $(_commentSignInRegisterStatusBoxID).innerHTML = "";
        $(_commentSignInRegisterStatusBoxID).style.display = "none";
    }
    
    if(_registerInProgress)
    {
        alert('registration in process, please wait');
        return;
    }
        
    if(!$(_commentRegisterFormID)) { return; }
    
    // perform validations on the form...
    if(!fst_AreCommentRegisterEntriesValid())
    {
        return;
    }
    
    var registerNodes = Form.serialize(_commentRegisterFormID);
    
    fst_ShowCommentSignInLoader("2");
    
    _registerInProgress = true;
    
    new Ajax.Request(URL_PROCESSREGISTER,
    {
        method: "post",
        parameters: registerNodes,
        onSuccess: function(transport)
        {
            fst_DoRegisterAccountSuccess(transport.responseText);
        },
      onFailure: function()
        {
            alert("Unable to execute register function");
        }
    });
}

/*--------------------------------------------------------------- */
function fst_AreCommentRegisterEntriesValid()
{
    if(!$(_commentRegisterFormID)) { return false; }
    
    // grab the child elements in the form and then check each one.
    //var formChildren = $(_commentRegisterFormID).childNodes;
    //alert(formChildren.length);
    var localError = "";
        
    fst_ClearHighlightProblemBox("first", "txtsm");
    fst_ClearHighlightProblemBox("last", "txtsm");
    
    if(!fst_CheckRegisterBoxEntry("first","length"))
    {
        fst_ShowCommentRegisterError("You must provide your first name");
        fst_HighlightProblemBox("first","txtsmerr");
        return false;
    }
    
    if(!fst_CheckRegisterBoxEntry("last","length"))
    {
        fst_ShowCommentRegisterError("You must provide your last name");
        fst_HighlightProblemBox("last","txtsmerr");
        return false;
    }
        
    if(!fst_CheckRegisterBoxEntry("pwd","pwd1"))
    {
        fst_ShowCommentRegisterError("Invalid password length");
        fst_HighlightProblemBox("pwd","txterr");
        return false;
    }
    
    if(!fst_CheckRegisterBoxEntry("pwd","pwd2"))
    {
        fst_ShowCommentRegisterError("Passwords must contain at least 1 number");
        fst_HighlightProblemBox("pwd","txterr");
        return false;
    }
    
    if(!fst_CheckRegisterBoxEntry("pwd","pwd3"))
    {
        fst_ShowCommentRegisterError("Passwords must contain at least 1 character");
        fst_HighlightProblemBox("pwd","txterr");
        return false;
    }
        
    return true;
}
/*--------------------------------------------------------------- */
function fst_CheckRegisterBoxEntry(id,type)
{
    var isValid = false;
    
    if($(id))
    {
        var obj = $(id);
        
        switch(type)
        {
            case "length":
                if(obj.value.length > 2) { isValid = true; }
                break;
                
            case "pwd1":
                if(fst_IsPwdCorrectLength(obj.value)) { isValid = true; }
                break;
                
            case "pwd2":
                if(fst_IsValidPasswordNumber(obj.value)) { isValid = true; }
                break;
                
            case "pwd3":
                if(fst_IsValidPasswordCharacter(obj.value)) { isValid = true; }
                break;                
        }
    }
    
    return isValid;
}

/*--------------------------------------------------------------- */
function fst_HighlightProblemBox(id, cname)
{
    if($(id)) { $(id).className = cname; $(id).focus(); }
}

/*--------------------------------------------------------------- */
function fst_ClearHighlightProblemBox(id, cname)
{
    if($(id)) { $(id).className = cname; }
}

/*--------------------------------------------------------------- */
function fst_DoRegisterAccountSuccess(retVal)
{
    _registerInProgress = false;
    
    if(retVal == "success")
    {
        setTimeout("fst_RefreshAllDynamicContentItems();",300);
        if($(_commentInputBoxID)) { $(_commentInputBoxID).focus(); }
    }
    else
    {
        _commentRegisterErrorMsg = retVal;
        setTimeout("fst_ShowCommentRegisterError();",300);
    }
}

/*--------------------------------------------------------------- */
function fst_ShowCommentSignInLoader(msg)
{
    if($(_commentSignInLoaderPlaceholderID) != null && $(_commentSignInPlaceholderID) != null)
    {
        $(_commentSignInPlaceholderID).style.display = "none";
        
        // create the loader
        var loader = document.createElement("div");
        loader.setAttribute("id",_avaterSignInLoaderID);
        loader.setAttribute("style","padding: 8px; text-align: center;");
                
        var loaderImage = document.createElement("img");
        loaderImage.setAttribute("src", FSTCOMMONPATH + "images/loaders/loader_large.gif");
        loaderImage.setAttribute("alt","Loading");   
        
        var loaderText = document.createElement("p");
        
        var msgText = "";
        
        switch(msg)
        {
            case "1":
                msgText = "processing sign in, please wait.";
                break;
                
            case "2":
                msgText = "processing new account, please wait.";
                break;
                
            default:
                msgText = "processing, please wait.";
                break;
        }
        
        loaderText.innerHTML = "<em><strong>" + msgText + "</strong></em>";
        
        loader.appendChild(loaderImage);
        loader.appendChild(loaderText);
        
        $(_commentSignInLoaderPlaceholderID).appendChild(loader);
    }
}

/*--------------------------------------------------------------- */
function fst_ShowAvatarSignInLoader()
{
    if($(_avatarFormPlaceholderID)) { $(_avatarFormPlaceholderID).style.display = "none"; }
    
    if($(_avatarStatusBoxID))
    {
        var loader = document.createElement("div");
        loader.setAttribute("id",_avaterSignInLoaderID);
        loader.setAttribute("style","padding: 8px; text-align: center;");
        
        var loaderImage = document.createElement("img");
        loaderImage.setAttribute("src", FSTCOMMONPATH + "images/loaders/loader_small.gif");
        loaderImage.setAttribute("alt","Loading");
        
        var loaderText = document.createElement("p");
        loaderText.innerHTML = "<em><strong>processing</strong></em>";
        
        loader.appendChild(loaderImage);
        loader.appendChild(loaderText);
        
        $(_avatarStatusBoxID).appendChild(loader);        
    }
}

/*--------------------------------------------------------------- */
function fst_HideAvatarSignInLoader()
{
    if($(_avatarStatusBoxID)) { $(_avatarStatusBoxID).innerHTML = ""; }
}

/*--------------------------------------------------------------- */
function fst_ShowCommentSignInError(msg)
{
    $(_commentSignInLoaderPlaceholderID).innerHTML = "";
    $(_commentSignInPlaceholderID).style.display = "block";

    if($(_fstUsernameID)) { $(_fstUsernameID).focus(); }

    _signinInProgress = false;
    
    if($(_commentSignInRegisterStatusBoxID))
    {
        if(msg != null && msg.length > 0) { _signInErrorMsg = msg; }
        
        if($(_commentSignInRegisterStatusBoxID))
        {
            $(_commentSignInRegisterStatusBoxID).style.display = "block";
            $(_commentSignInRegisterStatusBoxID).innerHTML = "Error: " + _signInErrorMsg;
        }
    }
}

/*--------------------------------------------------------------- */
function fst_ShowCommentRegisterError(msg)
{
    $(_commentSignInLoaderPlaceholderID).innerHTML = "";
    $(_commentSignInPlaceholderID).style.display = "block";

    _registerInProgress = false;

    if($(_commentSignInRegisterStatusBoxID))
    {
        if(msg != null && msg.length > 0) { _commentRegisterErrorMsg = msg; }

        $(_commentSignInRegisterStatusBoxID).className = "fstSignInRegisterError";
        $(_commentSignInRegisterStatusBoxID).style.display = "block";
        $(_commentSignInRegisterStatusBoxID).innerHTML = "Error: " + _commentRegisterErrorMsg;
    }
}

