var DM_Widget_UserTools = 
{
    userId: null,
    rules : {
        'a.show_blog_list' : function(element)
        {
            element.onclick = function()
            {
                toggleElement('blog_list');
            };
        },
        'div#blog_list div.close' : function(element)
        {
            element.onclick = function()
            {
                toggleElement(element.parentNode.parentNode);
            };
        },
        'div.link_subscribe' : function(element)
        {
            element.onclick = function()
            {
                ajax_call('relation', 'toggle_subscribe', findIdInClass(element), DM_Widget_UserTools.toggleSubscription(element));
            };
        },
        'a.refuse_request' : function(element)
        {
            element.onclick = function()
            {
                Element.addClassName(element, 'loading');
                ajax_call
                (
                    'relation', 
                    'ignore', 
                    findIdInClass(element), 
                    function(status){DM_Widget_UserTools.callbackFadeRelation(element, status);}
                );
            };
        },
        'a.accept_request' : function(element)
        {
            element.onclick = function()
            {
                if(!$('popup'))
                {
                    var userId = findIdInClass(element);
                    ajax_call
                    (
                        'relation', 
                        'add_to_friend', 
                        userId,
                        function(status){DM_Widget_UserTools.callbackRelationPopup(element, status);}
                    );    
                }                
            };
        },
        'a.add_to_friends' : function(element)
        {
            element.onclick = function()
            {
                DM_Widget_UserTools.toggleRelation(element, 'add', findIdInClass(element));
            };
        },
        'a.edit_contact' : function(element)
        {
            element.onclick = function()
            {
                DM_Widget_UserTools.toggleRelation(element, 'edit', findIdInClass(element));
            };
        },
        'a.delete_relation' : function(element)
        {
            element.onclick = function()
            {
                Element.addClassName(element, 'loading');
                ajax_call
                (
                    'relation', 
                    'delete', 
                    findIdInClass(element), 
                    function(){DM_Widget_UserTools.callbackFadeRelation(element);}
                );
            };
        }
    },
    toggleRelation : function(element, mode, userId)
    {
        Element.addClassName(element, 'loading');
        if(!$('popup'))
        {
            var request = '/contact/'+ mode +'/' + findIdInClass(element);
            var positionTop = (Position.cumulativeOffset(element)[1]) + 10 + 'px';
            var positionLeft = (Position.cumulativeOffset(element)[0]) - 455 + 'px';
            DM_Widget_Popup.getWidget(element,  request, 'RelationEdit', positionTop, positionLeft);    
            DM_Widget_UserTools.userId = userId;
        }
        
        Element.removeClassName(element, 'loading');
    },
    toggleSubscription : function(el)
    {
        var link = el;        
        Element.addClassName(link.firstChild.lastChild, 'loading');
        
        return function(status)
        {
            if(link.firstChild.lastChild != null)
            {
                if(status == 1)
                {
                    link.firstChild.lastChild.innerHTML = DM_Widget_UserTools.remove_subscription_label;
                }
                else
                {
                    link.firstChild.lastChild.innerHTML = DM_Widget_UserTools.add_subscription_label;
                }
                Element.removeClassName(link.firstChild.lastChild, 'loading');
            }
            DM_Widget_UserTools.updateSubscriptionCounter(status);
        };
    },
    updateSubscriptionCounter : function(status)
    {
        var el = $('user_nb_subscriptions');
        if(el)
        {
            var nbSubscriptions = parseInt(el.innerHTML);
            if(status == 1)
            {
                el.innerHTML = nbSubscriptions + 1;
            }
            else
            {
                if(nbSubscriptions > 0)
                {
                    el.innerHTML = nbSubscriptions - 1;  
                }
            }
        }
    },
    callbackRelationPopup: function(element, status)
    {
        var userId = findIdInClass(element);
        var request = '/contact/add/' + userId;
        var positionTop = (Position.cumulativeOffset(element)[1]) + 10 + 'px';
        var positionLeft = (Position.cumulativeOffset(element)[0]) - 455 + 'px';
        DM_Widget_Popup.getWidget
        (
            element,
            request,
            'RelationEdit',
            positionTop,
            positionLeft
        );
    },
    callbackFadeRelation : function(element)
    {
        if($('user_list_item_' + findIdInClass(element)))
        {
            new Effect.Fade($('user_list_item_' + findIdInClass(element)), {duration: 0.6});
        }
        Element.removeClassName(element, 'loading');
    },
    initialize : function ()
    {
        Event.onDOMReady(
            function() {
                EventSelectors.start(DM_Widget_UserTools.rules);
            }
        );
    }
};
DM_Widget_UserTools.initialize();


