$(document).ready(carousels_init);

var carousels_width   = 432;
var delay             = 5000;
var carousels_timeout = false;

function carousels_init() {
    $('div.carousels').each(function() {
        var carousels  = $(this);
        var num_images = $(this).find('img').length;

        carousels.children('div.image_container').children('a').click(function() {
            clearTimeout(carousels_timeout);
        });

        carousels.next().find('li').click(function() {
            clearTimeout(carousels_timeout);
            carousels_nav($(this));
        });

        if (carousels.next().find('li').length > 1) {
            autoClick(carousels);
        }
    });
}

function carousels_nav(dot) {
    var nav_image = dot;
    var num       = dot.attr('rel');
    var carousels = nav_image.parents('div.carousels_nav:first').prev();
    var width     = carousels_width;
    var message   = carousels.find('img.carousel[rel="'+num+'"]:first').parent('a').attr('message');

    if (!nav_image.hasClass('selected')) {
        nav_image.parent().children('li').removeClass('selected');
        nav_image.addClass('selected');

        carousels.find('img.carousel').removeClass('selected');
        carousels.find('img.carousel[rel="'+num+'"]').addClass('selected');

        carousels.children('div.container[rel="'+num+'"]')
            .hide()
            .css('z-index', parseInt(carousels.children('div.visible').css('z-index')) + 1)
            .fadeIn(500, function() {
                carousels.children('div.container').removeClass('visible');
                $(this).addClass('visible');
            }
        );

        if (message && message.length) {
            messages = message.split(':');
            if (messages.length == 2 && $('span.bold').length && $('span.lighter').length) {
                $('div.carousel_message').fadeOut(250, function() {
                    $('span.bold').html(messages[0]);
                    $('span.lighter').html(messages[1]);

                    $('div.carousel_message').fadeIn(250);
                });
            }
        }
    }
}

function autoClick(carousels) {
    var carousels_nav_bar = carousels.next();

    var next_dot = carousels_nav_bar.find('li.selected').next('li');
    if (!next_dot.length) {
        next_dot = carousels_nav_bar.find('li:first');
    }

    carousels_timeout = setTimeout(function() {
        carousels_nav(next_dot);
        autoClick(carousels)
    }, delay);
}
