/**
 * MooCarouselGallery - Image carousel slide gallery
 * 
 * @version         0.3.2
 * @author          Yasuhiro Yoshida  <yoshida [at] prezam.co.jp>
 * @license         MIT-style license
 * @copyright       Author
 * @dependencies    MooTools 1.3 Core, More: Assets
 *
 */
var MooCarouselGallery=new Class({Implements:[Events,Options],options:{onClickTo:$empty,bgColor:"#000",width:-1,height:-1,duration:60000,cursor:"pointer"},initialize:function(c,b){this.MooCarouselGallery=$(c);this.setOptions(b);this.direction=-1;this.duration=this.options.duration;this.f_mouse_in_area=true;this.MooCarouselGallery.addClass("MooCarouselGallery").setStyles({overflow:"hidden","background-color":this.options.bgColor,position:"relative",width:this.options.width+"px",height:this.options.height+"px",cursor:this.options.cursor});this.gallery_datas={images:[]};var d=this.MooCarouselGallery.getChildren();if(!d.length){return}$$(d).each(function(f){var e=$H(f.getElement("img").getProperties("src","title","alt"));if(f.get("tag")=="a"){e.combine(f.getProperties("href","rel","target"))}this.gallery_datas.images.push(e.getClean());f.dispose()},this);this.loader=new Element("div").setStyles({background:"url(ajax-loader.gif) no-repeat center center",width:"100%",height:"100%"}).inject(this.MooCarouselGallery);var a=[];this.gallery_datas.images.each(function(e){a.push(e.src)});this.preload(a);this.MooCarouselGallery.addEvent("mousemove",this.mouse_move.bind(this));this.MooCarouselGallery.addEvent("mouseenter",this.mouse_enter.bind(this));this.MooCarouselGallery.addEvent("mouseleave",this.mouse_leave.bind(this));this.MooCarouselGallery.addEvent("touchstart",this.touch_start.bind(this));this.MooCarouselGallery.addEvent("touchmove",this.touch_move.bind(this));this.MooCarouselGallery.addEvent("touchend",this.touch_end.bind(this))},preload:function(a){this.LoadedImages=new Asset.images(a,{onProgress:this.progress.bind(this),onComplete:this.loaded.bind(this),onError:function(){}})},progress:function(a,b){},loaded:function(){this.allImageWidth=0;this.imageWidths=[];this.LoadedImages.each(function(e){this.allImageWidth+=e.width;this.imageWidths.push(e.width)},this);this.loader.dispose();var d=new Element("div").setStyles({"margine-left":0,position:"absolute",width:this.allImageWidth*3+"px",height:this.MooCarouselGallery.getSize().y+"px"}).inject(this.MooCarouselGallery);this.Carousel=d;var c=this.LoadedImages.length-1;var a=0;this.LoadedImages.each(function(e){var f=e.clone();f.addEvents({click:this.linkTo.bind(this,a),dblclick:this.linkTo.bind(this,a)});f.inject(d);a++},this);a=0;this.LoadedImages.each(function(e){e.addEvents({click:this.linkTo.bind(this,a),dblclick:this.linkTo.bind(this,a)});e.inject(d);a++},this);a=0;this.LoadedImages.each(function(e){var f=e.clone();f.addEvents({click:this.linkTo.bind(this,a),dblclick:this.linkTo.bind(this,a)});f.inject(d);a++},this);var b=new Fx.Morph(this.Carousel,{fps:60,duration:this.options.duration,transition:Fx.Transitions.linear,link:"cancel",onStart:function(){},onComplete:this.restart.bind(this)});this.fx=b;this.fx.stop();this.Carousel.setStyles({"margin-left":-this.allImageWidth+"px"});this.fx.start({"margin-left":-this.allImageWidth*2+"px"})},restart:function(){this.fx.stop();this.fx.options.duration=this.duration;this.Carousel.setStyles({"margin-left":-this.allImageWidth+"px"});if(this.direction==-1){this.fx.start({"margin-left":-this.allImageWidth*2+"px"})}else{if(this.direction==1){this.fx.start({"margin-left":0+"px"})}}},linkTo:function(a){var b=this.gallery_datas.images[a];this.fireEvent("clickTo",b)},mouse_move:function(e){e.stop();this.event=e;var f=0;var a=this.options.width/5;var c=a*4;var b=e.client.x-this.MooCarouselGallery.getPosition().x;if(b<a){var g=Math.round(10-b*(10-1)/a);this.changeMotion(1,this.options.duration/g)}else{if(b<c){this.changeMotion(-1,this.options.duration)}else{var g=Math.round(1+(b-c)*(10-1)/a);this.changeMotion(-1,this.options.duration/g)}}},mouse_enter:function(a){a.stop();this.event=a;this.f_mouse_in_area=true},mouse_leave:function(a){a.stop();this.event=a;this.f_mouse_in_area=false;this.changeMotion(-1,this.options.duration)},touch_start:function(a){},touch_move:function(e){e.stop();this.event=e;var f=0;var a=this.options.width/5;var c=a*4;var b=e.touches[0].clientX-this.MooCarouselGallery.getPosition().x;if(b<a){var g=Math.round(10-b*(10-1)/a);this.changeMotion(1,this.options.duration/g)}else{if(b<c){this.changeMotion(-1,this.options.duration)}else{var g=Math.round(1+(b-c)*(10-1)/a);this.changeMotion(-1,this.options.duration/g)}}},touch_end:function(a){},changeMotion:function(b,a){if(this.direction!=b||this.duration!=a){this.direction=b;this.duration=a;this.fx.options.duration=a;this.fx.stop();var f=this.Carousel.getPosition().x;if(b==-1){var e=Math.round((this.allImageWidth*2+f)*a/this.allImageWidth);if(e<0){e=0}this.fx.options.duration=e;this.fx.start({"margin-left":-this.allImageWidth*2+"px"})}else{if(this.direction==1){var e=Math.round(-f*a/this.allImageWidth);if(e<0){e=0}this.fx.options.duration=e;this.fx.start({"margin-left":0+"px"})}}}}});
