scrollview-scrollbars-min.js revision d8d2286d8330892bb02eb2bf0735322f559ef5ef
YUI.add("scrollview-scrollbars",function(d){var a=d.ClassNameManager.getClassName,c,b=d.Transition;NATIVE_TRANSITIONS=b.useNative,SCROLLBAR="scrollbar",SCROLLVIEW="scrollview",VERTICAL_NODE="verticalNode",HORIZONTAL_NODE="horizontalNode",CHILD_CACHE="childCache",TOP="top",LEFT="left",WIDTH="width",HEIGHT="height",SCROLL_WIDTH="scrollWidth",SCROLL_HEIGHT="scrollHeight",HORIZ_CACHE="_sbh",VERT_CACHE="_sbv",TRANSITION_PROPERTY=b._VENDOR_PREFIX+"TransitionProperty",TRANSFORM="transform",TRANSLATE_X="translateX(",TRANSLATE_Y="translateY(",SCALE_X="scaleX(",SCALE_Y="scaleY(",SCROLL_X="scrollX",SCROLL_Y="scrollY",PX="px",CLOSE=")",PX_CLOSE=PX+CLOSE;function e(){e.superclass.constructor.apply(this,arguments);}e.CLASS_NAMES={showing:a(SCROLLVIEW,SCROLLBAR,"showing"),scrollbar:a(SCROLLVIEW,SCROLLBAR),scrollbarV:a(SCROLLVIEW,SCROLLBAR,"vert"),scrollbarH:a(SCROLLVIEW,SCROLLBAR,"horiz"),scrollbarVB:a(SCROLLVIEW,SCROLLBAR,"vert","basic"),scrollbarHB:a(SCROLLVIEW,SCROLLBAR,"horiz","basic"),child:a(SCROLLVIEW,"child"),first:a(SCROLLVIEW,"first"),middle:a(SCROLLVIEW,"middle"),last:a(SCROLLVIEW,"last")};c=e.CLASS_NAMES;e.NAME="pluginScrollViewScrollbars";e.NS="scrollbars";e.SCROLLBAR_TEMPLATE=["<div>",'<span class="'+c.child+" "+c.first+'"></span>','<span class="'+c.child+" "+c.middle+'"></span>','<span class="'+c.child+" "+c.last+'"></span>',"</div>"].join("");e.ATTRS={verticalNode:{setter:"_setNode",valueFn:"_defaultNode"},horizontalNode:{setter:"_setNode",valueFn:"_defaultNode"}};d.namespace("Plugin").ScrollViewScrollbars=d.extend(e,d.Plugin.Base,{initializer:function(){this._host=this.get("host");this.afterHostEvent("scrollEnd",this._hostScrollEnd);this.afterHostMethod("_uiScrollTo",this._update);this.afterHostMethod("_uiDimensionsChange",this._hostDimensionsChange);},_hostDimensionsChange:function(){var f=this._host;this._renderBar(this.get(VERTICAL_NODE),f._scrollsVertical);this._renderBar(this.get(HORIZONTAL_NODE),f._scrollsHorizontal);this._update();d.later(500,this,"flash",true);},_hostScrollEnd:function(f){if(!this._host._flicking){this.flash();}},_renderBar:function(g,i){var h=g.inDoc(),j=this._host._bb,f=g.getData("isHoriz")?c.scrollbarHB:c.scrollbarVB;if(i&&!h){j.append(g);g.toggleClass(f,this._basic);this._setChildCache(g);}else{if(!i&&h){g.remove();this._clearChildCache(g);}}},_setChildCache:function(i){var k=i.get("children"),g=k.item(0),j=k.item(1),h=k.item(2),f=i.getData("isHoriz")?"offsetWidth":"offsetHeight";i.setStyle(TRANSITION_PROPERTY,TRANSFORM);j.setStyle(TRANSITION_PROPERTY,TRANSFORM);h.setStyle(TRANSITION_PROPERTY,TRANSFORM);i.setData(CHILD_CACHE,{fc:g,lc:h,mc:j,fcSize:g&&g.get(f),lcSize:h&&h.get(f)});},_clearChildCache:function(f){f.clearData(CHILD_CACHE);},_updateBar:function(f,o,h,y){var m=this._host,i=this._basic,n=m._cb,t=0,p=1,g=f.getData(CHILD_CACHE),u=g.lc,x=g.mc,C=g.fcSize,B=g.lcSize,q,z,w,l,A,s,j,v,r,k;if(y){s=WIDTH;j=LEFT;v=HORIZ_CACHE;r=m.get(s);k=m._scrollWidth||n.get(SCROLL_WIDTH);l=TRANSLATE_X;A=SCALE_X;o=(o!==undefined)?o:m.get(SCROLL_X);}else{s=HEIGHT;j=TOP;v=VERT_CACHE;r=m.get(s);k=m._scrollHeight||n.get(SCROLL_HEIGHT);l=TRANSLATE_Y;A=SCALE_Y;o=(o!==undefined)?o:m.get(SCROLL_Y);}t=Math.floor(r*(r/k));p=Math.floor((o/(k-r))*(r-t));if(t>r){t=1;}if(p>(r-t)){t=t-(p-(r-t));}else{if(p<0){t=p+t;p=0;}}q=(t-(C+B));if(q<0){q=0;}if(q===0&&p!==0){p=r-(C+B)-1;}if(h!==0){w={duration:h};if(NATIVE_TRANSITIONS){w.transform=l+p+PX_CLOSE;}else{w[j]=p+PX;}f.transition(w);}else{if(NATIVE_TRANSITIONS){f.setStyle(TRANSFORM,l+p+PX_CLOSE);}else{f.setStyle(j,p+PX);}}if(this[v]!==q){this[v]=q;if(q>0){if(h!==0){w={duration:h};if(NATIVE_TRANSITIONS){w.transform=A+q+CLOSE;}else{w[s]=q+PX;}x.transition(w);}else{if(NATIVE_TRANSITIONS){x.setStyle(TRANSFORM,A+q+CLOSE);}else{x.setStyle(s,q+PX);}}if(!y||!i){z=t-B;if(h!==0){w={duration:h};if(NATIVE_TRANSITIONS){w.transform=l+z+PX_CLOSE;}else{w[j]=z;}u.transition(w);}else{if(NATIVE_TRANSITIONS){u.setStyle(TRANSFORM,l+z+PX_CLOSE);}else{u.setStyle(j,z+PX);}}}}}},_update:function(g,l,j,k){var i=this.get(VERTICAL_NODE),f=this.get(HORIZONTAL_NODE),h=this._host;j=(j||0)/1000;if(!this._showing){this.show();}if(h._scrollsVertical&&i){this._updateBar(i,l,j,false);}if(h._scrollsHorizontal&&f){this._updateBar(f,g,j,true);}},show:function(f){this._show(true,f);},hide:function(f){this._show(false,f);},_show:function(f,i){var h=this.get(VERTICAL_NODE),j=this.get(HORIZONTAL_NODE),k=(i)?0.6:0,g=(f)?1:0,l;this._showing=f;if(this._flashTimer){this._flashTimer.cancel();}l={duration:k,opacity:g};if(h){h.transition(l);}if(j){j.transition(l);}},flash:function(){var f=false,g=this._host;if(g._scrollsVertical&&(g._scrollHeight>g.get(HEIGHT))){f=true;}if(g._scrollsHorizontal&&(g._scrollWidth>g.get(WIDTH))){f=true;}if(f){this.show(true);this._flashTimer=d.later(800,this,"hide",true);}},_setNode:function(g,f){var h=(f==HORIZONTAL_NODE);g=d.one(g);if(g){g.addClass(c.scrollbar);g.addClass((h)?c.scrollbarH:c.scrollbarV);g.setData("isHoriz",h);}return g;},_defaultNode:function(){return d.Node.create(e.SCROLLBAR_TEMPLATE);},_basic:d.UA.ie&&d.UA.ie<=8});},"@VERSION@",{requires:["classnamemanager","transition","plugin"],skinnable:true});