(function(){var WidgetName;YAHOO.widget.Carousel=function(el,cfg){this._navBtns={};this._pages={};YAHOO.widget.Carousel.superclass.constructor.call(this,el,cfg)};var Carousel=YAHOO.widget.Carousel,Dom=YAHOO.util.Dom,Event=YAHOO.util.Event,JS=YAHOO.lang;WidgetName="Carousel";var instances={};var afterScrollEvent="afterScroll";var beforeHideEvent="beforeHide";var beforePageChangeEvent="beforePageChange";var beforeScrollEvent="beforeScroll";var beforeShowEvent="beforeShow";var blurEvent="blur";var focusEvent="focus";var hideEvent="hide";var itemAddedEvent="itemAdded";var itemRemovedEvent="itemRemoved";var itemSelectedEvent="itemSelected";var loadItemsEvent="loadItems";var navigationStateChangeEvent="navigationStateChange";var pageChangeEvent="pageChange";var renderEvent="render";var showEvent="show";var startAutoPlayEvent="startAutoPlay";var stopAutoPlayEvent="stopAutoPlay";function autoScroll(){var currIndex=this._firstItem,index;if(currIndex>=this.get("numItems")-1){if(this.get("isCircular")){index=0}else{this.stopAutoPlay()}}else{index=currIndex+this.get("numVisible")}this.scrollTo.call(this,index)}function createElement(el,attrs){var newEl=document.createElement(el);attrs=attrs||{};if(attrs.className){Dom.addClass(newEl,attrs.className)}if(attrs.parent){attrs.parent.appendChild(newEl)}if(attrs.id){newEl.setAttribute("id",attrs.id)}if(attrs.content){if(attrs.content.nodeName){newEl.appendChild(attrs.content)}else{newEl.innerHTML=attrs.content}}return newEl}function getStyle(el,style,type){var value;function getStyleIntVal(el,style){var val;val=parseInt(Dom.getStyle(el,style),10);return JS.isNumber(val)?val:0}function getStyleFloatVal(el,style){var val;val=parseFloat(Dom.getStyle(el,style));return JS.isNumber(val)?val:0}if(typeof type=="undefined"){type="int"}switch(style){case"height":value=el.offsetHeight;if(value>0){value+=getStyleIntVal(el,"marginTop")+getStyleIntVal(el,"marginBottom")}else{value=getStyleFloatVal(el,"height")+getStyleIntVal(el,"marginTop")+getStyleIntVal(el,"marginBottom")+getStyleIntVal(el,"borderTopWidth")+getStyleIntVal(el,"borderBottomWidth")+getStyleIntVal(el,"paddingTop")+getStyleIntVal(el,"paddingBottom")}break;case"width":value=el.offsetWidth;if(value>0){value+=getStyleIntVal(el,"marginLeft")+getStyleIntVal(el,"marginRight")}else{value=getStyleFloatVal(el,"width")+getStyleIntVal(el,"marginLeft")+getStyleIntVal(el,"marginRight")+getStyleIntVal(el,"borderLeftWidth")+getStyleIntVal(el,"borderRightWidth")+getStyleIntVal(el,"paddingLeft")+getStyleIntVal(el,"paddingRight")}break;default:if(type=="int"){value=getStyleIntVal(el,style);if(style=="marginRight"&&YAHOO.env.ua.webkit){value=getStyleIntVal(el,"marginLeft")}}else{if(type=="float"){value=getStyleFloatVal(el,style)}else{value=Dom.getStyle(el,style)}}break}return value}function getCarouselItemSize(which){var child,size=0,vertical=false;if(this._itemsTable.numItems===0){return 0}if(typeof which=="undefined"){if(this._itemsTable.size>0){return this._itemsTable.size}}if(JS.isUndefined(this._itemsTable.items[0])){return 0}child=Dom.get(this._itemsTable.items[0].id);if(typeof which=="undefined"){vertical=this.get("isVertical")}else{vertical=which=="height"}if(vertical){size=getStyle(child,"height")}else{size=getStyle(child,"width")}if(typeof which=="undefined"){this._itemsTable.size=size}return size}function getScrollOffset(delta){var itemSize=0,size=0;itemSize=getCarouselItemSize.call(this);size=itemSize*delta;if(this.get("isVertical")){size-=delta}return size}function loadItems(){var first=this.get("firstVisible"),last=0,numItems=this.get("numItems"),numVisible=this.get("numVisible"),reveal=this.get("revealAmount");last=first+numVisible-1+(reveal?1:0);last=last>numItems-1?numItems-1:last;if(!this.getItem(first)||!this.getItem(last)){this.fireEvent(loadItemsEvent,{ev:loadItemsEvent,first:first,last:last,num:last-first})}}function scrollPageBackward(ev,obj){obj.scrollPageBackward();Event.preventDefault(ev)}function scrollPageForward(ev,obj){obj.scrollPageForward();Event.preventDefault(ev)}function setItemSelection(newposition,oldposition){var backwards,cssClass=this.CLASSES,el,firstItem=this._firstItem,isCircular=this.get("isCircular"),numItems=this.get("numItems"),numVisible=this.get("numVisible"),position=oldposition,sentinel=firstItem+numVisible-1;backwards=numVisible>1&&!isCircular&&position>newposition;if(position>=0&&position<numItems){if(!JS.isUndefined(this._itemsTable.items[position])){el=Dom.get(this._itemsTable.items[position].id);if(el){Dom.removeClass(el,cssClass.SELECTED_ITEM)}}}if(JS.isNumber(newposition)){newposition=parseInt(newposition,10);newposition=JS.isNumber(newposition)?newposition:0}else{newposition=firstItem}if(JS.isUndefined(this._itemsTable.items[newposition])){this.scrollTo(newposition)}if(!JS.isUndefined(this._itemsTable.items[newposition])){el=Dom.get(this._itemsTable.items[newposition].id);if(el){Dom.addClass(el,cssClass.SELECTED_ITEM)}}if(newposition<firstItem||newposition>sentinel){if(backwards){this.scrollTo(firstItem-numVisible,true)}else{this.scrollTo(newposition)}}}function syncNavigation(){var attach=false,cssClass=this.CLASSES,i,navigation,sentinel;navigation=this.get("navigation");sentinel=this._firstItem+this.get("numVisible");if(navigation.prev){if(this._firstItem===0){if(!this.get("isCircular")){Event.removeListener(navigation.prev,"click",scrollPageBackward);Dom.addClass(navigation.prev,cssClass.FIRST_NAV_DISABLED);for(i=0;i<this._navBtns.prev.length;i++){this._navBtns.prev[i].setAttribute("disabled","true")}this._prevEnabled=false}else{attach=!this._prevEnabled}}else{attach=!this._prevEnabled}if(attach){Event.on(navigation.prev,"click",scrollPageBackward,this);Dom.removeClass(navigation.prev,cssClass.FIRST_NAV_DISABLED);for(i=0;i<this._navBtns.prev.length;i++){this._navBtns.prev[i].removeAttribute("disabled")}this._prevEnabled=true}}attach=false;if(navigation.next){if(sentinel>=this.get("numItems")){if(!this.get("isCircular")){Event.removeListener(navigation.next,"click",scrollPageForward);Dom.addClass(navigation.next,cssClass.DISABLED);for(i=0;i<this._navBtns.next.length;i++){this._navBtns.next[i].setAttribute("disabled","true")}this._nextEnabled=false}else{attach=!this._nextEnabled}}else{attach=!this._nextEnabled}if(attach){Event.on(navigation.next,"click",scrollPageForward,this);Dom.removeClass(navigation.next,cssClass.DISABLED);for(i=0;i<this._navBtns.next.length;i++){this._navBtns.next[i].removeAttribute("disabled")}this._nextEnabled=true}}this.fireEvent(navigationStateChangeEvent,{next:this._nextEnabled,prev:this._prevEnabled})}function syncUI(o){var el,i,item,num,oel,pos,sibling;if(!JS.isObject(o)){return}switch(o.ev){case itemAddedEvent:pos=JS.isUndefined(o.pos)?this._itemsTable.numItems-1:o.pos;if(!JS.isUndefined(this._itemsTable.items[pos])){item=this._itemsTable.items[pos];if(item&&!JS.isUndefined(item.id)){oel=Dom.get(item.id)}}if(!oel){el=this._createCarouselItem({className:item.className,content:item.item,id:item.id});if(JS.isUndefined(o.pos)){if(!JS.isUndefined(this._itemsTable.loading[pos])){oel=this._itemsTable.loading[pos]}if(oel){this._carouselEl.replaceChild(el,oel)}else{this._carouselEl.appendChild(el)}}else{if(!JS.isUndefined(this._itemsTable.items[o.pos+1])){sibling=Dom.get(this._itemsTable.items[o.pos+1].id)}if(sibling){this._carouselEl.insertBefore(el,sibling)}else{}}}else{if(JS.isUndefined(o.pos)){if(!Dom.isAncestor(this._carouselEl,oel)){this._carouselEl.appendChild(oel)}}else{if(!Dom.isAncestor(this._carouselEl,oel)){if(!JS.isUndefined(this._itemsTable.items[o.pos+1])){this._carouselEl.insertBefore(oel,Dom.get(this._itemsTable.items[o.pos+1].id))}}}}if(this._recomputeSize){this._setClipContainerSize()}break;case itemRemovedEvent:num=this.get("numItems");item=o.item;pos=o.pos;if(item&&(el=Dom.get(item.id))){if(el&&Dom.isAncestor(this._carouselEl,el)){Event.purgeElement(el,true);this._carouselEl.removeChild(el)}if(this.get("selectedItem")==pos){pos=pos>=num?num-1:pos;this.set("selectedItem",pos)}}else{}break;case loadItemsEvent:for(i=o.first;i<=o.last;i++){el=this._createCarouselItem({content:this.CONFIG.ITEM_LOADING,id:Dom.generateId()});if(el){if(!JS.isUndefined(this._itemsTable.items[o.last+1])){sibling=Dom.get(this._itemsTable.items[o.last+1].id);if(sibling){this._carouselEl.insertBefore(el,sibling)}else{}}else{this._carouselEl.appendChild(el)}}this._itemsTable.loading[i]=el}break}}Carousel.getById=function(id){return instances[id]?instances[id]:false};YAHOO.extend(Carousel,YAHOO.util.Element,{_carouselEl:null,_clipEl:null,_firstItem:0,_isAnimationInProgress:false,_itemsTable:null,_navBtns:null,_navEl:null,_nextEnabled:true,_pages:null,_prevEnabled:true,_recomputeSize:true,CLASSES:{BUTTON:"yui-carousel-button",CAROUSEL:"yui-carousel",CAROUSEL_EL:"yui-carousel-element",CONTAINER:"yui-carousel-container",CONTENT:"yui-carousel-content",DISABLED:"yui-carousel-button-disabled",FIRST_NAV:" yui-carousel-first-button",FIRST_NAV_DISABLED:"yui-carousel-first-button-disabled",FIRST_PAGE:"yui-carousel-nav-first-page",FOCUSSED_BUTTON:"yui-carousel-button-focus",HORIZONTAL:"yui-carousel-horizontal",NAVIGATION:"yui-carousel-nav",NEXT_PAGE:"yui-carousel-next",NAV_CONTAINER:"yui-carousel-buttons",PREV_PAGE:"yui-carousel-prev",SELECTED_ITEM:"yui-carousel-item-selected",SELECTED_NAV:"yui-carousel-nav-page-selected",VERTICAL:"yui-carousel-vertical",VERTICAL_CONTAINER:"yui-carousel-vertical-container",VISIBLE:"yui-carousel-visible"},CONFIG:{FIRST_VISIBLE:0,ITEM_LOADING:'<img src="../../build/carousel/assets/ajax-loader.gif" alt="Loading" style="margin-top:-32px;position:relative;top:50%;">',ITEM_TAG_NAME:"LI",MAX_PAGER_BUTTONS:5,MIN_WIDTH:99,NUM_VISIBLE:3,TAG_NAME:"OL"},STRINGS:{NEXT_BUTTON_TEXT:"Next Page",PAGER_PREFIX_TEXT:"Go to page ",PREVIOUS_BUTTON_TEXT:"Previous Page"},addItem:function(item,index){var className,content,el,elId,numItems=this.get("numItems");if(!item){return false}if(JS.isString(item)||item.nodeName){content=item.nodeName?item.innerHTML:item}else{if(JS.isObject(item)){content=item.content}else{return false}}className=item.className||"";elId=item.id?item.id:Dom.generateId();if(JS.isUndefined(index)){this._itemsTable.items.push({item:content,className:className,id:elId})}else{if(index<0||index>=numItems){return false}this._itemsTable.items.splice(index,0,{item:content,className:className,id:elId})}this._itemsTable.numItems++;if(numItems<this._itemsTable.items.length){this.set("numItems",this._itemsTable.items.length)}this.fireEvent(itemAddedEvent,{pos:index,ev:itemAddedEvent});return true},addItems:function(items){var i,n,rv=true;if(!JS.isArray(items)){return false}for(i=0,n=items.length;i<n;i++){if(this.addItem(items[i][0],items[i][1])===false){rv=false}}return rv},blur:function(){this._carouselEl.blur();this.fireEvent(blurEvent)},clearItems:function(){var n=this.get("numItems");while(n>0){this.removeItem(0);n--}},focus:function(){var selItem,numVisible,selectOnScroll,selected,first,last,isSelectionInvisible,focusEl,itemsTable;if(this._isAnimationInProgress){return}selItem=this.get("selectedItem");numVisible=this.get("numVisible");selectOnScroll=this.get("selectOnScroll");selected=this.getItem(selItem);first=this.get("firstVisible");last=first+numVisible-1;isSelectionInvisible=(selItem<first||selItem>last);focusEl=(selected&&selected.id)?Dom.get(selected.id):null;itemsTable=this._itemsTable;if(!selectOnScroll&&isSelectionInvisible){focusEl=(itemsTable&&itemsTable.items&&itemsTable.items[first])?Dom.get(itemsTable.items[first].id):null}if(focusEl&&selectOnScroll){try{focusEl.focus()}catch(ex){}}this.fireEvent(focusEvent)},hide:function(){if(this.fireEvent(beforeHideEvent)!==false){this.removeClass(this.CLASSES.VISIBLE);this.fireEvent(hideEvent)}},init:function(el,attrs){var elId=el,parse=false;if(!el){return}this._itemsTable={loading:{},numItems:0,items:[],size:0};if(JS.isString(el)){el=Dom.get(el)}else{if(!el.nodeName){return}}if(el){if(!el.id){el.setAttribute("id",Dom.generateId())}this._parseCarousel(el);parse=true}else{el=this._createCarousel(elId)}elId=el.id;Carousel.superclass.init.call(this,el,attrs);this.initEvents();if(parse){this._parseCarouselItems()}if(!attrs||typeof attrs.isVertical=="undefined"){this.set("isVertical",false)}this._parseCarouselNavigation(el);this._navEl=this._setupCarouselNavigation();instances[elId]=this;loadItems.call(this)},initAttributes:function(attrs){attrs=attrs||{};Carousel.superclass.initAttributes.call(this,attrs);this.setAttributeConfig("currentPage",{readOnly:true,value:0});this.setAttributeConfig("firstVisible",{method:this._setFirstVisible,validator:this._validateFirstVisible,value:attrs.firstVisible||this.CONFIG.FIRST_VISIBLE});this.setAttributeConfig("selectOnScroll",{validator:JS.isBoolean,value:attrs.selectOnScroll||true});this.setAttributeConfig("numVisible",{method:this._setNumVisible,validator:this._validateNumVisible,value:attrs.numVisible||this.CONFIG.NUM_VISIBLE});this.setAttributeConfig("numItems",{method:this._setNumItems,validator:this._validateNumItems,value:this._itemsTable.numItems});this.setAttributeConfig("scrollIncrement",{validator:this._validateScrollIncrement,value:attrs.scrollIncrement||1});this.setAttributeConfig("selectedItem",{method:this._setSelectedItem,validator:JS.isNumber,value:0});this.setAttributeConfig("revealAmount",{method:this._setRevealAmount,validator:this._validateRevealAmount,value:attrs.revealAmount||0});this.setAttributeConfig("isCircular",{validator:JS.isBoolean,value:attrs.isCircular||false});this.setAttributeConfig("isVertical",{method:this._setOrientation,validator:JS.isBoolean,value:attrs.isVertical||false});this.setAttributeConfig("navigation",{method:this._setNavigation,validator:this._validateNavigation,value:attrs.navigation||{prev:null,next:null,page:null}});this.setAttributeConfig("animation",{validator:this._validateAnimation,value:attrs.animation||{speed:0,effect:null}});this.setAttributeConfig("autoPlay",{validator:JS.isNumber,value:attrs.autoPlay||0})},initEvents:function(){var cssClass=this.CLASSES;this.on("keydown",this._keyboardEventHandler);this.subscribe(afterScrollEvent,syncNavigation);this.on(afterScrollEvent,this.focus);this.subscribe(itemAddedEvent,syncUI);this.subscribe(itemAddedEvent,syncNavigation);this.subscribe(itemRemovedEvent,syncUI);this.subscribe(itemRemovedEvent,syncNavigation);this.on(itemSelectedEvent,this.focus);this.subscribe(loadItemsEvent,syncUI);this.subscribe(pageChangeEvent,this._syncPagerUI);this.subscribe(renderEvent,syncNavigation);this.subscribe(renderEvent,this._syncPagerUI);this.on("selectedItemChange",function(ev){setItemSelection.call(this,ev.newValue,ev.prevValue);this._updateTabIndex(this.getElementForItem(ev.newValue));this.fireEvent(itemSelectedEvent,ev.newValue)});this.on("firstVisibleChange",function(ev){if(!this.get("selectOnScroll")){this._updateTabIndex(this.getElementForItem(ev.newValue))}});this.on("click",this._itemClickHandler);this.on("click",this._pagerClickHandler);Event.onFocus(this.get("element"),function(ev,obj){obj._updateNavButtons(Event.getTarget(ev),true)},this);Event.onBlur(this.get("element"),function(ev,obj){obj._updateNavButtons(Event.getTarget(ev),false)},this)},getElementForItem:function(index){if(index<0||index>=this.get("numItems")){return null}if(this._itemsTable.numItems>index){if(!JS.isUndefined(this._itemsTable.items[index])){return Dom.get(this._itemsTable.items[index].id)}}return null},getElementForItems:function(){var els=[],i;for(i=0;i<this._itemsTable.numItems;i++){els.push(this.getElementForItem(i))}return els},getItem:function(index){if(index<0||index>=this.get("numItems")){return null}if(this._itemsTable.numItems>index){if(!JS.isUndefined(this._itemsTable.items[index])){return this._itemsTable.items[index]}}return null},getItems:function(index){return this._itemsTable.items},getItemPositionById:function(id){var i=0,n=this._itemsTable.numItems;while(i<n){if(!JS.isUndefined(this._itemsTable.items[i])){if(this._itemsTable.items[i].id==id){return i}}i++}return -1},removeItem:function(index){var item,num=this.get("numItems");if(index<0||index>=num){return false}item=this._itemsTable.items.splice(index,1);if(item&&item.length==1){this.set("numItems",num-1);this.fireEvent(itemRemovedEvent,{item:item[0],pos:index,ev:itemRemovedEvent});return true}return false},render:function(appendTo){var config=this.CONFIG,cssClass=this.CLASSES,size;this.addClass(cssClass.CAROUSEL);if(!this._clipEl){this._clipEl=this._createCarouselClip();this._clipEl.appendChild(this._carouselEl)}if(appendTo){this.appendChild(this._clipEl);this.appendTo(appendTo);this._setClipContainerSize()}else{if(!Dom.inDocument(this.get("element"))){return false}this.appendChild(this._clipEl)}if(this.get("isVertical")){size=getCarouselItemSize.call(this);size=size<config.MIN_WIDTH?config.MIN_WIDTH:size;this.setStyle("width",size+"px");this.addClass(cssClass.VERTICAL)}else{this.addClass(cssClass.HORIZONTAL)}if(this.get("numItems")<1){return false}this.set("selectedItem",this.get("firstVisible"));this.fireEvent(renderEvent);this._setContainerSize();return true},scrollBackward:function(){this.scrollTo(this._firstItem-this.get("scrollIncrement"))},scrollForward:function(){this.scrollTo(this._firstItem+this.get("scrollIncrement"))},scrollPageBackward:function(){this.scrollTo(this._firstItem-this.get("numVisible"))},scrollPageForward:function(){this.scrollTo(this._firstItem+this.get("numVisible"))},scrollTo:function(item,dontSelect){var anim,animate,animAttrs,animCfg=this.get("animation"),isCircular=this.get("isCircular"),delta,direction,firstItem=this._firstItem,newPage,numItems=this.get("numItems"),numPerPage=this.get("numVisible"),offset,page=this.get("currentPage"),rv,sentinel,which;if(item==firstItem){return}if(this._isAnimationInProgress){return}if(item<0){if(isCircular){item=numItems+item}else{return}}else{if(item>numItems-1){if(this.get("isCircular")){item=numItems-item}else{return}}}direction=(this._firstItem>item)?"backward":"forward";sentinel=firstItem+numPerPage;sentinel=(sentinel>numItems-1)?numItems-1:sentinel;rv=this.fireEvent(beforeScrollEvent,{dir:direction,first:firstItem,last:sentinel});if(rv===false){return}this.fireEvent(beforePageChangeEvent,{page:page});delta=firstItem-item;this._firstItem=item;this.set("firstVisible",item);loadItems.call(this);sentinel=item+numPerPage;sentinel=(sentinel>numItems-1)?numItems-1:sentinel;which=this.get("isVertical")?"top":"left";offset=getScrollOffset.call(this,delta);animate=animCfg.speed>0;if(animate){this._isAnimationInProgress=true;if(this.get("isVertical")){animAttrs={points:{by:[0,offset]}}}else{animAttrs={points:{by:[offset,0]}}}anim=new YAHOO.util.Motion(this._carouselEl,animAttrs,animCfg.speed,animCfg.effect);anim.onComplete.subscribe(function(ev){var first=this.get("firstVisible");this._isAnimationInProgress=false;this.fireEvent(afterScrollEvent,{first:first,last:sentinel})},null,this);anim.animate();anim=null}else{offset+=getStyle(this._carouselEl,which);Dom.setStyle(this._carouselEl,which,offset+"px")}newPage=parseInt(this._firstItem/numPerPage,10);if(newPage!=page){this.setAttributeConfig("currentPage",{value:newPage});this.fireEvent(pageChangeEvent,newPage)}if(!dontSelect){if(this.get("selectOnScroll")){if(item!=this._selectedItem){this.set("selectedItem",this._getSelectedItem(item))}}}delete this._autoPlayTimer;if(this.get("autoPlay")>0){this.startAutoPlay()}if(!animate){this.fireEvent(afterScrollEvent,{first:item,last:sentinel})}},show:function(){var cssClass=this.CLASSES;if(this.fireEvent(beforeShowEvent)!==false){this.addClass(cssClass.VISIBLE);this.fireEvent(showEvent)}},startAutoPlay:function(){var self=this,timer=this.get("autoPlay");if(timer>0){if(!JS.isUndefined(this._autoPlayTimer)){return}this.fireEvent(startAutoPlayEvent);this._autoPlayTimer=setTimeout(function(){autoScroll.call(self)},timer)}},stopAutoPlay:function(){if(!JS.isUndefined(this._autoPlayTimer)){clearTimeout(this._autoPlayTimer);delete this._autoPlayTimer;this.set("autoPlay",0);this.fireEvent(stopAutoPlayEvent)}},toString:function(){return WidgetName+(this.get?" (#"+this.get("id")+")":"")},_createCarousel:function(elId){var cssClass=this.CLASSES;var el=createElement("DIV",{className:cssClass.CAROUSEL,id:elId});if(!this._carouselEl){this._carouselEl=createElement(this.CONFIG.TAG_NAME,{className:cssClass.CAROUSEL_EL})}return el},_createCarouselClip:function(){var el=createElement("DIV",{className:this.CLASSES.CONTENT});this._setClipContainerSize(el);return el},_createCarouselItem:function(obj){return createElement(this.CONFIG.ITEM_TAG_NAME,{className:obj.className,content:obj.content,id:obj.id})},_getSelectedItem:function(val){var isCircular=this.get("isCircular"),numItems=this.get("numItems"),sentinel=numItems-1;if(val<0){if(isCircular){val=numItems+val}else{val=this.get("selectedItem")}}else{if(val>sentinel){if(isCircular){val=val-numItems}else{val=this.get("selectedItem")}}}return val},_itemClickHandler:function(ev){var container=this.get("element"),el,item,target=YAHOO.util.Event.getTarget(ev);while(target&&target!=container&&target.id!=this._carouselEl){el=target.nodeName;if(el.toUpperCase()==this.CONFIG.ITEM_TAG_NAME){break}target=target.parentNode}if((item=this.getItemPositionById(target.id))>=0){this.set("selectedItem",this._getSelectedItem(item))}},_keyboardEventHandler:function(ev){var key=Event.getCharCode(ev),prevent=false,position=0,selItem;if(this._isAnimationInProgress){return}switch(key){case 37:case 38:selItem=this.get("selectedItem");if(selItem==this._firstItem){position=selItem-this.get("numVisible");this.scrollTo(position);this.set("selectedItem",this._getSelectedItem(selItem-1))}else{position=this.get("selectedItem")-this.get("scrollIncrement");this.set("selectedItem",this._getSelectedItem(position))}prevent=true;break;case 39:case 40:position=this.get("selectedItem")+this.get("scrollIncrement");this.set("selectedItem",this._getSelectedItem(position));prevent=true;break;case 33:this.scrollPageBackward();prevent=true;break;case 34:this.scrollPageForward();prevent=true;break}if(prevent){Event.preventDefault(ev)}},_pagerClickHandler:function(ev){var pos,target,val;target=Event.getTarget(ev);val=target.href||target.value;if(JS.isString(val)&&val){pos=val.lastIndexOf("#");if(pos!=-1){val=this.getItemPositionById(val.substring(pos+1));this.scrollTo(val);Event.preventDefault(ev)}}},_parseCarousel:function(parent){var child,cssClass,found,node;cssClass=this.CLASSES;found=false;for(child=parent.firstChild;child;child=child.nextSibling){if(child.nodeType==1){node=child.nodeName;if(node.toUpperCase()==this.CONFIG.TAG_NAME){this._carouselEl=child;Dom.addClass(this._carouselEl,this.CLASSES.CAROUSEL_EL);found=true}}}return found},_parseCarouselItems:function(){var child,elId,node,parent=this._carouselEl;for(child=parent.firstChild;child;child=child.nextSibling){if(child.nodeType==1){node=child.nodeName;if(node.toUpperCase()==this.CONFIG.ITEM_TAG_NAME){if(child.id){elId=child.id}else{elId=Dom.generateId();child.setAttribute("id",elId)}this.addItem(child)}}}},_parseCarouselNavigation:function(parent){var cfg,cssClass=this.CLASSES,el,i,j,nav,rv=false;nav=Dom.getElementsByClassName(cssClass.PREV_PAGE,"*",parent);if(nav.length>0){for(i in nav){if(nav.hasOwnProperty(i)){el=nav[i];if(el.nodeName=="INPUT"||el.nodeName=="BUTTON"){if(typeof this._navBtns.prev=="undefined"){this._navBtns.prev=[]}this._navBtns.prev.push(el)}else{j=el.getElementsByTagName("INPUT");if(JS.isArray(j)&&j.length>0){this._navBtns.prev.push(j[0])}else{j=el.getElementsByTagName("BUTTON");if(JS.isArray(j)&&j.length>0){this._navBtns.prev.push(j[0])}}}}}cfg={prev:nav}}nav=Dom.getElementsByClassName(cssClass.NEXT_PAGE,"*",parent);if(nav.length>0){for(i in nav){if(nav.hasOwnProperty(i)){el=nav[i];if(el.nodeName=="INPUT"||el.nodeName=="BUTTON"){if(typeof this._navBtns.next=="undefined"){this._navBtns.next=[]}this._navBtns.next.push(el)}else{j=el.getElementsByTagName("INPUT");if(JS.isArray(j)&&j.length>0){this._navBtns.next.push(j[0])}else{j=el.getElementsByTagName("BUTTON");if(JS.isArray(j)&&j.length>0){this._navBtns.next.push(j[0])}}}}}if(cfg){cfg.next=nav}else{cfg={next:nav}}}if(cfg){this.set("navigation",cfg);rv=true}return rv},_setupCarouselNavigation:function(){var btn,cfg,cssClass,nav,navContainer,nextButton,pageEl,prevButton;cssClass=this.CLASSES;navContainer=Dom.getElementsByClassName(cssClass.NAVIGATION,"DIV",this.get("element"));if(navContainer.length===0){navContainer=createElement("DIV",{className:cssClass.NAVIGATION});this.insertBefore(navContainer,Dom.getFirstChild(this.get("element")))}else{navContainer=navContainer[0]}this._pages.el=createElement("UL");navContainer.appendChild(this._pages.el);nav=this.get("navigation");if(nav.prev&&nav.prev.length>0){navContainer.appendChild(nav.prev[0])}else{prevButton=createElement("SPAN",{className:cssClass.BUTTON+cssClass.FIRST_NAV});Dom.setStyle(prevButton,"visibility","visible");btn=Dom.generateId();prevButton.innerHTML='<input type="button" id="'+btn+'" value="'+this.STRINGS.PREVIOUS_BUTTON_TEXT+'" name="'+this.STRINGS.PREVIOUS_BUTTON_TEXT+'">';navContainer.appendChild(prevButton);btn=Dom.get(btn);this._navBtns.prev=[btn];cfg={prev:[prevButton]}}if(nav.next&&nav.next.length>0){navContainer.appendChild(nav.next[0])}else{nextButton=createElement("SPAN",{className:cssClass.BUTTON});Dom.setStyle(nextButton,"visibility","visible");btn=Dom.generateId();nextButton.innerHTML='<input type="button" id="'+btn+'" value="'+this.STRINGS.NEXT_BUTTON_TEXT+'" name="'+this.STRINGS.NEXT_BUTTON_TEXT+'">';navContainer.appendChild(nextButton);btn=Dom.get(btn);this._navBtns.next=[btn];if(cfg){cfg.next=[nextButton]}else{cfg={next:[nextButton]}}}if(cfg){this.set("navigation",cfg)}return navContainer},_setClipContainerSize:function(clip,num){var attr,currVal,isVertical,itemSize,reveal,size,which;isVertical=this.get("isVertical");reveal=this.get("revealAmount");which=isVertical?"height":"width";attr=isVertical?"top":"left";clip=clip||this._clipEl;if(!clip){return}num=num||this.get("numVisible");itemSize=getCarouselItemSize.call(this,which);size=itemSize*num;this._recomputeSize=(size===0);if(this._recomputeSize){return}if(reveal>0){reveal=itemSize*(reveal/100)*2;size+=reveal;currVal=parseFloat(Dom.getStyle(this._carouselEl,attr));currVal=JS.isNumber(currVal)?currVal:0;Dom.setStyle(this._carouselEl,attr,currVal+(reveal/2)+"px")}if(isVertical){size+=getStyle(this._carouselEl,"marginTop")+getStyle(this._carouselEl,"marginBottom")+getStyle(this._carouselEl,"paddingTop")+getStyle(this._carouselEl,"paddingBottom")+getStyle(this._carouselEl,"borderTop")+getStyle(this._carouselEl,"borderBottom");Dom.setStyle(clip,which,(size-(num-1))+"px")}else{size+=getStyle(this._carouselEl,"marginLeft")+getStyle(this._carouselEl,"marginRight")+getStyle(this._carouselEl,"paddingLeft")+getStyle(this._carouselEl,"paddingRight")+getStyle(this._carouselEl,"borderLeft")+getStyle(this._carouselEl,"borderRight");Dom.setStyle(clip,which,size+"px")}this._setContainerSize(clip)},_setContainerSize:function(clip,attr){var isVertical,size;isVertical=this.get("isVertical");clip=clip||this._clipEl;attr=attr||(isVertical?"height":"width");size=parseFloat(Dom.getStyle(clip,attr),10);size=JS.isNumber(size)?size:0;size+=getStyle(clip,"marginLeft")+getStyle(clip,"marginRight")+getStyle(clip,"paddingLeft")+getStyle(clip,"paddingRight")+getStyle(clip,"borderLeft")+getStyle(clip,"borderRight");if(isVertical){size+=getStyle(this._navEl,"height")}this.setStyle(attr,size+"px")},_setFirstVisible:function(val){if(val>=0&&val<this.get("numItems")){this.scrollTo(val)}else{val=this.get("firstVisible")}return val},_setNavigation:function(cfg){if(cfg.prev){Event.on(cfg.prev,"click",scrollPageBackward,this)}if(cfg.next){Event.on(cfg.next,"click",scrollPageForward,this)}},_setNumVisible:function(val){if(val>1&&val<this.get("numItems")){this._setClipContainerSize(this._clipEl,val)}else{val=this.get("numVisible")}return val},_setNumItems:function(val){var num=this._itemsTable.numItems;if(JS.isArray(this._itemsTable.items)){if(this._itemsTable.items.length!=num){num=this._itemsTable.items.length;this._itemsTable.numItems=num}}if(val<num){while(num>val){this.removeItem(num-1);num--}}return val},_setOrientation:function(val){var cssClass=this.CLASSES;if(val){this.replaceClass(cssClass.HORIZONTAL,cssClass.VERTICAL)}else{this.replaceClass(cssClass.VERTICAL,cssClass.HORIZONTAL)}this._itemsTable.size=0;return val},_setRevealAmount:function(val){if(val>=0&&val<=100){val=parseInt(val,10);val=JS.isNumber(val)?val:0;this._setClipContainerSize()}else{val=this.get("revealAmount")}return val},_setSelectedItem:function(val){this._selectedItem=val},_syncPagerUI:function(page){var a,cssClass=this.CLASSES,i,markup="",numPages,numVisible=this.get("numVisible");page=page||0;numPages=Math.ceil(this.get("numItems")/numVisible);this._pages.num=numPages;this._pages.cur=page;if(numPages>this.CONFIG.MAX_PAGER_BUTTONS){markup="<form><select>"}else{markup=""}for(i=0;i<numPages;i++){if(JS.isUndefined(this._itemsTable.items[i*numVisible])){break}a=this._itemsTable.items[i*numVisible].id;if(numPages>this.CONFIG.MAX_PAGER_BUTTONS){markup+='<option value="#'+a+'" '+(i==page?" selected":"")+">"+this.STRINGS.PAGER_PREFIX_TEXT+" "+(i+1)+"</option>"}else{markup+='<li class="'+(i===0?cssClass.FIRST_PAGE:"")+(i==page?" "+cssClass.SELECTED_NAV:"")+'"><a href="#'+a+'" tabindex="0"><em>'+this.STRINGS.PAGER_PREFIX_TEXT+" "+(i+1)+"</em></a></li>"}}if(numPages>this.CONFIG.MAX_PAGER_BUTTONS){markup+="</select></form>"}this._pages.el.innerHTML=markup;markup=null},_updateNavButtons:function(el,setFocus){var children,cssClass=this.CLASSES,grandParent,parent=el.parentNode;if(!parent){return}grandParent=parent.parentNode;if(el.nodeName.toUpperCase()=="INPUT"&&Dom.hasClass(parent,cssClass.BUTTON)){if(setFocus){if(grandParent){children=Dom.getChildren(grandParent);if(children){Dom.removeClass(children,cssClass.FOCUSSED_BUTTON)}}Dom.addClass(parent,cssClass.FOCUSSED_BUTTON)}else{Dom.removeClass(parent,cssClass.FOCUSSED_BUTTON)}}},_updateTabIndex:function(el){if(el){if(this._focusableItemEl){this._focusableItemEl.tabIndex=-1}this._focusableItemEl=el;el.tabIndex=0}},_validateAnimation:function(cfg){var rv=true;if(JS.isObject(cfg)){if(cfg.speed){rv=rv&&JS.isNumber(cfg.speed)}if(cfg.effect){rv=rv&&JS.isFunction(cfg.effect)}else{if(!JS.isUndefined(YAHOO.util.Easing)){cfg.effect=YAHOO.util.Easing.easeOut}}}else{rv=false}return rv},_validateFirstVisible:function(val){var rv=false;if(JS.isNumber(val)){rv=(val>=0&&val<this.get("numItems"))}return rv},_validateNavigation:function(cfg){var i;if(!JS.isObject(cfg)){return false}if(cfg.prev){if(!JS.isArray(cfg.prev)){return false}for(i in cfg.prev){if(cfg.prev.hasOwnProperty(i)){if(!JS.isString(cfg.prev[i].nodeName)){return false}}}}if(cfg.next){if(!JS.isArray(cfg.next)){return false}for(i in cfg.next){if(cfg.next.hasOwnProperty(i)){if(!JS.isString(cfg.next[i].nodeName)){return false}}}}return true},_validateNumItems:function(val){var rv=false;if(JS.isNumber(val)){rv=val>0}return rv},_validateNumVisible:function(val){var rv=false;if(JS.isNumber(val)){rv=val>0&&val<this.get("numItems")}return rv},_validateRevealAmount:function(val){var rv=false;if(JS.isNumber(val)){rv=val>=0&&val<100}return rv},_validateScrollIncrement:function(val){var rv=false;if(JS.isNumber(val)){rv=(val>0&&val<this.get("numItems"))}return rv}})})();YAHOO.register("carousel",YAHOO.widget.Carousel,{version:"2.6.0",build:"1321"});