$(document).ready(function() {

if (location.pathname === '/')
{
    $('body').append('<script type="text/javascript" src="/js/jquery.easing.1.3.js" />');
    window.setInterval(homepage_slider, 10000);
}

// All foreign links open in new window
$('a').each(function() {
    var link = $(this),
        href = link.attr('href');
    if (href != undefined && 
        href.substr(0, 1) != '/' && 
        href.indexOf(location.protocol + '//' + location.hostname + '/', 0) == -1)
        {
            link.attr('target', '_blank');
        }
});

var gallery = $('#event-gallery');
if (gallery.length)
{
    $('> li', gallery).each(function(i){
        var el = $(this),
            img = $('> img', el),
            frame = $('<li class="slide" />');
        el.remove();
        if (img.length)
        {
            frame
                .hide()
                .css('background-image', 'url("' + img.attr('src') + '")');
            if (i === 0)
            {
                frame.fadeIn();
            }
            gallery 
                .append(frame);
        }
    });
    gallery.show();
    var gallery_controls = $('<div class="controls" />'),
        gallery_pause = $('<div class="pause">Pause</div>'),
        gallery_play = $('<div class="play">Play</div>'),
        gallery_prev = $('<div class="prev"><a>&laquo;&nbsp;Prev</a></div>'),
        gallery_next = $('<div class="next"><a>Next&nbsp;&raquo;</a></div>');
    gallery_pause
        .click(function(){
            clearInterval(gallery_int);
        });
    gallery_play
        .click(function(){
            gallery_int = setInterval("start_show('next')", 6000);
        });
    gallery_prev
        .click(function(){
            clearInterval(gallery_int);
            if (gallery.data('enable'))
            {
                start_show('prev');
            }
        });
    gallery_next
        .click(function(){
            clearInterval(gallery_int);
            if (gallery.data('enable'))
            {
                start_show('next');
            }
        });
    gallery_controls
        .append(gallery_prev)
        .append(gallery_next);
    gallery
        .data('enable', true)
        .append(gallery_controls);

    gallery_play.click();
}

});

//{{{ function start_show(control)
function start_show(control)
{
    var slideshow = $('#event-gallery'),
        slides = $('> .slide', slideshow),
        slides_length = slides.length;
    slideshow.data('enable', false);
    slides.each(function(i){
        var el = $(this);
        if (el.css('display') !== 'none')
        {
            el.fadeOut('slow');
            if (i === slides_length-1 && control !== 'prev')
            {
                slides.eq(0).fadeIn('slow', function(){ slideshow.data('enable', true) });
            }
            else
            {
                if (control === 'prev')
                {
                    if (i === 0)
                    {
                        slides.eq(slides_length-1).fadeIn('slow', function(){ slideshow.data('enable', true) });
                    }
                    else
                    {
                        el.prev().fadeIn('slow', function(){ slideshow.data('enable', true) });
                    }
                }
                else
                {
                    el.next().fadeIn('slow', function(){ slideshow.data('enable', true) });
                }
            }
            return false;
        }
    });
}

//}}}

var slider = $('#homepage_slider');
function homepage_slider()
{
    if (slider.data('index') === undefined)
    {
        var slides = $('> div', slider),
            length = slides.length,
            index = 0;

        slider
            .data('slides', slides)
            .data('length', length)
            .data('index', index);
    }
    else
    {
        var slides = slider.data('slides'),
            length = slider.data('length'),
            index = slider.data('index');
    }
    if (length <= 1)
    {
        return;
    }
    slider.css('overflow', 'hidden');

    var next_index = index + 1 >= length ? 0 : index + 1,
        current = $(slides.get(index)),
        next = $(slides.get(next_index)),
        easing = 'easeOutQuad',
        duration = 1800;

    current
        .animate({
            left: -585
        }, duration, easing);

    next
        .css('left', 585)
        .addClass('current')
        .animate({
            left: 0
        }, duration, easing, function() {
            current.removeClass('current');
        });

    slider.data('index', next_index);
}

