(function($){
    $.eSlider={version:'1.0'};
    var methods = {
        init : function(config) {
            parent = this;
            elements = this.children('.item');

            var nav = $('<div class="eSlider-nav"></div>');
            
            this.append(nav);

            nav = $('<div class="eSlider-nav-real"></div>');
            var a;
            
            a =  $('<a href="#here" class="prev">&nbsp;</a>');
            nav.append(a)
            a.click(function(event){
                var nr = $(event.target).html();
                $.fn.eSlider('prev');
            });
              
                          
            for(var i = 0 ; i < elements.length ; i++) {            
                a = $('<a href="#here">'+(i+1)+'</a>');
                a.addClass('number');
                if(i==0) a.addClass('active');
                else {
                    $(elements[i]).fadeOut();
                }
                nav.append(a)
                a.click(function(event){
                    var nr = $(event.target).html();
                    $.fn.eSlider('click', parseInt(nr)-1)
                });            
            }

            a =  $('<a href="#here" class="next">&nbsp;</a>');
            
            nav.append(a)
            a.click(function(event){
                var nr = $(event.target).html();
                $.fn.eSlider('next');
            });  
            
                            
            this.append(nav);  
            
            settings = config;
            if(config.speed) {
                interval = setInterval(function() { $.fn.eSlider('next')}, config.speed);   
            }                      
        },
        show : function(nr) {
            $(elements[currentNr]).fadeOut('slow', function() { 
                $(elements[currentNr]).fadeIn();
                parent.children('.eSlider-nav-real').children('a.number').each(function(it, el){                    
                    $(el).removeClass('active');
                    if(it == currentNr) $(el).addClass('active');
                });
            });
            currentNr = nr;
        },
        click : function(nr) {
            clearInterval(interval);
            if(settings.speed) interval = setInterval(function() { $.fn.eSlider('next')}, settings.speed);   
            $.fn.eSlider('show', nr);
        },
        next : function() {
            var nr = currentNr+1;
            if(nr >= elements.length) nr = 0;
            $.fn.eSlider('show', nr); 
        },
        prev : function() {
            var nr = currentNr-1;
            if(nr < 0) nr = elements.length - 1;
            $.fn.eSlider('show', nr); 
        }          
    };
    
    var currentNr = 0;
    var elements;
    var parent;
    var settings;
    var interval = null;    

    $.fn.eSlider=function(method){
        
        if ( methods[method] ) {
            return methods[ method.toString() ].apply( this, Array.prototype.slice.call( arguments, 1 ));
        }
        else if ( typeof method === 'object' || ! method ) {
          return methods.init.apply( this, arguments );
        }                      
    };
})(jQuery)
 
