(function($) {
  $.fn.fadeSlide = function(options) {
    $.fn.globals = $.extend($.fn.defSlide, (options || {}));
    $.fn.globals.li = $(this);
    
    if($.fn.globals.li.size()==0) {
    	return;
    }
    
    $.fn.globals.li.hide().filter(':first').show();
    
    if($.fn.globals.butNext) {
        $($.fn.globals.butNext).bind('click',function() {
		$.fn.curPos = ($.fn.curPos + 2 > $.fn.globals.li.size()) ? 0 : ($.fn.curPos + 1); 
		$.fn.globals.li.hide();
		$($.fn.globals.li.get($.fn.curPos)).fadeIn($.fn.globals.fadeTime);
		return false;
      });
    }

    if($.fn.globals.butPrev) {
    	$($.fn.globals.butPrev).bind('click', function() {
		$.fn.curPos = ($.fn.curPos - 1 < 0) ? ($.fn.globals.li.size() - 1) : ($.fn.curPos - 1);
		$.fn.globals.li.hide();
		$($.fn.globals.li.get($.fn.curPos)).fadeIn($.fn.globals.fadeTime);
		return false;
      })
    }
    
    if($.fn.globals.stopOnHover) {
	    $.each([$.fn.globals.li, $($.fn.globals.butNext), $($.fn.globals.butPrev)], function(index, value) { 
	    	value.mouseenter(function(){ 
	    		window.clearInterval($.fn.setInterval);
		    }).mouseleave(function(){
		    	$.fn.setInterval = window.setInterval($.fn.autoSlide,$.fn.globals.interval);
		    }); 
		});
    }

    if($.fn.globals.autoSlide) {
    	$.fn.setInterval = window.setInterval($.fn.autoSlide,$.fn.globals.interval);
    }

    if($.fn.globals.position !== false) {
      $.fn.position($.fn.globals.position, false);
    }
  }
  
  $.fn.setInterval = '';

  $.fn.position = function(num, fade) {
	    num--;
	    fade = typeof fade == 'undefined' ? true : fade; 
	    if(fade) {
	  		$.fn.globals.li.hide();
			$($.fn.globals.li.get(num)).fadeIn($.fn.globals.fadeTime);
	    } else {
	    	$.fn.globals.li.hide();
	  		$($.fn.globals.li.get(num)).show();
	    }
	    $.fn.curPos = num;
	  }

  $.fn.autoSlide = function() {
    if($.fn.pouseOnhover === false) {
      var $tmp = $($.fn.globals.li.get($.fn.curPos)).next(); 
      if($tmp.size() == 0) {
    	$.fn.globals.li.hide();
    	$($.fn.globals.li.get(0)).fadeIn($.fn.globals.fadeTime);
  		$.fn.curPos = 0;
      } else {
    	$.fn.globals.li.hide();
    	$tmp.fadeIn($.fn.globals.fadeTime);
  		$.fn.curPos = ($.fn.curPos + 1);
      }
    }
  }

  $.fn.myGlobals = {}
  $.fn.pouseOnhover = false

  $.fn.curPos = 0;

  $.fn.defSlide = {
    butNext: false,
    butPrev: false,
    interval: 10000,
    stopOnHover: true,
    fadeTime: 700,
    autoSlide: false,
    position: false
  }
})($);
