vanilla.namespace("vanilla.toolkit.slide");vanilla.require("vanilla.toolkit.dragdrop");vanilla.require("vanilla.animation");vanilla.Abstract("vanilla.toolkit.slide","Slide");vanilla.toolkit.slide.Slide.Prototype({onComplete:null,onLoad:null,_lazyLoading:null,play:vanilla.lang.Class.AbstractFunction,stop:vanilla.lang.Class.AbstractFunction,isPlaying:vanilla.lang.Class.AbstractFunction,isLoaded:vanilla.lang.Class.AbstractFunction,_load:vanilla.lang.Class.AbstractFunction,Slide:function(b,a){this.onComplete=new vanilla.event.CustomEvent(this);this.onLoad=new vanilla.event.CustomEvent(this);this.container=a;this.parent=b;this.width=this.parent.width;this.height=this.parent.height;this.container.style.overflow="hidden";this.container.style.width=this.width+"px";this.container.style.height=this.height+"px";this.container.style.position="absolute";this.container.style.top=0;this.container.style.left=0},setLazyLoading:function(a,b){this._lazyLoading={url:a,parameters:b}},init:function(){if(!this._lazyLoading){this._init()}else{this.hide();var a=new vanilla.net.Request("POST",true);a.onFailure.subscribe(function(b){throw new IllegalStateException("Can't load the slide")},this);a.onSuccess.subscribe(function(c){this.container.innerHTML=c.getResponseText();var d="div-temp-"+(new Date()).getTime()+"-"+Math.round(Math.random()*100);this.container.innerHTML+='<div id="'+d+'" style="display:none"></div>';var b=new SimpleThread(function(){var e=EL(d);if(!e){return Thread.Continue}e.parentNode.removeChild(e);this._init();return Thread.Stop}.bind(this),10);b.start()},this);a.send(this._lazyLoading.url,this._lazyLoading.parameters)}},_init:function(){this.show();this.contentContainer=$(this.container).children("div.slide-contentContainer").get(0);if(!this.contentContainer){throw new IllegalStateException("This slide has no content container")}$(this.contentContainer).width(this.width).height(this.height).css("overflow","hidden");this.content=$(this.contentContainer).children("div.slide-content").get(0);if(!this.content){throw new IllegalStateException("This slide has no content")}this._load();this.hide()},hide:function(){if(this.isVisible()){this.scrollTo(0,0);$(this.container).hide()}},show:function(){if(!this.isVisible()){$(this.container).show();this.scrollTo(0,0)}},isVisible:function(){return $(this.container).is(":visible")},scrollTo:function(a,b){if(this.contentContainer){$(this.contentContainer).scrollLeft(a).scrollTop(b)}},getScroll:function(){var a=$(this.content.container);return{x:a.scrollLeft(),y:a.scrollTop()}}});vanilla.Class("vanilla.toolkit.slide","RichTextSlide");vanilla.toolkit.slide.RichTextSlide.Extends(vanilla.toolkit.slide.Slide);vanilla.toolkit.slide.RichTextSlide.Prototype({loaded:false,tempo:null,properties:{time:3},RichTextSlide:function(c,a,b){this.Slide(c,a);vanilla.extend(this.properties,b)},_load:function(){var a=Arr(this.container.getElementsByTagName("img"));if(a.length){var b=[];a.forEach(function(c){var d=new Image();d.onload=function(){b.remove(d);if(b.isEmpty()){this.loaded=true;this.onLoad.notify()}}.bind(this);b.push(d);d.src=c.src}.bind(this))}else{this.loaded=true;this.onLoad.notify()}},play:function(){this.show();this.tempo=new SimpleThread(function(){this.onComplete.notify()}.bind(this),this.properties.time*1000);this.tempo.start()},stop:function(){if(this.tempo){this.tempo.stop()}},isPlaying:function(){return(this.tempo&&this.tempo.isAlive())},isLoaded:function(){return this.loaded}});vanilla.Class("vanilla.toolkit.slide","ImageSlide");vanilla.toolkit.slide.ImageSlide.Extends(vanilla.toolkit.slide.Slide);vanilla.toolkit.slide.ImageSlide.Prototype({animation:null,loaded:false,playing:false,properties:{fixedImageTime:3,slidingEnabled:true,slidingSpeed:30,slidingMinTime:2,slidingMinGap:10,timeBeforeSliding:0,timeAfterSliding:0,slidingCompleteAt:0.9},ImageSlide:function(c,a,b){this.Slide(c,a);vanilla.extend(this.properties,b)},_load:function(){var b=[];var a=function(){if(b.isEmpty()){this.loaded=true;this.onLoad.notify()}}.bind(this);$(this.container).find("img").each(function(e,c){var d=new Image();d.onload=function(){b.remove(d);a()};b.push(d);d.src=c.src}.bind(this));a()},play:function(){$(this.contentContainer).scrollTop(0);this.show();var a=this.contentContainer.scrollHeight-this.height;var b=this.properties;this.playing=true;if(b.slidingEnabled&&a>b.slidingMinGap){$(this.contentContainer).wait(b.timeBeforeSliding*1000).animate({scrollTop:a},{duration:Math.max(a*1/b.slidingSpeed,b.slidingMinTime)*1000,easing:"linear"}).wait(b.timeAfterSliding*1000)}else{$(this.contentContainer).wait(b.fixedImageTime*1000)}$(this.contentContainer).queue(function(){this.stop();this.onComplete.notify()}.bind(this))},stop:function(a){$(this.contentContainer).stop(true);this.playing=false},isPlaying:function(){return this.playing},isLoaded:function(){return this.loaded}});vanilla.Class("vanilla.toolkit.slide","Image360Slide");vanilla.toolkit.slide.Image360Slide.Extends(vanilla.toolkit.slide.Slide);vanilla.toolkit.slide.Image360Slide.Prototype({animation:null,wait:null,loaded:false,direction:1,Image360Slide:function(b,a){this.Slide(b,a)},_load:function(){this.img=this.content.getElementsByTagName("img")[0];if(!this.img){throw new IllegalStateException("No image for this 360 slide")}var a=new Image();a.onload=function(){this.imgBefore=this.img.cloneNode(true);this.content.insertBefore(this.imgBefore,this.img);this.imgAfter=this.img.cloneNode(true);vanilla.html.DOM.insertAfter(this.content,this.imgAfter,this.img);this.content.style.width=(this.img.width*3)+"px";this.content.style.cursor="move";this.img.style.cssFloat="left";this.imgBefore.style.cssFloat="left";this.imgAfter.style.cssFloat="left";this.rotateTo(0);this.dragdrop=new vanilla.toolkit.dragdrop.Draggable(this.content);this.dragdrop.updatePosition=false;this.dragdrop.onStart.subscribe(this._onDragStart,this);this.dragdrop.onEnd.subscribe(this._onDragEnd,this);this.dragdrop.onDrag.subscribe(this._onDrag,this);this.loaded=true;this.onLoad.notify()}.bind(this);a.src=this.img.src},play:function(){this.show();this.animation=new vanilla.animation.Animation(0,this.img.width*this.direction);this.animation.onNextValue.subscribe(function(b,a){this.rotateTo(b+a)}.bind(this,this.getScroll().x));this.animation.onComplete.subscribe(function(){this.onComplete.notify()}.bind(this));this.animation.duration=Math.max(this.img.width*0.03,5);this.animation.start()},stop:function(){if(this.animation){this.animation.stop()}},isPlaying:function(){return(this.animation&&this.animation.isAlive())},isLoaded:function(){return this.loaded},rotate:function(a){this.rotateTo(a+this.getScroll().x)},rotateTo:function(a){a%=this.img.width;this.scrollTo(this.img.width+a,0)},_onDrag:function(a,b,c){this.previousTime=this.lastTime;this.previousPointer=this.lastPointer;this.lastTime=new Date();this.lastPointer=c;this.rotateTo(this.startRotate-(c.x-this.startX))},_onDragStart:function(a,b,c){this.startX=c.x;this.startRotate=this.getScroll().x;this.previousTime=null;this.previousPointer=null;this.parent.pause();this.stop()},_onDragEnd:function(){var c=0;if(this.lastTime&&this.previousTime){var e=this.lastTime.getTime()-this.previousTime.getTime();c=e>0?(this.lastPointer.x-this.previousPointer.x)/e:0}this.direction=(c<=0?1:-1);var a=function(){if(this.parent.isPausing()){this.animation=null;this.parent.play()}}.bind(this);var d=new SimpleThread(a,1000);if(Math.abs(c)>0.2){var b=0;this.animation=new vanilla.animation.Animation(0,1);this.animation.onNextValue.subscribe(function(g){var f=c*(1-g);this.rotate((g-b)*300*-f);b=g}.bind(this));this.animation.onComplete.subscribe(a);this.animation.duration=1}else{this.animation=d}this.animation.start()}});vanilla.Abstract("vanilla.toolkit.slide","Transition");vanilla.toolkit.slide.Transition.Prototype({onComplete:null,isRunning:vanilla.lang.Class.AbstractFunction,run:vanilla.lang.Class.AbstractFunction,Transition:function(){this.onComplete=new vanilla.event.CustomEvent(this)}});vanilla.Class("vanilla.toolkit.slide","FadingTransition");vanilla.toolkit.slide.FadingTransition.Extends(vanilla.toolkit.slide.Transition);vanilla.toolkit.slide.FadingTransition.Prototype({lastAnimatedSlide:null,duration:1000,FadingTransition:function(a){this.Transition();if(a){this.duration=a}},run:function(b,d,c,a){this.animated=true;this.lastAnimatedSlide=c;$(d.container).css({opacity:1,zIndex:0});$(c.container).css({opacity:0,zIndex:1});c.show();$(c.container).animate({opacity:1},{duration:this.duration,easing:"linear",complete:function(){if(this.animated){this.animated=false;d.hide();$(c.container).add(d.container).css({opacity:1,filter:""});this.onComplete.notify()}}.bind(this)})},isRunning:function(){return this.animated},gotoEnd:function(){if(this.animated){$(this.lastAnimatedSlide.container).stop(false,true)}}});vanilla.Class("vanilla.toolkit.slide","SlidingTransition");vanilla.toolkit.slide.SlidingTransition.Extends(vanilla.toolkit.slide.Transition);vanilla.toolkit.slide.SlidingTransition.Prototype({animation:null,SlidingTransition:function(){this.Transition()},run:function(c,e,d,b){var a=c.content.style.width;c.content.style.width=(e.width+d.width)+"px";if(b){e.container.style.position="relative";e.container.style.cssFloat="right";d.container.style.position="relative";d.container.style.cssFloat="left";c.container.scrollLeft=d.width}else{e.container.style.position="relative";e.container.style.cssFloat="left";d.container.style.position="relative";d.container.style.cssFloat="right"}d.show();this.animation=new vanilla.animation.Animation(b?d.width:0,b?0:e.width);this.animation.onNextValue.subscribe(function(f){c.container.scrollLeft=f}.bind(this));this.animation.onComplete.subscribe(function(){e.container.style.position="absolute";e.container.style.cssFloat="none";d.container.style.position="absolute";d.container.style.cssFloat="none";c.container.scrollLeft=0;c.content.style.width=a;e.hide();this.onComplete.notify()}.bind(this));this.animation.start()},isRunning:function(){return(this.animation&&this.animation.isAlive())}});vanilla.Class("vanilla.toolkit.slide","UncoveringTransition");vanilla.toolkit.slide.UncoveringTransition.Extends(vanilla.toolkit.slide.Transition);vanilla.toolkit.slide.UncoveringTransition.Prototype({animation:null,UncoveringTransition:function(){this.Transition()},run:function(b,d,c,a){if(a){c.container.style.left=-c.width+"px";d.container.style.zIndex=0;c.container.style.zIndex=1}else{d.container.style.zIndex=1;c.container.style.zIndex=0}c.show();this.animation=new vanilla.animation.Animation(a?-c.width:0,a?0:-d.width);this.animation.duration=0.5;this.animation.onNextValue.subscribe(function(e){if(a){c.container.style.left=e+"px"}else{d.container.style.left=e+"px"}}.bind(this));this.animation.onComplete.subscribe(function(){d.hide();c.container.style.left="0px";c.container.style.zIndex=1;d.container.style.left="0px";d.container.style.zIndex=1;this.onComplete.notify()}.bind(this));this.animation.start()},isRunning:function(){return(this.animation&&this.animation.isAlive())}});vanilla.Class("vanilla.toolkit.slide","Show");vanilla.toolkit.slide.Show.Prototype({slides:null,defaultTransition:null,currentTransition:null,transitionsBySlide:null,playing:false,pausing:false,onNextSlide:null,currentSlideIndex:-1,nextSlideIndex:-1,Show:function(a,b){this.slides=[];this.transitionsBySlide=[];a=$(a);this.container=a.get(0);a.css("overflow","hidden");this.width=a.innerWidth();this.height=a.innerHeight();a.width(this.width).height(this.height);this.onNextSlide=new vanilla.event.CustomEvent(this);this.content=a.children("div.slideshow-content").get(0);if(!this.content){throw new IllegalStateException("This slide show has no content")}$(this.content).width(this.width).height(this.height).css("position","absolute").children("div.slide").each(function(d,g){var h=vanilla.html.DOM.getClassNames(g);var f=null;for(var e=0;e<h.length;e++){if(h[e].startsWith("type-")){f=h[e].substr("type-".length);break}}if(!f){return}var c=b(f,this,g,d);if(!c){throw new IllegalStateException("No slide found for type : "+f)}c.onComplete.subscribe(this._onSlideComplete,this,true);c.onLoad.subscribe(this._onSlideLoaded,this,true);this.slides.push(c);c.init()}.bind(this));if(this.slides.length<=0){throw new IllegalStateException("This slideshow contains no slide")}},setTransition:function(a){if(this.defaultTransition){this.defaultTransition.onComplete.unsubscribe(this._onTransitionComplete,this)}this.defaultTransition=a;this.defaultTransition.onComplete.subscribe(this._onTransitionComplete,this,true)},setTransitionForSlide:function(a,c){var b=this.findTransitionContainerBySlide(a);if(b){b.transition.onComplete.unsubscribe(this._onTransitionComplete,this);this.transitionsBySlide.remove(b)}this.transitionsBySlide.push({transition:c,slide:a});c.onComplete.subscribe(this._onTransitionComplete,this,true)},findTransitionContainerBySlide:function(a){for(var c=0;c<this.transitionsBySlide.length;c++){var b=this.transitionsBySlide[c];if(b.slide==a){return b}}return null},findTransitionBySlide:function(a){var b=this.findTransitionContainerBySlide(a);return(b?b.transition:null)},init:function(a){this.goToSlide(a)},play:function(){if(this.playing&&!this.pausing){return}this.playing=true;this.pausing=false;if(this.currentSlideIndex<0||this.slides[this.currentSlideIndex].isPlaying()){return}this.slides[this.currentSlideIndex].play()},pause:function(){if(this.playing&&!this.pausing){this.pausing=true;this.slides[this.currentSlideIndex].stop()}},stop:function(){if(this.currentSlideIndex>=0){this.slides[this.currentSlideIndex].stop()}this.pausing=false;this.playing=false},next:function(){var a=(this.currentSlideIndex+1)%this.slides.length;this.goToSlide(a)},previous:function(){var a=this.currentSlideIndex-1;if(a<0){a=this.slides.length-1}this.goToSlide(a)},isPlaying:function(){return this.playing},isPausing:function(){return this.pausing},goToSlide:function(b){if(b<0||b>=this.slides.length){throw new Exception("Slide index out of bounds : 0 > "+b+" >= "+this.slides.length)}if(this.currentSlideIndex==b){return}if(this.nextSlideIndex>-1&&this.currentTransition&&this.currentTransition.isRunning()){return}this.nextSlideIndex=b;this.waitFor=null;var a=this.slides[b];if(a.isLoaded()){this._playNextSlide()}else{this.waitFor=a}},_playNextSlide:function(){if(this.playing){this.slides[this.nextSlideIndex].play()}else{this.slides[this.nextSlideIndex].show()}if(this.currentSlideIndex>-1){var a=this.nextSlideIndex<this.currentSlideIndex;var b=this.slides[this.nextSlideIndex];var c=this.slides[this.currentSlideIndex];var d=a?this.findTransitionBySlide(b):this.findTransitionBySlide(c);if(!d){d=this.defaultTransition}if(d){this.currentTransition=d;d.run(this,c,b,a);return}}this._nextSlide()},_nextSlide:function(){if(this.currentSlideIndex>-1&&this.currentSlideIndex!=this.nextSlideIndex){this.slides[this.currentSlideIndex].stop();this.slides[this.currentSlideIndex].hide()}this.currentSlideIndex=this.nextSlideIndex;this.nextSlideIndex=-1;this.onNextSlide.notify(this.slides[this.currentSlideIndex],this.currentSlideIndex)},_onSlideLoaded:function(a){if(a.owner==this.waitFor){this.waitFor=null;this._playNextSlide()}},_onSlideComplete:function(a){if(this.playing){this.next()}},_onTransitionComplete:function(a){this.currentTransition=null;this._nextSlide()}});