var DM_Widget_RelationEdit = {
    rules : {
        'input.delete' : function (element)
        {
            element.onclick = function()
            {
                if(confirm(DM_Widget_RelationEdit.labelDeleteRelation))
                {
                    var userId = findIdInClass(element.parentNode.parentNode);
                    var userEl = $('user_list_item_' + userId);
                    ajax_call
                    (
                        'relation', 
                        'delete', 
                        userId,
                        function(){DM_Widget_RelationEdit.callbackRemoveContact(userEl);}
                    );
                    DM_Widget_Popup.closePopup();
                }
            };
        },
        'input.add' : function (element)
        {
            element.onclick = function()
            {
                var userId = findIdInClass(element.parentNode.parentNode);
                var userEl = 
                DM_Widget_Popup.closePopup();
                if($(userId))
                {
                    DM_Widget_RelationEdit.callbackRemoveContactInbox($(userId));
                }
                else if($('user_list_item_' + userId))
                {
                    var tools = $('user_list_item_' + userId).down('div.dm_widget_usertools');
                    //tools.firstDescendant().innerHTML = DM_Widget_UserTools.labelPending;
                }
            };
        },
        'input#new_group': function (element)
        {
            element.onkeypress = function(event)
            {
                if(!event)
                {
                    event = window.event;
                }
                if(!event.preventDefault)
                {
                    event.preventDefault = function(){};
                }
                var keyCode = event.keyCode ? event.keyCode : event.which;

                if(keyCode == Keyboard.ENTER)
                {
                    DM_Widget_RelationEdit.addNewGroup(element);
                }    
            };
        },
        'input.new_group_submit' : function (element)
        {
            element.onclick = function()
            {
                DM_Widget_RelationEdit.addNewGroup(element);
            };
        },
        'div.dm_widget_relationedit a.toggle_group' : function(element)
        {
            element.onclick = function()
            {                
                Element.addClassName(element, 'icon_loading');
                ajax_call
                (
                    'relation', 
                    'toggle_group', 
                    findParamInClass('user_id', element.parentNode), 
                    findParamInClass('group_id', element.parentNode), 
                    
                    function(status)
                    {
                        if(status)
                        {
                            Element.removeClassName(element, 'add');
                            Element.addClassName(element, 'remove');
                        }
                        else
                        {
                            Element.removeClassName(element, 'remove');
                            Element.addClassName(element, 'add');                                   
                        }                            
                        Element.removeClassName(element, 'icon_loading');
                    }
                );
                return false;
            };
        },
        'a.delete_group' : function(element)
        {
            element.onclick = function()
            {
                if(confirm(DM_Widget_RelationEdit.labelDeleteGroup))
                {
                    ajax_call
                    (
                        'relation', 
                        'delete_group', 
                        findParamInClass('group_id', element.parentNode),
                        function(){DM_Widget_RelationEdit.callbackDeleteGroup(element);}
                    );
                }

            };
        }
    },
    addNewGroup : function(element)
    {
        var userId = findParamInClass('user_id', element);
        if($('new_group').value)
        {
            ajax_call
            (
                'relation', 
                'add_group_and_join', 
                $('new_group').value,
                userId, 
                function(msg){DM_Widget_RelationEdit.callbackAddGroup(msg, element, $('new_group').value, userId);}
            );
        }
    },
    callbackRemoveContactInbox : function(element)
    {
        new Effect.Fade(element,  {afterFinish: DM_Widget_InviteList.callbackRelationAfterFade});
    },
    callbackRemoveContact : function(element)
    {
        if(element)
        {
            new Effect.Fade(element);
        }
    },
    callbackAddGroup : function(groupId, element, groupName, userId)
    {
        var content = '<div class="user_id_' + userId + ' group_id_' + groupId + '"><a class="dm_action_link label toggle_group remove" href="javascript:void(0);">' + groupName + '</a><a class="delete_group close_icon"></a>';
        new Insertion.Before(element.parentNode, content);
        $('new_group').value = '';
        EventSelectors.assign(DM_Widget_RelationEdit.rules);
    },
    callbackDeleteGroup : function(element)
    {
        new Effect.Fade(element.parentNode, {duration: 0.6});
    },
    initialize : function()
    {
        Event.onDOMReady(
            function() {
                EventSelectors.start(DM_Widget_RelationEdit.rules);
            }
        );
    }
};

DM_Widget_RelationEdit.initialize();
