var loaded = [], imgs = [], cur = 0, loading = false;
var url = false;

function fireBackground(href) {
    $('#slides .activeslide').addClass('prevslide').removeClass('activeslide');
    $('#slides .nextslide').hide().attr('src', href).removeClass('nextslide').addClass('activeslide').fadeIn(500);
    $('#slides .prevslide').removeClass('prevslide').addClass('nextslide');
}

function loadImage(index) {
    if (jQuery.inArray(imgs[index], loaded) < 0) {
        loading = true;
        //$('#loading').show();
        $.cacheImage(imgs[index], {
            load : function (e) {
                loaded.push(imgs[index]);
                fireBackground(imgs[index]);
                loading = false;
                //$('#loading').hide();
            }
        });
    } else {
        fireBackground(imgs[index]);
    }
}

function shiftImage(direction) {
    if (!loading) {
        cur = cur + direction;
        if (cur < 0) {
            cur = imgs.length - 1;
        } else if (cur >= imgs.length) {
            cur = 0;
        }
        loadImage(cur);
    }
    return false;
}

function initGallery(images, start) {
    cur = typeof start == 'number' ? start : 0;
    imgs = images;
    loaded.push(imgs[cur]);
    $('#toggle_left').click(function() { shiftImage(-1); return false; });
    $('#toggle_right').click(function() { shiftImage(1); return false; });
}

function openCloseable(c) {
    $(c).animate({
        'width': $(c).data('o_width')
    }, 480, 'easein', function() {
        $(this).animate({
            'height': $(c).data('o_height')
        }, 300, 'easeout').css('overflow', 'visible');
        
        $(c).find('.fadeout').show().animate({
            'opacity': 1
        }, 360, 'swing');
        $(c).removeClass('closed').find('.closer').removeClass('closed');
    }).css('overflow', 'visible');
}

function closeCloseable(c) {
    $(c).data('o_width', $(c).width());
    $(c).data('o_height', $(c).height());
    
    $(c).find('.fadeout').animate({
        'opacity': 0
    }, 320);
    
    $(c).animate({
        'height': 0
    }, 600, 'easeout', function() {
        $(this).animate({
            'width': 138
        }, 360, 'easein').css('overflow', 'visible');
        $(c).find('.fadeout').hide();
        $(c).addClass('closed').find('.closer').addClass('closed');
    }).css('overflow', 'visible');
}

jQuery().ready(function() {
    $('a').each(function() {
        if ($(this).attr('rel') == 'external') {
            $(this).attr('target', '_blank');
        }
        $(this).bind('click', function() {
            if (this.blur) {this.blur();}
        });
    });
    
    $('.closeable').each(function() {
        var c = $(this);
        if ($(this).hasClass('start-closed')) {
            window.setTimeout(function() { closeCloseable($(c)); }, 2000);
        }
        $(this).find('a.closer').css('display', 'block').click(function() {
            if ($(c).hasClass('closed')) {
                openCloseable($(c));
            } else {
                closeCloseable($(c));
            }
        });
    });
    
});
