jQuery.iCarousel={build:function(A){return this.each(function(){var E=this;var B=2*Math.PI/360;var C=2*Math.PI;if(jQuery(E).css("position")!="relative"&&jQuery(E).css("position")!="absolute"){jQuery(E).css("position","relative");}E.carouselCfg={items:jQuery(A.items,this),itemWidth:A.itemWidth,itemHeight:A.itemHeight,itemMinWidth:A.itemMinWidth,maxRotation:C,size:jQuery.iUtil.getSize(this),position:jQuery.iUtil.getPosition(this),start:Math.PI/2,rotationSpeed:A.rotationSpeed,reflectionSize:A.reflections,reflections:[],protectRotation:false,increment:2*Math.PI/360};E.carouselCfg.radiusX=(E.carouselCfg.size.w-E.carouselCfg.itemWidth)/2;E.carouselCfg.radiusY=(E.carouselCfg.size.h-E.carouselCfg.itemHeight-E.carouselCfg.itemHeight*E.carouselCfg.reflectionSize)/2;E.carouselCfg.step=2*Math.PI/E.carouselCfg.items.size();E.carouselCfg.paddingX=E.carouselCfg.size.w/2;E.carouselCfg.paddingY=E.carouselCfg.size.h/2-E.carouselCfg.itemHeight*E.carouselCfg.reflectionSize;var D=document.createElement("div");jQuery(D).css({position:"absolute",zIndex:1,top:0,left:0});jQuery(E).append(D);E.carouselCfg.items.each(function(F){image=jQuery("img",this).get(0);height=parseInt(E.carouselCfg.itemHeight*E.carouselCfg.reflectionSize);if(jQuery.browser.msie){canvas=document.createElement("img");jQuery(canvas).css("position","absolute");canvas.src=image.src;canvas.style.filter="flipv progid:DXImageTransform.Microsoft.Alpha(opacity=60, style=1, finishOpacity=0, startx=0, starty=0, finishx=0)";}else{canvas=document.createElement("canvas");if(canvas.getContext){context=canvas.getContext("2d");canvas.style.position="absolute";canvas.style.height=height+"px";canvas.style.width=E.carouselCfg.itemWidth+"px";canvas.height=height;canvas.width=E.carouselCfg.itemWidth;context.save();context.translate(0,height);context.scale(1,-1);context.drawImage(image,0,0,E.carouselCfg.itemWidth,height);context.restore();context.globalCompositeOperation="destination-out";var G=context.createLinearGradient(0,0,0,height);G.addColorStop(1,"rgba(255, 255, 255, 1)");G.addColorStop(0,"rgba(255, 255, 255, 0.6)");context.fillStyle=G;if(navigator.appVersion.indexOf("WebKit")!=-1){context.fill();}else{context.fillRect(0,0,E.carouselCfg.itemWidth,height);}}}E.carouselCfg.reflections[F]=canvas;jQuery(D).append(canvas);}).bind("mouseover",function(F){E.carouselCfg.protectRotation=true;E.carouselCfg.speed=E.carouselCfg.increment*0.1*E.carouselCfg.speed/Math.abs(E.carouselCfg.speed);return false;}).bind("mouseout",function(F){E.carouselCfg.protectRotation=false;return false;});jQuery.iCarousel.positionItems(E);E.carouselCfg.speed=E.carouselCfg.increment*0.2;E.carouselCfg.rotationTimer=window.setInterval(function(){E.carouselCfg.start+=E.carouselCfg.speed;if(E.carouselCfg.start>C){E.carouselCfg.start=0;}jQuery.iCarousel.positionItems(E);},20);jQuery(E).bind("mouseout",function(){E.carouselCfg.speed=E.carouselCfg.increment*0.2*E.carouselCfg.speed/Math.abs(E.carouselCfg.speed);}).bind("mousemove",function(F){if(E.carouselCfg.protectRotation==false){pointer=jQuery.iUtil.getPointer(F);mousex=E.carouselCfg.size.w-pointer.x+E.carouselCfg.position.x;E.carouselCfg.speed=E.carouselCfg.rotationSpeed*E.carouselCfg.increment*(E.carouselCfg.size.w/2-mousex)/(E.carouselCfg.size.w/2);}});});},positionItems:function(A){A.carouselCfg.items.each(function(B){angle=A.carouselCfg.start+B*A.carouselCfg.step;x=A.carouselCfg.radiusX*Math.cos(angle);y=A.carouselCfg.radiusY*Math.sin(angle);itemZIndex=parseInt(100*(A.carouselCfg.radiusY+y)/(2*A.carouselCfg.radiusY));parte=(A.carouselCfg.radiusY+y)/(2*A.carouselCfg.radiusY);width=parseInt((A.carouselCfg.itemWidth-A.carouselCfg.itemMinWidth)*parte+A.carouselCfg.itemMinWidth);height=parseInt(width*A.carouselCfg.itemHeight/A.carouselCfg.itemWidth);this.style.top=A.carouselCfg.paddingY+y-height/2+"px";this.style.left=A.carouselCfg.paddingX+x-width/2+"px";this.style.width=width+"px";this.style.height=height+"px";this.style.zIndex=itemZIndex;A.carouselCfg.reflections[B].style.top=parseInt(A.carouselCfg.paddingY+y+height-1-height/2)+"px";A.carouselCfg.reflections[B].style.left=parseInt(A.carouselCfg.paddingX+x-width/2)+"px";A.carouselCfg.reflections[B].style.width=width+"px";A.carouselCfg.reflections[B].style.height=parseInt(height*A.carouselCfg.reflectionSize)+"px";});}};jQuery.fn.Carousel=jQuery.iCarousel.build;