 /**
 * Slideshow
 * Copyright (c) 2011
 */

jQuery.fn.extend({
    Slideshow : {
        Interval : null,
        Ready : function(slide_class, slide_control_class)
        {
            var interrupted = false;
            var counter = 1;
            var last = 0;
            var length = jQuery('.' + slide_control_class).length;
            var transition = function()
            {
                if (!interrupted) {
                    last = counter - 1;
                    if (last < 1) {
                        last = length;
                    }
                    jQuery('#' + slide_class + '_' + last).fadeOut(
                        'slow',
                        function() {
                            jQuery('#' + slide_control_class + '_' + last + ' a').removeClass('selected');
                            jQuery('#' + slide_control_class + '_' + counter + ' a').addClass('selected');
                            jQuery('#' + slide_class + '_' + counter).fadeIn('slow');
                            counter++;
                            if (counter > length) {
                                counter = 1;
                            }
                        }
                    );
                }
            }
            jQuery('.' + slide_control_class).hover(
                function() {
                    interrupted = true;
                }, function() {
                    interrupted = false;
                }
            ).click(
                function(e) {
                    e.preventDefault();
                    interrupted = false;
                    counter = parseInt(jQuery(this).attr('id').split('_').pop());
                    jQuery('.' + slide_class).hide();
                    jQuery('.' + slide_control_class + ' a').removeClass('selected');
                    jQuery('#' + slide_class + '_' + counter).show()
                    jQuery('a', this).addClass('selected');
                }
            );
            transition();
            clearInterval(this.Interval);
            setInterval(transition, 4000);
        }
    }
});
