$(document).ready(
    function()
    {
        // Lightbox должен быть первым, из-за своих дурацких unbind()
        $.Lightbox.construct({
            auto_relify: false,
            show_linkback:  false,
            text: {
                // For translating
                image:		'Изображение',
                of:			'из',
                close:		'Закрыть [X]',
                closeInfo:	'Для закрытия можно кликнуть где-нибудь за пределами изображения.',
                download:	'Прямая ссылка на изображение',
                help: {
                    close:		'Click to close',
                    interact:	'Hover to interact'
                },
                about: {
                    text: 	'jQuery Lightbox Plugin (balupton edition)',
                    title:	'Лицензия GNU AGPL.',
                    link:	'http://jquery.com/plugins/project/jquerylightbox_bal'
                }
            }
        });
        
        // Включаем Lightbox
        $('ul.gallery a.lightbox').lightbox();
         
        // Включаем Tooltip
        $('ul.gallery a').tooltip(
        function (el) {
            if ($(el).hasClass('lightbox')) {
                var el_author;
                var output = '';
                if (el.anchor_title) {
                    output = output + '<b>' + el.anchor_title + '</b>';
                }
                if (el_author = $(el).attr('name')) {
                    output = output + (output ? '<br>': '') + '<small>Автор: ' + el_author + '</small>';
                }
                return output;
            } else return el.anchor_title;
        });
        
        // Кнопки удаления
        $('ul.gallery span a').bind (
            'click',
            function()
            {
                var li_el = $(this).parents('li').get(0);
                var image_id = li_el.id.slice(6);
                
                
                var mode, title, author;
                
                if ($(this).attr('class').match('delete')) mode = 'delete';
                if ($(this).attr('class').match('edit'))   mode = 'edit';
                
                if (!mode) return false;
                
                var editor_instance = '<div id="iDescriber">'+
                            '<p>Название<br>'+
                            '<input type="text" id="iTitle"></p>'+
                            '<p>Автор<br>'+
                            '<input type="text" id="iAuthor"></p>'+
                            '<p><input type="button" value="&nbsp;&nbsp;Ок&nbsp;&nbsp;"> '+
                            '<input type="button" value="Отмена"></p>'+
                                '<div id="iDescriberTail">'+
                                '<img src="../../../../../../I/left_top_tail.gif"/>'+
                                '</div>'+
                            '</div>';
               
                if (mode == 'edit') {
                    // Если редактор уже есть, то ниче не делаем
                    if ($('#iDescriber').get(0)) return false;
                    
                    // Собираем данные
                    title   = $(li_el).children('a:first').attr('title')  || '';
                    author  = $(li_el).children('a:first').attr('name') || '';
                    
                    var track_el = $(li_el).children('a:first');
                    
                    // Создаем textarea
                    $(li_el).append(editor_instance);
                    
                    var move_el =  $('#iDescriber');
                    moveEl(move_el, track_el.offset().left, track_el.offset().top);
                    $('#iDescriber').show('fast');
                    
                    
                    $(window).bind('resize', function(){
                        moveEl(move_el, track_el.offset().left, track_el.offset().top);
                    });
                        
                    
                    //Записываем текст в редактор
                    $('#iDescriber').find ('#iTitle').get(0).value  = title;
                    $('#iDescriber').find ('#iAuthor').get(0).value = author;
                    
                    
                    // Вешаем обработчик cancel
                    $('#iDescriber').find('input:button:last').bind (
                        'click',
                        function () {
                            $('#iDescriber').hide();
                            $('#iDescriber').remove();
                        }
                    );
                    
                    // Вешаем обработчик ok
                    $('#iDescriber').find('input:button:first').bind (
                        'click',
                        function () {
                            var title  = $('#iDescriber').find ('#iTitle').get(0).value;
                            var author = $('#iDescriber').find ('#iAuthor').get(0).value;
                            manageImage(li_el, image_id, mode, title, author);
                            $('#iDescriber').find('input:button:last').click();
                        }
                    );
                    
                    
                }

                if (mode == 'delete') {
                    if (confirm ('Эта картинка будет удалена. Вы уверены?')) {
                        manageImage(li_el, image_id, mode, title, author);
                    }
                }
                
                return false;
            }
        )
    
    var moveEl = function (move_el, left, top)
    {
        // Сдвиги по вертикали и горизонтали
        var vert  = 80;
        var horiz = 80;
        
        var el_width  = move_el.width();
        var el_height = move_el.height();
        
        
        var left = left + horiz;
        var top  = top  + vert;

        
        move_el.animate({
            left: left,
            top: top
        }, 'slow' );
        
        $('#iDescriberTail').animate({
            left: -7,
            top: -7
        }, 'slow' );
        
    }
        
    var manageImage = function (li_el, image_id, mode, title, author)
            {
                $('#loadingAjax').css('top',  $(li_el).children('a').offset().top  + 100);
                $('#loadingAjax').css('left', $(li_el).children('a').offset().left + 40);
                $('#loadingAjax').show();
                JsHttpRequest.query(
                    _special_path + 'Gallery_ImageManager', // backend
                    {
                        'mode'      : mode,
                        'image_id'  : image_id,
                        'title'     : title, 
                        'author'    : author                     
                        
                    },
                    // Function is called when an answer arrives.
                    function(result, errors) {
                        if (result) {
                            switch (mode) {
                                case 'edit':
                                    $(li_el).children('a:first').attr('title',  result['title']);
                                    $(li_el).children('a:first').attr('name', result['author']);
                                
                                    break;
                                case 'delete':
                                    $(li_el).empty();
                                    break;
                            }
                            $('#loadingAjax').hide();
                        }
                        // Write errors to the debug div.
                        document.getElementById("debug").innerHTML = errors;
                    },
                    false  // do not disable caching
                );
            }
    
    
    }
)