// Global variables (the ones that need jelix to be built are in p7_sign_panel.tpl)
var g_loginCallback; // called after sign in or sign up ajax call
var g_afterTwitterCallback; // Used by link when popup was blocked
var signInSource;

$(document).ready(function() { 
    // Initialize Facebook Connect
    facebookInit(null);
        
    // AJAX validation of the forms
    $('#display-name').blur(function() {onValidateField('display_name','display-name');});
    $('#email').blur(function() {onValidateField('email','email');});
    $('#password').blur(function() {onValidateField('password','password');});
    $('#captcha-text').blur(function() {onValidateField('captcha','captcha-text','captcha-code');});

    // add forms submission functions
    $('#sign-in-form').submit(onClickSJSignIn);
    $('#register-form').submit(onClickSJSignUp);
    $('#forgot-form').submit(onClickSendForgotPassword);
});

// When the user clicks on "Sign in"
window.onClickShowSignPanel = function(mode, callback) {
    emptySignForms();
    hideErrorFeedback();
    hideSuccessFeedback();
    openLoginIfNeeded(mode, callback, 'link');
    if (mode == 'sign-up') 	{
        $('#display-name').focus();
    } else {
        $('#sign-in-email').focus();
    }
};

window.emptySignForms = function() {
    $("#sign-in-email").val('');
    $("#sign-in-password").val('');
    $("#display-name").val('');
    $("#email").val('');
    $("#password").val('');
};

window.onClickHideSignPopup = function(chainToLogin) {
    hidePopup('sign-popup');
    if (chainToLogin && (typeof g_loginCallback == 'function')) {
        g_loginCallback(true, null);
    }
};

window.onClickTwitterSignIn = function() {
    openPopup(g_twitterLoginUrl, 'TwitterPopup','location=0,status=0,toolbar=0,menubar=0,resizable=0,scrollbars=1,width=850,height=450',
        // when the popup is closed
        function () {
            // check if the user is logged in
            checkIsLoggedIn(function (data) {

                // is logged in on twitter ?
                if (data.loggedInOnTwitter) {
                    hidePopup('sign-popup');
                    // call default callback
                    onTwitterLogin(data);
                    updateTwitterServiceData(data);
                    // call callback specified when opening the sign in panel
                    if (typeof g_loginCallback == 'function') { g_loginCallback(true, data); }
                    // is logged in on twitter ?

                // logged in with screenjelly with a twitter service
                } else if (data.loggedInPassword && data.loggedInOnTwitterAsService) {
                    hidePopup('sign-popup');

                    // call default callback
                    onTwitterServiceLogin(data);

                    // call callback specified when opening the sign in panel
                    if (typeof g_loginCallback == 'function') { g_loginCallback(true, data); }

                } else {
                    // check if the error
                    if ($.cookie('need_accept_terms')) {
                        $.cookie('need_accept_terms', null, {path: '/'});

                        // show the terms and conditions
                        hideAllForms();
                        g_acceptEulaUrl = g_twitterCreateAccountUrl;
                        $("#twitter-follow-text").show();
                        $(".show-terms").show();
                    } else {

                        // call callback specified when opening the sign in panel
                        if (typeof g_loginCallback == 'function') { g_loginCallback(false, data); }
                    }
                }
            });
        }
    );
};

window.facebookInit = function(callback) {
    FB_RequireFeatures(['Connect'], function() {
        if(window.fb_key) {
            FB.init(window.fb_key, '/xd_receiver.htm', {"forceBrowserPopupForLogin":true});
            window.fb_key = null;
        }
        if(typeof callback === 'function') { callback(); }
    });
};

window.onClickSignOut = function() {
    if(g_loggedInOnFacebook || g_loggedInOnFacebookAsService) {
        FB.ensureInit(function() { FB.Connect.logout(logoutOnBackend); });
    } else {
        logoutOnBackend();
    }
};

window.onClickFacebookSignIn = function() {
    FB.Connect.requireSession(onFacebookCallback);
};

window.openFacebookLoginIfNeeded = function(callback) {
    openLoginIfNeeded('sign-in', function(success, data) {
        if (success) {
            // the user logger in with facebook
            if (g_loggedInOnFacebook) {
                // call callback if specified
                if (callback) { callback(true, data); }
            // the user logged in with something else -> Facebook as a service
            } else if (g_loggedIn && g_loggedInOnFacebookAsService) {
                    hidePopup('sign-popup');
                    onFacebookServiceLogin(data);
                    // call callback if specified
                    if (callback) { callback(true, data); }

                } else {
                    // check if the twitter service is valid
                    isServiceValid('Facebook',
                        // service is valid
                        function (data) {
                            onFacebookServiceLogin(data);
                            // call the given callback
                            if (callback) { callback(true, data); }
                        },
                        // service is not valid ?
                        function (data) {
                            FB.Connect.requireSession(function() {
                                var waitableSession = FB.Facebook.get_sessionWaitable();
                                validateFacebookSession(waitableSession.result,
                                    function(data){
                                        // Check service status after twitter popup is closed
                                        isServiceValid('Facebook',
                                            // service is now valid
                                            function (data) {
                                                onFacebookServiceLogin(data);
                                                // call the given callback
                                                if (callback)  { callback(true, data); }
                                            },
                                            // service is still not valid
                                            function (data) {
                                                if (callback) { callback(false, data); }
                                            }
                                        );
                                    },
                                    function(code, error) {
                                        // TODO if error
                                        if (typeof callback == 'function') { callback(false, error); }
                                    }
                                );
                            }); 
                        }
                    );
                }
        } else {
            //canceled by user
            if (callback) { callback(false, data); }
        }
    });
};

window.onFacebookCallback = function() {
    //FB.ensureInit(function() {
        var waitableSession = FB.Facebook.get_sessionWaitable();
    
        if(waitableSession.get_isReady() && waitableSession.result) {
            checkIsLoggedIn(function(data) {
                if((data !== undefined) && data.loggedInOnFacebook) {
                    // close popup
                    hidePopup('sign-popup');
                    onFacebookLogin(data);
                    // call callback specified when opening the sign in panel
                    if (typeof g_loginCallback == 'function') { g_loginCallback(true, data); }
                } else {
                    validateFacebookSession(waitableSession.result,
                        function(data){
                            // check if the error
                            if ($.cookie('need_accept_terms')) {
                                $.cookie('need_accept_terms', null, {path: '/'});
                                // show the terms and conditions
                                hideAllForms();
                                g_acceptEulaUrl = g_facebookCreateAccountUrl;
                                $("#twitter-follow-text").hide();
                                $(".show-terms").show();
                            } else {
                                // close popup
                                hidePopup('sign-popup');
                                onFacebookLogin(data);
                                // call callback specified when opening the sign in panel
                                if (typeof g_loginCallback == 'function') { g_loginCallback(true, data); }
                            }
                        },
                        function(code, error) {
                            // TODO if error
                            //if (typeof g_loginCallback == 'function') { g_loginCallback(false, error); }
                        }
                    );
                }
            });
        }
    //});
};
/*
window.checkFacebookSessionState = function() {
    var sessionWaitable = FB.Facebook.get_sessionWaitable();
    if(sessionWaitable.get_isReady() && sessionWaitable.result){
        onFacebookCallback();
    }
};
*/

window.logoutOnBackend = function() {
    // call log out service
    if(g_loggedIn) {
        ajaxCall({
            type: 'GET',
            url: g_signOutUrl,
            cache: false,
            onSuccess: function(data) {
                if(g_loggedInOnFacebook) {
                    FB.ensureInit(function(){
                        // Refresh cookies from session status
                        // -- found here: http://forum.developers.facebook.com/viewtopic.php?id=36177
                        var singleton = FB.Connect._singleton;
                        singleton._feedStatusRefetch();
                        FB.XFBML.Host.refresh();
                        onFacebookLogout(data);
                    });
                } else {
                    onLogout(data);
                }
            },
            onError: function (code, error) {

            }
         });
    }
};

window.onClickSJSignIn = function() {
    blockButton('#sj-sign-in-button', 'Please wait..');

    // hide errors
    $('#sign-in-bubble').hide();
    hideErrorFeedback();

    // tranfert email to activate form (if activation needed)
    $('#activate-email').val($('#sign-in-email').val());

    // send form
    ajaxCall({
        type: 'POST',
        async: true,
        useBubble: 'sign-in-bubble',
        url: g_signInUrl,
        data: {
             email: $('#sign-in-email').val(),
             password: $('#sign-in-password').val(),
             remember: $('#sign-in-remember').is(':checked')
        },
        cache: false,
        onSuccess: function(data){
            unblockButton('#sj-sign-in-button');

            // default callback
            onScreenjellyLogin(data);

            // close popup
            hidePopup('sign-popup');

            // call callback specified when opening the sign in panel
            if (typeof g_loginCallback == 'function') {
                g_loginCallback(true, data);
            }
        },
        onError: function (code, data) {
            unblockButton('#sj-sign-in-button');

            if (code == 'RECEIVED_ERRORS') {
                if (data && data.problem == 'need_activation') {
                    // change form visible
                    $(".show-login").hide();
                    $(".show-activate").show();
                }
            }
        }
    });

    // return false to prevent form submission
    return false;
};

window.onValidateField = function(type, field1, field2) {
    $('#'+field1+'-error-icon').hide();
    $('#'+field1+'-success-icon').hide();

    // Send form
    ajaxCall({
        type: 'POST',
        async: true,
        url: g_validateUrl,
        showError: false,
        showSuccess: false,
        data: {
             'type' : type,
             'field1' : $('#'+field1).val(),
             'field2' : $('#'+field2).val()
        },
        cache: false,
        onSuccess: function(data) {
            $('#'+field1+'-success-icon').show();
            $('#'+field1+'-error-icon').hide();
            $('#'+field1+'-error').html("");
        },
        onError: function (code, data, response) {
            $('#'+field1+'-error-icon').show();
            $('#'+field1+'-success-icon').hide();
            if (response && response.errorMessage && response.errorMessage !== null) {
                $('#'+field1+'-error').html(response.errorMessage.message);
                $('#'+field1+'-error').show();
            }
        }
    });

};

window.onClickSJSignUp = function() {
    // hide errors
    hideErrorFeedback();

    // EULA Accepted ?
    if($("#eula").is(':checked')) {
        blockButton('#register-button', 'Please wait..');
        // Send form
        ajaxCall({
            type: 'POST',
            async: true,
            url: g_signUpUrl,
            data: {
                 'display-name' : $('#display-name').val(),
                 'password' : $('#password').val(),
                 'email' :    $('#email').val(),
                 'captcha-text' :  $('#captcha-text').val(),
                 'captcha-code' :  $('#captcha-code').val(),
                 'newsletter' : $('#newsletter').is(':checked')
            },
            cache: false,
            onSuccess: function(data) {
                unblockButton('#register-button');
                // Empty captcha-text to force renewal when reopen signup
                $('#captcha-text').val('');
                // change form visible
                hideAllForms();
                $(".show-registered").show();

                // call default callback
                onScreenjellyLogin(data);
                //hidePopup('sign-popup');
                // call callback specified when opening the sign in panel
                //if (typeof g_loginCallback == 'function') g_loginCallback(true, data);
            },
            onError: function (code, data) {
                unblockButton('#register-button');
            }
        });
    } else {
        // Show that EULA has to be accepted
        showNotificationBar('error','You have to agree to our end user license agreement to continue.');
    }

    // return false to prevent form submission
    return false;
};

window.hideAllForms = function() {
    $(".show-login").hide();
    $(".show-register").hide();
    $(".show-twitter-login").hide();
    $(".show-activate").hide();
    $(".show-registered").hide();
    $(".show-terms").hide();
    $(".show-forgot").hide();
};

window.hideErrorFeedback = function() {
    $('#sign-in-bubble').hide();
    $("[id $= '-error-icon']").hide();
};

window.hideSuccessFeedback = function() {
    $('#sign-in-bubble').hide();
    $("[id $= '-success-icon']").hide();
};

window.onClickShowSignUp = function() {
    // set a captcha image
    if ($('#captcha-text').val() == '') {
        updateCaptcha('captcha-img','captcha-code');
        $("#captcha-text").val('');
    }

    // send event
    sendEvent('CLICK_REGISTER',null,'source='+signInSource);

    // hide errors
    hideErrorFeedback();

    // clear form
    $("#eula").attr('checked', false);

    // change form visible
    hideAllForms();
    $(".show-register").show();
    $('#display-name').focus();
};

window.onClickSendActivationEmail = function() {
    blockButton('#activation-button');

    // Send form
    ajaxCall({
        type: 'POST',
        async: true,
        url: g_resendActiationLinkUrl,
        data: {
             'email' : $('#activate-email').val()
        },
        cache: false,
        onSuccess: function(data) {
            unblockButton('#activation-button');
        },
        onError: function (code, data) {
            unblockButton('#activation-button');
        }
    });
};

window.onClickShowSignIn = function(callback) {
    // change form visible
    hideAllForms();
    $(".show-login").show();

    // send event
    sendEvent('CLICK_LOGIN',null,null,'source='+signInSource);

    // clear form
    hideErrorFeedback();
    $("#sign-in-email").val('');
    $("#sign-in-password").val('');
    $('#sign-in-email').focus();
};

window.onClickToggleForgotPasswordBackToSignin = function() {
    // change form visible
    $(".show-login").toggle();
    $(".show-forgot").toggle();
    $('#sign-in-email').focus();
};

window.onClickToggleForgotPassword = function() {
    // change form visible
    $(".show-login").toggle();
    $(".show-forgot").toggle();
    $('#forgot-email').focus();
};

window.onClickSendForgotPassword = function() {
    // if the text of the button is Close, then close
    if ($('#forgot-button').find('.button-text').html() == 'Close') {
        hidePopup('sign-popup');
        return ;
    }

    $('#forgot-bubble').hide();

    blockButton($('#forgot-button'), 'Please wait..');

    // call contact service
    ajaxCall({
        type: 'GET',
        url: g_forgotPasswordUrl,
        useBubble: 'forgot-bubble',
        cache: false,
        data: {
            email: $('#forgot-email').val()
        },
        onSuccess: function(data){
            unblockButton($('#forgot-button'));

            // change button text to close
            $('#forgot-button').find('.button-text').html('Close');
        },
        onError: function (code, error) {
            unblockButton($('#forgot-button'));
        }
     });

    // return false to prevent form submission
    return false;
};

window.onClickChangeCaptcha = function() {
    $('#captcha-text-success-icon').hide();
    $('#captcha-text-error-icon').hide();
    $('#captcha-text-error').html("");
    $('#captcha-text').val("");
    updateCaptcha('captcha-img','captcha-code');
};

window.openLoginIfNeeded = function(mode, callback, source) {
    if (g_loggedIn) {
        // call the callback if success
        if(callback) {
            callback(true, null);
        }

    } else {
        // Define the callback that will be called when sign in succeed
        if (callback) {
            g_loginCallback = callback;
        }

        if (source)	{
            signInSource = source;
        } else {
            signInSource = 'action';
        }

        if (mode == 'sign-up') 	{
            onClickShowSignUp();
        } else { // Please leave brackets, more readable and recommended by JSLint
            onClickShowSignIn();
        }

        showPopup('sign-popup');
    }
};

window.isServiceValid = function(service, validCallback, invalidCallback, errorCallback){
    // Check session and service status
    ajaxCall({
        type: 'GET',
        async: true,
        url: g_serviceStatusUrl,
        cache: false,
        data: {
            'service' : service
        },
        // no errors
        onSuccess: function(data){

            // service is valid
            if(data.serviceValid) {
                // call default callback
                if (typeof window['on'+service+'ServiceLogin'] == 'function') {
                    window['on'+service+'ServiceLogin'](data);
                }
                // call function callback
                validCallback(data);

            // service is not valid
            } else {
                // call default callback
                if (typeof window['on'+service+'ServiceLogin'] == 'function') {
                    window['on'+service+'ServiceLogout'](data);
                }
                // call function callback
                invalidCallback(data);
            }
        },
        // an unexpected error occured
        onError: function (code, error) {
            if (errorCallback) {
                errorCallback(code, error);
            }
        }
     });
};

window.openTwitterPopup = function() {
    $('#twitter-popup-opener').hide();
    var popup = openPopup(g_twitterLoginUrl, 'TwitterPopup','location=0,status=0,toolbar=0,menubar=0,resizable=0,scrollbars=1,width=850,height=450',
                                // when the popup is closed
                                function () {
                                    // Check service status after twitter popup is closed
                                    isServiceValid('Twitter',
                                        // service is now valid
                                        function (data) {
                                            updateTwitterServiceData(data);
                                            // call the given callback
                                            if (g_afterTwitterCallback) { g_afterTwitterCallback(true, data); }
                                        },
                                        // service is still not valid
                                        function (data) {
                                            if (g_afterTwitterCallback) { g_afterTwitterCallback(false, data); }
                                        }
                                    );
                                }
                            );
};

window.openTwitterLoginIfNeeded = function(callback) {
    // Used by link when popup is blocked
    g_afterTwitterCallback = callback;
    openLoginIfNeeded('sign-in', function(success, data) {
        if (success) {
            // the user logger in with twitter
            if (g_loggedInOnTwitter) {
                //updateTwitterServiceData(data);
                // call callback if specified
                if (callback) { callback(true, data); }
            // the user logged in with something else _> TW as a service
            } else if (g_loggedIn && g_loggedInOnTwitterAsService) {
                    hidePopup('sign-popup');
                    // call callback if specified
                    if (callback) { callback(true, data); }

                } else {
                    // check if the twitter service is valid
                    isServiceValid('Twitter',
                        // service is valid
                        function (data) {
                            updateTwitterServiceData(data);
                            // call the given callback
                            if (callback) { callback(true, data); }
                        },
                        // service is not valid ?
                        function (data) {
                            // open twitter loggin page
                            var popup = openPopup(g_twitterLoginUrl, 'TwitterPopup','location=0,status=0,toolbar=0,menubar=0,resizable=0,scrollbars=1,width=850,height=450',
                                // when the popup is closed
                                function () {
                                    // Check service status after twitter popup is closed
                                    isServiceValid('Twitter',
                                        // service is now valid
                                        function (data) {
                                            updateTwitterServiceData(data);
                                            // call the given callback
                                            if (callback)  { callback(true, data); }
                                        },
                                        // service is still not valid
                                        function (data) {
                                            if (callback) { callback(false, data); }
                                        }
                                    );
                                }
                            );
                        }
                    );
                }
            } else {
                //canceled by user
                if (callback) { callback(false, data); }
            }
        }
    );
};

window.checkIsLoggedIn = function(callback) {
    // check if the user logged in
    ajaxCall({
        type: 'GET',
        async: false,
        url: g_isLoggedInUrl,
        cache: false,
        onSuccess: function(data){
            callback(data);
        },
        onError: function (code, error) {

        }
     });
};

// When the user clicks on accept
window.onClickAcceptEula = function() {
    if($('#followScreenjelly')) {
        follow_sj = $('#followScreenjelly').is(':checked');
    } else {
        follow_sj = false;
    }

    ajaxCall({
        type: 'POST',
        async: true,
        url: g_acceptEulaUrl,
        cache: false,
        data: {
            follow: follow_sj
        },
        onSuccess: function(data){
            hidePopup('sign-popup');
            checkIsLoggedIn(function (data) {
                if(data.loggedIn) {
                    if (data.loggedInOnTwitter) {
                        onTwitterLogin(data);
                    } else if (data.loggedInOnFacebook) {
                        onFacebookLogin(data);
                    }
                    // call callback specified when opening the sign in panel
                    if (typeof g_loginCallback == 'function') { g_loginCallback(true, data); }
                }
            });
        },
        onError: function (code, error) {
            if (typeof g_loginCallback == 'function') { g_loginCallback(false, error); }
        }
     });
};

window.updateTwitterServiceData = function(data) {
    // update twitterService
    if(data.twitterUsername) {
        if(data.loggedInOnTwitter) {
            $(".twitter-url-link").attr('onclick', 'onClickSignOutTwitterService(); return false;');
            $(".twitter-change-link").html('Sign out');
        } else {
            $(".twitter-url-link").attr('onclick', 'onClickChangeTwitterService(); return false;');
            $(".twitter-change-link").html('Change');
        }
        $(".twitter-url-link").attr('href', 'http://twitter.com/' + data.twitterUsername);
        $(".twitter-url-link").html(data.twitterUsername);
        $(".twitter-login").show();
    }
};

window.onClickSignOutTwitterService = function(successCallback, errorCallback) {
    g_loggedInOnTwitterAsService = false;

    ajaxCall({
        type: 'GET',
        async: true,
        url: g_signOutTwitterServiceUrl,
        cache: false,
        data: {},
        onSuccess: function(data) {
            // Hide via @xxxx
            $(".twitter-login").hide();
            if(data.auth_realm == '') {
                // Logout
                onLogout();
            }
            if(successCallback) {
                successCallback(data);
            }
        },
        onError: function (code, error) {
            if(errorCallback) {
                errorCallback(code, error);
            }
        }
     });
};

window.onClickChangeTwitterService = function() {
    g_loggedInOnTwitterAsService = false;

    onClickSignOutTwitterService(function(data) {
                                    // Hide via @xxxx
                                    $(".twitter-login").hide();
                                    // Show twitter login
                                    openTwitterLoginIfNeeded(function (success, data) {
                                        if (success) {
                                            //updateTwitterServiceData(data);
                                        }
                                    });
                                }, function(code, error) {

                                });
};

//When the user clicks on decline
window.onClickDeclineEula = function() {
    $.cookie('need_accept_terms', null, {path: '/'});
    hidePopup('sign-popup');
};

/****************************************************************************
 * Default callbacks when login/logout
 *****************************************************************************/

window.onTwitterLogin = function(data) {
    g_loggedInOnTwitter = true;

    $('.only-twitter-user').show();

    onLogin(data);
};

window.onFacebookLogin = function(data) {
    g_loggedInOnFacebook = true;
    showFacebookData(data);
    onLogin(data);  
};

/*
* Try to validate Facebook session, will store session data to be used
* by the backend after the user accept EULA
*/
window.validateFacebookSession = function(fbSession, successCallback, errorCallback) {
    if(fbSession) {
        ajaxCall({
            type: 'POST',
            async: false,
            url: g_facebookValidateSessionUrl,
            cache: false,
            data: {
                session:  JSON.stringify(fbSession)
                },
            onSuccess: function(data){
                if(successCallback) { successCallback(data); }
            },
            onError: function (code, error) {
                if(errorCallback) { errorCallback(code, error); }
            }
         });
    }
};

window.showFacebookData = function(data) {
    $('.only-facebook-user').show();
    hidePopup('sign-popup');
};

window.onFacebookLogout = function(data) {
    if(g_loggedInOnFacebook) {
        g_loggedInOnFacebook = false;
        $('.only-facebook-user').hide();
        onLogout(data);
    }
};

window.onScreenjellyLogin = function(data) {
    g_loggedInOnScreenjelly = true;

    onLogin(data);
};

window.onLogin = function(data) {
    g_loggedIn = true;

    if (data) {
        // change my recordings link
        if (data.userpageUrl) { $('#user-page-url').attr('href', data.userpageUrl); }
        // change user name
        if (data.userDisplayName) { $('#user-display-name').html(data.userDisplayName); }

        // look if a service is attached to the user
        if (data.loggedInOnTwitterAsService) {
            onTwitterServiceLogin();
        } else {
            onTwitterServiceLogout();
        }
        
        if (data.loggedInOnFacebookAsService) {
            onFacebookServiceLogin();
        } else {
            onFacebookServiceLogout();
        }

        hidePopup('sign-popup');

        if(typeof setDescriptionEventForAuthor === 'function') {
            setDescriptionEventForAuthor();
        }
        // Show logged in user stuff
        if(data.userBid) {
            $('.enable-only-user-'+data.userBid).attr('disabled', '');
            $('.only-user-'+data.userBid).show();
            $('.other-user-'+data.userBid).hide();
        }
      
        updateTwitterServiceData(data);

        if (data.userPicture) { $('.user-picture').attr('src',data.userPicture); }
        if (data.isAdmin) { $('.only-admin').show(); }
        if (data.userEmail) {
            $('input.user-email').each(function(index) {
                // fill email if empty
                if ($(this).val().length === 0) {
                    $(this).val(data.userEmail);
                }
            });
        }
        
        if (data.accountType == 1) { $('.only-admin').show(); }
        
        $('.only-logged-user').show();
        $('.not-logged-user').hide();
    }
};

window.onLogout = function(data) {
    // put to false every loggedIn variables
    g_loggedIn = false;
    g_loggedInOnTwitter = false;
    g_loggedInOnFacebook = false;
    g_loggedInOnScreenjelly = false;
    $(".twitter-login").hide();

    // hide all the user logged stuff
    $('.only-logged-user').hide();
    $('.only-twitter-user').hide();
    $('.only-facebook-user').hide();
    $('.not-logged-user').show();
    $('.only-admin').hide();

    if(typeof hideEditableDescription === 'function') {
        hideDescriptionButtons();
    }
    if(typeof hideEditableDescription === 'function') {
        hideEditableDescription();
    }

    if (data) {
        if(data.userBid) {
            $('.enable-only-user-'+data.userBid).attr('disabled', 'disabled');
            $('.only-user-'+data.userBid).hide();
            $('.other-user-'+data.userBid).show();
        }
    }
};

window.onTwitterServiceLogin = function(data) {
    g_loggedInOnTwitterAsService = true;

    // Show via @xxxx
    $(".twitter-login").show();
};

window.onTwitterServiceLogout = function(data) {
    g_loggedInOnTwitterAsService = false;

    // Hide via @xxxx
    $(".twitter-login").hide();
};

window.onFacebookServiceLogin = function(data) {
    g_loggedInOnFacebookAsService = true;
};

window.onFacebookServiceLogout = function(data) {
    g_loggedInOnFacebookAsService = false;
};
