
YAHOO.namespace("CN.lib.SlideShow");;(function(){var dom=YAHOO.util.Dom,event=YAHOO.util.Event;var slideShowConfig={pause:function(){this._isPause=true;},play:function(){this._isPause=false;},playNext:function(){this.show(this._currentIndex+1);},playPrevious:function(){this.show(this._currentIndex-1);},autoPlay:function(){var self=this;this.config.isAutoPlay=true;this.play();this._autoPlayTimer=window.setInterval(function(){self.playNext();},parseInt(this.config.interval)*1000);},stopAutoPlay:function(){this.config.isAutoPlay=false;},show:function(index){if(this._isPause||this._isInAnimation){return;}
var items=this._items,display=this.elements["displayRegion"],self=this,img,cfg=this.config;if(!items[0]||!display){return;}
if(this.config.isRepeat){index=(index>=items.length)?0:index;index=(index<0)?(items.length-1):index;}else{index=(index>=items.length)?(items.length-1):index;index=(index<0)?0:index;}
display=display.get("element");displaySize=[display.offsetWidth,display.offsetHeight];var nextSlide=items[index].cloneNode(true),curSlide=display.firstChild;dom.setStyle(curSlide,"zIndex",10);dom.setStyle(nextSlide,"zIndex",1);display.appendChild(nextSlide);if(cfg.displayMethod==="scale"){if(nextSlide.tagName.toLowerCase()==="a"){img=nextSlide.getElementsByTagName("img")[0];}
if(nextSlide.tagName.toLowerCase()==="img"){img=nextSlide;}
if(!!img){if(img.offsetWidth>displaySize[0]){img.width=displaySize[0];img.height=Math.floor(displaySize[0]/img.offsetWidth*img.offsetHeight);}
dom.setStyle(nextSlide,"width",display.offsetWidth+"px");}}
this._currentIndex=index;this.onSlideStart.fire(index);this._isInAnimation=true;this._updatePagination();this._updateTitle();if(cfg.effect==="none"){display.removeChild(curSlide);this.onSlideEnd.fire(index);this._isInAnimation=false;}else if(cfg.effect==="fade"){var anim=new YAHOO.util.Anim(curSlide,{opacity:{to:0}});anim.animate();anim.onComplete.subscribe(function(){display.removeChild(curSlide);self.onSlideEnd.fire(index);self._isInAnimation=false;});}else if(!!cfg.effect.motion){switch(cfg.effect.motion){case"top":case"up":dom.setStyle(nextSlide,"top",displaySize[1]+"px");var offset=Math.max(curSlide.offsetHeight,displaySize[1]);var animCur=new YAHOO.util.Motion(curSlide,{points:{by:[0,-1*offset]}},.4);var animNext=new YAHOO.util.Motion(nextSlide,{points:{by:[0,-1*displaySize[1]]}},.4);animCur.animate();animNext.animate();animNext.onComplete.subscribe(function(){display.removeChild(curSlide);self.onSlideEnd.fire(index);self._isInAnimation=false;});break;case"back":case"left":dom.setStyle(nextSlide,"left",displaySize[0]+"px");var offset=Math.max(curSlide.offsetWidth,displaySize[0]);var animCur=new YAHOO.util.Motion(curSlide,{points:{by:[-1*offset,0]}},.4);var animNext=new YAHOO.util.Motion(nextSlide,{points:{by:[-1*displaySize[0],0]}},.4);animCur.animate();animNext.animate();animNext.onComplete.subscribe(function(){display.removeChild(curSlide);self.onSlideEnd.fire(index);self._isInAnimation=false;});break;case"foward":case"right":var offset=Math.max(nextSlide.offsetWidth,displaySize[0]);dom.setStyle(nextSlide,"left",(-1*offset)+"px");var animCur=new YAHOO.util.Motion(curSlide,{points:{by:[displaySize[0],0]}},.4);var animNext=new YAHOO.util.Motion(nextSlide,{points:{by:[offset,0]}},.4);animCur.animate();animNext.animate();animNext.onComplete.subscribe(function(){display.removeChild(curSlide);self.onSlideEnd.fire(index);self._isInAnimation=false;});break;default:var offset=Math.max(nextSlide.offsetHeight,displaySize[1]);dom.setStyle(nextSlide,"top",-1*offset+"px");var animCur=new YAHOO.util.Motion(curSlide,{points:{by:[0,displaySize[1]]}},.4);var animNext=new YAHOO.util.Motion(nextSlide,{points:{by:[0,offset]}},.4);animCur.animate();animNext.animate();animNext.onComplete.subscribe(function(){display.removeChild(curSlide);self.onSlideEnd.fire(index);self._isInAnimation=false;});break;}}},Click_playControl:function(e,o){var el=event.getTarget(e),cfg=o.config;if(dom.hasClass(el,cfg.className.buttonPrev)){if(o._autoPlayTimer){window.clearInterval(o._autoPlayTimer);}
o._activePlay();o.playPrevious()
if(cfg.isAutoPlay){o.autoPlay();}
event.preventDefault(e);return;}
if(dom.hasClass(el,cfg.className.buttonNext)){if(o._autoPlayTimer){window.clearInterval(o._autoPlayTimer);}
o._activePlay();o.playNext();if(cfg.isAutoPlay){o.autoPlay();}
event.preventDefault(e);return;}
if(dom.hasClass(el,cfg.className.buttonPlay)){o.play();el.innerHTML=cfg.buttonText[1];dom.replaceClass(el,cfg.className.buttonPlay,cfg.className.buttonPause);event.preventDefault(e);return;}
if(dom.hasClass(el,cfg.className.buttonPause)){o.pause();el.innerHTML=cfg.buttonText[0];dom.replaceClass(el,cfg.className.buttonPause,cfg.className.buttonPlay);event.preventDefault(e);return;}},_activePlay:function(){var cfg=this.config;this.play();var playBn=dom.getElementsByClassName(cfg.className.buttonPlay,"a",this.elements["playControl"])[0];if(!!playBn){dom.replaceClass(playBn,cfg.className.buttonPlay,cfg.className.buttonPause);playBn.innerHTML=cfg.buttonText[1];}},_resetAutoPlayTimer:function(){var cfg=this.config,self=this;if(!cfg.isAutoPlay){return;}
if(this._autoPlayTimer){window.clearInterval(this._autoPlayTimer);}
this._autoPlayTimer=window.setInterval(function(){self.autoPlay();},cfg.interval*1000);},_getContentItems:function(el){var container=dom.get(el),items=[],img,index=0,nodes=container.childNodes;for(var i=0,j=nodes.length;i<j;i++){if(nodes[i].nodeType===1&&!dom.hasClass(nodes[i],this.config.className.region)){items[items.length]=nodes[i];if(dom.hasClass(nodes[i],this.config.className.current)){this._currentIndex=index;}
if(nodes[i].title===""){img=nodes[i].getElementsByTagName("img")[0];if(img&&img.alt!==""){nodes[i].title=img.alt;}}
index++;}}
return items;},_createTitle:function(){var parent=this.element,elm,cfg=this.config;if(!parent||!cfg.displayTitle){return;}
var container=dom.getElementsByClassName(cfg.className.title,"div",parent)[0];if(!container){container=document.createElement("div");dom.addClass(container,"hd");dom.addClass(container,cfg.className.title);parent.appendChild(container);}
elm=new YAHOO.util.Element(container);return elm;},_createContentContainer:function(){var parent=this.element,elm,cfg=this.config;if(!parent){return;}
var container=dom.getElementsByClassName(cfg.className.content,"div",parent)[0];if(!container){container=document.createElement("div");dom.addClass(container,"bd");dom.addClass(container,cfg.className.content);parent.appendChild(container);}
elm=new YAHOO.util.Element(container);return elm;},_createControlArea:function(){var parent=this.element,elm,cfg=this.config;if(!parent){return;}
var container=dom.getElementsByClassName(cfg.className.control,"div",parent)[0];if(!container){container=document.createElement("div");dom.addClass(container,"ft");dom.addClass(container,cfg.className.control);parent.appendChild(container);}
elm=new YAHOO.util.Element(container);return elm;},_createDisplayRegion:function(){var parent=this.elements["contentArea"],elm,cfg=this.config;if(!parent){return;}
var container=dom.getElementsByClassName(cfg.className.region,"div",parent.get("element"))[0];if(!container){container=document.createElement("div");dom.addClass(container,cfg.className.region);parent.appendChild(container);}
elm=new YAHOO.util.Element(container);return elm;},_pushDataToContent:function(){var content=this.elements["contentArea"],item,image,data=this.config.data;if(!content||!data[0]){return;}
content=content.get("element");for(var i=0,j=data.length;i<j;i++){item=document.createElement("a");item.href=data[i].url;image=document.createElement("img");image.alt=data[i].title||"";image.src=data[i].image;content.appendChild(item);item.appendChild(image);}},_fetchDataFromDoc:function(){var content=this.elements["contentArea"];if(!content){return;}
this._items=this._getContentItems(content.get("element"));},_fetchDataFromUrl:function(){},_updateTitle:function(){var cfg=this.config,titlearea=this.elements["titleArea"];if(!cfg.displayTitle||!titlearea){return;}
titlearea=titlearea.get("element");var title=titlearea.getElementsByTagName("h3")[0];if(!title){title=document.createElement("h3");titlearea.appendChild(title);}
if(this._items[this._currentIndex].title===""){dom.addClass(titlearea,cfg.className.blankTitle);}else{dom.removeClass(titlearea,cfg.className.blankTitle);}
title.innerHTML=this._items[this._currentIndex].title;},_updatePagination:function(){var curNum=this._currentIndex,items=this._items,cfg=this.config,htmlstr=[],pagination=this.elements["pagination"];if(!cfg.displayPagination||!pagination){return;}
htmlstr[htmlstr.length]='<ul>';for(var i=0,j=items.length;i<j;i++){if(i===curNum){htmlstr[htmlstr.length]='<li class="'+cfg.className.currentPageNumber+'"><strong><span class="split lit'+(i+1)+'">'+(i+1)+'</span></strong></li>';}else{htmlstr[htmlstr.length]='<li><span class="split lit'+(i+1)+'"><a href="#'+this._pagenumberPrefix+(i+1)+'" class="'+cfg.className.paginationButton+'">'+(i+1)+'</a></span></li>';}}
htmlstr[htmlstr.length]='</ul>';pagination.innerHTML=htmlstr.join("");},_initPagination:function(){var control=this.elements["controlArea"],self=this,cfg=this.config;if(!control||!cfg.displayPagination||this._items.length===0){return;}
control=control.get("element");this.elements["pagination"]=document.createElement("div");dom.addClass(this.elements["pagination"],cfg.className.pagination);control.appendChild(this.elements["pagination"]);this._updatePagination();var handlePageNumberClick=function(e){var el=event.getTarget(e);if(!dom.hasClass(el,cfg.className.paginationButton)){return;}
var num=parseInt(el.href.toLowerCase().split(self._pagenumberPrefix)[1]);if(self._autoPlayTimer){window.clearInterval(self._autoPlayTimer);}
self.show(num-1);if(cfg.isAutoPlay){self.autoPlay();}
event.preventDefault(e);};event.on(this.elements["pagination"],"click",handlePageNumberClick);},_initTitle:function(){var title=this.elements["titleArea"],cfg=this.config;if(!cfg.displayTitle){return;}
title=title.get("element");title.innerHTML="<h3></h3><em></em>";},_changeIntervalTime:function(offsetFromStart,o){var total=o._timeAdjustor.getEl().offsetWidth,thumbPos=dom.getXY(o._timeAdjustor.getThumb().id),grade=Math.floor(offsetFromStart/total*10),tip=dom.get(o.config.className.timeControlTip);if(!tip){tip=document.createElement("div");dom.setStyle(tip,"visibility","hidden");tip.id=o.config.className.timeControlTip;dom.addClass(tip,o.config.className.timeControlTip);document.body.appendChild(tip);}
grade=grade||1;tip.innerHTML=grade+o.config.buttonText[5];dom.setStyle(tip,"visibility","visible");dom.setStyle(tip,"top",(thumbPos[1]-tip.offsetHeight-2)+"px");dom.setStyle(tip,"left",thumbPos[0]+"px");if(o._autoPlayTimer){window.clearInterval(o._autoPlayTimer);}
o.config.interval=grade;if(o.config.isAutoPlay){o.autoPlay();}},_initTimeControl:function(){var controlArea=this.elements["controlArea"],control,htmlstr,self=this,cfg=this.config;if(!cfg.displayTimeControl||!controlArea){return;}
control=document.createElement("div");control.title=this.config.buttonText[4];dom.addClass(control,cfg.className.timeControl);controlArea.get("element").appendChild(control);htmlstr='<div class="'+cfg.className.timeSliderBg+'"><div class="'+cfg.className.timeSliderThumb+'"></div></div>';control.innerHTML=htmlstr;this.elements["timeControl"]=control;var slidebg=dom.getElementsByClassName(cfg.className.timeSliderBg,"div",control)[0];var slidethumb=dom.getElementsByClassName(cfg.className.timeSliderThumb,"div",control)[0];var defaultTime=cfg.interval;this._timeAdjustor=YAHOO.widget.Slider.getHorizSlider(slidebg,slidethumb,0,slidebg.offsetWidth);this._timeAdjustor.setValue(defaultTime*Math.floor(slidebg.offsetWidth/10));this._timeAdjustor.subscribe("change",function(offsetFromStart){self._changeIntervalTime(offsetFromStart,self);});this._timeAdjustor.subscribe("slideEnd",function(){var tip=dom.get(self.config.className.timeControlTip);if(tip){dom.setStyle(tip,"visibility","hidden");}});},_initPlayControl:function(){var controlArea=this.elements["controlArea"],control,htmlstr=[],cfg=this.config;if(!cfg.displayPlayControl||!controlArea){return;}
control=document.createElement("div");dom.addClass(control,cfg.className.playControl);controlArea.get("element").appendChild(control);htmlstr[htmlstr.length]='<ul>';htmlstr[htmlstr.length]='<li class="btnprev"><a href="#" class="'+cfg.className.buttonPrev+'">'+cfg.buttonText[2]+'</a></li>';htmlstr[htmlstr.length]='<li class="hidden"><a href="#" class="'+cfg.className.buttonPause+'">'+cfg.buttonText[1]+'</a></li>';htmlstr[htmlstr.length]='<li class="btnnext"><a href="#" class="'+cfg.className.buttonNext+'">'+cfg.buttonText[3]+'</a></li>';htmlstr[htmlstr.length]='</ul>';control.innerHTML=htmlstr.join("");this.elements["playControl"]=control;event.on(control,"click",this.Click_playControl,this);},_initSlid:function(){var display=this.elements["displayRegion"],content=this.elements["contentArea"],items=this._items,cfg=this.config,defaultItem;if(!display||!items[0]){return;}
content=content.get("element");display=display.get("element");dom.removeClass(items[this._currentIndex],cfg.className.current);if(cfg.height=="100%"){dom.setStyle(content,"height",items[this._currentIndex].offsetHeight+"px");}else{dom.setStyle(content,"height",cfg.height.toString().replace(/px/i,"")+"px");}
if(cfg.width=="100%"){dom.setStyle(content,"width",items[this._currentIndex].offsetWidth+"px");}else{dom.setStyle(content,"width",cfg.width.toString().replace(/px/i,"")+"px");}
if(!cfg.displayRegion[0]){dom.setStyle(display,"width",dom.getStyle(content,"width"));}else{dom.setStyle(display,"width",cfg.displayRegion[0].toString().replace(/px/i,"")+"px");}
if(!cfg.displayRegion[1]){dom.setStyle(display,"height",dom.getStyle(content,"height"));}else{dom.setStyle(display,"height",cfg.displayRegion[1].toString().replace(/px/i,"")+"px");}
display.appendChild(items[this._currentIndex].cloneNode(true));this._initPagination();this._initTitle();this._updateTitle();this._initPlayControl();this._initTimeControl();var self=this;event.on(display,"mouseover",function(){self.pause();});event.on(display,"mouseout",function(){self.play();self._activePlay();});if(cfg.isAutoPlay){this.autoPlay();}},_init:function(id,userConfig){if(!!userConfig){for(var na in userConfig){this.config[na]=userConfig[na];}
if(this.config.interval>10){this.configl.interval=10;}}
if(this.config.css!==""){var css=document.createElement("link");css.setAttribute("rel","stylesheet");css.setAttribute("type","text/css");css.href=this.config.css;document.getElementsByTagName("head")[0].appendChild(css);}
this.element=dom.get(id);dom.addClass(this.element,this.config.className.slideShow);this.elements["titleArea"]=this._createTitle();this.elements["contentArea"]=this._createContentContainer();this.elements["displayRegion"]=this._createDisplayRegion();this.elements["controlArea"]=this._createControlArea();this._pushDataToContent();this._fetchDataFromDoc();this._initSlid();this.onSlideStart=new YAHOO.util.CustomEvent("onSlideStart",this);this.onSlideEnd=new YAHOO.util.CustomEvent("onSlideEnd",this);event.on(window,"unload",function(){if(this._autoPlayTimer){window.clearInterval(this._autoPlayTimer);delete this;}},null,true);}};YAHOO.CN.lib.SlideShow=function(id,userConfig){if(!!!id){return;}
this.config={displayPlayControl:false,displayTimeControl:false,displayPagination:true,displayTitle:false,interval:5,isAutoPlay:true,isRepeat:true,paginationMode:"number",thumbSize:[48,48],width:"100%",height:"100%",displayRegion:[],displayMethod:"scale",effect:"none",css:"",data:[],buttonText:["播放","暂停","上一张","下一张","改变播放速度","秒"],className:{slideShow:"yup-slideshow-mod",title:"yup-slideshow-title",blankTitle:"yup-slideshow-blanktitle",region:"yup-slideshow-region",content:"yup-slideshow-content",control:"yup-slideshow-control",current:"current-frame",pagination:"yup-slideshow-pager",paginationButton:"yup-slideshow-pagenumber",currentPageNumber:"yup-slideshow-current-number",playControl:"yup-slideshow-playcontrol",buttonPlay:"yup-slideshow-button-play",buttonPause:"yup-slideshow-button-pause",buttonPrev:"yup-slideshow-button-prev",buttonNext:"yup-slideshow-button-next",timeControl:"yup-slideshow-timecontrol",timeSliderBg:"yup-slideshow-timebg",timeSliderThumb:"yup-slideshow-timethumb",timeControlTip:"yup-slideshow-timetip"}};this.element=null;this.elements={};this._items=[];this._currentIndex=0;this._isPause=false;this._autoPlayTimer=null;this._isInAnimation=false;this._pagenumberPrefix="frame-";this._timeAdjustor=null;this.onSlideStart=null;this.onSlideEnd=null;YAHOO.CN.lib.SlideShow.superclass.constructor.call(this,id);var self=this;this.on("contentReady",function(){self._init(id,userConfig);});};YAHOO.extend(YAHOO.CN.lib.SlideShow,YAHOO.util.Element,slideShowConfig);})();