(function(jQuery) {

    var self = null;
 
    jQuery.fn.image_s = function(o)
    {   
        return this.each(function() {
            new jQuery.image_s(this, o);
        });
    };
    
    jQuery.image_s = function (e, o)
    {
        this.options = o || {};
        this.interval = null;
        this.img_length = 0;
        this.pointer = 0;
        this.divName = this.options.divName || 'image_s';
        this.imgDivName = this.options.imgDivName || 'img_c';
        this.titleDivName = this.options.titleDivName || 'title_s';
        this.ulName  = this.options.ulName || 'ul_s';

        this.init();
    };
    jQuery.image_s.fn = jQuery.image_s.prototype = {
        image_s: '0.0.1'
    };
    
    jQuery.image_s.fn.extend = jQuery.image_s.extend = jQuery.extend;
    
    jQuery.image_s.fn.extend({
                         
        init: function() {          
            var self = this;            
            
            // do them once
            var elements = jQuery(self.divName + ' > ' + this.imgDivName).children();
            self.img_length = elements.length;
            if (self.img_length == 0) { return false; }

            jQuery(self.divName).css('position', 'relative');
            jQuery(self.divName).css('height', jQuery(elements[0]).find('[src]').attr('height'));
            for ( var i = 0; i < elements.length; i++ ) {
				jQuery(elements[i]).parent().css('z-index', String(elements.length-i)).css('position', 'absolute');
			};
            
            jQuery(self.divName).bind('mouseover', function() {
                self.stopmove();
            } ).bind('mouseout', function() {
                self.startmove();
            } );
            jQuery(self.divName + ' > ' + self.ulName + ' > li').bind('click', function() {
                self.stopmove();
                self.showone(parseInt( jQuery(this).text() ) - 1);
            } ).css( { cursor: 'pointer' } );

            self.startmove();
        },
        
        move : function() {
            this.showone(this.pointer + 1);
        },
        
        startmove : function() {
            var self = this;
            this.interval = setInterval(function() { self.move() }, 5000);
        },
        
        stopmove : function() {
            clearInterval(this.interval);
        },
        
        showone : function(j) {
            var self = this;

            var old_pointer = self.pointer;

            if (j == self.img_length) {
                j = 0;
            }
            self.pointer = j;

//          for (var i = 0; i < self.img_length; i++) {
//              if (self.pointer == i) {
                    var i = self.pointer;
                    jQuery(self.divName + ' > ' + self.imgDivName).eq(i).fadeIn("slow");
                    jQuery(self.divName + ' > ' + self.titleDivName).eq(i).fadeIn("slow");
                    jQuery(self.divName + ' > ' + self.ulName + ' > li').eq(i).addClass('current');
//              } else {
                    i = old_pointer;
                    jQuery(self.divName + ' > ' + self.imgDivName).eq(i).fadeOut("slow");
                    jQuery(self.divName + ' > ' + self.titleDivName).eq(i).fadeOut("slow");
                    jQuery(self.divName + ' > ' + self.ulName + ' > li').eq(i).removeClass('current');
//              }
//          }
        }
    });

})(jQuery);