 (function($) {
 
   jQuery.fn.slidethis = function(settings) {
     var config = {'foo': 'bar'};
	 
	 var slider = {
        id : this.selector,
        imageHolder : jQuery(this.selector + ' #image-holder'),
        img : jQuery(this.selector + ' #image-holder img'),
        width : 952,
        height : 291,
        current : 0,
        next : 1
	};
 
       applyCss(slider);
	   appendNavigator(slider);
	   navigationObserver(slider);
	   jQuery(slider.id).fadeIn(500);	   
	   slider.t = setTimeout(function() { slide('auto' , slider); }, 5000);
 
     return this;
 
   };
   
   function applyCss(slider){
		
		jQuery(slider.id).css({
			'position' : 'relative',
			'overflow' : 'hidden',
			'display' :  'none',
			'width' :  slider.width,
			'height' :  slider.height
		});
		
		jQuery(slider.imageHolder).css({
			'width' :  slider.img.length * slider.width,
			'position' : 'absolute',
			'z-index' : '1000'
		});
		
		jQuery(slider.img).css({
			'float' : 'left',
			'z-index' : '100',
			'position' : 'relative'
		});
		
		
   }

   
   function slide(mode, slider){

		clearTimeout(slider.t);
		
		
		slider.current = jQuery(slider.imageHolder).css('left').match(/[\d\.]+/g) / slider.width;
		slider.next = slider.current + 1;
		
		if(slider.current == slider.img.length - 1){
			slider.next = 0;
		} 
		
		if (mode == 'prev') { 
			slider.next = slider.current - 1;
			if (slider.current === 0) { slider.next = slider.img.length - 1; }
		 }
		 
		 if (!isNaN(mode)){
			 slider.next = parseInt(mode, 10);
			 clearTimeout(slider.t);
		 }
		 
		jQuery(slider.id + ' ul li a[rel=' + slider.current  + ']').parent().removeClass('on');
		jQuery(slider.id + ' ul li a[rel=' + slider.next  + ']').parent().addClass('on');
		
		/*
		jQuery(slider.imageHolder).css({
			'left' :  '-' + parseInt(slider.next * slider.width, 10).toString() + 'px'
		});
		*/
			
			jQuery(slider.img).fadeOut(500, function() {
				jQuery(slider.imageHolder).css({
					'left' :  '-' + parseInt(slider.next * slider.width, 10).toString() + 'px'
				});
				jQuery(slider.img).fadeIn(500);
				jQuery(slider.imageHolder).fadeIn(500);
			});
		
		slider.t = setTimeout(function() { slide('auto' , slider); }, 5000);
		
   }
   
   function appendNavigator(slider){
	   $('#navigator').append('<span class="lef edg"></span><ul></ul><span class="rig edg"></span>');
		
        for (var i = 0; i < slider.img.length; i++) {
			
			if (i === 0) { 
				$('#navigator ul').append('<li class="prev"><a href="#" rel="prev">&nbsp</a></li>'); 
			}
			
            $('#navigator ul').append('<li><a href="#" rel='+ i +'>' + (i + 1) + '</a></li>');
			
			if (i == slider.img.length - 1) { 
				$('#navigator ul').append('<li class="next"><a href="#" rel="next">&nbsp</a></li>'); 
			}
            
        }
		
		jQuery(slider.id + ' ul li a[rel=0]').parent().addClass('on');
   }
   
   function navigationObserver(slider){
		jQuery(slider.id + ' #navigator li a').each(function(){
			jQuery(this).click(function(){
				slide(jQuery(this).attr('rel'), slider);
			});
		});
   }
 
 })(jQuery);

