/*!
 * Ext Core Library 3.0
 * http://extjs.com/
 * Copyright(c) 2006-2009, Ext JS, LLC.
 *
 * MIT Licensed - http://extjs.com/license/mit.txt
 */
Ext.ns("Ext.ux");Ext.ux.AnimationBandeau=Ext.extend(Ext.util.Observable,{interval:5,transitionDuration:2,transitionType:"fade",transitionEasing:"easeOut",itemSelector:"img",activeSlide:0,autoPlay:false,showPlayButton:false,pauseOnNavigate:false,wrap:false,freezeOnHover:false,navigationOnHover:false,hideNavigation:true,loopAnimation:0,playingChain:null,animChain:[],images:[],isChain:false,activeChain:null,intervalChain:300,width:null,height:null,classSlide:"ux-carousel-slide",constructor:function(c,d){d=d||{};Ext.apply(this,d);Ext.ux.AnimationBandeau.superclass.constructor.call(this,d);this.addEvents("beforeprev","prev","beforenext","next","change","play","pause","freeze","unfreeze","afterfade","chainEnd","beforefade","firstSlide");this.el=Ext.get(c);this.slides=this.els=[];if(this.autoPlay||this.showPlayButton){this.wrap=true}if(this.autoPlay&&typeof d.showPlayButton==="undefined"){this.showPlayButton=true}this.initMarkup();this.initEvents();if(this.AnimationBandeauSize>0){this.refresh()}},initMarkup:function(){var f=Ext.DomHelper;this.AnimationBandeauSize=0;if(this.images.length>0){for(x=0;x<this.images.length;x++){var d=f.append(this.el,{tag:"img",src:this.images[x]},true)}}var e=this.el.select(this.itemSelector);this.els.container=f.append(this.el,{cls:"ux-carousel-container"},true);this.els.container.setStyle("background-repeat","no-repeat");this.els.container.setStyle("background-size","100%");this.els.slidesWrap=f.append(this.els.container,{cls:"ux-carousel-slides-wrap"},true);this.els.navigation=f.append(this.els.container,{cls:"ux-carousel-nav"},true).hide();this.els.caption=f.append(this.els.navigation,{tag:"h2",cls:"ux-carousel-caption"},true);this.els.navNext=f.append(this.els.navigation,{tag:"a",href:"#",cls:"ux-carousel-nav-next"},true);if(this.showPlayButton){this.els.navPlay=f.append(this.els.navigation,{tag:"a",href:"#",cls:"ux-carousel-nav-play"},true)}this.els.navPrev=f.append(this.els.navigation,{tag:"a",href:"#",cls:"ux-carousel-nav-prev"},true);this.slideWidth=this.width||this.el.getWidth(true);this.slideHeight=this.height||this.el.getHeight(true);this.els.container.setStyle({width:this.slideWidth+"px",height:this.slideHeight+"px"});this.els.caption.setWidth((this.slideWidth-(this.els.navNext.getWidth()*2)-(this.showPlayButton?this.els.navPlay.getWidth():0)-20)+"px");e.appendTo(this.els.slidesWrap).each(function(a){a=a.wrap({cls:this.classSlide});this.slides.push(a);a.setWidth(this.slideWidth+"px").setHeight(this.slideHeight+"px")},this);this.AnimationBandeauSize=this.slides.length;if(this.navigationOnHover){this.els.navigation.setStyle("top",(-1*this.els.navigation.getHeight())+"px")}this.el.clip();this.ChainSize=this.animChain.length},initEvents:function(){this.els.navPrev.on("click",function(d){d.preventDefault();var c=d.getTarget();c.blur();if(Ext.fly(c).hasClass("ux-carousel-nav-disabled")){return}this.prev()},this);this.els.navNext.on("click",function(d){d.preventDefault();var c=d.getTarget();c.blur();if(Ext.fly(c).hasClass("ux-carousel-nav-disabled")){return}this.next()},this);if(this.showPlayButton){this.els.navPlay.on("click",function(b){b.preventDefault();b.getTarget().blur();if(this.playing){this.pause()}else{this.play()}},this)}if(this.freezeOnHover){this.els.container.on("mouseenter",function(){if(this.playing){this.fireEvent("freeze",this.slides[this.activeSlide]);Ext.TaskMgr.stop(this.playTask)}},this);this.els.container.on("mouseleave",function(){if(this.playing){this.fireEvent("unfreeze",this.slides[this.activeSlide]);Ext.TaskMgr.start(this.playTask)}},this,{buffer:(this.interval/2)*1000})}if(this.navigationOnHover){this.els.container.on("mouseenter",function(){if(!this.navigationShown){this.navigationShown=true;this.els.navigation.stopFx(false).shift({y:this.els.container.getY(),duration:this.transitionDuration})}},this);this.els.container.on("mouseleave",function(){if(this.navigationShown){this.navigationShown=false;this.els.navigation.stopFx(false).shift({y:this.els.navigation.getHeight()-this.els.container.getY(),duration:this.transitionDuration})}},this)}if(this.interval&&this.autoPlay){this.play()}},chainNext:function(){if(!this.playingChain){this.playingChainTask=this.playingChainTask||{run:function(){this.playingChain=true;if(this.activeChain<=this.ChainSize-1){if(!this.animChain[this.activeChain]){return}this.animChain[this.activeChain].next();this.activeChain++}else{this.activeChain=0;this.stopChainNext();this.fireEvent("chainEnd")}this.fireEvent("chainNext")},interval:this.intervalChain,scope:this};this.playingChainTaskBuffer=this.playingChainTaskBuffer||new Ext.util.DelayedTask(function(){Ext.TaskMgr.start(this.playingChainTask)},this);this.playingChainTaskBuffer.delay(this.intervalChain);this.playingChain=true}return this},stopChainNext:function(){if(this.playingChain){Ext.TaskMgr.stop(this.playingChainTask);this.playingChain=false;this.animChain.sort(function(){return 0.5-Math.random()});this.fireEvent("stopChainNext")}return this},prev:function(){if(this.fireEvent("beforeprev")===false){return}if(this.pauseOnNavigate){this.pause()}this.setSlide(this.activeSlide-1);this.fireEvent("prev",this.activeSlide);return this},next:function(){if(this.fireEvent("beforenext")===false){return}if(this.pauseOnNavigate){this.pause()}this.setSlide(this.activeSlide+1);this.fireEvent("next",this.activeSlide);return this},play:function(){if(!this.playing){this.playTask=this.playTask||{run:function(){this.fireEvent("play");this.playing=true;this.setSlide(this.activeSlide+1)},interval:this.interval*1000,scope:this};this.playTaskBuffer=this.playTaskBuffer||new Ext.util.DelayedTask(function(){Ext.TaskMgr.start(this.playTask)},this);this.playTaskBuffer.delay(this.interval*1000);this.playing=true;if(this.showPlayButton){this.els.navPlay.addClass("ux-carousel-playing")}this.fireEvent("play")}return this},pause:function(){if(this.playing){Ext.TaskMgr.stop(this.playTask);this.playTaskBuffer.cancel();this.playing=false;if(this.showPlayButton){this.els.navPlay.removeClass("ux-carousel-playing")}this.fireEvent("pause")}return this},clear:function(){this.els.slidesWrap.update("");this.slides=[];this.AnimationBandeauSize=0;this.pause();return this},add:function(d,e){var f=Ext.fly(d).appendTo(this.els.slidesWrap).wrap({cls:this.classSlide});f.setWidth(this.slideWidth+"px").setHeight(this.slideHeight+"px");this.slides.push(f);if(e){this.refresh()}return this},refresh:function(){this.AnimationBandeauSize=this.slides.length;this.els.slidesWrap.setWidth((this.slideWidth*this.AnimationBandeauSize)+"px");if(this.AnimationBandeauSize>0){if(!this.hideNavigation){this.els.navigation.show()}this.activeSlide=0;this.activeChain=0;this.setSlide(0,true)}return this},setSlide:function(e,f){if(e<0){e=this.AnimationBandeauSize-1}else{if(e>this.AnimationBandeauSize-1){e=0}}if(!this.slides[e]){return}this.updateBG(e);this.els.caption.update(this.slides[e].child(":first-child",true).title||"");var g=e*this.slideWidth;if(!f){switch(this.transitionType){case"fade":this.slides[e].setOpacity(0);this.fireEvent("beforefade");this.chainNext();this.slides[this.activeSlide].stopFx(false).fadeOut({duration:this.transitionDuration/2,callback:function(){if(this.slides[this.activeSlide]){this.els.slidesWrap.setStyle("left",(-1*g)+"px");this.slides[this.activeSlide].setOpacity(1);this.slides[e].fadeIn({duration:this.transitionDuration/2});this.fireEvent("afterfade")}},scope:this});break;default:var h=(-1*g)+this.els.container.getX();this.els.slidesWrap.stopFx(false);this.els.slidesWrap.shift({duration:this.transitionDuration,x:h,easing:this.transitionEasing});break}}else{this.els.slidesWrap.setStyle("left","0");this.fireEvent("firstSlide")}this.activeSlide=e;this.updateNav();this.fireEvent("change",this.slides[e],e)},updateNav:function(){this.els.navPrev.removeClass("ux-carousel-nav-disabled");this.els.navNext.removeClass("ux-carousel-nav-disabled");if(!this.wrap){if(this.activeSlide===0){this.els.navPrev.addClass("ux-carousel-nav-disabled")}if(this.activeSlide===this.AnimationBandeauSize-1){this.els.navNext.addClass("ux-carousel-nav-disabled")}}},updateBG:function(d){var c=this.slides[d].dom.childNodes[0].src;if(c){this.els.container.setStyle("background-image","url("+c+")")}else{var e=this.slides[d].child(":first-child",true);var f=Ext.fly(e).dom.childNodes[0].src;if(f){this.els.container.setStyle("background-image","url("+f+")")}}}});
