var lHasCheckedForRegisteredUser = false;
var lIsRegisteredUser = false;

Eduify.FBConnectNew = {
    AppPath: '',
    WunderkindCall: false,
    /*
    *   Function    :  ShowFBLogo
    *   Description :  This function show facebook logo    
    */
    ShowFBLogo: function() {
        var lLogo = $j("img[id$=imgFB]");
        if (lLogo.hasClass("DN")) {
            lLogo.removeClass("DN").addClass("VBO H17 W17");
        }
    },
    /*
    *   Function    :  subscribeFbEvent
    *   Description :  This function subscribe facebook custom events.  
    *   Prams       :  pEvent - event type as string    
    *                  pCallback - callback function to call as event occours.
    */
    subscribeFbEvent: function(pEvent, pCallback) {
        FB.Event.subscribe(pEvent, pCallback);
    },
    /*
    *   Function    :  Login
    *   Description :  This function show facebook login dialog.
    *                  If facebook session is available it clears it.
    *   Prams       :  pSuccessCallback - callback function to call after successfull login.    
    *                  pFailureCallback - callback function to call if login is failed.
    */
    Login: function(pSuccessCallback, pFailureCallback) {
        FB.getLoginStatus(function(pResponse) {
            if (pResponse.session) {
                // logged in and connected user
                FB.logout(function(response) {
                    // user is now logged out
                    FB.login(function(response) {
                        if (response.session) {
                            // user successfully logged in
                            if ($j.isFunction(pSuccessCallback)) {
                                pSuccessCallback();
                            }
                        } else {
                            // user cancelled login
                            if ($j.isFunction(pFailureCallback)) {
                                pFailureCallback();
                            }
                        }
                    });
                });
            } else {
                // no user session available, someone you dont know
                FB.login(function(response) {
                    if (response.session) {
                        // user successfully logged in
                        if ($j.isFunction(pSuccessCallback)) {
                            pSuccessCallback();
                        }
                    } else {
                        // user cancelled login
                        if ($j.isFunction(pFailureCallback)) {
                            pFailureCallback();
                        }
                    }
                });
            }
        });
    },
    /*
    *   Function    :  FBLogout
    *   Description :  This function clear facebook session retained as cookie.
    *   Prams       :  pLogoutFunction - callback function to call after successfull logout.    
    */
    FBLogout: function(pLogoutFunction) {
        FB.logout(function(response) {
            // user is now logged out
            if ($j.isFunction(pLogoutFunction)) {
                // execute function
                pLogoutFunction();
            }
        });
    },
    /*
    *   Function    :  Logout
    *   Description :  This function redirects to the provider location.
    *   Prams       :  pLogoutAction - Url to new location.    
    */
    Logout: function(pLogoutAction) {
        window.location.replace(pLogoutAction);
    },
    /*
    *   Function    :  setFBPermissions
    *   Description :  This function set facebook account permissions for the application.
    *   Prams       :  pPermissions - comma saperated permissions
    *                  pSuccessCallback - callback function if permissions granted 
    *                  pFailureCallback - callback function if permissions not granted
    */
    setFBPermissions: function(pPermissions, pSuccessCallback, pFailureCallback) {
        FB.login(function(pResponse) {
            if (pResponse.session && pResponse.status == "connected") {
                if (pResponse.perms) {
                    // user is logged in and granted some permissions.
                    // perms is a comma separated list of granted permissions
                    if ($j.isFunction(pSuccessCallback)) {
                        pSuccessCallback(pResponse.perms);
                    }
                } else {
                    // user is logged in, but did not grant any permissions
                    if ($j.isFunction(pFailureCallback)) {
                        pFailureCallback();
                    }
                }
            } else {
                // user is not logged in
            }
        }, { perms: pPermissions });
    },
    /*
    *   Function    :  onLogin
    *   Use In      :  auth.login Event used in anonymousUser.Master (eduify signin)
    *   Description :  Login to eduify with facebook user
    *   Prams       :  pResponse - Object containg facebook session object
    */
    onLogin: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            if (lHasCheckedForRegisteredUser == false) {
                lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.IsRegisteredUser(pResponse.session.uid).value;
                lHasCheckedForRegisteredUser = true;
            }
            if (lIsRegisteredUser) {
                document.forms[0].submit();
            }
            else {
                if ($j("*[id$='hdnFBUID']")[0]) // if its one of the signup pages.
                {
                    if ($j("*[id$='hdnEiFBUID']")[0].value != "" && $j("*[id$='hdnFBUID']")[0].value != $j("*[id$='hdnEiFBUID']")[0].value) {
                        document.getElementById("pnlInvalidFBId").className = "DB MT20 TC";
                        lHasCheckedForRegisteredUser = false;
                        lIsRegisteredUser = false;
                        return;
                    }
                    else {
                        $j("*[id$='fbSignupHeading']")[0].style.display = "none";
                        $j("*[id$='eduifySignupHeading']")[0].style.display = "none";
                        $j("*[id$='fbWelcome']")[0].style.display = "block";
                        $j("*[id$='fbLoginButton']")[0].style.display = "none";
                        $j("*[id$='fbEnterEmail']")[0].style.display = "block";
                        $j("*[id$='pnlRecoverAccount']")[0].style.display = "none";
                        document.getElementById('pnlVrtcLine').style.visibility = "hidden";
                    }
                }
                else // user is on signin overlay div or signin page and user is not signed up with eduify
                {
                    $j("*[id$='pnlFBNA']").removeClass("DN");
                    lHasCheckedForRegisteredUser = false;
                    lIsRegisteredUser = false;
                    return;
                }
            }
        } else {
            // user cancelled login
        }
    },
    /*
    *   Function    :  onSWConnectWithFB
    *   Use In      :  auth.login Event used in SharePaperWidget.ascx (Used in paperbox,auditbox and researchbox)
    *   Description :  Login with facebook with already connected account
    *   Prams       :  pResponse - Object containg facebook session object
    */
    onSWConnectWithFB: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            if (typeof _AjaxPath != "undefined") {
                Eduify.FBConnectNew.SWConnectWithFBWithAjaxPath(pResponse);
            } else {
                Eduify.FBConnectNew.SWConnectWithFBWithAjaxMethod(pResponse);
            }
        }
    },
    /*
    *   Function    :  SWConnectWithFBWithAjaxPath
    *   Use In      :  auth.login Event used in SharePaperWidget.ascx (Used in paperbox,auditbox)
    *   Description :  Login with facebook with already connected account
    *   Prams       :  pResponse - Object containg facebook session object
    */
    SWConnectWithFBWithAjaxPath: function(pResponse) {
        $j.ajax({
            type: "POST",
            url: _AjaxPath,
            data: '{"pFBUID":"' + pResponse.session.uid + '"}',
            beforeSend: function(xhr) {
                xhr.setRequestHeader("Ajax-Method", "ConnectFBUser");
                xhr.setRequestHeader("Accept-Encoding", "gzip, deflate");
            },
            success: function(s) {
                if (eval(s) == true) {
                    // Show fb logo
                    Eduify.FBConnectNew.ShowFBLogo();
                    var lUpdatePanel = $j("div[id$=ucSharePaper_ap]"); // Paperbox
                    if (lUpdatePanel.length == 0) {
                        lUpdatePanel = $j("div[id$=ucTellAFriend_ap]"); // Auditbox
                    }
                    if (lUpdatePanel.length == 0) {
                        lUpdatePanel = $j("div[id$=ucShare_ap]"); // Researchbox
                    }
                    $j("input[id$=hfLoadFBFriends]").val("true"); // for reloading friends list
                    __doPostBack(lUpdatePanel.attr('id'), '');
                } else {
                    Eduify.FBConnectNew.FBLogout();
                    Eduify.Alert("error :: ", "Provided facebook user is not the one attached with your eduify account!", EdButtons.OkOnly);
                    return false;
                }
            }
        });
    },
    /*
    *   Function    :  SWConnectWithFBWithAjaxMethod
    *   Use In      :  auth.login Event used in SharePaperWidget.ascx (Used in researchbox)
    *   Description :  Login with facebook with already connected account
    *   Prams       :  pResponse - Object containg facebook session object
    */
    SWConnectWithFBWithAjaxMethod: function(pResponse) {
        var lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.ConnectFBUser(pResponse.session.uid).value;
        if (lIsRegisteredUser) {
            // Show fb logo
            Eduify.FBConnectNew.ShowFBLogo();
            var lUpdatePanel = $j("div[id$=ucSharePaper_ap]"); // Paperbox
            if (lUpdatePanel.length == 0) {
                lUpdatePanel = $j("div[id$=ucTellAFriend_ap]"); // Auditbox
            }
            if (lUpdatePanel.length == 0) {
                lUpdatePanel = $j("div[id$=ucShare_ap]"); // Researchbox
            }
            $j("input[id$=hfLoadFBFriends]").val("true"); // for reloading friends list
            __doPostBack(lUpdatePanel.attr('id'), '');
        } else {
            Eduify.FBConnectNew.FBLogout();
            Eduify.Alert("error :: ", "Provided facebook user is not the one attached with your eduify account!", EdButtons.OkOnly);
            return false;
        }
    },
    /*
    *   Function    :  onSExWConnectWithFB
    *   Use In      :  auth.login Event used in ShareExCoWidget.ascx (Used in editor)
    *   Description :  Login with facebook with already connected account
    *   Prams       :  pResponse - Object containg facebook session object
    */
    onSExWConnectWithFB: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            var lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.ConnectFBUser(pResponse.session.uid).value;
            if (lIsRegisteredUser) {
                //Refresh parent
                if (window.parent.opener != null && !window.parent.opener.closed) {
                    var lUpdatePanel = window.parent.opener.$j("div[id$=ucSharePaper_ap]"); // Paperbox
                    if (lUpdatePanel.length == 0) {
                        lUpdatePanel = window.parent.opener.$j("div[id$=ucTellAFriend_ap]"); // Auditbox
                    }
                    if (lUpdatePanel.length == 0) {
                        lUpdatePanel = window.parent.opener.$j("div[id$=ucShare_ap]"); // Researchbox                        
                    }
                    window.parent.opener.$j("input[id$=hfLoadFBFriends]").val("true"); // for reloading friends list
                    window.parent.opener.__doPostBack(lUpdatePanel.attr('id'), '');
                    // Show fb logo on parent
                    window.parent.opener.Eduify.FBConnectNew.ShowFBLogo();
                }

                //Refresh share widget
                $j("input[id$=hfLoadFBFriends]").val("true"); // for reloading friends list
                __doPostBack($j("div[id$=ucShareWidget_ap]").attr('id'), '');
            } else {
                Eduify.FBConnectNew.FBLogout();
                Eduify.Alert("error :: ", "Provided facebook user is not the one attached with your eduify account!", EdButtons.OkOnly);
                return false;
            }
        }
    },
    /*
    *   Function    :  onSExWRegisterFBAndShareDoc
    *   Use In      :  auth.login Event used in SharePaperWidget.ascx (Used in paperbox,auditbox and researchbox)
    *   Description :  Register facebook user and share file
    *   Prams       :  pResponse - Object containg facebook session object
    */
    onSWRegisterFBAndShareDoc: function(pResponse) {
        var lContentId = $j("input[id$=hfSelected]").val();
        var lContentType = $j("input[id$=hfSelectedType]").val();
        if (pResponse.session && pResponse.status == "connected") {
            if (typeof _AjaxPath != "undefined") {
                Eduify.FBConnectNew.SWRegisterFBAndShareDocWithAjaxPath(pResponse, lContentId, lContentType);
            } else {
                Eduify.FBConnectNew.SWRegisterFBAndShareDocWithAjaxMethod(pResponse, lContentId, lContentType);
            }
        }
    },
    /*
    *   Function    :  SWRegisterFBAndShareDocWithAjaxPath
    *   Use In      :  auth.login Event used in SharePaperWidget.ascx (Used in paperbox,auditbox)
    *   Description :  Register facebook user and share file
    *   Prams       :  pResponse - Object containg facebook session object
    *               :  pContentId - content id to share
    *               :  pContentType - current content type to share
    */
    SWRegisterFBAndShareDocWithAjaxPath: function(pResponse, pContentId, pContentType) {
        $j.ajax({
            type: "POST",
            url: _AjaxPath,
            data: '{"pFBUID":"' + pResponse.session.uid + '"}',
            beforeSend: function(xhr) {
                xhr.setRequestHeader("Ajax-Method", "RegisterFBUser");
                xhr.setRequestHeader("Accept-Encoding", "gzip, deflate");
            },
            success: function(s) {
                if (eval(s) == true) {
                    // Show fb logo
                    Eduify.FBConnectNew.ShowFBLogo();

                    //Refresh share widget
                    var lUpdatePanel = $j("div[id$=ucSharePaper_ap]"); // Paperbox
                    if (lUpdatePanel.length == 0) {
                        lUpdatePanel = $j("div[id$=ucTellAFriend_ap]"); // Auditbox
                    }
                    if (lUpdatePanel.length == 0) {
                        lUpdatePanel = $j("div[id$=ucShare_ap]"); // Researchbox
                    }
                    $j("input[id$=hfLoadFBFriends]").val("true"); // for reloading friends list
                    __doPostBack(lUpdatePanel.attr('id'), '');

                    if (pContentType == "Document") {
                        //open share dialog for document share                        
                        Eduify.Utils.OpenSharePermissionDlg(pContentId, null, null, 'false');
                    }
                    else if (pContentType == "File") {
                        //File error
                        $j.ajax({
                            type: "POST",
                            url: _AjaxPath,
                            data: '{"pFBUID":' + parseInt(lFileId) + '}',
                            beforeSend: function(xhr) {
                                xhr.setRequestHeader("Ajax-Method", "IsEditorAllowedFile");
                                xhr.setRequestHeader("Accept-Encoding", "gzip, deflate");
                            },
                            success: function(s) {
                                if (eval(s) == true) {
                                    Eduify.Alert("error :: ", "This file cannot be shared. Please convert it to an Eduify document first.", EdButtons.OkOnly);
                                } else {
                                    Eduify.Alert("error :: ", "This file cannot be shared currently. Please select another file.", EdButtons.OkOnly);
                                }
                            }
                        });
                    }
                    else if (pContentType == "Clipping") {
                        //open share dialog for clip share
                        Eduify.Utils.OpenShareDlg(null, null, pContentId, null);
                    }
                    else if (pContentType == "Invite") {
                        //open fb invite dialog                        
                        Eduify.FBConnectNew.openFBInviteRequestDialog(false);
                    }

                } else {
                    Eduify.FBConnectNew.FBLogout();
                    Eduify.Alert("error :: ", "Provided facebook user is already utilized!", EdButtons.OkOnly);
                    return false;
                }
            }
        });
    },
    /*
    *   Function    :  SWRegisterFBAndShareDocWithAjaxMethod
    *   Use In      :  auth.login Event used in SharePaperWidget.ascx (researchbox)
    *   Description :  Register facebook user and share file
    *   Prams       :  pResponse - Object containg facebook session object
    *               :  pContentId - content id to share
    *               :  pContentType - current content type to share
    */
    SWRegisterFBAndShareDocWithAjaxMethod: function(pResponse, pContentId, pContentType) {
        var lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.RegisterFBUser(pResponse.session.uid).value;
        if (lIsRegisteredUser) {
            // Show fb logo
            Eduify.FBConnectNew.ShowFBLogo();

            //Refresh share widget
            var lUpdatePanel = $j("div[id$=ucSharePaper_ap]"); // Paperbox
            if (lUpdatePanel.length == 0) {
                lUpdatePanel = $j("div[id$=ucTellAFriend_ap]"); // Auditbox
            }
            if (lUpdatePanel.length == 0) {
                lUpdatePanel = $j("div[id$=ucShare_ap]"); // Researchbox
            }
            $j("inout[id$=hfLoadFBFriends]").val("true"); // for reloading friends list
            __doPostBack(lUpdatePanel.attr('id'), '');

            if (pContentType == "Document") {
                //open share dialog for document share                        
                Eduify.Utils.OpenSharePermissionDlg(pContentId, null, null, 'false');
            }
            else if (pContentType == "File") {
                //File error
                var lIsEduifyFile = Eduify.UI.Common.AJAXMethods.IsEditorAllowedFile(parseInt(lFileId)).value;
                if (lIsEduifyFile) {
                    Eduify.Alert("error :: ", "This file cannot be shared. Please convert it to an Eduify document first.", EdButtons.OkOnly);
                } else {
                    Eduify.Alert("error :: ", "This file cannot be shared currently. Please select another file.", EdButtons.OkOnly);
                }
            }
            else if (pContentType == "Clipping") {
                //open share dialog for clip share
                Eduify.Utils.OpenShareDlg(null, null, pContentId, null);
            }
            else if (pContentType == "Invite") {
                //open fb invite dialog                
                Eduify.FBConnectNew.openFBInviteRequestDialog(false);
            }
        } else {
            Eduify.FBConnectNew.FBLogout();
            Eduify.Alert("error :: ", "Provided facebook user is already utilized!", EdButtons.OkOnly);
            return false;
        }
    },
    /*
    *   Function    :  onSExWRegisterFBAndShareDoc
    *   Use In      :  auth.login Event used in ShareExCoWidget.ascx (Used in editor)
    *   Description :  Register facebook user and share file
    *   Prams       :  pResponse - Object containg facebook session object
    */
    onSExWRegisterFBAndShareDoc: function(pResponse) {
        var lContentId = $j("input[id$=hfSelected]").val();
        var lContentType = $j("input[id$=hfSelectedType]").val();

        if (pResponse.session && pResponse.status == "connected") {
            var lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.RegisterFBUser(pResponse.session.uid).value;
            if (lIsRegisteredUser) {
                //Refresh parent
                if (window.parent.opener != null && !window.parent.opener.closed) {
                    var lUpdatePanel = window.parent.opener.$j("div[id$=ucSharePaper_ap]"); // Paperbox
                    if (lUpdatePanel.length == 0) {
                        lUpdatePanel = window.parent.opener.$j("div[id$=ucTellAFriend_ap]"); // Auditbox
                    }
                    if (lUpdatePanel.length == 0) {
                        lUpdatePanel = window.parent.opener.$j("div[id$=ucShare_ap]"); // Researchbox                        
                    }
                    window.parent.opener.__doPostBack(lUpdatePanel.attr('id'), '');
                    // Show fb logo on parent
                    window.parent.opener.Eduify.FBConnectNew.ShowFBLogo();
                }

                //Refresh share widget
                __doPostBack($j("div[id$=ucShareWidget_ap]").attr('id'), '');

                if (lContentType == "Document") {
                    //open share dialog for document share                
                    Eduify.Utils.OpenSharePermissionDlg(lContentId, null, null, 'false');
                }
                else if (lContentType == "File") {
                    //File error
                    var lIsEduifyFile = Eduify.UI.Common.AJAXMethods.IsEditorAllowedFile(parseInt(lFileId)).value;
                    if (lIsEduifyFile) {
                        Eduify.Alert("error :: ", "This file cannot be shared. Please convert it to an Eduify document first.", EdButtons.OkOnly);
                    } else {
                        Eduify.Alert("error :: ", "This file cannot be shared currently. Please select another file.", EdButtons.OkOnly);
                    }
                }
            } else {
                Eduify.FBConnectNew.FBLogout();
                Eduify.Alert("error :: ", "Provided facebook user is already utilized!", EdButtons.OkOnly);
                return false;
            }
        }
    },
    /*
    *   Function    :  onSignupPageLogin
    *   Use In      :  auth.login Event used in VerifySignupRequest.aspx
    *   Description :  Set the Hidden fields for FacebookUserId, FirstName and LastName. 
    *                  Check if provider facebook user is already registered with Eduify.
    *                  If Already register user than submit form.
    *                  If not register user than do custom work.
    *   Prams       : pResponse - Object containg facebook session object
    */
    onSignupPageLogin: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            var lhdFbUid = $j("input[id$=hdnFBUID]");
            var lhEiFbUid = $j("input[id$=hdnEiFBUID]");
            var lhdnIsPageValid = $j("input[id$=hdnIsPageValid]");
            if (lhdFbUid.length > 0) // if its one of the signup pages.
            {
                lhdFbUid.val(pResponse.session.uid);
                FB.api('/me', function(response) {
                    if (response != null) {
                        $j("input[id$=hdnFBFirstName]").val(response.first_name);
                        $j("input[id$=hdnFBLastName]").val(response.last_name);
                    }
                });
            }

            if (lHasCheckedForRegisteredUser == false) {
                lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.IsRegisteredUser(pResponse.session.uid).value;
                lHasCheckedForRegisteredUser = true;
            }
            if (lIsRegisteredUser) {
                document.forms[0].submit();
            }
            else {
                if (lhdFbUid.length > 0) {
                    if (lhEiFbUid.val() != "" && lhdFbUid.val() != lhEiFbUid.val()) {
                        $j("div[id$=pnlInvalidFBId]").removeClass("DN MT10").addClass("DB MT20 TC");
                        lHasCheckedForRegisteredUser = false;
                        lIsRegisteredUser = false;
                        return;
                    }
                    else {
                        if (lhdnIsPageValid.length > 0 && lhdnIsPageValid.val() != 'false') {
                            eval($j("*[id$='lbDoSignup']").attr("href"));
                        }
                        else {
                            lhdFbUid.val('');
                        }
                    }
                }
            }
        }
    },
    /*
    *   Function    :  onConnectFbSocialNetwork
    *   Use In      :  auth.login Event used in SocialNetworking.ascx
    *   Description :  Connect to a facebook account to an eduify account if not aleary connected.
    *                  If Already register user than show error dialog.
    *                  If not register user than refresh screen.
    *   Prams       : pResponse - Object containg facebook session object
    */
    onConnectFbSocialNetwork: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            var lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.RegisterFBUser(pResponse.session.uid).value;
            if (lIsRegisteredUser) {
                // Show fb logo
                Eduify.FBConnectNew.ShowFBLogo();
                //Show total points
                var lPoints = Eduify.UI.Common.AJAXMethods.FetchTotalPoints();
                if (lPoints.error == null) {
                    $j("span[id='ctl00_ctl00_lblPoints']")[0].innerHTML = lPoints.value;
                }
                __doPostBack($j('div[id$=upSocialNetwork]').attr('id'), '');
            } else {
                Eduify.FBConnectNew.FBLogout();
                Eduify.Alert("error :: ", "Provided facebook user is already utilized!", EdButtons.OkOnly);
                return false;
            }
        }
    },
    /*
    *   Function    :  onSignInFbSocialNetwork
    *   Use In      :  auth.login Event used in SocialNetworking.ascx
    *   Description :  Sign in with the already connected facebook account to current eduify account.
    *                  If Already connected user than show error dialog.
    *                  If not connected user than refresh screen.
    *   Prams       : pResponse - Object containg facebook session object
    */
    onSignInFbSocialNetwork: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            var lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.ConnectFBUser(pResponse.session.uid).value;
            if (lIsRegisteredUser) {
                // Show fb logo
                Eduify.FBConnectNew.ShowFBLogo();
                __doPostBack($j('div[id$=upSocialNetwork]').attr('id'), '');
            } else {
                Eduify.FBConnectNew.FBLogout();
                Eduify.Alert("error :: ", "Provided facebook user is not the one attached with your eduify account!", EdButtons.OkOnly);
                return false;
            }
        }
    },
    /*
    *   Function    :  onLandingPageLogin
    *   Use In      :  auth.login Event used in WriteFaster1.aspx, WriteSmarter1.aspx, WriteSafely1.aspx and SignupLanding.ascx
    *   Description : Set the Hidden fields for FacebookUserId, FirstName and LastName. 
    *                 Check if provider facebook user is already registered with Eduify.
    *                 If already Eduify User submit form.
    *                 If not an Eduify user do custom work
    *   Prams       : pResponse - Object containg facebook session object
    */
    onLandingPageLoginV1: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            var lhdnFBUID = $j("input[id$=hdnFBUID]");

            if (lhdnFBUID.length > 0) {
                lhdnFBUID.val(pResponse.session.uid);
                FB.api('/me', function(response) {
                    if (response != null) {
                        if (response.first_name != "") {
                            $j("input[id$=hdnFBFirstName]").val(response.first_name);
                            $j("span[id$=pnlFBFirstName]").html(response.first_name);
                        }
                        if (response.last_name != "") {
                            $j("input[id$=hdnFBLastName]").val(response.last_name);
                        }
                    }
                });
            }
            if (lHasCheckedForRegisteredUser == false) {
                lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.IsRegisteredUser(pResponse.session.uid).value;
                lHasCheckedForRegisteredUser = true;
            }
            if (lIsRegisteredUser) {
                document.forms[0].submit();
            }
            else {
                var lEdTab = $j("*[id$=pnlTabED]")[0];
                $j("#left", lEdTab).removeClass("spTabWhiteLeft").addClass("spTabBlueLeft");
                $j("#center", lEdTab).removeClass("CO119 spTabWhiteRepeat").addClass("CO102 spTabBlueRepeat");
                $j("#right", lEdTab).removeClass("spTabWhiteRight").addClass("spTabBlueRight");

                var lFBTab = $j("*[id$=pnlTabFB]")[0];
                $j("#Div1", lFBTab).removeClass("spTabBlueLeft").addClass("spTabWhiteLeft");
                $j("#Div2", lFBTab).removeClass("CO102 spTabBlueRepeat").addClass("CO119 spTabWhiteRepeat");
                $j("#Div3", lFBTab).removeClass("spTabBlueRight").addClass("spTabWhiteRight");

                $j("*[id$=pnlEmailTitle]").addClass('DN');
                $j("*[id$=pnlEduifyName]").removeClass("DIN").addClass("DN");
                $j("*[id$=pnlFBName]").removeClass("DN").addClass("DIN");
            }
        }
    },
    /* 
    *   Function    : onLandingPageLogin
    *   Used In     : auth.login event for SignupLanding2.ascx which is used in WriteFaster.aspx, WriteFaster2.aspx, WriteNew2.aspx, WriteSmarter2.aspx 
    *                 and WriteSafely2.aspx. 
    *                 auth.login event for SignupProofread which is used in Proofread.aspx.
    *   Description : Set the Hidden fields for FacebookUserId, FirstName and LastName. 
    *                 Check if provider facebook user is already registered with Eduify.
    *                 If already Eduify User redirect to home page.
    *                 If not an Eduify user show facebook Data
    *   Prams       : pResponse - Object containg facebook session object
    */
    onLandingPageLogin: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            var lhdnFBUID = $j("input[id$=hdnFBUID]");
            if (lhdnFBUID.length > 0) {
                lhdnFBUID.val(pResponse.session.uid);
                FB.api('/me', function(response) {
                    if (response != null) {
                        if (response.first_name != "") {
                            $j("input[id$=hdnFBFirstName]").val(response.first_name);
                            $j("span[id$=pnlFBFirstName]").html(response.first_name);
                        }
                        if (response.last_name != "") {
                            $j("input[id$=hdnFBLastName]").val(response.last_name);
                        }
                    }
                });
            }
            if (lHasCheckedForRegisteredUser == false) {
                lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.IsRegisteredUser(pResponse.session.uid).value;
                lHasCheckedForRegisteredUser = true;
            }
            if (lIsRegisteredUser) {
                window.location.replace(APP_PATH + '/home')
                return;
            }
            else {
                $j('"*[id$=pnlData]').removeClass('DN');
                $j('"*[id$=pnlSignUp]').addClass('DN');
                $j('"*[id$=pnlEmailTitle]').addClass('DN');
                $j("*[id$=pnlEduifyName]").removeClass("DIN").addClass("DN");
                $j("*[id$=pnlFBName]").removeClass("DN").addClass("DIN");
            }
        }
    },
    /* 
    *   Function    : onLandingPage3Login
    *   Used In     : auth.login event for SignupLanding3.ascx which is used in Plagiarism.aspx and Plagiarism4.aspx
    *                 auth.login event for SignupLanding4.ascx which is used in Plagiarism2.aspx and Plagiarism3.aspx     
    *   Description : Set the Hidden fields for FacebookUserId, FirstName and LastName. 
    *                 Check if provider facebook user is already registered with Eduify.
    *                 If already Eduify User submit form
    *                 If not an Eduify user trigger lbtnEnter click
    *   Prams       : pResponse - Object containg facebook session object
    */
    onLandingPage3Login: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            var lhdnFBUID = $j("input[id$=hdnFBUID]");
            if (lhdnFBUID.length > 0) {
                lhdnFBUID.val(pResponse.session.uid);
                FB.api('/me', function(response) {
                    if (response != null) {
                        if (response.first_name != "") {
                            $j("input[id$=txtFirstName]").val(response.first_name);
                        }
                        if (response.last_name != "") {
                            $j("input[id$=txtLastName]").val(response.last_name);
                        }
                    }
                });
            }
            if (lHasCheckedForRegisteredUser == false) {
                lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.IsRegisteredUser(pResponse.session.uid).value;
                lHasCheckedForRegisteredUser = true;
            }
            if (lIsRegisteredUser) {
                document.forms[0].submit();
            }
            else {
                $j("input[id$=btnFbEnter]").trigger('click');
            }
        }
    },
    /* 
    *   Function    : onPlageProfLogin
    *   Used In     : auth.login event for ProfileComplete.aspx   
    *   Description : Check if provider facebook user is already registered with Eduify.
    *                 If already Eduify User submit form
    *                 If not an Eduify user trigger btnFbLoad click
    *   Prams       : pResponse - Object containg facebook session object
    */
    onPlageProfLogin: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            if (lHasCheckedForRegisteredUser == false) {
                lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.IsRegisteredUser(pResponse.session.uid).value;
                lHasCheckedForRegisteredUser = true;
            }
            if (lIsRegisteredUser) {
                //document.forms[0].submit();
                Eduify.FBConnectNew.FBLogout();
                Eduify.Alert("error :: ", "Provided facebook user is already utilized!", EdButtons.OkOnly);
            }
            else {
                $j("input[id$=btnFbLoad]").trigger('click');
            }
        }
    },
    /* 
    *   Function    : onToolBarLogin
    *   Used In     : auth.login event for ToolBar.master which is used in ToolBarSignin.aspx   
    *   Description : Check if provider facebook user is already registered with Eduify.
    *                 If already Eduify User submit form
    *                 If not an Eduify user Show facebook panel
    *   Prams       : pResponse - Object containg facebook session object
    */
    onToolBarLogin: function(pResponse) {
        if (pResponse.session && pResponse.status == "connected") {
            if (lHasCheckedForRegisteredUser == false) {
                lIsRegisteredUser = Eduify.UI.Common.AJAXMethods.IsRegisteredUser(pResponse.session.uid).value;
                lHasCheckedForRegisteredUser = true;
            }
            if (lIsRegisteredUser) {
                document.forms[0].submit();
            }
            else {
                $j("div[id$=pnlFBNA]").removeClass("DN").addClass("DB");
                lHasCheckedForRegisteredUser = false;
                lIsRegisteredUser = false;
                return;
            }
        }
    },
    /* 
    *   Function    : openFBInviteRequestDialog
    *   Used In     : Facebook invite dialog to show in case of connecting from audit box   
    *   Description : Opens facebook invite dialog to send eduify request to friends.   
    *   Prams       : pIsProfileFirstUse - Call from profile first use
    *                 pDestinationPage - page to redirect to if provided
    */
    openFBInviteRequestDialog: function(pIsProfileFirstUse, pDestinationPage, pDestInCaseOfEditor) {
        FB.ui({
            method: 'apprequests',
            message: 'Greetings! I found a great new service for writing and researching called Eduify. They have some really solid tools that make writing so much easier. Seriously. Check it out:',
            filters: ['app_non_users']
        }, function(response) {
            if (typeof response != "undefined" && response != null && response.request_ids != null) {
                if (typeof _AjaxPath != "undefined") {
                    $j.ajax({
                        type: "POST",
                        url: _AjaxPath,
                        data: '{"pUserIds":"' + response.request_ids + '","pIsProfileFirstUse":' + pIsProfileFirstUse + '}',
                        beforeSend: function(xhr) {
                            xhr.setRequestHeader("Ajax-Method", "SetInvitePoints");
                            xhr.setRequestHeader("Accept-Encoding", "gzip, deflate");
                        },
                        success: function(s) {
                            if (eval(s) == true) {
                                if (typeof pDestinationPage != "undefined") {
                                    if (pDestinationPage == pDestinationPage.match('editor') && pDestInCaseOfEditor != '') {
                                        var lNewWindow = window.open(pDestInCaseOfEditor);
                                        if (lNewWindow) {
                                            window.location = pDestinationPage;
                                        } else {
                                            if ($j.browser.safari) {
                                                alert('please enable popup to continue.')
                                            };
                                        }
                                    }
                                    else {
                                        window.location = pDestinationPage;
                                    }
                                }
                            }
                        }
                    });
                } else {
                    var lDone = Eduify.UI.Common.AJAXMethods.SetInvitePoints(response.request_ids, pIsProfileFirstUse).value;
                    if (lDone) {
                        if (typeof pDestinationPage != "undefined") {
                            if (pDestinationPage == pDestinationPage.match('editor') && pDestInCaseOfEditor != '') {
                                var lNewWindow = window.open(pDestInCaseOfEditor);
                                if (lNewWindow) {
                                    window.location = pDestinationPage;
                                } else {
                                    if ($j.browser.safari) {
                                        alert('please enable popup to continue.')
                                    };
                                }
                            }
                            else {
                                window.location = pDestinationPage;
                            }
                        }
                    }
                }
            } else {
                if (typeof pDestinationPage != "undefined") {
                    if (pDestinationPage == pDestinationPage.match('editor') && pDestInCaseOfEditor != '') {
                        var lNewWindow = window.open(pDestInCaseOfEditor);
                        if (lNewWindow) {
                            window.location = pDestinationPage;
                        } else {
                            if ($j.browser.safari) {
                                alert('please enable popup to continue.');
                            }
                        }
                    }
                    else 
                    {
                        window.location = pDestinationPage;
                    }
                }
            }
        });
    }
};
