/** Ротатор баннеров jquery.rotator.js
 *  http://biznesguide.ru/coding/152.html
 *  Copyright (c) 2011 Шамшур Иван (http://twitter.com/ivanshamshur)
 *  Dual licensed under the MIT and GPL licenses
 */
 
;(function($){
	
    $.fn.rotator = function(options){

    	return this.each(function(){
	   
            options = $.extend({
            		slides: [
            			{url:'https://login.forteam.ru/?ref=12592',img:'images/1_404.jpg'},
            			{url:'https://login.forteam.ru/?ref=12592',img:'images/4_404.jpg'},
            			{url:'https://login.forteam.ru/?ref=12592',img:'images/5_404.jpg'},
            			{url:'https://login.forteam.ru/?ref=12592',img:'images/10_404.jpg'},
            			{url:'https://login.forteam.ru/?ref=12592',img:'images/8_404.jpg'},
            			{url:'https://login.forteam.ru/?ref=12592',img:'images/15_404.jpg'}
            		],
            		speed: 500,
                    timeout: 3000,
                    width: 200,
                    height: 450,
                    random: true, 
            		autorun: true,
            		fx: 'fade',
                    nav: false
                },options);
       
    		var $this = $(this), run = false,step = -1,
    		current = 0,prev = 0,count= 0,
    		slides, intervalID = 0,
    		nav_left = $('<a href="javascript:void(0);" class="rotator-nav" id="rotator-left"><div></div></a>'),
			nav_right = $('<a href="javascript:void(0);" class="rotator-nav" id="rotator-right"><div></div></a>'),
    		preloader = $('<div class="preloader_rotator"></div>'),
    		main_rotator = $('<div class="main_rotator"></div>'),
    		slides_rotator = $('<ul class="slides_rotator"></ul>'),
    	    rotator = {
    			
    			init: function(){

    				count = options.slides.length - 1;  				

    				rotator.preloader();
    				
    				nav_left.bind('click.rotator',function(){                 
    					rotator.prev();
    				});
    				
    				nav_right.bind('click.rotator',function(){
    				    if(run) return false;
    					rotator.next();
    				});
    			},
    			preloader: function(){
    				
    				//Индикатор загрузки
    		    	$this.html(preloader.append('<img src="images/ajax-loader.gif" width="32" alt="Загрузка..." />'));

    		    	//Добавляем html-разметку слайдов    		    	
    		        var images = rotator.render().find('img'),
    		            loaded = 0,
    	                pic = [];
                        
                    slides = slides_rotator.find('li').css({'position': 'absolute','z-index': 1});

                    main_rotator.css({display: 'none'});
                    slides_rotator.css({width:options.width,height:options.height}); 
                    
    		        if(options.fx == 'fade'){

    		    		//Скрываем все слайды, кроме первого
        		        slides.css('opacity',0).eq(0).css({'z-index': 2,'opacity':1});
    		    	}
    		    	else{

    		    		slides_rotator.css('overflow','hidden'); 
                        
    		    		//Задаем начальную позицию слайдам
        		        slides.css('left',options.width).eq(0).css({'z-index': 2,'left':0});

                     }
    	            

    		        //Когда все изображения слайдов загрузятся
    		        //прячем индикатор загрузки и выводим первый слайд
    		        for (i=0; i < count; i++) {
    		           
    		           pic[i] = new Image();
    	               
    	               pic[i].onload = function() {
    	                
    		                loaded++;
    	                    
    	                    //Когда все картинки загружены
    	                    //прячем индикатор загрузки и выводим слайды
    		                if(loaded == count){
    		                   
    		                	main_rotator.show();
                                $('.rotator-nav').show();
    		                	preloader.hide();
    		                    
    		                	if(options.autorun){
    		                		
    		                		rotator.start();
    		                	}
    		                    
    		                }
    		            };
    	                
    	                pic[i].src = images[i].src;
    		        }
    	     
    			},
    			render: function(){
    		    	
    				$this.append(main_rotator);
    				
                    if(options.nav){
                        
                        $this.append(nav_left,nav_right);
                        
                        $('.rotator-nav').hide();
                    }
                    
    		        //Перемешиваем слайды
                    if(options.random){
                        
                        options.slides.sort(function() {return 0.5 - Math.random()});
                    }
    		    	
    		        
    		    	var render = [];
    		    	
    		    	$.each(options.slides,function(i,slide){
    		    		
    		    		render.push('<li><div class="img_rotator"><a rel="nofollow" href="'+slide.url+'" target="_parent _blank"><img src="'+slide.img+'" options.width="'+options.width+'" height="'+options.height+'" alt="*" /></a></div></li>');
    		    	});

    		    	return slides_rotator.html(render.join('')).appendTo(main_rotator);

    		    }, 
    		    start: function(){
                    step = -1; 
    		    	intervalID = setInterval(function(){rotator.next();},options.timeout);   	
    		    },
    	        stop: function(){
    	            clearInterval(intervalID);    	        
    	        },
    	        next: function(){
                    step = -1;  	    	     
    		    	if(current >= count) current = -1;
    		
    		    	prev = current;
    		    	current++;
    		
    		    	if(current == 0) prev = count;
    		    	
    		    	rotator.run();

    		    },
    	        prev: function(){
                    step = 1;
    		    	prev = current;
    		    	current--;
    		
    		    	if(current < 0) current = count;
    	        	
    	        	rotator.run();
    	        },
    	        run: function(){
    	           
                    run = true; //начало анимации
                    
                    if(options.autorun) rotator.stop();
    					
    	        	if(options.fx == 'fade'){
	  
                        slides.eq(prev).css('z-index',1).stop(true,true).animate({'opacity': 0},options.speed);                      
    	        		slides.eq(current).css('z-index',2).stop(true,true).animate({'opacity': 1},options.speed,function(){
                            run = false; //конец анимации
                        });  
    	        	}
    	        	else{

                        slides.eq(prev).css('z-index',1).stop(true,true).animate({'left': step*options.width},options.speed,function(){
                            
                            $(this).css('left',step*options.width);

                        });
                        
                        var sc = slides.eq(current);

                        if(sc.css('left').match(/([-\d]+)/)[1] != -step*options.width){
                            
                            sc.css('left',-step*options.width);
                        }
                        
                        sc.css({'z-index':2}).stop().animate({'left': 0},options.speed,function(){
                            
                            run = false; //конец анимации
                            
                        });
        		    	 
    	        	}
                    
                    if(options.autorun) rotator.start();
    	        }
    		};

    		
    		rotator.init();
    
    	});
    };   
})(jQuery);
