/*
 * Waterwheel Carousel
 * Version 1.2.1
 * http://www.bkosborne.com
 *
 * Copyright 2011 Brian Osborne
 * Licensed under GPL version 3
 * http://www.gnu.org/licenses/gpl.txt
 * 
 * Plugin written by Brian Osborne
 * for use with the jQuery JavaScript Framework
 * http://www.jquery.com
 *
 */
(function(a){a.fn.waterwheelCarousel=function(b){b=a.extend({},a.fn.waterwheelCarousel.defaults,b||{});return a(this).each(function(){var j={itemsContainer:a(this).find(".carousel-images"),totalItems:a(this).find(".carousel-images img").length,containerWidth:a(this).width(),containerHeight:a(this).height(),currentCenterItem:null,items:[],itemDistances:[],waveDistances:[],itemWidths:[],itemHeights:[],itemOpacities:[],carouselRotationsLeft:0,currentlyMoving:false,itemsAnimating:0,currentSpeed:b.speed,intervalTimer:null};d();p(function(){i();e();n();m()});function m(r){clearInterval(j.intervalTimer);if(!r&&b.autoPlay!=0){j.intervalTimer=setInterval(function(){(b.autoPlay>0)?o(false,1):o(true,1)},Math.abs(b.autoPlay))}}function l(r){var s=(r==1)?null:r--;return s}function h(r){var s=(r==j.totalItems)?null:r++;return s}function d(){j.itemsContainer.find("img").hide()}function p(u){var s=j.itemsContainer.find("img");var r=0;var t=s.length;s.each(function(){a(this).load(function(){r++;if(r==t){u()}});if(this.complete){a(this).trigger("load")}})}function i(){j.itemDistances[0]=b.startingItemSeparation;j.waveDistances[0]=b.startingWaveSeparation;j.itemWidths[0]=j.itemsContainer.find("img:first").attr("width");j.itemHeights[0]=j.itemsContainer.find("img:first").attr("height");j.itemOpacities[0]=1*0.75;for(var r=1;r<b.flankingItems+1;r++){j.itemDistances[r]=j.itemDistances[r-1]*b.itemSeparationFactor;j.waveDistances[r]=j.waveDistances[r-1]*b.waveSeparationFactor;j.itemWidths[r]=j.itemWidths[r-1]*b.itemDecreaseFactor;j.itemHeights[r]=j.itemHeights[r-1]*b.itemDecreaseFactor;j.itemOpacities[r]=j.itemOpacities[r-1]*b.opacityDecreaseFactor;if(r==b.flankingItems){j.itemWidths[r+1]=j.itemWidths[r]*b.itemDecreaseFactor;j.itemHeights[r+1]=j.itemHeights[r]*b.itemDecreaseFactor}}j.itemOpacities[j.itemOpacities.length-1]=0}function e(){j.items=j.itemsContainer.find("img");for(var r=0;r<j.items.length;r++){j.items[r]=a(j.items[r])}j.itemsContainer.css("position","relative").find("img").each(function(t){var u,s;if(b.orientation=="horizontal"){u=(j.containerWidth/2)-(a(this).width()/2);s=b.centerOffset}else{u=b.centerOffset;s=(j.containerHeight/2)-(a(this).height()/2)}a(this).css({left:u,top:s,visibility:"visible",position:"absolute","z-index":b.flankingItems+2,opacity:1}).data({currentPosition:0,oldPosition:0,width:a(this).width(),owidth:a(this).width(),height:a(this).height(),oheight:a(this).height(),top:s,left:u,opacity:1,index:t}).show()})}function n(){b.startingItem=(b.startingItem==0)?Math.round(j.totalItems/2):b.startingItem;j.carouselRotationsLeft=1;var r,t,s;r=1;for(t=b.startingItem-2;t>=0;t--){for(s=0;s<r;s++){g(j.items[t],false)}r++}r=1;for(t=b.startingItem;t<j.items.length;t++){for(s=0;s<r;s++){g(j.items[t],true)}r++}}function q(E,v){var C=E.data().currentPosition;var w=Math.abs(v);var x=j.itemWidths[Math.abs(v)];var t=j.itemHeights[Math.abs(v)];var s=Math.abs(E.data().width-x);var y=Math.abs(E.data().height-t);var F=0,u;if(b.orientation=="horizontal"){u=y/2}else{u=s/2}if((v>-1&&(v<C))||(v<1&&(v>C))){F-=u;F+=j.waveDistances[Math.abs(v)]}else{if((v>-1&&(v>C))||(v<1&&(v<C))){F+=u;F-=j.waveDistances[Math.abs(v)-1]}}var r=0;if(Math.abs(v)<Math.abs(C)){r=j.itemDistances[Math.abs(v)]}else{r=j.itemDistances[Math.abs(v)-1]}if(v>0||(v==0&&C==1)){if(b.orientation=="horizontal"){r+=s}else{r+=y}}if(v<C){r=r*-1}var z;if(v==0){z=1}else{z=j.itemOpacities[Math.abs(v)-1]}var A=E.data().top;var D=E.data().left;if(b.orientation=="horizontal"){A=E.data().top+F;D=E.data().left+r}else{A=E.data().top+r;D=E.data().left+F}var B=b.flankingItems+2-w;E.data("width",x);E.data("height",t);E.data("top",A);E.data("left",D);E.data("oldPosition",C);E.data("currentPosition",v);E.data("depth",B);E.data("opacity",z)}function g(r,u){var t=r.data("currentPosition"),s;if(u==false){s=t-1}else{s=t+1}if(Math.abs(s)<=b.flankingItems+1){j.itemsAnimating++;q(r,s);r.css("z-index",r.data().depth);r.animate({left:r.data().left,width:r.data().width,height:r.data().height,top:r.data().top,opacity:r.data().opacity},j.currentSpeed,b.animationEasing,function(){f(r,s,u)})}else{if(Math.abs(s)>b.flankingItems){r.data("oldPosition",t);r.data("currentPosition",s)}}}function f(r,s,t){if(s==0){j.currentCenterItem=r}j.itemsAnimating--;if(j.itemsAnimating==0){j.carouselRotationsLeft-=1;j.currentlyMoving=false;if(j.carouselRotationsLeft>0){o(t,0)}else{j.currentSpeed=b.speed;if(j.currentCenterItem!==null){b.movedToCenter(j.currentCenterItem)}}}}function c(){for(var r=0;r<j.items.length;r++){j.items[r].stop()}}function k(r){if(j.currentlyMoving==true){return false}if(r==true&&j.items[0].data().currentPosition==0){return false}if(r==false&&j.items[j.totalItems-1].data().currentPosition==0){return false}return true}function o(v,r){if(k(v)){j.currentlyMoving=true;j.itemsAnimating=0;j.carouselRotationsLeft+=r;if(b.quickerForFurther==true){if(r>1){j.currentSpeed=b.speed/r}j.currentSpeed=(j.currentSpeed<100)?100:j.currentSpeed}else{j.currentSpeed=b.speed}for(var t=0;t<j.items.length;t++){var s=a(j.items[t]);var u=s.data().currentPosition;if(u>=((b.flankingItems*-1)-1)&&u<=(b.flankingItems)+1){g(s,v)}else{s.data("oldPosition",u);if(v==true){s.data("currentPosition",u+1)}else{s.data("currentPosition",u-1)}}}}}a(this).find(".carousel-images img").live("click",function(){m(true);var s=a(this).data().currentPosition;var r=Math.abs(s);if(s<0){o(true,r)}else{if(s>0){o(false,r)}else{b.clickedCenter(a(this))}}});a(this).find(".carousel-images a").live("click",function(r){var s=(a(this).find("img").width()==a(this).find("img").data().owidth)?true:false;if(b.linkHandling==1||(b.linkHandling==2&&!s)){r.preventDefault();return false}});a(this).find(".carousel-controls .carousel-prev").live("click",function(r){o(true,1);r.preventDefault();return false});a(this).find(".carousel-controls .carousel-next").live("click",function(r){o(false,1);r.preventDefault();return false})})};a.fn.waterwheelCarousel.defaults={startingItem:0,startingItemSeparation:150,itemSeparationFactor:0.5,startingWaveSeparation:30,waveSeparationFactor:0.75,itemDecreaseFactor:0.8,opacityDecreaseFactor:0.5,centerOffset:40,flankingItems:4,speed:300,animationEasing:"linear",quickerForFurther:true,movedToCenter:a.noop,clickedCenter:a.noop,linkHandling:2,autoPlay:0,orientation:"horizontal"}})(jQuery);
