/*
Copyright (c) 2010, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
version: 2.8.1
*/
(function(){
    var P;
    YAHOO.widget.Carousel=function(s,r){
        YAHOO.widget.Carousel.superclass.constructor.call(this,s,r);
    };

    var U=YAHOO.widget.Carousel,e=YAHOO.util.Dom,c=YAHOO.util.Event,p=YAHOO.lang;
    P="Carousel";
    var T={},F="afterScroll",g="allItemsRemoved",b="beforeHide",J="beforePageChange",i="beforeScroll",Y="beforeShow",B="blur",X="focus",a="hide",S="itemAdded",o="itemRemoved",Q="itemReplaced",C="itemSelected",L="loadItems",I="navigationStateChange",h="pageChange",H="render",V="show",Z="startAutoPlay",q="stopAutoPlay",K="uiUpdate";
    function G(r,s){
        var t;
        for(t in s){
            if(s.hasOwnProperty(t)){
                e.setStyle(r,t,s[t]);
            }
        }
        }
        function W(s,r){
    var t=document.createElement(s);
    r=r||{};

    if(r.className){
        e.addClass(t,r.className);
    }
    if(r.styles){
        G(t,r.styles);
    }
    if(r.parent){
        r.parent.appendChild(t);
    }
    if(r.id){
        t.setAttribute("id",r.id);
    }
    if(r.content){
        if(r.content.nodeName){
            t.appendChild(r.content);
        }else{
            t.innerHTML=r.content;
        }
    }
    return t;
}
function d(t,s,r){
    var v;
    if(!t){
        return 0;
    }
    function u(y,x){
        var z;
        if(x=="marginRight"&&YAHOO.env.ua.webkit){
            z=parseInt(e.getStyle(y,"marginLeft"),10);
        }else{
            z=parseInt(e.getStyle(y,x),10);
        }
        return p.isNumber(z)?z:0;
    }
    function w(y,x){
        var z;
        if(x=="marginRight"&&YAHOO.env.ua.webkit){
            z=parseFloat(e.getStyle(y,"marginLeft"));
        }else{
            z=parseFloat(e.getStyle(y,x));
        }
        return p.isNumber(z)?z:0;
    }
    if(typeof r=="undefined"){
        r="int";
    }
    switch(s){
        case"height":
            v=t.offsetHeight;
            if(v>0){
            v+=u(t,"marginTop")+u(t,"marginBottom");
        }else{
            v=w(t,"height")+u(t,"marginTop")+u(t,"marginBottom")+u(t,"borderTopWidth")+u(t,"borderBottomWidth")+u(t,"paddingTop")+u(t,"paddingBottom");
        }
        break;
        case"width":
            v=t.offsetWidth;
            if(v>0){
            v+=u(t,"marginLeft")+u(t,"marginRight");
        }else{
            v=w(t,"width")+u(t,"marginLeft")+u(t,"marginRight")+u(t,"borderLeftWidth")+u(t,"borderRightWidth")+u(t,"paddingLeft")+u(t,"paddingRight");
        }
        break;
        default:
            if(r=="int"){
            v=u(t,s);
        }else{
            if(r=="float"){
                v=w(t,s);
            }else{
                v=e.getStyle(t,s);
            }
        }
        break;
}
return v;
}
function O(w){
    var u=this,x,t,s=0,v=u.get("firstVisible"),r=false;
    if(u._itemsTable.numItems===0){
        return 0;
    }
    t=u._itemsTable.items[v]||u._itemsTable.loading[v];
    if(p.isUndefined(t)){
        return 0;
    }
    x=e.get(t.id);
    if(typeof w=="undefined"){
        r=u.get("isVertical");
    }else{
        r=w=="height";
    }
    if(this._itemAttrCache[w]){
        return this._itemAttrCache[w];
    }
    if(r){
        s=d(x,"height");
    }else{
        s=d(x,"width");
    }
    this._itemAttrCache[w]=s;
    return s;
}
function N(){
    var s=this,t,r;
    t=s.get("isVertical");
    r=O.call(s,t?"height":"width");
    return(r*s.get("revealAmount")/100);
}
function m(w){
    var AH=this,z=AH._cols,v=AH._rows,u,AC,AB,t,x,AD,AJ=0,AE,s,AG,AA={},y=0,AI=AH._itemsTable,AF=AI.items,r=AI.loading;
    AB=AH.get("isVertical");
    AC=O.call(AH,AB?"height":"width");
    AG=N.call(AH);
    while(y<w){
        if(!AF[y]&&!r[y]){
            AJ++;
        }
        y++;
    }
    w-=AJ;
    if(v){
        u=this.getPageForItem(w);
        if(AB){
            x=Math.floor(w/z);
            AJ=x;
            AE=AJ*AC;
            AA.top=(AE+AG)+"px";
            AC=O.call(AH,"width");
            t=w%z;
            AJ=t;
            s=AJ*AC;
            AA.left=s+"px";
        }else{
            t=w%z;
            AD=(u-1)*z;
            AJ=t+AD;
            s=AJ*AC;
            AA.left=(s+AG)+"px";
            AC=O.call(AH,"height");
            x=Math.floor(w/z);
            AD=(u-1)*v;
            AJ=x-AD;
            AE=AJ*AC;
            AA.top=AE+"px";
        }
    }else{
    if(AB){
        AA.left=0;
        AA.top=((w*AC)+AG)+"px";
    }else{
        AA.top=0;
        AA.left=((w*AC)+AG)+"px";
    }
}
return AA;
}
function D(s){
    var r=this.get("numVisible");
    return Math.floor(s/r)*r;
}
function j(t){
    var s=0,r=0;
    s=O.call(this);
    r=s*t;
    return r;
}
function f(r,s){
    s.scrollPageBackward();
    c.preventDefault(r);
}
function k(r,s){
    s.scrollPageForward();
    c.preventDefault(r);
}
function n(w,s){
    var AA=this,AB=AA.CLASSES,r,y=AA._firstItem,t=AA.get("isCircular"),x=AA.get("numItems"),z=AA.get("numVisible"),v=s,u=y+z-1;
    if(v>=0&&v<x){
        if(!p.isUndefined(AA._itemsTable.items[v])){
            r=e.get(AA._itemsTable.items[v].id);
            if(r){
                e.removeClass(r,AB.SELECTED_ITEM);
            }
        }
    }
if(p.isNumber(w)){
    w=parseInt(w,10);
    w=p.isNumber(w)?w:0;
}else{
    w=y;
}
if(p.isUndefined(AA._itemsTable.items[w])){
    w=D.call(AA,w);
    AA.scrollTo(w);
}
if(!p.isUndefined(AA._itemsTable.items[w])){
    r=e.get(AA._itemsTable.items[w].id);
    if(r){
        e.addClass(r,AB.SELECTED_ITEM);
    }
}
if(w<y||w>u){
    w=D.call(AA,w);
    AA.scrollTo(w);
}
}
function l(){
    var t=false,w=this,s=w.CLASSES,v,r,u;
    if(!w._hasRendered){
        return;
    }
    r=w.get("navigation");
    u=w._firstItem+w.get("numVisible");
    if(r.prev){
        if(w.get("numItems")===0||w._firstItem===0){
            if(w.get("numItems")===0||!w.get("isCircular")){
                c.removeListener(r.prev,"click",f);
                e.addClass(r.prev,s.FIRST_NAV_DISABLED);
                for(v=0;v<w._navBtns.prev.length;v++){
                    w._navBtns.prev[v].setAttribute("disabled","true");
                }
                w._prevEnabled=false;
            }else{
                t=!w._prevEnabled;
            }
        }else{
        t=!w._prevEnabled;
    }
    if(t){
        c.on(r.prev,"click",f,w);
        e.removeClass(r.prev,s.FIRST_NAV_DISABLED);
        for(v=0;v<w._navBtns.prev.length;v++){
            w._navBtns.prev[v].removeAttribute("disabled");
        }
        w._prevEnabled=true;
    }
}
t=false;
if(r.next){
    if(u>=w.get("numItems")){
        if(!w.get("isCircular")){
            c.removeListener(r.next,"click",k);
            e.addClass(r.next,s.DISABLED);
            for(v=0;v<w._navBtns.next.length;v++){
                w._navBtns.next[v].setAttribute("disabled","true");
            }
            w._nextEnabled=false;
        }else{
            t=!w._nextEnabled;
        }
    }else{
    t=!w._nextEnabled;
}
if(t){
    c.on(r.next,"click",k,w);
    e.removeClass(r.next,s.DISABLED);
    for(v=0;v<w._navBtns.next.length;v++){
        w._navBtns.next[v].removeAttribute("disabled");
    }
    w._nextEnabled=true;
}
}
w.fireEvent(I,{
    next:w._nextEnabled,
    prev:w._prevEnabled
    });
}
function R(t){
    var u=this,r,s;
    if(!u._hasRendered){
        return;
    }
    s=u.get("numVisible");
    if(!p.isNumber(t)){
        t=Math.floor(u.get("selectedItem")/s);
    }
    r=Math.ceil(u.get("numItems")/s);
    u._pages.num=r;
    u._pages.cur=t;
    if(r>u.CONFIG.MAX_PAGER_BUTTONS){
        u._updatePagerMenu();
    }else{
        u._updatePagerButtons();
    }
}
function M(r,s){
    switch(s){
        case"height":
            return d(r,"marginTop")+d(r,"marginBottom")+d(r,"paddingTop")+d(r,"paddingBottom")+d(r,"borderTopWidth")+d(r,"borderBottomWidth");
        case"width":
            return d(r,"marginLeft")+d(r,"marginRight")+d(r,"paddingLeft")+d(r,"paddingRight")+d(r,"borderLeftWidth")+d(r,"borderRightWidth");
        default:
            break;
    }
    return d(r,s);
}
function A(s){
    var r=this;
    if(!p.isObject(s)){
        return;
    }
    switch(s.ev){
        case S:
            r._syncUiForItemAdd(s);
            break;
        case o:
            r._syncUiForItemRemove(s);
            break;
        case Q:
            r._syncUiForItemReplace(s);
            break;
        case L:
            r._syncUiForLazyLoading(s);
            break;
    }
    r.fireEvent(K);
}
function E(u,s){
    var w=this,v=w.get("currentPage"),t,r=w.get("numVisible");
    t=parseInt(w._firstItem/r,10);
    if(t!=v){
        w.setAttributeConfig("currentPage",{
            value:t
        });
        w.fireEvent(h,t);
    }
    if(w.get("selectOnScroll")){
        if(w.get("selectedItem")!=w._selectedItem){
            w.set("selectedItem",w._selectedItem);
        }
    }
    clearTimeout(w._autoPlayTimer);
delete w._autoPlayTimer;
if(w.isAutoPlayOn()){
    w.startAutoPlay();
}
w.fireEvent(F,{
    first:w._firstItem,
    last:s
},w);
}
U.getById=function(r){
    return T[r]?T[r].object:false;
};

YAHOO.extend(U,YAHOO.util.Element,{
    _rows:null,
    _cols:null,
    _animObj:null,
    _carouselEl:null,
    _clipEl:null,
    _firstItem:0,
    _hasFocus:false,
    _hasRendered:false,
    _isAnimationInProgress:false,
    _isAutoPlayInProgress:false,
    _itemsTable:null,
    _navBtns:null,
    _navEl:null,
    _nextEnabled:true,
    _pages:null,
    _pagination:{},
    _prevEnabled:true,
    _recomputeSize:true,
    _itemAttrCache:{},
    CLASSES:{
        BUTTON:"yui-carousel-button",
       
        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",
        ITEM_LOADING:"yui-carousel-item-loading",
        MIN_WIDTH:"yui-carousel-min-width",
        NAVIGATION:"yui-carousel-nav",
        NEXT_NAV:" yui-carousel-next-button",
        NEXT_PAGE:"yui-carousel-next",
        NAV_CONTAINER:"yui-carousel-buttons",
        PAGER_ITEM:"yui-carousel-pager-item",
        PAGINATION:"yui-carousel-pagination",
        PAGE_FOCUS:"yui-carousel-nav-page-focus",
        PREV_PAGE:"yui-carousel-prev",
        SELECTED_ITEM:"yui-carousel-item-selected",
       
        VERTICAL:"yui-carousel-vertical",
        MULTI_ROW:"yui-carousel-multi-row",
        ROW:"yui-carousel-row",
        VERTICAL_CONTAINER:"yui-carousel-vertical-container",
        VISIBLE:"yui-carousel-visible"
    },
    CONFIG:{
        FIRST_VISIBLE:0,
        HORZ_MIN_WIDTH:180,
        MAX_PAGER_BUTTONS:5,
        VERT_MIN_WIDTH:115,
        NUM_VISIBLE:3
    },
    STRINGS:{
        ITEM_LOADING_CONTENT:"Loading",
        NEXT_BUTTON_TEXT:"Next Page",
        PAGER_PREFIX_TEXT:"Go to page ",
        PREVIOUS_BUTTON_TEXT:"Previous Page"
    },
    addItem:function(y,s){
        var x=this,u,t,r,z=0,w,v=x.get("numItems");
        if(!y){
            return false;
        }
        if(p.isString(y)||y.nodeName){
            t=y.nodeName?y.innerHTML:y;
        }else{
            if(p.isObject(y)){
                t=y.content;
            }else{
                return false;
            }
        }
        u=y.className||"";
    r=y.id?y.id:e.generateId();
    if(p.isUndefined(s)){
        x._itemsTable.items.push({
            item:t,
            className:u,
            id:r
        });
        w=x._itemsTable.items.length-1;
    }else{
        if(s<0||s>v){
            return false;
        }
        if(!x._itemsTable.items[s]){
            x._itemsTable.items[s]=undefined;
            z=1;
        }
        x._itemsTable.items.splice(s,z,{
            item:t,
            className:u,
            id:r
        });
    }
    x._itemsTable.numItems++;
    if(v<x._itemsTable.items.length){
        x.set("numItems",x._itemsTable.items.length);
    }
    x.fireEvent(S,{
        pos:s,
        ev:S,
        newPos:w
    });
    return true;
},
addItems:function(r){
    var s,u,t=true;
    if(!p.isArray(r)){
        return false;
    }
    for(s=0,u=r.length;s<u;s++){
        if(this.addItem(r[s][0],r[s][1])===false){
            t=false;
        }
    }
    return t;
},
blur:function(){
    this._carouselEl.blur();
    this.fireEvent(B);
},
clearItems:function(){
    var r=this,s=r.get("numItems");
    while(s>0){
        if(!r.removeItem(0)){}
        if(r._itemsTable.numItems===0){
            r.set("numItems",0);
            break;
        }
        s--;
    }
    r.fireEvent(g);
},
focus:function(){
    var AA=this,v,w,x,u,z,AB,s,t,r;
    if(!AA._hasRendered){
        return;
    }
    if(AA.isAnimating()){
        return;
    }
    r=AA.get("selectedItem");
    AB=AA.get("numVisible");
    s=AA.get("selectOnScroll");
    t=(r>=0)?AA.getItem(r):null;
    v=AA.get("firstVisible");
    z=v+AB-1;
    x=(r<v||r>z);
    w=(t&&t.id)?e.get(t.id):null;
    u=AA._itemsTable;
    if(!s&&x){
        w=(u&&u.items&&u.items[v])?e.get(u.items[v].id):null;
    }
    if(w){
        try{
            w.focus();
        }catch(y){}
    }
    AA.fireEvent(X);
},
hide:function(){
    var r=this;
    if(r.fireEvent(b)!==false){
        r.removeClass(r.CLASSES.VISIBLE);
        r.fireEvent(a);
    }
},
init:function(u,s){
    var v=this,r=u,w=false,t;
    if(!u){
        return;
    }
    v._hasRendered=false;
    v._navBtns={
        prev:[],
        next:[]
    };

    v._pages={
        el:null,
        num:0,
        cur:0
    };

    v._pagination={};

    v._itemAttrCache={};

    v._itemsTable={
        loading:{},
        numItems:0,
        items:[],
        size:0
    };

    if(p.isString(u)){
        u=e.get(u);
    }else{
        if(!u.nodeName){
            return;
        }
    }
    U.superclass.init.call(v,u,s);
t=v.get("selectedItem");
if(t>0){
    v.set("firstVisible",D.call(v,t));
}
if(u){
    if(!u.id){
        u.setAttribute("id",e.generateId());
    }
    w=v._parseCarousel(u);
    if(!w){
        v._createCarousel(r);
    }
}else{
    u=v._createCarousel(r);
}
r=u.id;
v.initEvents();
if(w){
    v._parseCarouselItems();
}
if(t>0){
    n.call(v,t,0);
}
if(!s||typeof s.isVertical=="undefined"){
    v.set("isVertical",false);
}
v._parseCarouselNavigation(u);
v._navEl=v._setupCarouselNavigation();
T[r]={
    object:v
};

v._loadItems(Math.min(v.get("firstVisible")+v.get("numVisible"),v.get("numItems"))-1);
},
initAttributes:function(r){
    var s=this;
    r=r||{};

    U.superclass.initAttributes.call(s,r);
    s.setAttributeConfig("carouselEl",{
        validator:p.isString,
        value:r.carouselEl||"OL"
        });
    s.setAttributeConfig("carouselItemEl",{
        validator:p.isString,
        value:r.carouselItemEl||"LI"
        });
    s.setAttributeConfig("currentPage",{
        readOnly:true,
        value:0
    });
    s.setAttributeConfig("firstVisible",{
        method:s._setFirstVisible,
        validator:s._validateFirstVisible,
        value:r.firstVisible||s.CONFIG.FIRST_VISIBLE
        });
    s.setAttributeConfig("selectOnScroll",{
        validator:p.isBoolean,
        value:r.selectOnScroll||true
        });
    s.setAttributeConfig("numVisible",{
        setter:s._numVisibleSetter,
        method:s._setNumVisible,
        validator:s._validateNumVisible,
        value:r.numVisible||s.CONFIG.NUM_VISIBLE
        });
    s.setAttributeConfig("numItems",{
        method:s._setNumItems,
        validator:s._validateNumItems,
        value:s._itemsTable.numItems
        });
    s.setAttributeConfig("scrollIncrement",{
        validator:s._validateScrollIncrement,
        value:r.scrollIncrement||1
        });
    s.setAttributeConfig("selectedItem",{
        setter:s._selectedItemSetter,
        method:s._setSelectedItem,
        validator:p.isNumber,
        value:-1
    });
    s.setAttributeConfig("revealAmount",{
        method:s._setRevealAmount,
        validator:s._validateRevealAmount,
        value:r.revealAmount||0
        });
    s.setAttributeConfig("isCircular",{
        validator:p.isBoolean,
        value:r.isCircular||false
        });
    s.setAttributeConfig("isVertical",{
        method:s._setOrientation,
        validator:p.isBoolean,
        value:r.isVertical||false
        });
    s.setAttributeConfig("navigation",{
        method:s._setNavigation,
        validator:s._validateNavigation,
        value:r.navigation||{
            prev:null,
            next:null,
            page:null
        }
    });
s.setAttributeConfig("animation",{
    validator:s._validateAnimation,
    value:r.animation||{
        speed:0,
        effect:null
    }
});
s.setAttributeConfig("autoPlay",{
    validator:p.isNumber,
    value:r.autoPlay||0
    });
s.setAttributeConfig("autoPlayInterval",{
    validator:p.isNumber,
    value:r.autoPlayInterval||0
    });
s.setAttributeConfig("numPages",{
    readOnly:true,
    getter:s._getNumPages
    });
s.setAttributeConfig("lastVisible",{
    readOnly:true,
    getter:s._getLastVisible
    });
},
initEvents:function(){
    var t=this,s=t.CLASSES,r;
    t.on("keydown",t._keyboardEventHandler);
    t.on(F,l);
    t.on(S,A);
    t.on(o,A);
    t.on(Q,A);
    t.on(C,function(){
        if(t._hasFocus){
            t.focus();
        }
    });
t.on(L,A);
t.on(g,function(u){
    t.scrollTo(0);
    l.call(t);
    R.call(t);
});
t.on(h,R,t);
t.on(H,function(u){
    if(t.get("selectedItem")===null||t.get("selectedItem")<=0){
        t.set("selectedItem",t.get("firstVisible"));
    }
    l.call(t,u);
    R.call(t,u);
    t._setClipContainerSize();
    t.show();
});
t.on("selectedItemChange",function(u){
    n.call(t,u.newValue,u.prevValue);
    if(u.newValue>=0){
        t._updateTabIndex(t.getElementForItem(u.newValue));
    }
    t.fireEvent(C,u.newValue);
});
t.on(K,function(u){
    l.call(t,u);
    R.call(t,u);
});
t.on("firstVisibleChange",function(u){
    if(!t.get("selectOnScroll")){
        if(u.newValue>=0){
            t._updateTabIndex(t.getElementForItem(u.newValue));
        }
    }
});
t.on("click",function(u){
    if(t.isAutoPlayOn()){
        t.stopAutoPlay();
    }
    t._itemClickHandler(u);
    t._pagerClickHandler(u);
});
c.onFocus(t.get("element"),function(u,w){
    var v=c.getTarget(u);
    if(v&&v.nodeName.toUpperCase()=="A"&&e.getAncestorByClassName(v,s.NAVIGATION)){
        if(r){
            e.removeClass(r,s.PAGE_FOCUS);
        }
        r=v.parentNode;
        e.addClass(r,s.PAGE_FOCUS);
    }else{
        if(r){
            e.removeClass(r,s.PAGE_FOCUS);
        }
    }
    w._hasFocus=true;
w._updateNavButtons(c.getTarget(u),true);
},t);
c.onBlur(t.get("element"),function(u,v){
    v._hasFocus=false;
    v._updateNavButtons(c.getTarget(u),false);
},t);
},
isAnimating:function(){
    return this._isAnimationInProgress;
},
isAutoPlayOn:function(){
    return this._isAutoPlayInProgress;
},
getElementForItem:function(r){
    var s=this;
    if(r<0||r>=s.get("numItems")){
        return null;
    }
    if(s._itemsTable.items[r]){
        return e.get(s._itemsTable.items[r].id);
    }
    return null;
},
getElementForItems:function(){
    var t=this,s=[],r;
    for(r=0;r<t._itemsTable.numItems;r++){
        s.push(t.getElementForItem(r));
    }
    return s;
},
getItem:function(r){
    var s=this;
    if(r<0||r>=s.get("numItems")){
        return null;
    }
    if(s._itemsTable.numItems>r){
        if(!p.isUndefined(s._itemsTable.items[r])){
            return s._itemsTable.items[r];
        }
    }
    return null;
},
getItems:function(){
    return this._itemsTable.items;
},
getLoadingItems:function(){
    return this._itemsTable.loading;
},
getRows:function(){
    return this._rows;
},
getCols:function(){
    return this._cols;
},
getItemPositionById:function(w){
    var u=this,v=u.get("numItems"),s=0,r=u._itemsTable.items,t;
    while(s<v){
        t=r[s]||{};

        if(t.id==w){
            return s;
        }
        s++;
    }
    return -1;
},
getVisibleItems:function(){
    var u=this,s=u.get("firstVisible"),v=s+u.get("numVisible"),t=[];
    while(s<v){
        t.push(u.getElementForItem(s));
        s++;
    }
    return t;
},
removeItem:function(s){
    var u=this,t,r=u.get("numItems");
    if(s<0||s>=r){
        return false;
    }
    t=u._itemsTable.items.splice(s,1);
    if(t&&t.length==1){
        u._itemsTable.numItems--;
        u.set("numItems",r-1);
        u.fireEvent(o,{
            item:t[0],
            pos:s,
            ev:o
        });
        return true;
    }
    return false;
},
replaceItem:function(z,u){
    var y=this,w,v,t,x=y.get("numItems"),s,r=z;
    if(!z){
        return false;
    }
    if(p.isString(z)||z.nodeName){
        v=z.nodeName?z.innerHTML:z;
    }else{
        if(p.isObject(z)){
            v=z.content;
        }else{
            return false;
        }
    }
    if(p.isUndefined(u)){
    return false;
}else{
    if(u<0||u>=x){
        return false;
    }
    s=y._itemsTable.items[u];
    if(!s){
        s=y._itemsTable.loading[u];
        y._itemsTable.items[u]=undefined;
    }
    y._itemsTable.items.splice(u,1,{
        item:v,
        className:z.className||"",
        id:e.generateId()
        });
    r=y._itemsTable.items[u];
}
y.fireEvent(Q,{
    newItem:r,
    oldItem:s,
    pos:u,
    ev:Q
});
return true;
},
replaceItems:function(r){
    var s,u,t=true;
    if(!p.isArray(r)){
        return false;
    }
    for(s=0,u=r.length;s<u;s++){
        if(this.replaceItem(r[s][0],r[s][1])===false){
            t=false;
        }
    }
    return t;
},
render:function(s){
    var u=this,r=u.CLASSES,t=u._rows;
    u.addClass(r.CAROUSEL);
    if(!u._clipEl){
        u._clipEl=u._createCarouselClip();
        u._clipEl.appendChild(u._carouselEl);
    }
    if(s){
        u.appendChild(u._clipEl);
        u.appendTo(s);
    }else{
        if(!e.inDocument(u.get("element"))){
            return false;
        }
        u.appendChild(u._clipEl);
    }
    if(t){
        e.addClass(u._clipEl,r.MULTI_ROW);
    }
    if(u.get("isVertical")){
        u.addClass(r.VERTICAL);
    }else{
        u.addClass(r.HORIZONTAL);
    }
    if(u.get("numItems")<1){
        return false;
    }
    u._refreshUi();
    return true;
},
scrollBackward:function(){
    var r=this;
    r.scrollTo(r._firstItem-r.get("scrollIncrement"));
},
scrollForward:function(){
    var r=this;
    r.scrollTo(r._firstItem+r.get("scrollIncrement"));
},
scrollPageBackward:function(){
    var t=this,u=t.get("isVertical"),s=t._cols,r=t._firstItem-t.get("numVisible");
    if(r<0){
        if(s){
            r=t._firstItem-s;
        }
    }
    if(t.get("selectOnScroll")){
    t._selectedItem=t._getSelectedItem(r);
}
t.scrollTo(r);
},
scrollPageForward:function(){
    var s=this,r=s._firstItem+s.get("numVisible");
    if(r>s.get("numItems")){
        r=0;
    }
    if(s.get("selectOnScroll")){
        s._selectedItem=s._getSelectedItem(r);
    }
    s.scrollTo(r);
},
scrollTo:function(AL,AI){
    var AH=this,u,AJ,z,AB,AC,AM,AN,AO,AD,AA,v,AF,s,w,t,x,AE,y,AP,AK=AH._itemsTable,AG=AK.items,r=AK.loading;
    if(p.isUndefined(AL)||AL==AH._firstItem||AH.isAnimating()){
        return;
    }
    AJ=AH.get("animation");
    z=AH.get("isCircular");
    AB=AH.get("isVertical");
    AA=AH._cols;
    v=AH._rows;
    AO=AH._firstItem;
    AF=AH.get("numItems");
    s=AH.get("numVisible");
    t=AH.get("currentPage");
    AP=function(){
        if(AH.isAutoPlayOn()){
            AH.stopAutoPlay();
        }
    };

if(AL<0){
    if(z){
        AL=AF+AL;
    }else{
        AP.call(AH);
        return;
    }
}else{
    if(AF>0&&AL>AF-1){
        if(AH.get("isCircular")){
            AL=AF-AL;
        }else{
            AP.call(AH);
            return;
        }
    }
}
if(isNaN(AL)){
    return;
}
AN=(AH._firstItem>AL)?"backward":"forward";
AE=AO+s;
AE=(AE>AF-1)?AF-1:AE;
x=AH.fireEvent(i,{
    dir:AN,
    first:AO,
    last:AE
});
if(x===false){
    return;
}
AH.fireEvent(J,{
    page:t
});
AD=AL+s-1;
AH._loadItems(AD>AF-1?AF-1:AD);
AM=0-AL;
if(v){
    if(AB){
        AM=parseInt(AM/AA,10);
    }else{
        AM=parseInt(AM/v,10);
    }
}
y=0;
while(AM<0&&y<AL+s-1&&y<AF){
    if(!AG[y]&&!r[y]){
        AM++;
    }
    y+=v?v:1;
}
AH._firstItem=AL;
AH.set("firstVisible",AL);
AE=AL+s;
AE=(AE>AF-1)?AF-1:AE;
w=j.call(AH,AM);
u=AJ.speed>0;
if(u){
    AH._animateAndSetCarouselOffset(w,AL,AE,AI);
}else{
    AH._setCarouselOffset(w);
    E.call(AH,AL,AE);
}
},
getPageForItem:function(r){
    return Math.ceil((r+1)/parseInt(this.get("numVisible"),10));
},
getFirstVisibleOnPage:function(r){
    return(r-1)*this.get("numVisible");
},
selectPreviousItem:function(){
    var t=this,s=0,r=t.get("selectedItem");
    if(r==this._firstItem){
        s=r-t.get("numVisible");
        t._selectedItem=t._getSelectedItem(r-1);
        t.scrollTo(s);
    }else{
        s=t.get("selectedItem")-t.get("scrollIncrement");
        t.set("selectedItem",t._getSelectedItem(s));
    }
},
selectNextItem:function(){
    var s=this,r=0;
    r=s.get("selectedItem")+s.get("scrollIncrement");
    s.set("selectedItem",s._getSelectedItem(r));
},
show:function(){
    var s=this,r=s.CLASSES;
    if(s.fireEvent(Y)!==false){
        s.addClass(r.VISIBLE);
        s.fireEvent(V);
    }
},
startAutoPlay:function(){
    var r=this,s;
    if(p.isUndefined(r._autoPlayTimer)){
        s=r.get("autoPlayInterval");
        if(s<=0){
            return;
        }
        r._isAutoPlayInProgress=true;
        r.fireEvent(Z);
        r._autoPlayTimer=setTimeout(function(){
            r._autoScroll();
        },s);
    }
},
stopAutoPlay:function(){
    var r=this;
    if(!p.isUndefined(r._autoPlayTimer)){
        clearTimeout(r._autoPlayTimer);
        delete r._autoPlayTimer;
        r._isAutoPlayInProgress=false;
        r.fireEvent(q);
    }
},
updatePagination:function(){
    var z=this,x=z._pagination;
    if(!x.el){
        return false;
    }
    var w=z.get("numItems"),AA=z.get("numVisible"),u=z.get("firstVisible")+1,v=z.get("currentPage")+1,r=z.get("numPages"),t={
        "numVisible":AA,
        "numPages":r,
        "numItems":w,
        "selectedItem":z.get("selectedItem")+1,
        "currentPage":v,
        "firstVisible":u,
        "lastVisible":z.get("lastVisible")+1
        },s=x.callback||{},y=s.scope&&s.obj?s.obj:z;
    x.el.innerHTML=p.isFunction(s.fn)?s.fn.apply(y,[x.template,t]):YAHOO.lang.substitute(x.template,t);
},
registerPagination:function(s,u,r){
    var t=this;
    t._pagination.template=s;
    t._pagination.callback=r||{};

    if(!t._pagination.el){
        t._pagination.el=W("DIV",{
            className:t.CLASSES.PAGINATION
            });
        if(u=="before"){
            t._navEl.insertBefore(t._pagination.el,t._navEl.firstChild);
        }else{
            t._navEl.appendChild(t._pagination.el);
        }
        t.on("itemSelected",t.updatePagination);
        t.on("pageChange",t.updatePagination);
    }
    t.updatePagination();
},
toString:function(){
    return P+(this.get?" (#"+this.get("id")+")":"");
},
_animateAndSetCarouselOffset:function(w,u,s){
    var v=this,t=v.get("animation"),r=null;
    if(v.get("isVertical")){
        r=new YAHOO.util.Motion(v._carouselEl,{
            top:{
                to:w
            }
        },t.speed,t.effect);
}else{
    r=new YAHOO.util.Motion(v._carouselEl,{
        left:{
            to:w
        }
    },t.speed,t.effect);
}
v._isAnimationInProgress=true;
r.onComplete.subscribe(v._animationCompleteHandler,{
    scope:v,
    item:u,
    last:s
});
r.animate();
},
_animationCompleteHandler:function(r,s,t){
    t.scope._isAnimationInProgress=false;
    E.call(t.scope,t.item,t.last);
},
_autoScroll:function(){
    var s=this,t=s._firstItem,r;
    if(t>=s.get("numItems")-1){
        if(s.get("isCircular")){
            r=0;
        }else{
            s.stopAutoPlay();
        }
    }else{
    r=t+s.get("numVisible");
}
s._selectedItem=s._getSelectedItem(r);
s.scrollTo.call(s,r);
},
_createCarousel:function(s){
    var u=this,r=u.CLASSES,t=e.get(s);
    if(!t){
        t=W("DIV",{
            className:r.CAROUSEL,
            id:s
        });
    }
    if(!u._carouselEl){
        u._carouselEl=W(u.get("carouselEl"),{
            className:r.CAROUSEL_EL
            });
    }
    return t;
},
_createCarouselClip:function(){
    return W("DIV",{
        className:this.CLASSES.CONTENT
        });
},
_createCarouselItem:function(u){
    var r,t=this,s=m.call(t,u.pos);
    return W(t.get("carouselItemEl"),{
        className:u.className,
        styles:u.styles,
        content:u.content,
        id:u.id
        });
},
_getValidIndex:function(t){
    var w=this,r=w.get("isCircular"),u=w.get("numItems"),v=w.get("numVisible"),s=u-1;
    if(t<0){
        t=r?Math.ceil(u/v)*v+t:0;
    }else{
        if(t>s){
            t=r?0:s;
        }
    }
    return t;
},
_getSelectedItem:function(v){
    var u=this,r=u.get("isCircular"),t=u.get("numItems"),s=t-1;
    if(v<0){
        if(r){
            v=t+v;
        }else{
            v=u.get("selectedItem");
        }
    }else{
    if(v>s){
        if(r){
            v=v-t;
        }else{
            v=u.get("selectedItem");
        }
    }
}
return v;
},
_itemClickHandler:function(v){
    var y=this,w=y.get("carouselItemEl"),s=y.get("element"),t,u,x=c.getTarget(v),r=x.tagName.toUpperCase();
    if(r==="INPUT"||r==="SELECT"||r==="TEXTAREA"){
        return;
    }while(x&&x!=s&&x.id!=y._carouselEl){
        t=x.nodeName;
        if(t.toUpperCase()==w){
            break;
        }
        x=x.parentNode;
    }
    if((u=y.getItemPositionById(x.id))>=0){
        y.set("selectedItem",y._getSelectedItem(u));
        y.focus();
    }
},
_keyboardEventHandler:function(t){
    var v=this,s=c.getCharCode(t),u=c.getTarget(t),r=false;
    if(v.isAnimating()||u.tagName.toUpperCase()==="SELECT"){
        return;
    }
    switch(s){
        case 37:case 38:
            v.selectPreviousItem();
            r=true;
            break;
        case 39:case 40:
            v.selectNextItem();
            r=true;
            break;
        case 33:
            v.scrollPageBackward();
            r=true;
            break;
        case 34:
            v.scrollPageForward();
            r=true;
            break;
    }
    if(r){
        if(v.isAutoPlayOn()){
            v.stopAutoPlay();
        }
        c.preventDefault(t);
    }
},
_loadItems:function(t){
    var w=this,s=w.get("numItems"),u=w.get("numVisible"),v=w.get("revealAmount"),x=w._itemsTable.items.length,r=w.get("lastVisible");
    if(x>t&&t+1>=u){
        x=t%u||t==r?t-t%u:t-u+1;
    }
    if(v&&t<s-1){
        t++;
    }
    if(t>=x&&(!w.getItem(x)||!w.getItem(t))){
        w.fireEvent(L,{
            ev:L,
            first:x,
            last:t,
            num:t-x+1
            });
    }
},
_pagerChangeHandler:function(s){
    var v=this,u=c.getTarget(s),t=u.value,r;
    if(t){
        r=v.getFirstVisibleOnPage(t);
        v._selectedItem=r;
        v.scrollTo(r);
        v.focus();
    }
},
_pagerClickHandler:function(x){
    var z=this,t=z.CLASSES,u=c.getTarget(x),s=u.nodeName.toUpperCase(),r,w,v,y;
    if(e.hasClass(u,t.PAGER_ITEM)||e.hasClass(u.parentNode,t.PAGER_ITEM)){
        if(s=="EM"){
            u=u.parentNode;
        }
        r=u.href;
        w=r.lastIndexOf("#");
        v=parseInt(r.substring(w+1),10);
        if(v!=-1){
            y=z.getFirstVisibleOnPage(v);
            z._selectedItem=y;
            z.scrollTo(y);
            z.focus();
        }
        c.preventDefault(x);
    }
},
_parseCarousel:function(t){
    var w=this,x,r,s,v,u;
    r=w.CLASSES;
    s=w.get("carouselEl");
    v=false;
    for(x=t.firstChild;x;x=x.nextSibling){
        if(x.nodeType==1){
            u=x.nodeName;
            if(u.toUpperCase()==s){
                w._carouselEl=x;
                e.addClass(w._carouselEl,w.CLASSES.CAROUSEL_EL);
                v=true;
            }
        }
    }
    return v;
},
_parseCarouselItems:function(){
    var y=this,AA=y.CLASSES,v=0,z,r,t,u,s,w=y.get("firstVisible"),x=y._carouselEl;
    z=y._rows;
    t=y.get("carouselItemEl");
    for(r=x.firstChild;r;r=r.nextSibling){
        if(r.nodeType==1){
            s=r.nodeName;
            if(s.toUpperCase()==t){
                if(r.id){
                    u=r.id;
                }else{
                    u=e.generateId();
                    r.setAttribute("id",u);
                }
                y.addItem(r,w);
                w++;
            }
        }
    }
},
_parseCarouselNavigation:function(x){
    var y=this,w,z=y.CLASSES,s,v,u,r,t=false;
    r=e.getElementsByClassName(z.PREV_PAGE,"*",x);
    if(r.length>0){
        for(v in r){
            if(r.hasOwnProperty(v)){
                s=r[v];
                if(s.nodeName=="INPUT"||s.nodeName=="BUTTON"||s.nodeName=="A"){
                    y._navBtns.prev.push(s);
                }else{
                    u=s.getElementsByTagName("INPUT");
                    if(p.isArray(u)&&u.length>0){
                        y._navBtns.prev.push(u[0]);
                    }else{
                        u=s.getElementsByTagName("BUTTON");
                        if(p.isArray(u)&&u.length>0){
                            y._navBtns.prev.push(u[0]);
                        }
                    }
                }
        }
        }
    w={
    prev:r
};

}
r=e.getElementsByClassName(z.NEXT_PAGE,"*",x);
if(r.length>0){
    for(v in r){
        if(r.hasOwnProperty(v)){
            s=r[v];
            if(s.nodeName=="INPUT"||s.nodeName=="BUTTON"||s.nodeName=="A"){
                y._navBtns.next.push(s);
            }else{
                u=s.getElementsByTagName("INPUT");
                if(p.isArray(u)&&u.length>0){
                    y._navBtns.next.push(u[0]);
                }else{
                    u=s.getElementsByTagName("BUTTON");
                    if(p.isArray(u)&&u.length>0){
                        y._navBtns.next.push(u[0]);
                    }
                }
            }
    }
    }
if(w){
    w.next=r;
}else{
    w={
        next:r
    };

}
}
if(w){
    y.set("navigation",w);
    t=true;
}
return t;
},
_refreshUi:function(){
    var v=this,s,w=v.get("isVertical"),y=v.get("firstVisible"),t,x,r,u;
    if(v._itemsTable.numItems<1){
        return;
    }
    u=O.call(v,w?"height":"width");
    t=v._itemsTable.items[y].id;
    u=w?d(t,"width"):d(t,"height");
    e.setStyle(v._carouselEl,w?"width":"height",u+"px");
    v._hasRendered=true;
    v.fireEvent(H);
},
_setCarouselOffset:function(t){
    var r=this,s;
    s=r.get("isVertical")?"top":"left";
    e.setStyle(r._carouselEl,s,t+"px");
},
_setupCarouselNavigation:function(){
    var w=this,u,s,r,y,v,x,t;
    r=w.CLASSES;
    v=e.getElementsByClassName(r.NAVIGATION,"DIV",w.get("element"));
    if(v.length===0){
        v=W("DIV",{
            className:r.NAVIGATION
            });
        w.insertBefore(v,e.getFirstChild(w.get("element")));
    }else{
        v=v[0];
    }
    w._pages.el=W("UL");
    v.appendChild(w._pages.el);
    y=w.get("navigation");
    if(p.isString(y.prev)||p.isArray(y.prev)){
        if(p.isString(y.prev)){
            y.prev=[y.prev];
        }
        for(u in y.prev){
            if(y.prev.hasOwnProperty(u)){
                w._navBtns.prev.push(e.get(y.prev[u]));
            }
        }
        }else{
    t=W("SPAN",{
        className:r.BUTTON+r.FIRST_NAV
        });
    e.setStyle(t,"visibility","visible");
    u=e.generateId();
    t.innerHTML='<button type="button" '+'id="'+u+'" name="'+w.STRINGS.PREVIOUS_BUTTON_TEXT+'">'+w.STRINGS.PREVIOUS_BUTTON_TEXT+"</button>";
    v.appendChild(t);
    u=e.get(u);
    w._navBtns.prev=[u];
    s={
        prev:[t]
        };

}
if(p.isString(y.next)||p.isArray(y.next)){
    if(p.isString(y.next)){
        y.next=[y.next];
    }
    for(u in y.next){
        if(y.next.hasOwnProperty(u)){
            w._navBtns.next.push(e.get(y.next[u]));
        }
    }
    }else{
    x=W("SPAN",{
        className:r.BUTTON+r.NEXT_NAV
        });
    e.setStyle(x,"visibility","visible");
    u=e.generateId();
    x.innerHTML='<button type="button" '+'id="'+u+'" name="'+w.STRINGS.NEXT_BUTTON_TEXT+'">'+w.STRINGS.NEXT_BUTTON_TEXT+"</button>";
    v.appendChild(x);
    u=e.get(u);
    w._navBtns.next=[u];
    if(s){
        s.next=[x];
    }else{
        s={
            next:[x]
            };

}
}
if(s){
    w.set("navigation",s);
}
return v;
},
_setClipContainerSize:function(r,t){
    var z=this,x=z.get("isVertical"),AB=z._rows,v=z._cols,y=z.get("revealAmount"),s=O.call(z,"height"),u=O.call(z,"width"),AA,w;
    r=r||z._clipEl;
    if(AB){
        AA=s*AB;
        w=u*v;
    }else{
        t=t||z.get("numVisible");
        if(x){
            AA=s*t;
        }else{
            w=u*t;
        }
    }
    z._recomputeSize=(AA===0);
if(z._recomputeSize){
    z._hasRendered=false;
    return;
}
y=N.call(z);
if(x){
    AA+=(y*2);
}else{
    w+=(y*2);
}
if(x){
    AA+=M(z._carouselEl,"height");
    e.setStyle(r,"height",AA+"px");
    if(v){
        w+=M(z._carouselEl,"width");
        e.setStyle(r,"width",w+(0)+"px");
    }
}else{
    w+=M(z._carouselEl,"width");
    e.setStyle(r,"width",w+"px");
    if(AB){
        AA+=M(z._carouselEl,"height");
        e.setStyle(r,"height",AA+"px");
    }
}
z._setContainerSize(r);
},
_setContainerSize:function(s,t){
    var w=this,r=w.CONFIG,z=w.CLASSES,v,y,u,x;
    v=w.get("isVertical");
    y=w._rows;
    u=w._cols;
    s=s||w._clipEl;
    t=t||(v?"height":"width");
    x=parseFloat(e.getStyle(s,t),10);
    x=p.isNumber(x)?x:0;
    if(v){
        x+=M(w._carouselEl,"height")+d(w._navEl,"height");
    }else{
        x+=M(w._carouselEl,"width");
    }
    if(!v){
        if(x<r.HORZ_MIN_WIDTH){
            x=r.HORZ_MIN_WIDTH;
            w.addClass(z.MIN_WIDTH);
        }
    }
    w.setStyle(t,x+"px");
if(v){
    x=O.call(w,"width");
    if(u){
        x=x*u;
    }
    e.setStyle(w._carouselEl,"width",x+"px");
    if(x<r.VERT_MIN_WIDTH){
        x=r.VERT_MIN_WIDTH;
        w.addClass(z.MIN_WIDTH);
    }
    w.setStyle("width",x+"px");
}else{
    if(y){
        x=O.call(w,"height");
        x=x*y;
        e.setStyle(w._carouselEl,"height",x+"px");
    }
}
},
_setFirstVisible:function(s){
    var r=this;
    if(s>=0&&s<r.get("numItems")){
        r.scrollTo(s);
    }else{
        s=r.get("firstVisible");
    }
    return s;
},
_setNavigation:function(r){
    var s=this;
    if(r.prev){
        c.on(r.prev,"click",f,s);
    }
    if(r.next){
        c.on(r.next,"click",k,s);
    }
},
_setNumVisible:function(s){
    var r=this;
    r._setClipContainerSize(r._clipEl,s);
},
_numVisibleSetter:function(t){
    var s=this,r=t;
    if(p.isArray(t)){
        s._cols=t[0];
        s._rows=t[1];
        r=t[0]*t[1];
    }
    return r;
},
_selectedItemSetter:function(s){
    var r=this;
    return(s<r.get("numItems"))?s:0;
},
_setNumItems:function(t){
    var s=this,r=s._itemsTable.numItems;
    if(p.isArray(s._itemsTable.items)){
        if(s._itemsTable.items.length!=r){
            r=s._itemsTable.items.length;
            s._itemsTable.numItems=r;
        }
    }
    if(t<r){
    while(r>t){
        s.removeItem(r-1);
        r--;
    }
}
return t;
},
_setOrientation:function(t){
    var s=this,r=s.CLASSES;
    if(t){
        s.replaceClass(r.HORIZONTAL,r.VERTICAL);
    }else{
        s.replaceClass(r.VERTICAL,r.HORIZONTAL);
    }
    this._itemAttrCache={};

    return t;
},
_setRevealAmount:function(s){
    var r=this;
    if(s>=0&&s<=100){
        s=parseInt(s,10);
        s=p.isNumber(s)?s:0;
        r._setClipContainerSize();
    }else{
        s=r.get("revealAmount");
    }
    return s;
},
_setSelectedItem:function(r){
    this._selectedItem=r;
},
_getNumPages:function(){
    return Math.ceil(parseInt(this.get("numItems"),10)/parseInt(this.get("numVisible"),10));
},
_getLastVisible:function(){
    var r=this;
    return r.get("currentPage")+1==r.get("numPages")?r.get("numItems")-1:r.get("firstVisible")+r.get("numVisible")-1;
},
_syncUiForItemAdd:function(u){
    var v,AA=this,x=AA._carouselEl,r,AB,t=AA._itemsTable,s,w,y,z;
    w=p.isUndefined(u.pos)?u.newPos||t.numItems-1:u.pos;
    if(!s){
        AB=t.items[w]||{};

        r=AA._createCarouselItem({
            className:AB.className,
            styles:AB.styles,
            content:AB.item,
            id:AB.id,
            pos:w
        });
        if(p.isUndefined(u.pos)){
            if(!p.isUndefined(t.loading[w])){
                s=t.loading[w];
            }
            if(s){
                x.replaceChild(r,s);
                delete t.loading[w];
            }else{
                x.appendChild(r);
            }
        }else{
        if(!p.isUndefined(t.items[u.pos+1])){
            y=e.get(t.items[u.pos+1].id);
        }
        if(y){
            x.insertBefore(r,y);
        }else{}
}
}else{
    if(p.isUndefined(u.pos)){
        if(!e.isAncestor(AA._carouselEl,s)){
            x.appendChild(s);
        }
    }else{
    if(!e.isAncestor(x,s)){
        if(!p.isUndefined(t.items[u.pos+1])){
            x.insertBefore(s,e.get(t.items[u.pos+1].id));
        }
    }
}
}
if(!AA._hasRendered){
    AA._refreshUi();
}
if(AA.get("selectedItem")<0){
    AA.set("selectedItem",AA.get("firstVisible"));
}
AA._syncUiItems();
},
_syncUiForItemReplace:function(x){
    var w=this,t=w._carouselEl,r=w._itemsTable,y=x.pos,v=x.newItem,s=x.oldItem,u;
    u=w._createCarouselItem({
        className:v.className,
        styles:v.styles,
        content:v.item,
        id:v.id,
        pos:y
    });
    if(u&&s){
        c.purgeElement(s,true);
        t.replaceChild(u,e.get(s.id));
        if(!p.isUndefined(r.loading[y])){
            r.numItems++;
            delete r.loading[y];
        }
    }
    if(!w._hasRendered){
    w._refreshUi();
}
w._syncUiItems();
},
_syncUiForItemRemove:function(w){
    var v=this,r=v._carouselEl,t,u,s,x;
    s=v.get("numItems");
    u=w.item;
    x=w.pos;
    if(u&&(t=e.get(u.id))){
        if(t&&e.isAncestor(r,t)){
            c.purgeElement(t,true);
            r.removeChild(t);
        }
        if(v.get("selectedItem")==x){
            x=x>=s?s-1:x;
        }
    }else{}
v._syncUiItems();
},
_syncUiForLazyLoading:function(v){
    var z=this,x=z._carouselEl,t=z._itemsTable,w=t.items.length,y=t.items[v.last+1],r,s;
    if(!y&&v.last<w){
        s=v.first;
        do{
            y=t.items[s];
            s++;
        }while(s<w&&!y);
    }
    for(var u=v.first;u<=v.last;u++){
        if(p.isUndefined(t.loading[u])&&p.isUndefined(t.items[u])){
            r=z._createCarouselItem({
                className:z.CLASSES.ITEM_LOADING,
                content:z.STRINGS.ITEM_LOADING_CONTENT,
                id:e.generateId(),
                pos:u
            });
            if(r){
                if(y){
                    y=e.get(y.id);
                    if(y){
                        x.insertBefore(r,y);
                    }else{}
            }else{
                x.appendChild(r);
            }
        }
        t.loading[u]=r;
    }
}
z._syncUiItems();
},
_syncUiItems:function(){
    var u,y=this,w=y.get("numItems"),t,s=y._itemsTable,v=s.items,r=s.loading,z,x;
    for(t=0;t<w;t++){
        z=v[t]||r[t];
        if(z&&z.id){
            x=m.call(y,t);
            z.styles=z.styles||{};

            for(u in x){
                if(x.hasOwnProperty(u)){
                    z.styles[u]=x[u];
                }
            }
            G(e.get(z.id),x);
    }
    }
},
_updateNavButtons:function(v,s){
    var t,r=this.CLASSES,w,u=v.parentNode;
    if(!u){
        return;
    }
    w=u.parentNode;
    if(v.nodeName.toUpperCase()=="BUTTON"&&e.hasClass(u,r.BUTTON)){
        if(s){
            if(w){
                t=e.getChildren(w);
                if(t){
                    e.removeClass(t,r.FOCUSSED_BUTTON);
                }
            }
            e.addClass(u,r.FOCUSSED_BUTTON);
    }else{
        e.removeClass(u,r.FOCUSSED_BUTTON);
    }
}
},
_updatePagerButtons:function(){
    var z=this,x=z.CLASSES,y=z._pages.cur,r,w,u,AA,s=z.get("numVisible"),v=z._pages.num,t=z._pages.el;
    if(v===0||!t){
        return;
    }
    e.setStyle(t,"visibility","hidden");
    while(t.firstChild){
        t.removeChild(t.firstChild);
    }
    for(u=0;u<v;u++){
        r=document.createElement("LI");
        if(u===0){
            e.addClass(r,x.FIRST_PAGE);
        }
        if(u==y){
            e.addClass(r,x.SELECTED_NAV);
        }
        w="<a class="+x.PAGER_ITEM+' href="#'+(u+1)+'" tabindex="0"><em>'+z.STRINGS.PAGER_PREFIX_TEXT+" "+(u+1)+"</em></a>";
        r.innerHTML=w;
        t.appendChild(r);
    }
    e.setStyle(t,"visibility","visible");
},
_updatePagerMenu:function(){
    var z=this,x=z.CLASSES,y=z._pages.cur,s,v,AA,t=z.get("numVisible"),w=z._pages.num,u=z._pages.el,r;
    if(w===0){
        return;
    }
    r=document.createElement("SELECT");
    if(!r){
        return;
    }
    e.setStyle(u,"visibility","hidden");
    while(u.firstChild){
        u.removeChild(u.firstChild);
    }
    for(v=0;v<w;v++){
        s=document.createElement("OPTION");
        s.value=v+1;
        s.innerHTML=z.STRINGS.PAGER_PREFIX_TEXT+" "+(v+1);
        if(v==y){
            s.setAttribute("selected","selected");
        }
        r.appendChild(s);
    }
    s=document.createElement("FORM");
    if(!s){}else{
        s.appendChild(r);
        u.appendChild(s);
    }
    c.addListener(r,"change",z._pagerChangeHandler,this,true);
    e.setStyle(u,"visibility","visible");
},
_updateTabIndex:function(r){
    var s=this;
    if(r){
        if(s._focusableItemEl){
            s._focusableItemEl.tabIndex=-1;
        }
        s._focusableItemEl=r;
        r.tabIndex=0;
    }
},
_validateAnimation:function(r){
    var s=true;
    if(p.isObject(r)){
        if(r.speed){
            s=s&&p.isNumber(r.speed);
        }
        if(r.effect){
            s=s&&p.isFunction(r.effect);
        }else{
            if(!p.isUndefined(YAHOO.util.Easing)){
                r.effect=YAHOO.util.Easing.easeOut;
            }
        }
    }else{
    s=false;
}
return s;
},
_validateFirstVisible:function(t){
    var s=this,r=s.get("numItems");
    if(p.isNumber(t)){
        if(r===0&&t==r){
            return true;
        }else{
            return(t>=0&&t<r);
        }
    }
    return false;
},
_validateNavigation:function(r){
    var s;
    if(!p.isObject(r)){
        return false;
    }
    if(r.prev){
        if(!p.isArray(r.prev)){
            return false;
        }
        for(s in r.prev){
            if(r.prev.hasOwnProperty(s)){
                if(!p.isString(r.prev[s].nodeName)){
                    return false;
                }
            }
        }
        }
    if(r.next){
    if(!p.isArray(r.next)){
        return false;
    }
    for(s in r.next){
        if(r.next.hasOwnProperty(s)){
            if(!p.isString(r.next[s].nodeName)){
                return false;
            }
        }
    }
    }
return true;
},
_validateNumItems:function(r){
    return p.isNumber(r)&&(r>=0);
},
_validateNumVisible:function(r){
    var s=false;
    if(p.isNumber(r)){
        s=r>0&&r<=this.get("numItems");
    }else{
        if(p.isArray(r)){
            if(p.isNumber(r[0])&&p.isNumber(r[1])){
                s=r[0]*r[1]>0&&r.length==2;
            }
        }
    }
return s;
},
_validateRevealAmount:function(r){
    var s=false;
    if(p.isNumber(r)){
        s=r>=0&&r<100;
    }
    return s;
},
_validateScrollIncrement:function(r){
    var s=false;
    if(p.isNumber(r)){
        s=(r>0&&r<this.get("numItems"));
    }
    return s;
}
});
})();
YAHOO.register("carousel",YAHOO.widget.Carousel,{
    version:"2.8.1",
    build:"19"
});