/**
* @copyright  Copyright (c) 2009 AITOC, Inc. 
*/
aitocfacebookopenid =
{

    action: 'login' ,

    _requestMagento: function( method , data , callback )
    {
        var ajaxUrl = aitocopenid.facebook.ajaxUrl+method;
        aitocopenid.requestMagento(ajaxUrl,data,callback);
    } ,

    logout: function()
    {
        aitocfacebookopenid.action = 'logout';
        aitocfacebookopenid.realize();
    } ,

    realize: function()
    {
        if(aitocopenid.facebook.key)
        {
            if (aitocopenid.speedup && aitocfacebookopenid.action == 'login')
            {
                aitocfacebookopenid.render();
            }
            else
            {
                FB.init(aitocopenid.facebook.key,aitocopenid.baseUrl+"xd_receiver.htm");
                FB.ensureInit(aitocfacebookopenid.performLoad);
            }
        }
        else
        {
            aitocfacebookopenid.render();
        }
    } ,
    
    launch: function()
    {
        aitocfacebookopenid.action = 'launch';
        aitocfacebookopenid.realize();
    } ,

    performLoad: function()
    {
        switch(aitocfacebookopenid.action)
        {
            case 'launch':
                aitocopenid.displayMode = 'details';
                aitocfacebookopenid._renderButton();
                try
                {
                    aitocfacebookopenid.action = 'login';
                    FB.Connect.requireSession(aitocfacebookopenid.performLoad);
                }
                catch (e)
                {
                    aitocfacebookopenid.render();
                }
                break;
            case 'logout':
                FB.Connect.logoutAndRedirect (aitocopenid.successUrl?aitocopenid.successUrl:document.URL);
                break;
            case 'login':
                aitocfacebookopenid._requestMagento("check",null,aitocfacebookopenid.realizeCheckResponse);
                break;
        }
    } ,

    render: function()
    {
        aitocfacebookopenid._renderButton();
        aitocopenid.render();
    } ,

    realizeCheckResponse: function( response )
    {
        switch(response.responseJSON.status)
        {
            case 'registered':
                aitocopenid.gotoEditAccount();
                break;
            case 'logedin':
                aitocopenid.refreshPage(response.responseJSON.successUrl);
                break;
            case 'unknown':
                aitocfacebookopenid.render();
                break;
            case 'user':
                aitocfacebookopenid._renderButton();
                break;
        }
    } ,

    realizeUnauthorized: function()
    {
        aitocfacebookopenid._renderButton();
    } ,

    _renderButton: function()
    {
        var style = "small";
        switch (aitocopenid.displayMode)
        {
            case 'details':
            case 'normal':
                style = "medium";            
                break;
        }
        if (aitocopenid.speedup)
        {
            var img = style == "small" ? "fb16.gif" : "fb.gif";
            img = aitocopenid.baseUrl+aitocopenid.imgUrl+img;
            var div = $("openid_facebook");
            if (div)
            {
                div.innerHTML = 
                '<img style="cursor: pointer;" onclick="return aitocfacebookopenid.speedLogin();" src="'+img+'">';
            }
        }
        else
        {
            var div  = document.getElementById("openid_facebook");
            var html = '<fb:login-button onlogin="aitocfacebookopenid.realize();"';
            html += ' size="'+style+'" background="dark" length="short"></fb:login-button>';
            div.innerHTML = html;
            FB.XFBML.Host.parseDomTree();
        }
    } ,
    
    speedLogin: function()
    {
        FB.init(aitocopenid.facebook.key,aitocopenid.baseUrl+"xd_receiver.htm");
        FB.ensureInit(function()
        {
            try
            {
                aitocfacebookopenid.action = 'login';
                FB.Connect.requireSession(aitocfacebookopenid.performLoad);
            }
            catch (e)
            {
                aitocfacebookopenid.render();
            }
        });
        return false;
    }

};
