(function($){
/*    
	Created by Michal Matuška (michal.matuska@peckadesign.cz)
	Version for www.trinstruments.cz
*/	
    $.fn.pdMotiveRotator = function(options)
        {
        	
        	return this.each(function(){
        		var $this = $(this);
        		
        		// NASTAVENÍ
	        	var o = $.extend({
	                $img: $('.img img', this),
					$title: $('.desc h1', this),
					$subtitle: $('.desc h1', this),
					$annot: $('.desc .annot', this),
					$links: $('.link', this),
					$pagingPlace: $('.pagingMotive', this),
	                data:[],
	                startWith:0,
	                delay: 10000,
	                parts: 1
	            }, options);

				// IMG HELP
				o.$img.wrap('<span style="display:block; width:100%; height:100%; position:relative"></span>')
				var $wrapImg = o.$img.parent();
				
				// NENASTAVITELNÉ
				var $paging = $('<p></p>'),
					timer = null,
					length = o.data.length,
					width = $wrapImg.width(),
					height = $wrapImg.height(),
					partWidth = width/o.parts;
				
				// Parts
				for(var i = 0; i < o.parts; i++){
					$wrapImg.append($('<span class="part" style="display:block; height:'+height+'px; width:'+partWidth+'px; position:absolute; top:0px; left:'+i*partWidth+'px; background-position:'+(-i*partWidth)+'px 0; background-repeat:no-repeat;"></span>').css('opacity', '0'))	
				}	
				
				// PAGING	
				$.each(o.data, function(i){
					$paging.append('<a href="#" '+(i==o.startWith?'class="active"':'')+'><span>'+(i+1)+'</span></a>');
				});
				$paging
					.wrapInner('<span class="item"></span>')
					.prepend('<a href="#" class="prev"><span></span></a>')
					.append('<a href="#" class="next"><span></span></a>')
					.appendTo(o.$pagingPlace);
					
				var changePage = function(i){
					$('.item a', $paging).filter('.active').removeClass('active').end().eq(i).addClass('active');
				};
				
				var changeAnnot = function(i){
					o.$annot.text(o.data[i].annot);
				};
				
				var changeTitle = function(i){
					o.$title.text(o.data[i].title);
				
				};
				
				var changeSubtitle = function(i){
					o.$subtitle.text(o.data[i].subtitle);
				};
				
				var changeLink = function(i){
					o.$links.attr('href', o.data[i].link);
				};
				
				var changeImg = function(i, callback){
					var $help = $('<img />');
						$help
							.bind('load', function(){
								callback();
							})
							.attr({'src':o.data[i].img});
				};
				
				var rotate = function(num, noTimer){
					var i = num;
					timer = clearTimeout(timer);				
					
					changeImg(i, function(){
						$('.part', $wrapImg).css('background-image', 'url('+o.data[i].img+')')
						
						var change = function(count){
							var count = count || 0;
								count++;
								
							if(count<o.parts){								
								$('.part', $wrapImg).eq(count-1).fadeTo(750, 1);
								var timer = setTimeout(function(){change(count)}, 45);
							}
							else{
								$('.part', $wrapImg).eq(count-1).fadeTo(1000, 1, function(){
									$this.removeClass('deactive')
									o.$img.attr({'src':o.data[i].img})
									$('.part', $wrapImg).css('opacity', '0');	
								});
								
							}
						}
						$this.addClass('deactive')
						change();
						
						changePage(i);
						changeAnnot(i);
						changeTitle(i);
						changeSubtitle(i);	
						changeLink(i);
						if ( !noTimer ) {timer = setTimeout(function(){rotate((i+1)%length)}, o.delay);}
					});	
				}
				
				timer = setTimeout(function(){rotate(o.startWith+1)}, o.delay);
				
				$('.item a', $paging).each(function(i){
					$(this).click(function(){
						if(!$(this).is('.active') && !$this.hasClass('deactive'))
						{	
							rotate(i, true);
						}
						return false;
					});
				});
				$('.next', $paging).click(function(){
					if(!$this.hasClass('deactive')){
						var i = $('.item a', $paging).index($('.item a.active', $paging));
						rotate((i+1)%length);	
					}
					return false;
				});
				$('.prev', $paging).click(function(){
					if(!$this.hasClass('deactive')){
						var i = $('.item a', $paging).index($('.item a.active', $paging));
							i = (i-1) < 0 ? length-1 : i-1;
						rotate(i);
					}
					return false;
				});	
        		
        	});
        	
	    }
})(jQuery);

