/*
 * jQuery Nivo Slider v2.3
 * http://nivo.dev7studios.com
 *
 * Copyright 2010, Gilbert Pellegrom
 * Free to use and abuse under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 * 
 * May 2010 - Pick random effect from specified set of effects by toronegro
 * May 2010 - controlNavThumbsFromRel option added by nerd-sh
 * May 2010 - Do not start nivoRun timer if there is only 1 slide by msielski
 * April 2010 - controlNavThumbs option added by Jamie Thompson (http://jamiethompson.co.uk)
 * March 2010 - manualAdvance option added by HelloPablo (http://hellopablo.co.uk)
 */

(function($)
{
	var NivoSlider=function(element,options)
	{
		var settings=$.extend({},$.fn.nivoSlider.defaults,options);
		var vars={currentSlide:0,currentImage:'',totalSlides:0,randAnim:'',running:false,paused:false,stop:false};
		var slider=$(element);
			slider.data('nivo:vars',vars);
			slider.css('position','relative');
			slider.addClass('nivoSlider');
		
		var kids=slider.children();
		kids.each(function()
		{
			var child=$(this);var link='';if(!child.is('img'))
			{
			if(child.is('a'))
			{
				child.addClass('nivo-imageLink');link=child;
			}
			child=child.find('img:first');
			}
			
			var childWidth=child.width();
			if(childWidth==0)childWidth=child.attr('width');
			var childHeight=child.height();
			if(childHeight==0)childHeight=child.attr('height');
			if(childWidth>slider.width()){slider.width(childWidth);}
			
			if(childHeight>slider.height())
			{
				slider.height(childHeight);
			}
			
			if(link!='')
			{
				link.css('display','none');
			}
			child.css('display','none');vars.totalSlides++;
		});
		
		if(settings.startSlide>0)
		{
			if(settings.startSlide>=vars.totalSlides)settings.startSlide=vars.totalSlides-1;vars.currentSlide=settings.startSlide;
		}
		
		if($(kids[vars.currentSlide]).is('img'))
		{
			vars.currentImage=$(kids[vars.currentSlide]);
		}
		else
		{
			vars.currentImage=$(kids[vars.currentSlide]).find('img:first');
		}
		
		if($(kids[vars.currentSlide]).is('a'))
		{
			$(kids[vars.currentSlide]).css('display','block');
		}
		slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');
		
		for(var i=0;i<settings.slices;i++)
		{
			var sliceWidth=Math.round(slider.width()/settings.slices);
			if(i==settings.slices-1)
			{
				slider.append($('<div class="nivo-slice"></div>').css({left:(sliceWidth*i)+'px',width:(slider.width()-(sliceWidth*i))+'px'}));
			}
			else
			{
				slider.append($('<div class="nivo-slice"></div>').css({left:(sliceWidth*i)+'px',width:sliceWidth+'px'}));
			}
		}
		slider.append($('<div class="nivo-caption"></div>').css({display:'none'}));
		
		if(vars.currentImage.attr('title')!='')
		{
			var title=vars.currentImage.attr('title');
			if(title.substr(0,1)=='#')title=$(title).html();$('.nivo-caption',slider).html(title);$('.nivo-caption',slider).fadeIn(settings.animSpeed);
		}
		
		var timer=0;
		if(!settings.manualAdvance&&kids.length>1)
		{
			timer=setInterval(function(){nivoRun(slider,kids,settings,false);},settings.pauseTime);
		}
		
		if(settings.directionNav)
		{
			slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div>');
			if(settings.directionNavHide)
			{
				$('.nivo-directionNav',slider).hide();slider.hover(function(){$('.nivo-directionNav',slider).show();},function(){$('.nivo-directionNav',slider).hide();});
			}
			$('a.nivo-prevNav',slider).live('click',function(){if(vars.running)return false;clearInterval(timer);timer='';vars.currentSlide-=2;nivoRun(slider,kids,settings,'prev');});$('a.nivo-nextNav',slider).live('click',function(){if(vars.running)return false;clearInterval(timer);timer='';nivoRun(slider,kids,settings,'next');});
		}
		
		if(settings.controlNav)
		{
			var nivoControl=$('<div class="nivo-controlNav"></div>');slider.append(nivoControl);
			for(var i=0;i<kids.length;i++)
			{
				if(settings.controlNavThumbs)
				{
					var child=kids.eq(i);
					if(!child.is('img'))
					{
					child=child.find('img:first');
					}
					
					if(settings.controlNavThumbsFromRel)
					{
					nivoControl.append('<a class="nivo-control" rel="'+i+'"><img src="'+child.attr('rel')+'" alt="" /></a>');
					}
					else
					{
					nivoControl.append('<a class="nivo-control" rel="'+i+'"><img src="'+child.attr('src').replace(settings.controlNavThumbsSearch,settings.controlNavThumbsReplace)+'" alt="" /></a>');
					}
				}
				else
				{
					nivoControl.append('<a class="nivo-control" rel="'+i+'">'+(i+1)+'</a>');
				}
			}
			$('.nivo-controlNav a:eq('+vars.currentSlide+')',slider).addClass('active');$('.nivo-controlNav a',slider).live('click',function(){if(vars.running)return false;if($(this).hasClass('active'))return false;clearInterval(timer);timer='';slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');vars.currentSlide=$(this).attr('rel')-1;nivoRun(slider,kids,settings,'control');});
		}
		
		if(settings.keyboardNav)
		{
			$(window).keypress(function(event)
			{
				if(event.keyCode=='37')
				{
					if(vars.running)return false;clearInterval(timer);timer='';vars.currentSlide-=2;nivoRun(slider,kids,settings,'prev');
				}
				if(event.keyCode=='39')
				{
					if(vars.running)return false;clearInterval(timer);timer='';nivoRun(slider,kids,settings,'next');
				}
			});
		}
		
		if(settings.pauseOnHover)
		{
			slider.hover(function()
			{
				vars.paused=true;clearInterval(timer);timer='';
			},
			function()
				{
					vars.paused=false;if(timer==''&&!settings.manualAdvance)
					{
						timer=setInterval(function()
						{
							nivoRun(slider,kids,settings,false);
						},settings.pauseTime);
					}
				});
		}
		slider.bind('nivo:animFinished',function()
		{
			vars.running=false;$(kids).each(function()
			{
				if($(this).is('a'))
				{
					$(this).css('display','none');
				}
			});
			if($(kids[vars.currentSlide]).is('a'))
			{
				$(kids[vars.currentSlide]).css('display','block');
			}
			
			if(timer==''&&!vars.paused&&!settings.manualAdvance)
			{
				timer=setInterval(function(){nivoRun(slider,kids,settings,false);},settings.pauseTime);
			}
			settings.afterChange.call(this);
		});
		
		var nivoRun=function(slider,kids,settings,nudge){var vars=slider.data('nivo:vars');if(vars&&(vars.currentSlide==vars.totalSlides-1)){settings.lastSlide.call(this);}
		
		if((!vars||vars.stop)&&!nudge)return false;settings.beforeChange.call(this);if(!nudge){slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');}else{if(nudge=='prev'){slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');}
		
		if(nudge=='next'){slider.css('background','url("'+vars.currentImage.attr('src')+'") no-repeat');}}
		vars.currentSlide++;if(vars.currentSlide==vars.totalSlides){vars.currentSlide=0;settings.slideshowEnd.call(this);}
		
		if(vars.currentSlide<0)vars.currentSlide=(vars.totalSlides-1);if($(kids[vars.currentSlide]).is('img')){vars.currentImage=$(kids[vars.currentSlide]);}else{vars.currentImage=$(kids[vars.currentSlide]).find('img:first');}
		
		if(settings.controlNav){$('.nivo-controlNav a',slider).removeClass('active');$('.nivo-controlNav a:eq('+vars.currentSlide+')',slider).addClass('active');}
		
		if(vars.currentImage.attr('title')!=''){var title=vars.currentImage.attr('title');if(title.substr(0,1)=='#')title=$(title).html();if($('.nivo-caption',slider).css('display')=='block'){$('.nivo-caption',slider).fadeOut(settings.animSpeed,function(){$(this).html(title);$(this).fadeIn(settings.animSpeed);});}else{$('.nivo-caption',slider).html(title);}
		$('.nivo-caption',slider).fadeIn(settings.animSpeed);}else{$('.nivo-caption',slider).fadeOut(settings.animSpeed);}
		var i=0;$('.nivo-slice',slider).each(function(){var sliceWidth=Math.round(slider.width()/settings.slices);$(this).css({height:'0px',background:'url("'+vars.currentImage.attr('src')+'") no-repeat -'+((sliceWidth+(i*sliceWidth))-sliceWidth)+'px 0%'});i++;});if(settings.effect=='random'){var anims=new Array("sliceDownRight","sliceDownLeft","sliceUpRight","sliceUpLeft","sliceUpDown","sliceUpDownLeft","fold","fade");vars.randAnim=anims[Math.floor(Math.random()*(anims.length+1))];if(vars.randAnim==undefined)vars.randAnim='fade';}
		
		if(settings.effect.indexOf(',')!=-1){var anims=settings.effect.split(',');vars.randAnim=$.trim(anims[Math.floor(Math.random()*anims.length)]);}
		vars.running=true;if(settings.effect=='sliceDown'||settings.effect=='sliceDownRight'||vars.randAnim=='sliceDownRight'||settings.effect=='sliceDownLeft'||vars.randAnim=='sliceDownLeft'){var timeBuff=0;var i=0;var slices=$('.nivo-slice',slider);if(settings.effect=='sliceDownLeft'||vars.randAnim=='sliceDownLeft')slices=$('.nivo-slice',slider)._reverse();slices.each(function(){var slice=$(this);slice.css('top','0px');if(i==settings.slices-1){setTimeout(function(){slice.animate({height:'100%'},settings.animSpeed,'',function(){slider.trigger('nivo:animFinished');});},(100+timeBuff));}else{setTimeout(function(){slice.animate({height:'100%'},settings.animSpeed);},(100+timeBuff));}
		timeBuff+=50;i++;});}
		
		else if(settings.effect=='sliceUp'||settings.effect=='sliceUpRight'||vars.randAnim=='sliceUpRight'||settings.effect=='sliceUpLeft'||vars.randAnim=='sliceUpLeft'){var timeBuff=0;var i=0;var slices=$('.nivo-slice',slider);if(settings.effect=='sliceUpLeft'||vars.randAnim=='sliceUpLeft')slices=$('.nivo-slice',slider)._reverse();slices.each(function(){var slice=$(this);slice.css('bottom','0px');if(i==settings.slices-1){setTimeout(function(){slice.animate({height:'100%'},settings.animSpeed,'',function(){slider.trigger('nivo:animFinished');});},(100+timeBuff));}else{setTimeout(function(){slice.animate({height:'100%'},settings.animSpeed);},(100+timeBuff));}
		timeBuff+=50;i++;});}
		
		else if(settings.effect=='sliceUpDown'||settings.effect=='sliceUpDownRight'||vars.randAnim=='sliceUpDown'||settings.effect=='sliceUpDownLeft'||vars.randAnim=='sliceUpDownLeft'){var timeBuff=0;var i=0;var v=0;var slices=$('.nivo-slice',slider);if(settings.effect=='sliceUpDownLeft'||vars.randAnim=='sliceUpDownLeft')slices=$('.nivo-slice',slider)._reverse();slices.each(function(){var slice=$(this);if(i==0){slice.css('top','0px');i++;}else{slice.css('bottom','0px');i=0;}
		
		if(v==settings.slices-1){setTimeout(function(){slice.animate({height:'100%'},settings.animSpeed,'',function(){slider.trigger('nivo:animFinished');});},(100+timeBuff));}else{setTimeout(function(){slice.animate({height:'100%'},settings.animSpeed);},(100+timeBuff));}
		timeBuff+=50;v++;});}
		
		else if(settings.effect=='fold'||vars.randAnim=='fold')
		{
			var timeBuff=0;var i=0;$('.nivo-slice',slider).each(function()
			{
				var slice=$(this);var origWidth=slice.width();slice.css({top:'0px',height:'100%',width:'0px'});
				if(i==settings.slices-1){setTimeout(function(){slice.animate({width:origWidth},settings.animSpeed,'',function(){slider.trigger('nivo:animFinished');});},(100+timeBuff));}else{setTimeout(function(){slice.animate({width:origWidth},settings.animSpeed);},(100+timeBuff));}
				timeBuff+=50;i++;
			});
		}
		
		else if(settings.effect=='fade'||vars.randAnim=='fade'){var i=0;$('.nivo-slice',slider).each(function(){$(this).css('height','100%');if(i==settings.slices-1){$(this).animate({},(settings.animSpeed*2),'',function(){slider.trigger('nivo:animFinished');});}else{$(this).animate({},(settings.animSpeed*2));}
		i++;});}}
		
		var trace=function(msg){if(this.console&&typeof console.log!="undefined")
		console.log(msg);}
		
		this.stop=function(){if(!$(element).data('nivo:vars').stop){$(element).data('nivo:vars').stop=true;trace('Stop Slider');}}
		
		this.start=function(){if($(element).data('nivo:vars').stop){$(element).data('nivo:vars').stop=false;trace('Start Slider');}}
		settings.afterLoad.call(this);
	}
	;$.fn.nivoSlider=function(options){return this.each(function(){var element=$(this);if(element.data('nivoslider'))return;var nivoslider=new NivoSlider(this,options);element.data('nivoslider',nivoslider);});};$.fn.nivoSlider.defaults={effect:'random',slices:15,animSpeed:500,pauseTime:3000,startSlide:0,directionNav:true,directionNavHide:true,controlNav:true,controlNavThumbs:false,controlNavThumbsFromRel:false,controlNavThumbsSearch:'.jpg',controlNavThumbsReplace:'_thumb.jpg',keyboardNav:true,pauseOnHover:true,manualAdvance:false,captionOpacity:1,beforeChange:function(){},afterChange:function(){},slideshowEnd:function(){},lastSlide:function(){},afterLoad:function(){}};$.fn._reverse=[].reverse;
})(jQuery);
