/**
*
*
* suSlider: Content slider / fade   using the jQuery 
*
* Author: alex wang
* Email: wpsnowwolf@gmail.com
* URL: http://www.brightyoursite.com
* 
*
**/
 
(function($) {

   jQuery.fn.suSlider = function(options){ 
	options = $.extend({},$.fn.suSlider.defaults, options); 
	 return this.each(function() {
     $this = $(this);
     options.width=$this.find('.silderitem').width(); 
     options.ctrlbymouse=false;
     $this.child_count=$this.find('.silderitem').size();
     $this.is_working = false;
     $this.idx=0;		
	 $this.isbreak=false; 
	 $this.expauuse=0;
	 $this.gotoidx=-1; 
	 $this.opts=options;
     $.fn.suSlider.init($this);
     
      });
   
	}
	
	$.fn.suSlider.defaults = {
		mode: 'slide',
		speed: 2000,
		height:250,
		auto: false, 
		pause: 10000,
		select:10000, 
		wrapper_class: 'container', 
		loop:true
	}; 
	
	$.fn.suSlider.animate_idx=function(me){		
	    if(me.is_working)
	    return;
		me.is_working = true;  
		me.find('.sildercontent').animate({'left':'-' + me.opts.width * me.idx + 'px'}, me.opts.speed, function(){ 
		 
			me.is_working = false; 
	   		me.find('.con_list  li:.active').removeClass('active');
			me.find('.con_list  li:eq('+me.idx+')').addClass('active');
        if(me.opts.auto && !me.isbreak)
          { 
           
           me.idx++;
           if((me.idx==me.child_count))
            {
              if(me.opts.loop)
               me.idx=0;
               else
               {
                 clearInterval(me.t);return;
               }
            }
         
             clearInterval(me.t);
	         me.t = setInterval(function(){$.fn.suSlider.animate_idx(me);}, me.expauuse==0 ? me.opts.pause : me.expauuse);
	         me.expauuse=0;
           }
		});		
		
	}
	
	 
	 $.fn.suSlider.fade_idx=function(me){  
	        if(me.is_working)
	         return;
		    me.is_working = true; 
			me.find('.silderitem').eq(me.idx).fadeTo(me.opts.speed, 0, function(){$(this).hide();});
			if(me.gotoidx<0)
			{
              me.idx++;
             if((me.idx==me.child_count))
             {
                if(me.opts.loop)
                me.idx=0;
               else
               {
                 clearInterval(me.t);return;
               }
             }
            }
            else
            {
              me.idx=me.gotoidx;
            }
            me.gotoidx=-1;
             me.find('.con_list  li:.active').removeClass('active');
			me.find('.con_list li:eq('+me.idx+')').addClass('active');
			me.find('.silderitem').eq(me.idx).show().fadeTo(me.opts.speed, 1, function(){
				
			me.is_working = false; 
			
			 
        if(me.opts.auto && ! me.opts.isbreak)
          { 
           
             clearInterval($.t);
	         $.t = setInterval(function(){ $.fn.suSlider.fade_idx(me);}, me.expauuse==0 ? me.opts.pause : me.expauuse);
	         me.expauuse=0;
           }
           
		}); 
	}
	
	$.fn.suSlider.add_controls=function(me){  
	
	    if(me.opts.ctrlbymouse)
	    {
	        me.find('.con_list').children().hover(function(){		
			
			var $kids = me.find('.con_list li').index(this);
			clearInterval(me.t);
			if(!me.is_working){
			
			    if(me.opts.select==0)
				    {
				     me.isbreak=true;
				    }
				    else
				    { 
				      me.expauuse = me.opts.select;
				    }
				
				if(me.opts.mode == 'slide'){
							me.idx=	$kids;		 
					 $.fn.suSlider.animate_idx(me); 
				    
				}  
				else
				{
				  var $on= me.find('.con_list li').index(me.children('.con_list li:.active'));
				  me.gotoidx=$kids;
				  me.idx=$on;
				  $.fn.suSlider.fade_idx(me);
				}
			}
								
			return false;
					
		});	
	    }
	    else
	    {
	       me.find('.con_list').children().click(function(){		
			
			var $kids = me.find('.con_list li').index(this);
			clearInterval(me.t);
			if(!me.is_working){
			
			    if(me.opts.select==0)
				    {
				     me.isbreak=true;
				    }
				    else
				    { 
				      me.expauuse = me.opts.select;
				    }
				
				if(me.opts.mode == 'slide'){
					
					me.idx=$kids;					 
					 $.fn.suSlider.animate_idx(me); 
				    
				}  
				else
				{
				  var $on= me.find('.con_list li').index(me.find('.con_list li:.active'));
				  me.gotoidx=$kids;
				  me.idx=$on;
				  $.fn.suSlider.fade_idx(me);
				}
			}
								
			return false;
					
		});	
		}
	}
	
	$.fn.suSlider.init=function(me)
	{
	  
	 me.find('.sildercontent').wrap('<div class="' + me.opts.wrapper_class + '"></div>'); 
	 me.find('.silder').append('<div style="clear:both;float:none"></div>');
	 if(me.opts.mode == 'slide'){
		
		 me.find('.sildercontent').parent().css({
			'overflow' : 'hidden',
			'position' : 'relative',
			'width' : me.opts.width + 'px'
		});
			
		me.find('.sildercontent').css({		
			'width' : '999999px',
			'position' : 'relative' 			 	
		});
			
		me.find('.silderitem').css({		
			'float' : 'left',
			'width' :me.opts.width+ 'px'
		});
		 	
		 
	
	}else if(me.opts.mode == 'fade'){
		
		me.find('.sildercontent').parent().css({
			'overflow' : 'hidden',
			'position' : 'relative',
			'width' : me.opts.width + 'px',
			'height': me.opts.height + 'px'
			
		});
		 
		me.find('.silderitem').css({		
			'position' : 'absolute',
			'width' : me.opts.width, 
			'listStyle' : 'none',
			'opacity' : 0,
			'display' : 'none'	
		});
		
		 me.find('.silderitem:first').css({
			'opacity' : 1,
			'display' : 'block'
		}); 
				
	}
	
   $.fn.suSlider.add_controls(me); 
   if(me.opts.auto)
   { 
     
     clearInterval(me.t);
     if(me.opts.mode == 'slide'){
      me.animate({'left':'-0px'}, me.opts.speed, function(){ 
      me.idx=1;
	 me.t = setInterval(function(){ $.fn.suSlider.animate_idx(me);},me.opts.speed);
	  });
	 }
	 else
	 {
	      me.idx=0;
	      me.t =setInterval(function(){ $.fn.suSlider.fade_idx(me);},me.opts.speed*2);
	    
	 }
	 
   }
 }

})(jQuery);


 


