YAHOO.namespace("extension");YAHOO.extension.Carousel=function(carouselElementID,carouselCfg){this.init(carouselElementID,carouselCfg)};YAHOO.extension.Carousel.prototype={UNBOUNDED_SIZE:1000000,init:function(carouselElementID,carouselCfg){var oThis=this;this.getCarouselItem=this.getItem;var carouselListClass="carousel-list";var carouselClipRegionClass="carousel-clip-region";var carouselNextClass="carousel-next";var carouselPrevClass="carousel-prev";this._carouselElemID=carouselElementID;this.carouselElem=YAHOO.util.Dom.get(carouselElementID);this._prevEnabled=true;this._nextEnabled=true;this.cfg=new YAHOO.util.Config(this);this.cfg.addProperty("scrollBeforeAmount",{value:0,handler:function(type,args,carouselElem){},validator:oThis.cfg.checkNumber});this.cfg.addProperty("scrollAfterAmount",{value:0,handler:function(type,args,carouselElem){},validator:oThis.cfg.checkNumber});this.cfg.addProperty("loadOnStart",{value:true,handler:function(type,args,carouselElem){},validator:oThis.cfg.checkBoolean});this.cfg.addProperty("orientation",{value:"horizontal",handler:function(type,args,carouselElem){oThis.reload()},validator:function(orientation){if(typeof orientation=="string"){return("horizontal,vertical".indexOf(orientation.toLowerCase())!=-1)}else{return false}}});this.cfg.addProperty("size",{value:this.UNBOUNDED_SIZE,handler:function(type,args,carouselElem){oThis.reload()},validator:oThis.cfg.checkNumber});this.cfg.addProperty("numVisible",{value:3,handler:function(type,args,carouselElem){oThis.reload()},validator:oThis.cfg.checkNumber});this.cfg.addProperty("firstVisible",{value:1,handler:function(type,args,carouselElem){oThis.moveTo(args[0])},validator:oThis.cfg.checkNumber});this.cfg.addProperty("scrollInc",{value:3,handler:function(type,args,carouselElem){},validator:oThis.cfg.checkNumber});this.cfg.addProperty("animationSpeed",{value:0.25,handler:function(type,args,carouselElem){oThis.animationSpeed=args[0]},validator:oThis.cfg.checkNumber});this.cfg.addProperty("animationMethod",{value:YAHOO.util.Easing.easeOut,handler:function(type,args,carouselElem){}});this.cfg.addProperty("animationCompleteHandler",{value:null,handler:function(type,args,carouselElem){if(oThis._animationCompleteEvt){oThis._animationCompleteEvt.unsubscribe(oThis._currAnimationCompleteHandler,oThis)}oThis._currAnimationCompleteHandler=args[0];if(oThis._currAnimationCompleteHandler){if(!oThis._animationCompleteEvt){oThis._animationCompleteEvt=new YAHOO.util.CustomEvent("onAnimationComplete",oThis)}oThis._animationCompleteEvt.subscribe(oThis._currAnimationCompleteHandler,oThis)}}});this.cfg.addProperty("autoPlay",{value:0,handler:function(type,args,carouselElem){var autoPlay=args[0];if(autoPlay>0){oThis.startAutoPlay()}else{oThis.stopAutoPlay()}}});this.cfg.addProperty("wrap",{value:false,handler:function(type,args,carouselElem){},validator:oThis.cfg.checkBoolean});this.cfg.addProperty("navMargin",{value:0,handler:function(type,args,carouselElem){oThis.calculateSize()},validator:oThis.cfg.checkNumber});this.cfg.addProperty("revealAmount",{value:0,handler:function(type,args,carouselElem){oThis.reload()},validator:oThis.cfg.checkNumber});this.cfg.addProperty("prevElementID",{value:null,handler:function(type,args,carouselElem){if(oThis._carouselPrev){YAHOO.util.Event.removeListener(oThis._carouselPrev,"click",oThis._scrollPrev)}oThis._prevElementID=args[0];if(oThis._prevElementID==null){oThis._carouselPrev=YAHOO.util.Dom.getElementsByClassName(carouselPrevClass,"div",oThis.carouselElem)[0]}else{oThis._carouselPrev=YAHOO.util.Dom.get(oThis._prevElementID)}YAHOO.util.Event.addListener(oThis._carouselPrev,"click",oThis._scrollPrev,oThis)}});this.cfg.addProperty("prevElement",{value:null,handler:function(type,args,carouselElem){if(oThis._carouselPrev){YAHOO.util.Event.removeListener(oThis._carouselPrev,"click",oThis._scrollPrev)}oThis._prevElementID=args[0];if(oThis._prevElementID==null){oThis._carouselPrev=YAHOO.util.Dom.getElementsByClassName(carouselPrevClass,"div",oThis.carouselElem)[0]}else{oThis._carouselPrev=YAHOO.util.Dom.get(oThis._prevElementID)}YAHOO.util.Event.addListener(oThis._carouselPrev,"click",oThis._scrollPrev,oThis)}});this.cfg.addProperty("nextElementID",{value:null,handler:function(type,args,carouselElem){if(oThis._carouselNext){YAHOO.util.Event.removeListener(oThis._carouselNext,"click",oThis._scrollNext)}oThis._nextElementID=args[0];if(oThis._nextElementID==null){oThis._carouselNext=YAHOO.util.Dom.getElementsByClassName(carouselNextClass,"div",oThis.carouselElem)}else{oThis._carouselNext=YAHOO.util.Dom.get(oThis._nextElementID)}if(oThis._carouselNext){YAHOO.util.Event.addListener(oThis._carouselNext,"click",oThis._scrollNext,oThis)}}});this.cfg.addProperty("nextElement",{value:null,handler:function(type,args,carouselElem){if(oThis._carouselNext){YAHOO.util.Event.removeListener(oThis._carouselNext,"click",oThis._scrollNext)}oThis._nextElementID=args[0];if(oThis._nextElementID==null){oThis._carouselNext=YAHOO.util.Dom.getElementsByClassName(carouselNextClass,"div",oThis.carouselElem)}else{oThis._carouselNext=YAHOO.util.Dom.get(oThis._nextElementID)}if(oThis._carouselNext){YAHOO.util.Event.addListener(oThis._carouselNext,"click",oThis._scrollNext,oThis)}}});this.cfg.addProperty("disableSelection",{value:true,handler:function(type,args,carouselElem){},validator:oThis.cfg.checkBoolean});this.cfg.addProperty("loadInitHandler",{value:null,handler:function(type,args,carouselElem){if(oThis._loadInitHandlerEvt){oThis._loadInitHandlerEvt.unsubscribe(oThis._currLoadInitHandler,oThis)}oThis._currLoadInitHandler=args[0];if(oThis._currLoadInitHandler){if(!oThis._loadInitHandlerEvt){oThis._loadInitHandlerEvt=new YAHOO.util.CustomEvent("onLoadInit",oThis)}oThis._loadInitHandlerEvt.subscribe(oThis._currLoadInitHandler,oThis)}}});this.cfg.addProperty("loadNextHandler",{value:null,handler:function(type,args,carouselElem){if(oThis._loadNextHandlerEvt){oThis._loadNextHandlerEvt.unsubscribe(oThis._currLoadNextHandler,oThis)}oThis._currLoadNextHandler=args[0];if(oThis._currLoadNextHandler){if(!oThis._loadNextHandlerEvt){oThis._loadNextHandlerEvt=new YAHOO.util.CustomEvent("onLoadNext",oThis)}oThis._loadNextHandlerEvt.subscribe(oThis._currLoadNextHandler,oThis)}}});this.cfg.addProperty("loadPrevHandler",{value:null,handler:function(type,args,carouselElem){if(oThis._loadPrevHandlerEvt){oThis._loadPrevHandlerEvt.unsubscribe(oThis._currLoadPrevHandler,oThis)}oThis._currLoadPrevHandler=args[0];if(oThis._currLoadPrevHandler){if(!oThis._loadPrevHandlerEvt){oThis._loadPrevHandlerEvt=new YAHOO.util.CustomEvent("onLoadPrev",oThis)}oThis._loadPrevHandlerEvt.subscribe(oThis._currLoadPrevHandler,oThis)}}});this.cfg.addProperty("prevButtonStateHandler",{value:null,handler:function(type,args,carouselElem){if(oThis._currPrevButtonStateHandler){oThis._prevButtonStateHandlerEvt.unsubscribe(oThis._currPrevButtonStateHandler,oThis)}oThis._currPrevButtonStateHandler=args[0];if(oThis._currPrevButtonStateHandler){if(!oThis._prevButtonStateHandlerEvt){oThis._prevButtonStateHandlerEvt=new YAHOO.util.CustomEvent("onPrevButtonStateChange",oThis)}oThis._prevButtonStateHandlerEvt.subscribe(oThis._currPrevButtonStateHandler,oThis)}}});this.cfg.addProperty("nextButtonStateHandler",{value:null,handler:function(type,args,carouselElem){if(oThis._currNextButtonStateHandler){oThis._nextButtonStateHandlerEvt.unsubscribe(oThis._currNextButtonStateHandler,oThis)}oThis._currNextButtonStateHandler=args[0];if(oThis._currNextButtonStateHandler){if(!oThis._nextButtonStateHandlerEvt){oThis._nextButtonStateHandlerEvt=new YAHOO.util.CustomEvent("onNextButtonStateChange",oThis)}oThis._nextButtonStateHandlerEvt.subscribe(oThis._currNextButtonStateHandler,oThis)}}});if(carouselCfg){this.cfg.applyConfig(carouselCfg)}YAHOO.util.Event.addListener(this.carouselElem,"mousedown",this._handleMouseDownForSelection,this,true);this._origFirstVisible=this.cfg.getProperty("firstVisible");this._currLoadInitHandler=this.cfg.getProperty("loadInitHandler");this._currLoadNextHandler=this.cfg.getProperty("loadNextHandler");this._currLoadPrevHandler=this.cfg.getProperty("loadPrevHandler");this._currPrevButtonStateHandler=this.cfg.getProperty("prevButtonStateHandler");this._currNextButtonStateHandler=this.cfg.getProperty("nextButtonStateHandler");this._currAnimationCompleteHandler=this.cfg.getProperty("animationCompleteHandler");this._nextElementID=this.cfg.getProperty("nextElementID");if(!this._nextElementID){this._nextElementID=this.cfg.getProperty("nextElement")}this._prevElementID=this.cfg.getProperty("prevElementID");if(!this._prevElementID){this._prevElementID=this.cfg.getProperty("prevElement")}this._autoPlayTimer=null;this._priorLastVisible=this._priorFirstVisible=this.cfg.getProperty("firstVisible");this._lastPrebuiltIdx=0;this.carouselList=YAHOO.util.Dom.getElementsByClassName(carouselListClass,"ul",this.carouselElem)[0];if(this._nextElementID==null){this._carouselNext=YAHOO.util.Dom.getElementsByClassName(carouselNextClass,"div",this.carouselElem)[0]}else{this._carouselNext=YAHOO.util.Dom.get(this._nextElementID)}if(this._prevElementID==null){this._carouselPrev=YAHOO.util.Dom.getElementsByClassName(carouselPrevClass,"div",this.carouselElem)[0]}else{this._carouselPrev=YAHOO.util.Dom.get(this._prevElementID)}this._clipReg=YAHOO.util.Dom.getElementsByClassName(carouselClipRegionClass,"div",this.carouselElem)[0];if(this.isVertical()){YAHOO.util.Dom.addClass(this.carouselList,"carousel-vertical")}this._scrollNextAnim=new YAHOO.util.Motion(this.carouselList,this.scrollNextParams,this.cfg.getProperty("animationSpeed"),this.cfg.getProperty("animationMethod"));this._scrollPrevAnim=new YAHOO.util.Motion(this.carouselList,this.scrollPrevParams,this.cfg.getProperty("animationSpeed"),this.cfg.getProperty("animationMethod"));if(this._carouselNext){YAHOO.util.Event.addListener(this._carouselNext,"click",this._scrollNext,this)}if(this._carouselPrev){YAHOO.util.Event.addListener(this._carouselPrev,"click",this._scrollPrev,this)}var loadInitHandler=this.cfg.getProperty("loadInitHandler");if(loadInitHandler){this._loadInitHandlerEvt=new YAHOO.util.CustomEvent("onLoadInit",this);this._loadInitHandlerEvt.subscribe(loadInitHandler,this)}var loadNextHandler=this.cfg.getProperty("loadNextHandler");if(loadNextHandler){this._loadNextHandlerEvt=new YAHOO.util.CustomEvent("onLoadNext",this);this._loadNextHandlerEvt.subscribe(loadNextHandler,this)}var loadPrevHandler=this.cfg.getProperty("loadPrevHandler");if(loadPrevHandler){this._loadPrevHandlerEvt=new YAHOO.util.CustomEvent("onLoadPrev",this);this._loadPrevHandlerEvt.subscribe(loadPrevHandler,this)}var animationCompleteHandler=this.cfg.getProperty("animationCompleteHandler");if(animationCompleteHandler){this._animationCompleteEvt=new YAHOO.util.CustomEvent("onAnimationComplete",this);this._animationCompleteEvt.subscribe(animationCompleteHandler,this)}var prevButtonStateHandler=this.cfg.getProperty("prevButtonStateHandler");if(prevButtonStateHandler){this._prevButtonStateHandlerEvt=new YAHOO.util.CustomEvent("onPrevButtonStateChange",this);this._prevButtonStateHandlerEvt.subscribe(prevButtonStateHandler,this)}var nextButtonStateHandler=this.cfg.getProperty("nextButtonStateHandler");if(nextButtonStateHandler){this._nextButtonStateHandlerEvt=new YAHOO.util.CustomEvent("onNextButtonStateChange",this);this._nextButtonStateHandlerEvt.subscribe(nextButtonStateHandler,this)}var visibleExtent=this._calculateVisibleExtent();YAHOO.util.Event.onAvailable(this._carouselElemID+"-item-"+visibleExtent.start,this._calculateSize,this);if(this.cfg.getProperty("loadOnStart")){this._loadInitial()}},_handleMouseDownForSelection:function(e){if(this.cfg.getProperty("disableSelection")){YAHOO.util.Event.preventDefault(e);YAHOO.util.Event.stopPropagation(e)}},clear:function(){var loadInitHandler=this.cfg.getProperty("loadInitHandler");if(loadInitHandler){this._removeChildrenFromNode(this.carouselList);this._lastPrebuiltIdx=0}this.stopAutoPlay();this._priorLastVisible=this._priorFirstVisible=this._origFirstVisible;this.cfg.setProperty("firstVisible",this._origFirstVisible,true);this.moveTo(this._origFirstVisible)},reload:function(numVisible){if(this._isValidObj(numVisible)){this.cfg.setProperty("numVisible",numVisible)}this.clear();var visibleExtent=this._calculateVisibleExtent();YAHOO.util.Event.onAvailable(this._carouselElemID+"-item-"+visibleExtent.start,this._calculateSize,this);this._loadInitial()},load:function(){var visibleExtent=this._calculateVisibleExtent();YAHOO.util.Event.onAvailable(this._carouselElemID+"-item-"+visibleExtent.start,this._calculateSize,this);this._loadInitial()},addItem:function(idx,innerHTMLOrElem,itemClass){if(idx>this.cfg.getProperty("size")){return null}var liElem=this.getItem(idx);if(!this._isValidObj(liElem)){liElem=this._createItem(idx,innerHTMLOrElem);this.carouselList.appendChild(liElem)}else{if(this._isValidObj(liElem.placeholder)){var newLiElem=this._createItem(idx,innerHTMLOrElem);this.carouselList.replaceChild(newLiElem,liElem);liElem=newLiElem}}if(this._isValidObj(itemClass)){YAHOO.util.Dom.addClass(liElem,itemClass)}if(this.isVertical()){setTimeout(function(){liElem.style.display="block"},1)}return liElem},insertBefore:function(refIdx,innerHTML){if(refIdx>=this.cfg.getProperty("size")){return null}if(refIdx<1){refIdx=1}var insertionIdx=refIdx-1;if(insertionIdx>this._lastPrebuiltIdx){this._prebuildItems(this._lastPrebuiltIdx,refIdx)}var liElem=this._insertBeforeItem(refIdx,innerHTML);this._enableDisableControls();return liElem},insertAfter:function(refIdx,innerHTML){if(refIdx>this.cfg.getProperty("size")){refIdx=this.cfg.getProperty("size")}var insertionIdx=refIdx+1;if(insertionIdx>this._lastPrebuiltIdx){this._prebuildItems(this._lastPrebuiltIdx,insertionIdx+1)}var liElem=this._insertAfterItem(refIdx,innerHTML);if(insertionIdx>this.cfg.getProperty("size")){this.cfg.setProperty("size",insertionIdx,true)}this._enableDisableControls();return liElem},scrollNext:function(){this._scrollNext(null,this);this._autoPlayTimer=null;if(this.cfg.getProperty("autoPlay")!==0){this._autoPlayTimer=this.startAutoPlay()}},scrollPrev:function(){this._scrollPrev(null,this)},scrollTo:function(newStart){this._position(newStart,true)},moveTo:function(newStart){this._position(newStart,false)},startAutoPlay:function(interval){if(this._isValidObj(interval)){this.cfg.setProperty("autoPlay",interval,true)}if(this._autoPlayTimer!==null){return this._autoPlayTimer}var oThis=this;var autoScroll=function(){oThis.scrollNext()};this._autoPlayTimer=setTimeout(autoScroll,this.cfg.getProperty("autoPlay"));return this._autoPlayTimer},stopAutoPlay:function(){if(this._autoPlayTimer!==null){clearTimeout(this._autoPlayTimer);this._autoPlayTimer=null}},isVertical:function(){return(this.cfg.getProperty("orientation")!="horizontal")},isItemLoaded:function(idx){var liElem=this.getItem(idx);if(this._isValidObj(liElem)&&!this._isValidObj(liElem.placeholder)){return true}return false},getItem:function(idx){var elemName=this._carouselElemID+"-item-"+idx;var liElem=YAHOO.util.Dom.get(elemName);return liElem},show:function(){YAHOO.util.Dom.setStyle(this.carouselElem,"display","block");this.calculateSize()},hide:function(){YAHOO.util.Dom.setStyle(this.carouselElem,"display","none")},calculateSize:function(){var ulKids=this.carouselList.childNodes;var li=null;for(var i=0;i<ulKids.length;i++){li=ulKids[i];if(li.tagName=="LI"||li.tagName=="li"){break}}var navMargin=this.cfg.getProperty("navMargin");var numVisible=this.cfg.getProperty("numVisible");var firstVisible=this.cfg.getProperty("firstVisible");var pl=this._getStyleVal(li,"paddingLeft");var pr=this._getStyleVal(li,"paddingRight");var ml=this._getStyleVal(li,"marginLeft");var mr=this._getStyleVal(li,"marginRight");var pt=this._getStyleVal(li,"paddingTop");var pb=this._getStyleVal(li,"paddingBottom");var mt=this._getStyleVal(li,"marginTop");var mb=this._getStyleVal(li,"marginBottom");YAHOO.util.Dom.removeClass(this.carouselList,"carousel-vertical");YAHOO.util.Dom.removeClass(this.carouselList,"carousel-horizontal");if(this.isVertical()){var liPaddingMarginWidth=pl+pr+ml+mr;YAHOO.util.Dom.addClass(this.carouselList,"carousel-vertical");var liPaddingMarginHeight=pt+pb+mt+mb;var upt=this._getStyleVal(this.carouselList,"paddingTop");var upb=this._getStyleVal(this.carouselList,"paddingBottom");var umt=this._getStyleVal(this.carouselList,"marginTop");var umb=this._getStyleVal(this.carouselList,"marginBottom");var ulPaddingHeight=upt+upb+umt+umb;var revealAmt=(this._isExtraRevealed())?(this.cfg.getProperty("revealAmount")+(liPaddingMarginHeight)/2):0;var liHeight=this._getStyleVal(li,"height",true);this.scrollAmountPerInc=(liHeight+liPaddingMarginHeight);var liWidth=this._getStyleVal(li,"width");this.carouselElem.style.width=(liWidth+liPaddingMarginWidth)+"px";this._clipReg.style.height=(this.scrollAmountPerInc*numVisible+revealAmt*2+ulPaddingHeight)+"px";this.carouselElem.style.height=(this.scrollAmountPerInc*numVisible+revealAmt*2+navMargin*2+ulPaddingHeight)+"px";var revealTop=(this._isExtraRevealed())?(revealAmt-(Math.abs(mt-mb)+Math.abs(pt-pb))/2):0;YAHOO.util.Dom.setStyle(this.carouselList,"position","relative");YAHOO.util.Dom.setStyle(this.carouselList,"top",""+revealTop+"px");var currY=YAHOO.util.Dom.getY(this.carouselList);YAHOO.util.Dom.setY(this.carouselList,currY-this.scrollAmountPerInc*(firstVisible-1))}else{YAHOO.util.Dom.addClass(this.carouselList,"carousel-horizontal");var upl=this._getStyleVal(this.carouselList,"paddingLeft");var upr=this._getStyleVal(this.carouselList,"paddingRight");var uml=this._getStyleVal(this.carouselList,"marginLeft");var umr=this._getStyleVal(this.carouselList,"marginRight");var ulPaddingWidth=upl+upr+uml+umr;var liMarginWidth=ml+mr;var liPaddingMarginWidth=liMarginWidth+pr+pl;var revealAmt=(this._isExtraRevealed())?(this.cfg.getProperty("revealAmount")+(liPaddingMarginWidth)/2):0;var liWidth=li.offsetWidth;this.scrollAmountPerInc=liWidth+liMarginWidth;this._clipReg.style.width=(this.scrollAmountPerInc*numVisible+revealAmt*2)+"px";this.carouselElem.style.width=(this.scrollAmountPerInc*numVisible+navMargin*2+revealAmt*2+ulPaddingWidth)+"px";var revealLeft=(this._isExtraRevealed())?(revealAmt-(Math.abs(mr-ml)+Math.abs(pr-pl))/2-(uml+upl)):0;YAHOO.util.Dom.setStyle(this.carouselList,"position","relative");YAHOO.util.Dom.setStyle(this.carouselList,"left",""+revealLeft+"px");var currX=YAHOO.util.Dom.getX(this.carouselList);YAHOO.util.Dom.setX(this.carouselList,currX-this.scrollAmountPerInc*(firstVisible-1))}},setProperty:function(property,value,silent){this.cfg.setProperty(property,value,silent)},getProperty:function(property){return this.cfg.getProperty(property)},getFirstItemRevealed:function(){return this._firstItemRevealed},getLastItemRevealed:function(){return this._lastItemRevealed},getFirstVisible:function(){return this.cfg.getProperty("firstVisible")},getLastVisible:function(){var firstVisible=this.cfg.getProperty("firstVisible");var numVisible=this.cfg.getProperty("numVisible");return firstVisible+numVisible-1},_getStyleVal:function(li,style,returnFloat){var styleValStr=YAHOO.util.Dom.getStyle(li,style);var styleVal=returnFloat?parseFloat(styleValStr):parseInt(styleValStr,10);if(style=="height"&&isNaN(styleVal)){styleVal=li.offsetHeight}else{if(isNaN(styleVal)){styleVal=0}}return styleVal},_calculateSize:function(me){me.calculateSize();me.show()},_removeChildrenFromNode:function(node){if(!this._isValidObj(node)){return }var len=node.childNodes.length;while(node.hasChildNodes()){node.removeChild(node.firstChild)}},_prebuildLiElem:function(idx){if(idx<1){return }var liElem=document.createElement("li");liElem.id=this._carouselElemID+"-item-"+idx;liElem.placeholder=true;this.carouselList.appendChild(liElem);this._lastPrebuiltIdx=(idx>this._lastPrebuiltIdx)?idx:this._lastPrebuiltIdx},_createItem:function(idx,innerHTMLOrElem){if(idx<1){return }var liElem=document.createElement("li");liElem.id=this._carouselElemID+"-item-"+idx;if(typeof (innerHTMLOrElem)==="string"){liElem.innerHTML=innerHTMLOrElem}else{liElem.appendChild(innerHTMLOrElem)}return liElem},_insertAfterItem:function(refIdx,innerHTMLOrElem){return this._insertBeforeItem(refIdx+1,innerHTMLOrElem)},_insertBeforeItem:function(refIdx,innerHTMLOrElem){var refItem=this.getItem(refIdx);var size=this.cfg.getProperty("size");if(size!=this.UNBOUNDED_SIZE){this.cfg.setProperty("size",size+1,true)}for(var i=this._lastPrebuiltIdx;i>=refIdx;i--){var anItem=this.getItem(i);if(this._isValidObj(anItem)){anItem.id=this._carouselElemID+"-item-"+(i+1)}}var liElem=this._createItem(refIdx,innerHTMLOrElem);var insertedItem=this.carouselList.insertBefore(liElem,refItem);this._lastPrebuiltIdx+=1;return liElem},insertAfterEnd:function(innerHTMLOrElem){return this.insertAfter(this.cfg.getProperty("size"),innerHTMLOrElem)},_position:function(newStart,showAnimation){var currStart=this._priorFirstVisible;if(newStart>currStart){var inc=newStart-currStart;this._scrollNextInc(inc,showAnimation)}else{var dec=currStart-newStart;this._scrollPrevInc(dec,showAnimation)}},_scrollPrev:function(e,carousel){if(e!==null){carousel.stopAutoPlay()}carousel._scrollPrevInc(carousel.cfg.getProperty("scrollInc"),(carousel.cfg.getProperty("animationSpeed")!==0))},_scrollNext:function(e,carousel){if(e!==null){carousel.stopAutoPlay()}carousel._scrollNextInc(carousel.cfg.getProperty("scrollInc"),(carousel.cfg.getProperty("animationSpeed")!==0))},_handleAnimationComplete:function(type,args,argList){var carousel=argList[0];var direction=argList[1];carousel._animationCompleteEvt.fire(direction)},_areAllItemsLoaded:function(first,last){var itemsLoaded=true;for(var i=first;i<=last;i++){var liElem=this.getItem(i);if(!this._isValidObj(liElem)){this._prebuildLiElem(i);itemsLoaded=false}else{if(this._isValidObj(liElem.placeholder)){itemsLoaded=false}}}return itemsLoaded},_prebuildItems:function(first,last){for(var i=first;i<=last;i++){var liElem=this.getItem(i);if(!this._isValidObj(liElem)){this._prebuildLiElem(i)}}},_isExtraRevealed:function(){return(this.cfg.getProperty("revealAmount")>0)},_scrollNextInc:function(inc,showAnimation){if(this._scrollNextAnim.isAnimated()||this._scrollPrevAnim.isAnimated()){return false}var numVisible=this.cfg.getProperty("numVisible");var currStart=this._priorFirstVisible;var currEnd=this._priorLastVisible;var size=this.cfg.getProperty("size");var scrollExtent=this._calculateAllowableScrollExtent();if(this.cfg.getProperty("wrap")&&currEnd==scrollExtent.end){this.scrollTo(scrollExtent.start);return }var newStart=currStart+inc;var newEnd=newStart+numVisible-1;if(newEnd>scrollExtent.end){newEnd=scrollExtent.end;newStart=newEnd-numVisible+1}inc=newStart-currStart;this.cfg.setProperty("firstVisible",newStart,true);if(inc>0){if(this._isValidObj(this.cfg.getProperty("loadNextHandler"))){var visibleExtent=this._calculateVisibleExtent(newStart,newEnd);var cacheStart=(currEnd+1)<visibleExtent.start?(currEnd+1):visibleExtent.start;var alreadyCached=this._areAllItemsLoaded(cacheStart,visibleExtent.end);this._loadNextHandlerEvt.fire(visibleExtent.start,visibleExtent.end,alreadyCached)}if(showAnimation){var nextParams={points:{by:[-this.scrollAmountPerInc*inc,0]}};if(this.isVertical()){nextParams={points:{by:[0,-this.scrollAmountPerInc*inc]}}}this._scrollNextAnim=new YAHOO.util.Motion(this.carouselList,nextParams,this.cfg.getProperty("animationSpeed"),this.cfg.getProperty("animationMethod"));if(this.cfg.getProperty("animationCompleteHandler")){this._scrollNextAnim.onComplete.subscribe(this._handleAnimationComplete,[this,"next"])}this._scrollNextAnim.animate()}else{if(this.isVertical()){var currY=YAHOO.util.Dom.getY(this.carouselList);YAHOO.util.Dom.setY(this.carouselList,currY-this.scrollAmountPerInc*inc)}else{var currX=YAHOO.util.Dom.getX(this.carouselList);YAHOO.util.Dom.setX(this.carouselList,currX-this.scrollAmountPerInc*inc)}}}this._priorFirstVisible=newStart;this._priorLastVisible=newEnd;this._enableDisableControls();return false},_scrollPrevInc:function(dec,showAnimation){if(this._scrollNextAnim.isAnimated()||this._scrollPrevAnim.isAnimated()){return false}var numVisible=this.cfg.getProperty("numVisible");var currStart=this._priorFirstVisible;var currEnd=this._priorLastVisible;var size=this.cfg.getProperty("size");var newStart=currStart-dec;var scrollExtent=this._calculateAllowableScrollExtent();newStart=(newStart<scrollExtent.start)?scrollExtent.start:newStart;var newEnd=newStart+numVisible-1;if(newEnd>scrollExtent.end){newEnd=scrollExtent.end;newStart=newEnd-numVisible+1}dec=currStart-newStart;this.cfg.setProperty("firstVisible",newStart,true);if(dec>0){if(this._isValidObj(this.cfg.getProperty("loadPrevHandler"))){var visibleExtent=this._calculateVisibleExtent(newStart,newEnd);var cacheEnd=(currStart-1)>visibleExtent.end?(currStart-1):visibleExtent.end;var alreadyCached=this._areAllItemsLoaded(visibleExtent.start,cacheEnd);this._loadPrevHandlerEvt.fire(visibleExtent.start,visibleExtent.end,alreadyCached)}if(showAnimation){var prevParams={points:{by:[this.scrollAmountPerInc*dec,0]}};if(this.isVertical()){prevParams={points:{by:[0,this.scrollAmountPerInc*dec]}}}this._scrollPrevAnim=new YAHOO.util.Motion(this.carouselList,prevParams,this.cfg.getProperty("animationSpeed"),this.cfg.getProperty("animationMethod"));if(this.cfg.getProperty("animationCompleteHandler")){this._scrollPrevAnim.onComplete.subscribe(this._handleAnimationComplete,[this,"prev"])}this._scrollPrevAnim.animate()}else{if(this.isVertical()){var currY=YAHOO.util.Dom.getY(this.carouselList);YAHOO.util.Dom.setY(this.carouselList,currY+this.scrollAmountPerInc*dec)}else{var currX=YAHOO.util.Dom.getX(this.carouselList);YAHOO.util.Dom.setX(this.carouselList,currX+this.scrollAmountPerInc*dec)}}}this._priorFirstVisible=newStart;this._priorLastVisible=newEnd;this._enableDisableControls();return false},_enableDisableControls:function(){var firstVisible=this.cfg.getProperty("firstVisible");var lastVisible=this.getLastVisible();var scrollExtent=this._calculateAllowableScrollExtent();if(this._prevEnabled){if(firstVisible===scrollExtent.start){this._disablePrev()}}if(this._prevEnabled===false){if(firstVisible>scrollExtent.start){this._enablePrev()}}if(this._nextEnabled){if(lastVisible===scrollExtent.end){this._disableNext()}}if(this._nextEnabled===false){if(lastVisible<scrollExtent.end){this._enableNext()}}},_loadInitial:function(){var firstVisible=this.cfg.getProperty("firstVisible");this._priorLastVisible=this.getLastVisible();if(this._loadInitHandlerEvt){var visibleExtent=this._calculateVisibleExtent(firstVisible,this._priorLastVisible);var alreadyCached=this._areAllItemsLoaded(1,visibleExtent.end);this._loadInitHandlerEvt.fire(visibleExtent.start,visibleExtent.end,alreadyCached)}if(this.cfg.getProperty("autoPlay")!==0){this._autoPlayTimer=this.startAutoPlay()}this._enableDisableControls()},_calculateAllowableScrollExtent:function(){var scrollBeforeAmount=this.cfg.getProperty("scrollBeforeAmount");var scrollAfterAmount=this.cfg.getProperty("scrollAfterAmount");var size=this.cfg.getProperty("size");var extent={start:1-scrollBeforeAmount,end:size+scrollAfterAmount};return extent},_calculateVisibleExtent:function(start,end){if(!start){start=this.cfg.getProperty("firstVisible");end=this.getLastVisible()}var size=this.cfg.getProperty("size");start=start<1?1:start;end=end>size?size:end;var extent={start:start,end:end};this._firstItemRevealed=-1;this._lastItemRevealed=-1;if(this._isExtraRevealed()){if(start>1){this._firstItemRevealed=start-1;extent.start=this._firstItemRevealed}if(end<size){this._lastItemRevealed=end+1;extent.end=this._lastItemRevealed}}return extent},_disablePrev:function(){this._prevEnabled=false;if(this._prevButtonStateHandlerEvt){this._prevButtonStateHandlerEvt.fire(false,this._carouselPrev)}if(this._isValidObj(this._carouselPrev)){YAHOO.util.Event.removeListener(this._carouselPrev,"click",this._scrollPrev)}},_enablePrev:function(){this._prevEnabled=true;if(this._prevButtonStateHandlerEvt){this._prevButtonStateHandlerEvt.fire(true,this._carouselPrev)}if(this._isValidObj(this._carouselPrev)){YAHOO.util.Event.addListener(this._carouselPrev,"click",this._scrollPrev,this)}},_disableNext:function(){if(this.cfg.getProperty("wrap")){return }this._nextEnabled=false;if(this._isValidObj(this._nextButtonStateHandlerEvt)){this._nextButtonStateHandlerEvt.fire(false,this._carouselNext)}if(this._isValidObj(this._carouselNext)){YAHOO.util.Event.removeListener(this._carouselNext,"click",this._scrollNext)}},_enableNext:function(){this._nextEnabled=true;if(this._isValidObj(this._nextButtonStateHandlerEvt)){this._nextButtonStateHandlerEvt.fire(true,this._carouselNext)}if(this._isValidObj(this._carouselNext)){YAHOO.util.Event.addListener(this._carouselNext,"click",this._scrollNext,this)}},_isValidObj:function(obj){if(null==obj){return false}if("undefined"==typeof (obj)){return false}return true}};if(typeof this["Evendi"]=="undefined"){this.Evendi={}}Evendi.Trimmer=function(textDivID,trimmer_buttonID,default_trim_length){this.trim_length=default_trim_length?default_trim_length:50;this.trimmer_button=trimmer_buttonID;this.textDiv=textDivID;this.chunk=false;this.active=false;this.original_length=10;this.buttonHandler={handleTrim:function(){this.doTrim(this.trim_length)},handleShow:function(){this.doTrim(null)}}};Evendi.Trimmer.prototype.doTrim=function(maxLength){if(!this.chunk){this.initText()}if(maxLength==null||maxLength>=this.original_length){this.chunk.ref.innerHTML=this.chunk.original;this.active=false;YAHOO.util.Dom.addClass(this.trimmer_button,"reset")}else{var a=this.chunk.original.split(" ");a=a.slice(0,maxLength);this.chunk.ref.innerHTML=a.join(" ");this.active=true;if(this.trimmer_button){document.getElementById(this.trimmer_button).style.display=""}YAHOO.util.Dom.removeClass(this.trimmer_button,"reset")}if(this.trimmer_button){this.toggleTrimmerButton()}};Evendi.Trimmer.prototype.toggleTrimmerButton=function(){YAHOO.util.Event.removeListener(this.trimmer_button,"click");if(this.active){YAHOO.util.Event.addListener(this.trimmer_button,"click",this.buttonHandler.handleShow,this,true)}else{YAHOO.util.Event.addListener(this.trimmer_button,"click",this.buttonHandler.handleTrim,this,true)}};Evendi.Trimmer.prototype.initText=function(){this.chunk={ref:document.getElementById(this.textDiv),original:document.getElementById(this.textDiv).innerHTML};this.original_length=this.chunk.original.split(" ").length};YAHOO.namespace("evendi");YAHOO.evendi.ProductOfferFilterForm=function(){var limitMenu;var orderByMenu;var shippingTypeButton;var lastShipping;var state;var leaving=false;var originalState=null;var initState=function(){if(document.getElementById("offer_limit_container")!=null){if(limitMenu!=null){limitMenu.destroy()}limitMenu=new Evendi.MenuButton("offer_limit_container",{menu:"offer_limit",type:"form"});limitMenu.submit=function(){setFormValues()}}if(document.getElementById("orderBy_container")!=null){if(orderByMenu!=null){orderByMenu.destroy()}orderByMenu=new Evendi.MenuButton("orderBy_container",{menu:"orderBy",type:"form"});orderByMenu.submit=function(){setFormValues()}}state=YAHOO.util.Connect.setForm("offer_form");YAHOO.util.Connect.resetFormState();if(originalState==null){originalState=state}var onleave=function(e){if(YAHOO.env.ua.ie==0){var newState=YAHOO.util.Connect.setForm(document.forms["offer_form"]);YAHOO.util.Connect.resetFormState();if(originalState!=newState){leaving=true;YAHOO.util.History.navigate("productOfferFilterForm",newState)}}};if(YAHOO.env.ua.ie>0){}else{window.onbeforeunload=onleave}};var onStateChange=function(newState){if(state!=newState&&newState!=originalState){var parameter=newState.split("&");var formValues={};for(var i=0;i<parameter.length;i++){var pair=parameter[i].split("=");if(formValues[pair[0]]!=null){var current=formValues[pair[0]];if(!(current instanceof Array)){formValues[pair[0]]=new Array();formValues[pair[0]].push(current)}formValues[pair[0]].push(pair[1])}else{formValues[pair[0]]=pair[1]}}var allShippingValues=YAHOO.util.Selector.query("#shippingtype_menu input");YAHOO.util.Dom.batch(allShippingValues,function(elem){elem.checked=false});if(formValues!=null){for(var value in formValues){if(value=="filter.shippingType"){if(formValues[value] instanceof Array){for(var i=0;i<formValues[value].length;i++){var el=document.getElementById(value+"."+formValues[value][i]);el.checked=true}}else{var el=document.getElementById(value+"."+formValues[value]);el.checked=true}}else{var inputs=YAHOO.util.Selector.query("input","offer_form");for(var i=0;i<inputs.length;i++){if(inputs[i].name==value){inputs[i].value=formValues[value]}}}}}submit()}};var setFormValues=function(formValues){if(formValues!=null){for(var value in formValues){var inputs=YAHOO.util.Selector.query("input","offer_form");for(var i=0;i<inputs.length;i++){if(inputs[i].name==value){inputs[i].value=formValues[value]}}}}var newState=YAHOO.util.Connect.setForm("offer_form");YAHOO.util.Connect.resetFormState();submit()};var submit=function(){var callback={success:function(o){scroll(0,0);if(YAHOO.env.ua.ie>5&&YAHOO.env.ua.ie<7){YAHOO.util.Event.onDOMReady(YAHOO.evendi.ProductOfferFilterForm.init)}else{YAHOO.util.Event.onContentReady("offer_form",YAHOO.evendi.ProductOfferFilterForm.init)}}};YAHOO.util.Connect.setForm(document.getElementById("offer_form"));YAHOO.util.Connect.update("GET",Evendi.context+"/ajax/ProductOffers.action",callback,null,"offerListWrapper")};var init_shippingTypebutton=function(){getButtonLabel=function(){var inputs=YAHOO.util.Selector.query("#shippingtype_menu input:checked");var label="";for(var i=0;i<inputs.length;i++){var elem=inputs[i];if(i<2&&label!=""){label+=", "}if(i==2){label+="..."}else{if(i<2){label+=elem.title}}}if(label==""){label="Beliebig"}label="<span>"+label+"</span>";return label};refreshButtonLabel=function(){var label=getButtonLabel();shippingtype_button.set("label",label)};getCurrentSelection=function(){return YAHOO.util.Selector.query("#shippingtype_menu input:checked")};YAHOO.util.Dom.setStyle("shippingtype_menu","position","absolute");YAHOO.util.Dom.removeClass("shippingtype_menu","hidden_select");var overlay=new YAHOO.widget.Overlay("shippingtype_menu",{zIndex:1000});overlay.render();overlay.hide();var process=function(){var selections=getCurrentSelection();var changed=false;if(selections.length!=last_selection.length){changed=true}else{for(var i=0;i<selections.length;i++){if(selections[i]!=last_selection[i]){changed=true;break}}}if(changed){setFormValues()}};var kl=new YAHOO.util.KeyListener(document,{keys:[27,13]},{fn:function(){overlay.hide();return false}});overlay.subscribe("hide",function(){kl.disable();process()},{self:overlay});overlay.subscribe("show",function(){kl.enable()},{self:overlay});var options=YAHOO.util.Selector.query("#shippingtype_menu li");YAHOO.util.Dom.setStyle(options,"display","block");var shippingtype_button=new YAHOO.widget.Button({type:"menu",container:"shippingtype_button",label:getButtonLabel(),menu:overlay,lazyLoad:false});refreshButtonLabel();last_selection=getCurrentSelection();var inputs=YAHOO.util.Selector.query("#shippingtype_menu input");YAHOO.util.Event.addListener(inputs,"click",refreshButtonLabel);YAHOO.util.Event.addListener("shippingtype_menu_ok_button","click",function(){overlay.hide()},{self:overlay})};return{init:function(){initState();init_shippingTypebutton();YAHOO.util.History.register("productOfferFilterForm",state,onStateChange)},setState:onStateChange,getOffers:setFormValues}}();var initialize=function(){YAHOO.evendi.ProductOfferFilterForm.init()};YAHOO.util.Event.onContentReady("offer_form",initialize);YAHOO.util.Event.onAvailable("product_description",function(){var trimmer=new Evendi.Trimmer("product_description","text_trimmer",40);trimmer.doTrim(40)});YAHOO.util.Event.onContentReady("ratings",function(){var comments=YAHOO.util.Dom.getElementsByClassName("product_comment");YAHOO.util.Dom.batch(comments,function(elem){if(!elem.id){YAHOO.util.Dom.generateId(elem)}var parent=elem.parentNode;var trimmerDivId=null;var trimmerDiv=null;var tmp=YAHOO.util.Dom.getElementsByClassName("text_trimmer","span",parent);if(tmp!=null){trimmerDiv=tmp[0];if(!trimmerDiv.id){YAHOO.util.Dom.generateId(trimmerDiv)}trimmerDivId=trimmerDiv.id}tmpTrimmer=new Evendi.Trimmer(elem.id,trimmerDivId,50);tmpTrimmer.doTrim(50);tmpTrimmer=null})});var last_selection=null;loadNextItems=function(type,args){var start=args[0];var last=args[1];var alreadyCached=args[2];if(!alreadyCached){for(var i=start;i<=last;i++){this.addItem(i,"loading")}makeRequest(this,start-1,last-start+1)}};handleSuccessHTML=function(callbackResponse){var start=callbackResponse.argument[0];var numResults=callbackResponse.argument[1];var carousel=callbackResponse.argument[2];var response=callbackResponse.responseText;var wrapper=document.createElement("div");wrapper.innerHTML=response;var elements=YAHOO.util.Selector.query("li",wrapper);var i=0;YAHOO.util.Dom.batch(elements,function(li){var item=carousel.getItem(start+i);if(item!=null){item.innerHTML=li.innerHTML}else{carousel.addItem(start+i+1,li.innerHTML)}i++});loadImagesByClassName("onload_img","img","alsoviewed_carousel")};getProductUrl=function(product){return Evendi.context+"/Product.action?productID="+product.productID+"&domain="+product.domain};makeRequest=function(carousel,start,numResults){var params="productID="+carousel.productID+"&start="+start+"&limit="+numResults;var callback={success:handleSuccessHTML,failure:function(){},argument:[start+1,numResults,carousel]};var sUrl=Evendi.context+"/ajax/ProductAlsoViewed.action";YAHOO.util.Connect.asyncRequest("POST",sUrl,callback,params)};handlePrevButtonState=function(type,args){var enabling=args[0];var leftImage=args[1];if(enabling){YAHOO.util.Dom.setStyle(leftImage,"visibility","visible")}else{YAHOO.util.Dom.setStyle(leftImage,"visibility","hidden")}};handleNextButtonState=function(type,args){var enabling=args[0];var rightImage=args[1];if(enabling){YAHOO.util.Dom.setStyle(rightImage,"visibility","visible")}else{YAHOO.util.Dom.setStyle(rightImage,"visibility","hidden")}};function recommend(productname,productID,link){var text1="Hallo! %0A %0AIch empfehle folgendes Produkt bei eVendi.de: %0A %0A";var text2=" "+productname+"%0A "+escape(link)+" %0A %0A %0A";var text3="Aktuelle Produktinformationen und Preise sind unter o.g. Link zu finden. %0A %0A %0AViele Gruesse %0A %0A %0A %0A--------------------------------------%0A eVendi.de - Der Preisvergleicher %0A Bahrenfelder Chaussee 49, Haus B, 22761 Hamburg %0A Internet: http://www.eVendi.de%0A eMail: info@eVendi.de";var subject=productname+" bei eVendi.de";document.location="mailto:?subject="+subject+"&body="+text1+text2+text3}function showRatgeber(){Evendi.Popup.showUrl("eVendi.de Ratgeber",Evendi.context+"/jsp/tools/ratgeber/ratgeber.jsp","",{width:"660px"})}function showFeedbackForm(productId){Evendi.Popup.showUrl("&nbsp;",Evendi.context+"/ajax/Feedback.action?p="+productId,"&nbsp;",{width:"600px"});YAHOO.util.Event.onAvailable("feedback_close",function(){YAHOO.util.Event.addListener("feedback_close","click",function(){Evendi.Popup.hide()},this,true)})}function showProductWatch(productId){Evendi.Popup.showUrl("&nbsp;",Evendi.context+"/my.evendi/ajax/ProductWatch.action?productID="+productId,"&nbsp;",{width:"600px"})}function showImageTooltip(element,options){if(options==null){options={}}var el=new YAHOO.util.Element(element);var context=options.context!=null?options.context:[element.id,"tl","tl"];var width=options.width!=null?options.width:"300px;";var height=options.height!=null?options.height:"300px;";var url=el.get("href");var text="<img src='"+url+"'/>";var tooltip=new YAHOO.widget.Panel(element.id+"_panel",{modal:false,context:context,width:width,height:height,constraintoviewport:true});tooltip.setBody(text);tooltip.setHeader(options.header||" ");tooltip.render(document.body);tooltip.show()}function databaseSearch(productID,targetDiv){var callback={success:function(o){loadImagesByClassName("onload_img","img",targetDiv)}};var params="productID="+productID+"&filter.limit=5&showButton=true&showPager=false";YAHOO.util.Connect.update("GET",Evendi.context+"/ajax/SearchDatabaseForProductInclude.action?"+params,callback,null,targetDiv,{hidePanel:true})}function getOffers(target,formValues){YAHOO.evendi.ProductOfferFilterForm.getOffers(formValues)}