var DM_Widget_VideoItem = 
{
    currentElementId : null,
    rules : {
        'div.dm_widget_playlistvideoitem' : function(element)
        {
            element.onmouseover = function()
            {
                element.lastChild.style.visibility = 'visible';
            };
            element.onmouseout = function()
            {
                element.lastChild.style.visibility = 'hidden';
            };
        },
        'div.dm_widget_videoitem': function(element)
        {
            element.onmouseover = function()
            {
                element.select('div.actions').invoke('show');
            };
            element.onmouseout = function()
            {
                element.select('div.actions').each
                (
                    function(element)
                    {
                        if(!element.hasClassName('below_preview'))
                        {
                            element.hide();
                        }
                    }
                );
            };
        },
        'div.remove_bookmark' : function(element)
        {
            element.onclick = function()
            {
                DM_Widget_VideoItem.currentElement = element;
                ajax_call('video', 'toggle_bookmark', findIdInClass(element), DM_Widget_VideoItem.itemRemoved);
                return false;
            };
        },
        'div.censor_video' : function(element)
        {
            element.onclick = function()
            {
                DM_Widget_VideoItem.currentElement = element;
                ajax_call('admin', 'admin_toggle', 'video', findIdInClass(element), 'moderation', DM_Widget_VideoItem.itemRemoved);
                return false;
            };
        },
        'div.explicit_video' : function(element)
        {
            element.onclick = function()
            {
                DM_Widget_VideoItem.currentElement = element;
                ajax_call('admin', 'admin_toggle', 'video', findIdInClass(element), 'explicit', DM_Widget_VideoItem.itemRemoved);
                return false;
            };
        },
        'div.get_admin_panel' : function(element)
        {
            element.onclick = function()
            {
                setCookie('admin_panel_status', 1);
                DM_Widget.get('AdminPanel', hex2str(findParamInClass('url', element)), $('admin_panel_container').firstDescendant());
                toggleElement($('admin_panel_container'), 'show');
                return false;
            };
        },
        'div.copyright_claim_video' : function(element)
        {
            element.onclick = function()
            {
                DM_Widget_VideoItem.currentElement = element;
                ajax_call('copyrightowner', 'send_abuse', findIdInClass(element), 'explicit', DM_Widget_VideoItem.itemRemoved);
                return false;                
            };
        },
        'div.play_video' : function(element)
        {
            element.onclick = function()
            {
                var videoId = findIdInClass(element);

                if($('preview_player'))
                {
                    var disableAction = false;

                    if(DM_Widget_VideoItem.currentElement == element)
                    {
                        disableAction = true;
                    }

                    $('preview_player').remove();

                    $$('div.below_preview').invoke('removeClassName', 'below_preview');
                    $$('div.play_video').invoke('removeClassName', 'stop');

                    if(disableAction)
                    {
                        return false;
                    }
                }

                var div = element.parentNode.parentNode.appendChild(document.createElement('div'));
                div.setAttribute('id', 'preview_player');
                div.setAttribute('class', 'id_' + videoId);

                element.parentNode.addClassName('below_preview');
                element.addClassName('stop')

                var player = new SWFObject('/swf/' + videoId + '&autoPlay=1', 'video_player', '100%', '100%', '7');
                player.addParam("allowFullScreen", "true");
                player.addParam("allowScriptAccess", "always");
                player.write('preview_player');

                DM_Widget_VideoItem.currentElement = element;

                return false;
            };
        },
        'div.copyright_video' : function(element)
        {
            element.onclick = function()
            {
                DM_Widget_VideoItem.currentElement = element;
                ajax_call('admin', 'admin_toggle', 'video', findIdInClass(element), 'moderation_copyright', DM_Widget_VideoItem.itemRemoved);
                return false;                
            };
        },
        'div.quicklist' : function(element)
        {
            element.onclick = function()
            {
                if(Element.hasClassName(element, 'add'))
                {
                    ajax_call
                    (
                        'quicklist', 'add_video', findIdInClass(element),
                        function(status) {DM_Widget_VideoItem.callbackQuicklist(status, element)}
                    );
                }
                else
                {
                    ajax_call
                    (
                        'quicklist', 'remove_video', findIdInClass(element),
                        function(status) {DM_Widget_VideoItem.callbackQuicklist(status, element)}
                    );
                }

                return false;
            };
        },
        'div.video_tools' : function(element)
        {
            element.onmouseover = function()
            {
                //DM_Widget_VideoItem.currentElement = element;
                var videoTools = element.nextSibling;
                videoItem = element.parentNode;
                videoItem.style.zIndex = 3;
                videoTools.style.visibility = 'visible';
                Effect.Appear('video_tools_'. findIdInClass(videoItem), { duration: 0.8, to: 1.0, from: 0.0});
                DM_Widget_VideoItem
                
                //tool.style.display = 'inline';
                return false;                
                
            };
        },
        'div.delete_video_playlist' : function(element)
        {
            var videoItem = element.parentNode;
            element.onclick = function()
            {
                if(!Element.hasClassName(element, 'loading'))
                {
                    Element.addClassName(element, 'loading');
                    DM_Widget_VideoItem.currentElement = element;
                    var url = escape(hex2str(findParamInClass('url', videoItem)));
                    ajax_call('playlist', 'delete_video', url, DM_Widget_VideoItem.itemPlaylistDeleted);
                }
                return false;
            };
        },
        'div.slider_track' : function(element)
        {
            var videoItem = element.parentNode.parentNode.parentNode;
            var size = parseInt(findParamInClass('playlist_size', videoItem)); 
            var valueDiv = element.parentNode.nextSibling.nextSibling;
            var saveLink = valueDiv.nextSibling;
            
            if(size > 1)
            {
                var options = 
                {
                    range: $R(1, size),
                    values: $A($R(1, size)),
                    sliderValue: findParamInClass('position', videoItem),
                    onSlide: function(value)
                    {
                        valueDiv.innerHTML = DM_Widget_VideoItem.positionLabel + ' ' + value + '/' + size; 
                        saveLink.style.display = 'none';
                    },
                    onChange: function(value)
                    {
                        valueDiv.innerHTML = DM_Widget_VideoItem.positionLabel + ' ' + value + '/' + size; 
                        saveLink.style.display = 'block';
                        videoItem.new_position = value;
                    }
                };
                videoItem.slider = new Control.Slider(element.childNodes[0], element, options);
            }
            valueDiv.innerHTML = DM_Widget_VideoItem.positionLabel + ' ' + findParamInClass('position', videoItem) + '/' + size; 
        },
        'a.slider_save' : function(element)
        {
            element.onclick = function()
            {
                if(!Element.hasClassName(element, 'loading'))
                {
                    var videoItem = element.parentNode.parentNode;
                    var url = escape(hex2str(findParamInClass('url', videoItem)));
                
                    Element.addClassName(element, 'loading');
                    ajax_call('playlist', 'move_video_at_position', url, videoItem.new_position, DM_Widget_VideoItem.itemMoved);
                }
            };
        },
        'div.move_up' : function(element)
        {
            element.onclick = function()
            {
                var videoItem = element.parentNode.parentNode;
                var size = parseInt(findParamInClass('playlist_size', videoItem));
                if(size > 1)
                {
                    if(videoItem.slider.value > 1)
                    {
                        videoItem.slider.setValue(videoItem.slider.value - 1);    
                    }
                    else
                    {
                        return;
                    }
                    var saveLink = element.nextSibling.lastNode;
                }
            };
        },
        'div.move_down' : function(element)
        {
            element.onclick = function()
            {
                var videoItem = element.parentNode.parentNode;
                var size = parseInt(findParamInClass('playlist_size', videoItem));
                if(size > 1)
                {
                    if(videoItem.slider.value < size)
                    {
                        videoItem.slider.setValue(videoItem.slider.value + 1);    
                    }
                    else
                    {
                        return;
                    }
                    var saveLink = element.previousSibling.lastNode;
                }
            };
        }
    },
    callbackGetWidget: function(status) {        
        $('admin_panel_content').innerHTML = status;
        EventSelectors.assign(DM_Widget.rules);
        EventSelectors.assign(DM_Widget_AdminPanel.rules);
        EventSelectors.assign(DM_Widget_ExtractPreview.rules);
    },
    callbackQuicklist: function(status, element)
    {
        if(status)
        {
            Element.removeClassName(element, 'add');
            Element.addClassName(element, 'remove');
        }
        else
        {
            Element.removeClassName(element, 'remove');
            Element.addClassName(element, 'add');
        }
    },
    itemRemoved: function(status)
    {
        if(status == 1)
        {
            DM_Widget_VideoItem.currentElement.parentNode.parentNode.parentNode.style.opacity = 0.7;            
            Element.addClassName(DM_Widget_VideoItem.currentElement, 'cancel');
        }
        else
        {
            $(DM_Widget_VideoItem.currentElement).parentNode.parentNode.parentNode.style.opacity = 1;                        
            Element.removeClassName(DM_Widget_VideoItem.currentElement, 'cancel');            
        }
    },
    itemPlaylistDeleted: function()
    {
        Effect.Fade($(DM_Widget_VideoItem.currentElement).parentNode);
    },
    itemMoved: function()
    {
        document.location.reload();
    },
    initialize : function ()
    {
        Event.onDOMReady(
            function() {
                EventSelectors.start(DM_Widget_VideoItem.rules);
            }
        );
    }
};
DM_Widget_VideoItem.initialize();
