(
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');
		
		kids_type = settings.product;
		
		switch(settings.product)
		{
			case "cofre":
				kids = kids_cofres;
				break;
			case "concha":
				kids = kids_conchas;
				break;
			case "direito":
				kids = kids_direitos;
				break;
			case "vertical":
				kids = kids_verticais;
				break;
			case "horizontal":
				kids = kids_horizontais;
				break;
			case "estrutura":
				kids = kids_estruturas;
				break;
			case "prt":
				kids = kids_prt;
				break;
			case "guardasois":
				kids = kids_guardasois;
				break;
			case "estores":
				kids = kids_estores;
				break;
			default:
				kids = kids_global;
				break;
		}
		vars.totalSlides=kids.length;
		if(settings.startSlide>0)
		{
			if(settings.startSlide>=vars.totalSlides)
				settings.startSlide=0;
			vars.currentSlide=settings.startSlide;
		}
		vars.currentImage = kids[vars.currentSlide];
		
		var desc;
		switch(settings.product)
		{
			case "cofre":
				desc = desc_cofre;
				break;
			case "concha":
				desc = desc_concha;
				break;
			case "direito":
				desc = desc_direito;
				break;
			case "vertical":
				desc = desc_vertical;
				break;
			case "horizontal":
				desc = desc_horizontal;
				break;
			case "estrutura":
				desc = desc_estrutura;
				break;
			case "prt":
				desc = desc_prt;
				break;
			case "guardasois":
				desc = desc_guardasois;
				break;
			case "estores":
				desc = desc_estores;
				break;
			default:
				desc = desc_global;
				break;
		}
		if(desc!='<p style="color:yellow; font-size:80%;"></p>')
		{
			$('.caption').append($('<div class="nivo-caption">' + desc + '</div>').css(
				{opacity:settings.captionOpacity}));
		}
		var processCaption=function(settings){
			var nivoCaption=$('.nivo-caption',slider);
			nivoCaption.fadeOut(settings.animSpeed);
		}
		//processCaption(settings);
		
		var timer=0;
		
		
		if(!settings.manualAdvance&&kids.length>1&&(settings.product=='global'))
		{
			timer=setInterval(function(){
				nivoRun(slider,kids,settings,false);
			},settings.pauseTime);
		}
		
		kids_type = settings.product;
		
		if(settings.directionNav)
		{
			jQuery('#prev').click(function() {
				if(!vars.paused)
					return false;
				clearInterval(timer);
				timer='';
				vars.currentSlide-=1;
				nivoRun(slider,kids,settings,'prev');
			});
			jQuery('#next').click(function() {
				if(!vars.paused)
					return false;
				clearInterval(timer);
				timer='';
				vars.currentSlide+=1;
				nivoRun(slider,kids,settings,'next');
			});
			jQuery('#pause').click(function() {
				if(vars.paused)
				{
					vars.paused=false;
					if(timer==''&&!settings.manualAdvance)
					{
						timer=setInterval(function()
						{
							nivoRun(slider,kids,settings,false);
						},settings.pauseTime);
					}
					$('#pause').attr('src', 'images/pause.png');
				}
				else
				{
					vars.paused=true;
					clearInterval(timer);
					timer='';
					$('#pause').attr('src', 'images/play.png');
				}
			});
		}
			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;
				
				if(timer==''&&!vars.paused&&!settings.manualAdvance&&settings.product=='global')
				{
					timer=setInterval(function()
					{
						
						nivoRun(slider,kids,settings,false);
					},settings.pauseTime);
				}
				settings.afterChange.call(this);
			});
			var createSlices=function(slider,settings,vars)
			{
				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:'0px',width:'0px',height:'0px',opacity:'0',background:'url("'+vars.currentImage+'") no-repeat 0% 0%', visibility:'hidden'
						}));
					}
					else
					{
						slider.append($('<div class="nivo-slice"></div>').css(
						{
							left:'0px',width:'0px',height:'0px',opacity:'0',background:'url("'+vars.currentImage+'") no-repeat 0% 0%', visibility:'hidden'
						}));
					}
				}
			}
			var createBoxes=function(slider,settings,vars)
			{
				var boxWidth=Math.round(slider.width()/settings.boxCols);
				var boxHeight=Math.round(slider.height()/settings.boxRows);
				for(var rows=0;rows<settings.boxRows;rows++)
				{
					for(var cols=0;cols<settings.boxCols;cols++)
					{
						if(cols==settings.boxCols-1)
						{
							slider.append($('<div class="nivo-box"></div>').css(
							{
								opacity:0,left:(boxWidth*cols)+'px',top:(boxHeight*rows)+'px',width:(slider.width()-(boxWidth*cols))+'px',height:boxHeight+'px',background:'url("'+vars.currentImage.attr('src')+'") no-repeat 25% 25%'
							}));
						}
						else
						{
							slider.append($('<div class="nivo-box"></div>').css(
							{
								opacity:0,left:(boxWidth*cols)+'px',top:(boxHeight*rows)+'px',width:boxWidth+'px',height:boxHeight+'px',background:'url("'+vars.currentImage.attr('src')+'") no-repeat 25% 25%'
							}));
						}
						}
					}
				}
				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);
					// remover imagem corrente
					var kids_slider=slider.children();
					kids_slider.each(function()
					{
						var child=$(this);
						if(child.is('img'))
						{
							child.remove();
						}
					});
					if(!nudge)
					{
						slider.prepend('<img src="' + vars.currentImage + '" width="550" height="413px"/>');
					}
					else
					{
						if(nudge=='prev')
						{
							slider.prepend('<img src="' + vars.currentImage + '" width="550" height="413px"/>');
						}
						if(nudge=='next')
						{
							slider.prepend('<img src="' + vars.currentImage + '" width="550" height="413px"/>');
						}
					}
					vars.currentSlide++;
					if(vars.currentSlide==vars.totalSlides)
					{
						vars.currentSlide=0;
						settings.slideshowEnd.call(this);
					}
					if(vars.currentSlide<0)
						vars.currentSlide=(vars.totalSlides-1);
					vars.currentImage=kids[vars.currentSlide];
					
					if(settings.controlNav)
					{
						$('.nivo-controlNav a',slider).removeClass('active');
						$('.nivo-controlNav a:eq('+vars.currentSlide+')',slider).addClass('active');
					}
					//processCaption(settings);
					$('.nivo-slice',slider).remove();
					$('.nivo-box',slider).remove();
					if(settings.effect.indexOf(',')!=-1)
					{
						var anims=settings.effect.split(',');
						vars.randAnim=anims[Math.floor(Math.random()*(anims.length))];
						if(vars.randAnim==undefined)
							vars.randAnim='fade';
					}
					vars.running=true;
					if(settings.effect=='sliceDown'||settings.effect=='sliceDownRight'||vars.randAnim=='sliceDownRight'||settings.effect=='sliceDownLeft'||vars.randAnim=='sliceDownLeft')
					{
						createSlices(slider,settings,vars);
						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%',opacity:'1.0'},settings.animSpeed,'',function()
									{
										slider.trigger('nivo:animFinished');
									});
								},(100+timeBuff));
							}
							else
							{
								setTimeout(function()
								{
									slice.animate({height:'100%',opacity:'1.0'},settings.animSpeed);
								},(100+timeBuff));
							}
							timeBuff+=50;
							i++;
						});		
					}
					else 
						if(settings.effect=='sliceUp'||settings.effect=='sliceUpRight'||vars.randAnim=='sliceUpRight'||settings.effect=='sliceUpLeft'||vars.randAnim=='sliceUpLeft')
						{
							createSlices(slider,settings,vars);
							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%',opacity:'1.0'},settings.animSpeed,'',function()
										{
											slider.trigger('nivo:animFinished');
										});
									},(100+timeBuff));
								}
								else
								{
									setTimeout(function()
									{
										slice.animate({height:'100%',opacity:'1.0'},settings.animSpeed);
									},(100+timeBuff));
								}
								timeBuff+=50;
								i++;
							});
						}
						else 
							if(settings.effect=='sliceUpDown'||settings.effect=='sliceUpDownRight'||vars.randAnim=='sliceUpDown'||settings.effect=='sliceUpDownLeft'||vars.randAnim=='sliceUpDownLeft')
							{
								createSlices(slider,settings,vars);
								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%',opacity:'1.0'},settings.animSpeed,'',function()
											{
												slider.trigger('nivo:animFinished');
											});
										},(100+timeBuff));
									}
									else
									{
										setTimeout(function()
										{
											slice.animate({height:'100%',opacity:'1.0'},settings.animSpeed);
										},(100+timeBuff));
									}
									timeBuff+=50;
									v++;
								});
							}
							else 
								if(settings.effect=='fold'||vars.randAnim=='fold')
								{
									createSlices(slider,settings,vars);
									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,opacity:'1.0'},settings.animSpeed,'',function()
												{
													slider.trigger('nivo:animFinished');
												});
											},(100+timeBuff));
										}
										else
										{
											setTimeout(function()
											{
												slice.animate({width:origWidth,opacity:'1.0'},settings.animSpeed);
											},(100+timeBuff));
										}
										timeBuff+=50;
										i++;
									});
								}
								else 
									if(settings.effect=='fade'||vars.randAnim=='fade')
									{
										createSlices(slider,settings,vars);
										var firstSlice=$('.nivo-slice:first',slider);
										firstSlice.css({'height':'100%','width':slider.width()+'px'});
										firstSlice.animate({opacity:'1.0'},(settings.animSpeed*2),'',function()
										{
											slider.trigger('nivo:animFinished');
										});
									}
									else 
										if(settings.effect=='slideInRight'||vars.randAnim=='slideInRight')
										{
											createSlices(slider,settings,vars);
											var firstSlice=$('.nivo-slice:first',slider);
											firstSlice.css({'height':'100%','width':'0px','opacity':'1'});
											firstSlice.animate({width:slider.width()+'px'},(settings.animSpeed*2),'',function()
											{
												slider.trigger('nivo:animFinished');
											});
										}
										else 
											if(settings.effect=='slideInLeft'||vars.randAnim=='slideInLeft')
											{
												createSlices(slider,settings,vars);
												var firstSlice=$('.nivo-slice:first',slider);
												firstSlice.css({'height':'100%','width':'0px','opacity':'1','left':'','right':'0px'});
												firstSlice.animate({width:slider.width()+'px'},(settings.animSpeed*2),'',function()
												{
													firstSlice.css({'left':'0px','right':''});slider.trigger('nivo:animFinished');
												});
											}
											else 
												if(settings.effect=='boxRandom'||vars.randAnim=='boxRandom')
												{
													createBoxes(slider,settings,vars);
													var totalBoxes=settings.boxCols*settings.boxRows;
													var i=0;
													var timeBuff=0;
													var boxes=shuffle($('.nivo-box',slider));
													boxes.each(function()
													{
														var box=$(this);
														if(i==totalBoxes-1)
														{
															setTimeout(function()
															{
																box.animate({opacity:'1'},settings.animSpeed,'',function()
																{
																	slider.trigger('nivo:animFinished');
																});
															},(100+timeBuff));
														}
														else
														{
															setTimeout(function()
															{
																box.animate({opacity:'1'},settings.animSpeed);
															},(100+timeBuff));
														}
														timeBuff+=20;
														i++;
													});
												}
												else 
													if(settings.effect=='boxRain'||vars.randAnim=='boxRain'||settings.effect=='boxRainReverse'||vars.randAnim=='boxRainReverse'||settings.effect=='boxRainGrow'||vars.randAnim=='boxRainGrow'||settings.effect=='boxRainGrowReverse'||vars.randAnim=='boxRainGrowReverse')
													{
														createBoxes(slider,settings,vars);
														var totalBoxes=settings.boxCols*settings.boxRows;
														var i=0;
														var timeBuff=0;
														var rowIndex=0;
														var colIndex=0;
														var box2Darr=new Array();
														box2Darr[rowIndex]=new Array();
														var boxes=$('.nivo-box',slider);
														if(settings.effect=='boxRainReverse'||vars.randAnim=='boxRainReverse'||settings.effect=='boxRainGrowReverse'||vars.randAnim=='boxRainGrowReverse')
														{
															boxes=$('.nivo-box',slider)._reverse();
														}
														boxes.each(function()
														{
															box2Darr[rowIndex][colIndex]=$(this);
															colIndex++;
															if(colIndex==settings.boxCols)
															{
																rowIndex++;
																colIndex=0;
																box2Darr[rowIndex]=new Array();
															}
														});
														for(var cols=0;cols<(settings.boxCols*2);cols++)
														{
															var prevCol=cols;
															for(var rows=0;rows<settings.boxRows;rows++)
															{
																if(prevCol>=0&&prevCol<settings.boxCols)
																{
																	(function(row,col,time,i,totalBoxes)
																	{
																		var box=$(box2Darr[row][col]);
																		var w=box.width();
																		var h=box.height();
																		if(settings.effect=='boxRainGrow'||vars.randAnim=='boxRainGrow'||settings.effect=='boxRainGrowReverse'||vars.randAnim=='boxRainGrowReverse')
																		{
																			box.width(0).height(0);
																		}
																		if(i==totalBoxes-1)
																		{
																			setTimeout(function()
																			{
																				box.animate({opacity:'1',width:w,height:h},settings.animSpeed/1.3,'',function()
																				{
																					slider.trigger('nivo:animFinished');
																				});
																			},(100+time));
																		}
																		else
																		{
																			setTimeout(function()
																			{
																				box.animate({opacity:'1',width:w,height:h},settings.animSpeed/1.3);
																			},(100+time));
																		}
																	})
																	(rows,prevCol,timeBuff,i,totalBoxes);
																	i++;
																}
																prevCol--;
															}
															timeBuff+=100;
														}
													}
												
												}
												
												var shuffle=function(arr)
												{
													for(var j,x,i=arr.length;i;j=parseInt(Math.random()*i),x=arr[--i],arr[i]=arr[j],arr[j]=x);
														return arr;
												}
												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);
												return this;
											};
											$.fn.nivoSlider=function(options)
											{
												return this.each(function(key,value)
												{
													var element=$(this);
													if(element.data('nivoslider'))
													{
														if(options.product==kids_type)
															return element.data('nivoslider');
														//remove created children
														// class="nivo-caption"
														// class="nivo-slice"
														// class="nivo-directionNav"
														// class="nivo-box"
														$('.nivo-caption').remove();
														$('.nivo-slice').remove();
														$('.nivo-directionNav').remove();
														$('.nivo-box').remove();
														//
													}
													var nivoslider=new NivoSlider(this,options);
													element.data('nivoslider',nivoslider);
												});
											};
											$.fn.nivoSlider.defaults=
											{
												effect:'random',
												slices:15,
												boxCols:8,
												boxRows:4,
												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:0.8,
												prevText:'Prev',
												nextText:'Next',
												beforeChange:function(){},
												afterChange:function(){},
												slideshowEnd:function(){},
												lastSlide:function(){},
												afterLoad:function(){}
											};
											$.fn._reverse=[].reverse;
										})(jQuery);
