$(document).ready(function() {
    gallery.init();
});

gallery = {
    f: null,
    obj: null,
    obj_indedx: null,
    imgs: null,
    
    init: function() {
        var bg = $('#abs_back');
        if (bg.length == 0) {
            $('body').append('<div id="abs_back"></div>');
        }
        var loading = $('#image_loading');
        if (loading.length == 0) {
            $('body').append('<div id="image_loading"></div>');
        }
        var viewer = $('#image_view');
        if (viewer.length == 0) {
        $('body').append('<div id="image_view">'+
                         '    <div class="close_gal"><a href="javascript: void(0);" onclick="gallery.close()"><img src="/img/close_cross.gif" alt="X" /></a></div>'+
                         '    <img id="view_image" src="" />'+
                         '    <div id="image_nav">'+
                         '         <a style="padding-right: 10px;" href="javascript:void(0);" onclick="gallery.prev();" title="Предыдущее изображение"><img src="/img/left_arrow.gif" alt="&larr;" /></a>'+
                         '         <a style="padding-left: 10px;" href="javascript:void(0);" onclick="gallery.next();" title="Следующее изображение"><img src="/img/right_arrow.gif" alt="&rarr;" /></a>'+
                         '    </div>'+
                         '</div>');
        }
        
        gallery.imgs = $('a[rel=x-gallery]');
        loader = new Image();
        loader.src = "../img/loading.gif";
    },
    
    view: function(obj) {
        if (!gallery.f) {
            $("#abs_back").show().bind('click', function() {
                gallery.close();
            });
            gallery.obj = obj;
            gallery.obj_index = gallery.imgs.index($(obj));
            gallery.f = new Image();
            gallery.f.src = $(obj).attr('href');
            gallery.load();
        }
        $('#image_loading').hide();
        $('#view_image').attr('src', gallery.f.src);
        $('#image_view').fadeIn();
    },
    
    load: function() {
        if (!gallery.f.complete) {
            $('#image_view').hide();
            $('#image_loading').show();
            setTimeout(
                function() {
                    gallery.load();
                }, 
                "100"
            );
        } else {
            gallery.view();
        }
    },
    
    close: function() {
        gallery.clear();
        $('#image_view').fadeOut(function() {
            $("#abs_back").hide();
        });
    },
    
    clear: function() {
        gallery.f = null;
        return gallery;
    },
    
    next: function() {
        var next = gallery.obj_index + 1;
        if (gallery.obj_index == gallery.imgs.length - 1) next = 0;
        gallery.clear().view(gallery.imgs.get(next));
    },
    
    prev: function() {
        var prev = gallery.obj_index - 1;
        if (gallery.obj_index == 0) prev = gallery.imgs.length - 1;
        gallery.clear().view(gallery.imgs.get(prev)); 
    }
}

