Ext.ns('Ext.ux');var id;Ext.ux.Carousel=Ext.extend(Ext.util.Observable,{interval:3,transitionDuration:1,transitionType:'carousel',transitionEasing:'easeOut',itemSelector:'img',activeSlide:0,autoPlay:false,showPlayButton:false,pauseOnNavigate:false,wrap:false,freezeOnHover:false,navigationOnHover:false,hideNavigation:false,showExternalThumbnails:false,externalThumbnailsBoxId:"ext-thumb-box-0",thumbnailItemSelector:'img',paddingOfExternalThumbnailBox:'0px',makeNavigationLateral:false,paddingOfGalleryBox:'0px',constructor:function(elId,config){config=config||{};Ext.apply(this,config);Ext.ux.Carousel.superclass.constructor.call(this,config);this.addEvents('beforeprev','prev','beforenext','next','change','play','pause','freeze','unfreeze');this.el=Ext.get(elId);id=Ext.get(elId);this.slides=this.els=[];if(this.autoPlay||this.showPlayButton){this.wrap=true;};if(this.autoPlay&&config.showPlayButton===undefined){this.showPlayButton=true;}
this.initMarkup();this.initEvents();if(this.carouselSize>0){this.refresh();}},initMarkup:function(){var dh=Ext.DomHelper;this.carouselSize=0;if(this.paddingOfGalleryBox!='0px'){this.el.applyStyles({padding:this.paddingOfGalleryBox});}
if(!this.makeNavigationLateral){this.els.container=dh.append(this.el,{cls:'ux-carousel-container'},true);this.els.bottombox=dh.append(this.els.container,{cls:'ux-carousel-box-bottom'},true);this.els.slidesWrap=dh.append(this.els.container,{cls:'ux-carousel-slides-wrap'},true);this.els.navigationWrapper=dh.append(this.el,{cls:'navigationWrapper'},true);var containerWidth=this.els.bottombox.getBox().width;this.els.navigationWrapper.alignTo(this.els.bottombox,'bl-bl?');this.els.navigationWrapper.setWidth(containerWidth+'px');this.els.navigation=dh.append(this.els.navigationWrapper,{cls:'ux-carousel-nav'},true);if(this.hideNavigation){this.els.navigation.hide();}
this.els.caption=dh.append(this.els.navigation,{tag:'h2',cls:'ux-carousel-caption'},true);this.els.navNext=dh.append(this.els.navigation,{tag:'a',href:'#',cls:'ux-carousel-nav-next'},true);if(this.showPlayButton){this.els.navPlay=dh.append(this.els.navigation,{tag:'a',href:'#',cls:'ux-carousel-nav-play'},true)}
this.els.navPrev=dh.append(this.els.navigation,{tag:'a',href:'#',cls:'ux-carousel-nav-prev'},true);}
else{this.els.leftLateralNav=dh.insertBefore(this.el,{cls:'ux-carousel-leftLateralNav'},true);this.els.container=dh.append(this.el,{cls:'ux-carousel-container'},true);this.els.rightLateralNav=dh.insertAfter(this.el,{cls:'ux-carousel-rightLateralNav'},true);this.els.slidesWrap=dh.append(this.els.container,{cls:'ux-carousel-slides-wrap'},true);this.els.navNext=dh.append(this.els.rightLateralNav,{tag:'a',href:'#',cls:'ux-carousel-nav-next2'},true);this.els.navPrev=dh.append(this.els.leftLateralNav,{tag:'a',href:'#',cls:'ux-carousel-nav-prev2'},true);}
this.slideWidth=this.el.getWidth(true);if(this.els.navigationWrapper){this.slideHeight=this.el.getHeight(true)-this.els.navigationWrapper.getHeight(true);}else{this.slideHeight=this.el.getHeight(true);}
if(this.els.navigationWrapper){this.els.navigationWrapper.setStyle('top','0');}
this.containerFrameWidth=this.els.container.getFrameWidth('lr');this.els.container.setStyle({width:this.slideWidth-this.containerFrameWidth+'px',height:this.slideHeight+'px'});if(this.els.leftLateralNav&&this.els.rightLateralNav){this.els.leftLateralNav.setStyle({height:this.slideHeight+'px',padding:'14px 0px 0px 0px'});this.els.rightLateralNav.setStyle({height:this.slideHeight+'px',padding:'14px 0px 0px 0px'});var buttonTopMargin=5;if(this.els.navNext){this.els.navNext.setStyle({margin:buttonTopMargin+'px 0px 0px 0px'});}
if(this.els.navPrev){this.els.navPrev.setStyle({margin:buttonTopMargin+'px 0px 0px 0px'});}}
if(this.els.caption){this.els.caption.setWidth((this.slideWidth-(this.els.navNext.getWidth()*2)-(this.showPlayButton?this.els.navPlay.getWidth():0)-20)+'px')}
this.el.select(this.itemSelector).appendTo(this.els.slidesWrap).each(function(item){item=item.wrap({cls:'ux-carousel-slide'});this.slides.push(item);item.setWidth(this.slideWidth+'px').setHeight(this.slideHeight+'px');},this);if(this.showExternalThumbnails){var thumbnailBox=Ext.get(this.externalThumbnailsBoxId);thumbnailBox.select(this.thumbnailItemSelector).each(function(item,allItems,index){item.on('click',function(ev){this.activeSlide=0;if(this.pauseOnNavigate){this.pause();}
this.setSlide(this.activeSlide+index);},this);},this);}
this.carouselSize=this.slides.length;if(this.navigationOnHover&&this.els.navigation){this.els.navigation.setStyle('top',(-1*this.els.navigation.getHeight())+'px');}
this.el.clip();},initEvents:function(){this.els.navPrev.on('click',function(ev){ev.preventDefault();var target=ev.getTarget();target.blur();if(Ext.fly(target).hasClass('ux-carousel-nav-disabled'))return;this.prev();},this);this.els.navNext.on('click',function(ev){ev.preventDefault();var target=ev.getTarget();target.blur();if(Ext.fly(target).hasClass('ux-carousel-nav-disabled'))return;this.next();},this);if(this.showPlayButton){this.els.navPlay.on('click',function(ev){ev.preventDefault();ev.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.els.navigation){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.els.navigation){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();};},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.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;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;this.els.navPlay.removeClass('ux-carousel-playing');this.fireEvent('pause');}
return this;},clear:function(){this.els.slidesWrap.update('');this.slides=[];this.carouselSize=0;this.pause();return this;},add:function(el,refresh){var item=Ext.fly(el).appendTo(this.els.slidesWrap).wrap({cls:'ux-carousel-slide'});item.setWidth(this.slideWidth+'px').setHeight(this.slideHeight+'px');this.slides.push(item);if(refresh){this.refresh();}
return this;},refresh:function(){this.carouselSize=this.slides.length;this.els.slidesWrap.setWidth((this.slideWidth*this.carouselSize)+'px');if(this.carouselSize>0){if(!this.hideNavigation&&this.els.navigation)this.els.navigation.show();this.activeSlide=0;this.setSlide(0,true);}
return this;},setSlide:function(index,initial){if(!this.wrap&&!this.slides[index]){return;}
else if(this.wrap){if(index<0){index=this.carouselSize-1;}
else if(index>this.carouselSize-1){index=0;}}
if(!this.slides[index]){return;}
if(this.els.caption){this.els.caption.update(this.slides[index].child(':first-child',true).title||'');}
var offset=index*this.slideWidth;if(!initial){switch(this.transitionType){case'fade':this.slides[index].setOpacity(0);this.slides[this.activeSlide].stopFx(false).fadeOut({duration:this.transitionDuration/2,callback:function(){this.els.slidesWrap.setStyle('left',(-1*offset)+'px');this.slides[this.activeSlide].setOpacity(1);this.slides[index].fadeIn({duration:this.transitionDuration/2});},scope:this})
break;default:var xNew=(-1*offset)+this.els.container.getX();this.els.slidesWrap.stopFx(false);this.els.slidesWrap.shift({duration:this.transitionDuration,x:xNew,easing:this.transitionEasing});break;}}
else{this.els.slidesWrap.setStyle('left','0');}
this.activeSlide=index;this.updateNav();this.fireEvent('change',this.slides[index],index);},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.carouselSize-1){this.els.navNext.addClass('ux-carousel-nav-disabled');}}}});
