var CtAutoSlider_Pager=Class.create({container:null,autoSliderObj:null,itemPerPage:null,itemCount:null,pageCount:null,buttonList:null,buttonClassName:null,buttonClassNameCurrent:null,isAutoPaging:true,timer:null,currentPage:null,hTimer:null,prevPage:null,nextIdItemList:[],initialize:function(config){this.autoSliderObj=config['parent'];this.currentPage=0;this.container=$(config['container']);this.itemPerPage=config['itemPerPage'];this.itemCount=config['itemCount'];this.buttonClassName=config['aPageClassName'];this.buttonClassNameCurrent=config['aPageClassNameCurrent'];this.delay=config['delay'];if(this.itemPerPage<=0){return;}
var buttonCount=Math.ceil(this.itemCount/this.itemPerPage);if(buttonCount==1){return;}
this.buttonList=[];for(var i=0;i<buttonCount;i++){var className=(i!=this.currentPage?this.buttonClassName:this.buttonClassName+' '+this.buttonClassNameCurrent);var button=new Element('a',{'class':className,href:'javascript:void(0)',rel:i});button.observe('click',this.clickHandler.bindAsEventListener(this,button));this.buttonList.push(button);this.container.insert(button);}
this.pageCount=this.buttonList.length;var pager=this;function updateTimer(){pager.hTimer=window.setTimeout(updateTimer,pager.delay);pager.timerHandler();}
this.hTimer=window.setTimeout(updateTimer,this.delay)},timerHandler:function(){if(!this.isAutoPaging){if(this.hTimer!=null){window.clearTimeout(this.hTimer);}
this.hTimer=null;return;}
if(this.currentPage>=this.pageCount-1){this.currentPage=-1;}
this.gotoPage(this.currentPage+1);},clickHandler:function(event,button){Event.stop(event);try{var page=button.readAttribute('rel');}catch(ex){return;}
this.isAutoPaging=false;this.autoSliderObj.isAutoPaging=false;this.gotoPage(page);},gotoPage:function(page){if(page==this.currentPage||this.autoSliderObj.isProcess){return;}
for(var i=0;i<this.buttonList.length;i++){var button=this.buttonList[i];try{var buttonPage=button.readAttribute('rel');}catch(ex){return;}
if(buttonPage==page){button.addClassName(this.buttonClassNameCurrent);this.prevPage=this.currentPage;this.currentPage=page;}else{button.removeClassName(this.buttonClassNameCurrent);}}
var pos=this.currentPage*this.itemPerPage;var idItemList=[];for(var i=0;i<this.itemPerPage;i++){if(pos>=this.itemCount){pos=0;}
idItemList.push(pos);pos++;}
var pos=(this.currentPage+1)*this.itemPerPage;this.nextIdItemList=[];for(var i=0;i<this.itemPerPage;i++){if(pos>=this.itemCount){pos=0;}
this.nextIdItemList.push(pos);pos++;}
this.autoSliderObj.displayItems(idItemList);},x:null});var CtAutoSlider=Class.create(CtComponent_Abstract,{isProcess:false,itemList:[],previewList:[],pager:null,pagingDuration:null,effectDurationAuto:null,effectDurationManual:null,config:null,isAutoPaging:true,initialize:function(htmlElement){this.element=$(htmlElement);this.reassembly();},reassembly:function(){try{var configElement=this.element.down('.ctAutoSlider-config');if(!configElement){throw'';}
this.config=configElement.innerHTML.evalJSON();configElement.remove();}catch(exc){throw'Config is required for auto slider '+this.id;}
this.isAutoPaging=true;this.pagingDuration=this.config['pagingDuration']*1000;this.effectDurationAuto=this.config['effectDurationAuto'];this.effectDurationManual=this.config['effectDurationManual'];var previews=this.element.select('.ctAutoSlider-preview');this.previewList=[];for(var i=0;i<previews.length;i++){this.previewList.push(previews[i]);}
var items=this.element.select('.ctAutoSlider-content');this.itemList=[];for(var i=0;i<items.length;i++){this.itemList.push(items[i].innerHTML);}
var pagerContainer=this.element.down('.ctAutoSlider-pager');var pagerConfig={'parent':this,'container':pagerContainer,'itemPerPage':this.previewList.length,'itemCount':this.itemList.length,'aPageClassName':'page','aPageClassNameCurrent':'current','delay':this.pagingDuration};this.pager=new CtAutoSlider_Pager(pagerConfig);for(var i=0;i<this.previewList.length;i++){var preview=this.previewList[i];preview.observe('mouseover',function(event,preview){Event.stop(event);try{preview.down('.event-featured-item-container').addClassName('hover');}catch(ex){}}.bindAsEventListener(this,preview));preview.observe('mouseout',function(event,preview){Event.stop(event);try{preview.down('.event-featured-item-container').removeClassName('hover');}catch(ex){}}.bindAsEventListener(this,preview));}},displayItems:function(idItemList){if(idItemList.length!=this.previewList.length){throw'CtAutoSlider, invalid item list';return;}
for(var i=0;i<this.previewList.length;i++){var preview=this.previewList[i];var item=this.itemList[idItemList[i]];this.updatePreview(preview,i,item);}},updatePreview:function(preview,idPreview,newContent){var curr=preview.down('.ctAutoSlider-current');var next=preview.down('.ctAutoSlider-next');Effect.Queues.get('AutoSlider'+idPreview).each(function(effect){effect.cancel();});curr.setOpacity(1);curr.show();next.setOpacity(0);next.show();next.update(newContent);new Effect.Parallel([new Effect.Appear(next,{sync:true}),new Effect.Fade(curr,{sync:true})],{queue:{position:'end',scope:'AutoSlider'+idPreview},duration:this.isAutoPaging?this.effectDurationAuto:this.effectDurationManual,afterFinish:function(){var html=next.innerHTML;curr.update(html);curr.show();curr.setOpacity(1);next.setOpacity(0);next.show();next.update();}});},x:null});var CtAutoSlider_NewsItem=Class.create({element:null,idNews:null,initialize:function(element,idNews){this.element=element;this.idNews=idNews;}});var CtAutoSliderNews=Class.create(CtComponent_Abstract,{isProcess:false,itemList:[],preview:null,next:null,current:null,pager:null,pagingDuration:null,effectDurationAuto:null,effectDurationManual:null,config:null,isAutoPaging:false,isNextSlideLoaded:true,loader:null,isContentLoaded:false,initialize:function(htmlElement){this.element=$(htmlElement);this.reassembly();},reassembly:function(){try{var configElement=this.element.down('.ctAutoSlider-config');if(!configElement){throw'';}
this.config=configElement.innerHTML.evalJSON();configElement.remove();}catch(exc){throw'Config is required for auto slider '+this.id;}
this.isAutoPaging=false;this.pagingDuration=this.config['pagingDuration']*1000;this.effectDurationAuto=this.config['effectDurationAuto'];this.effectDurationManual=this.config['effectDurationManual'];this.preview=this.element.down('.ctAutoSlider-preview');this.next=this.preview.down('.ctAutoSlider-next');this.current=this.preview.down('.ctAutoSlider-current');this.loader=this.element.down('.ctAutoSlider-loader');if(!this.preview||!this.next||!this.current||!this.loader){alert('Invalid init');}
var items=this.element.select('.ctAutoSlider-news-item');this.itemList=[];for(var i=0;i<items.length;i++){var idNews=items[i].readAttribute('title');items[i].writeAttribute('title',null);this.itemList.push(new CtAutoSlider_NewsItem(items[i],idNews));}
var pagerContainer=this.element.down('.ctAutoSlider-pager');var pagerConfig={'parent':this,'container':pagerContainer,'itemPerPage':1,'itemCount':this.itemList.length,'aPageClassName':'page-news','aPageClassNameCurrent':'current-news','delay':this.pagingDuration};this.pager=new CtAutoSlider_Pager(pagerConfig);this.pager.isAutoPaging=false;},displayItems:function(idItemList){this.isProcess=true;var item=this.itemList[idItemList];this.itemList.each(function(item){item.element.removeClassName('news-item-current');});item.element.addClassName('news-item-current');if(this.isAutoPaging){this.smoothSwap();}else{this.loadNextSlide(item.idNews);}},loadNextSlide:function(idNews){this.isNextSlideLoaded=false;this.isContentLoaded=false;if(!this.isAutoPaging){this.loader.show();}
new Ajax.Request('/news/preview.html',{method:'post',parameters:{'idNews':idNews},onSuccess:function(transport){this.next.update(transport.responseText);this.isContentLoaded=true;this.next.down('img').onload=function(){if(this.isNextSlideLoaded||!this.isContentLoaded){return;}
this.isNextSlideLoaded=true;if(!this.isAutoPaging){this.loader.hide();this.smoothSwap();}else{this.isProcess=false;}}.bind(this);window.setTimeout(function(){if(this.isNextSlideLoaded||!this.isContentLoaded){return;}
this.isNextSlideLoaded=true;if(!this.isAutoPaging){this.loader.hide();this.smoothSwap();}else{this.isProcess=false;}}.bind(this),this.isAutoPaging?5000:1000);}.bind(this),onFailure:function(){}});},smoothSwap:function(){Effect.Queues.get('AutoSlider-news').each(function(effect){effect.cancel();});this.current.setOpacity(1);this.next.setOpacity(0);this.next.show();new Effect.Parallel([new Effect.Appear(this.next,{sync:true}),new Effect.Fade(this.current,{sync:true})],{queue:{position:'begin',scope:'AutoSlider-news'},duration:this.isAutoPaging?this.effectDurationAuto:this.effectDurationManual,afterFinish:function(){this.current.update(this.next.innerHTML);this.current.show();this.current.setOpacity(1);this.next.hide();if(this.isAutoPaging){this.loadNextSlide(this.itemList[this.pager.nextIdItemList].idNews);}else{this.isProcess=false;}}.bind(this)});},x:null});var CtAutoSlider_Factory=new(Class.create({initialize:function(){Event.observe(window,'load',function(){this.refresh()}.bind(this));},refresh:function(htmlElement){var elements=[];if(htmlElement){elements=$(htmlElement).select('div.ctAutoSlider');}else{elements=$$('div.ctAutoSlider');}
for(var i=0;i<elements.length;i++){elements[i].removeClassName('ctAutoSlider');new CtAutoSlider(elements[i]);}
var elements=[];if(htmlElement){elements=$(htmlElement).select('div.ctAutoSlider-news');}else{elements=$$('div.ctAutoSlider-news');}
for(var i=0;i<elements.length;i++){elements[i].removeClassName('ctAutoSlider-news');new CtAutoSliderNews(elements[i]);}}}));CtPage.registerScript("CtAutoSlider");
