widget-stdmod-min.js revision b1c2d1f8735dc44a6c1a80f77447293503d5a054
YUI.add("widget-stdmod",function(A){var D=A.Lang,P=A.Node,c=A.NodeList,W=A.UA,C=A.Widget,B="",j="hd",h="bd",H="ft",e="header",m="body",k="footer",p="fillHeight",K="stdmod",T="Node",i="Content",o="innerHTML",d="firstChild",G="childNodes",l="createDocumentFragment",M="ownerDocument",U="contentBox",Z="height",g="offsetHeight",X="auto",J="headerContentChange",b="bodyContentChange",N="footerContentChange",R="fillHeightChange",S="HeightChange",q="contentUpdate",V="renderUI",f="bindUI",E="syncUI",Q=A.Widget.UI_SRC;function r(L){this._stdModNode=this.get(U);A.after(this._renderUIStdMod,this,V);A.after(this._bindUIStdMod,this,f);A.after(this._syncUIStdMod,this,E);}r.HEADER=e;r.BODY=m;r.FOOTER=k;r.AFTER="after";r.BEFORE="before";r.REPLACE="replace";var I=r.HEADER,a=r.BODY,O=r.FOOTER,n=r.AFTER,F=r.BEFORE;r.ATTRS={headerContent:{value:null},footerContent:{value:null},bodyContent:{value:null},fillHeight:{value:r.BODY,validator:function(L){return this._validateFillHeight(L);}}};r.HTML_PARSER={headerContent:function(L){return this._parseStdModHTML(I);},bodyContent:function(L){return this._parseStdModHTML(a);},footerContent:function(L){return this._parseStdModHTML(O);}};r.SECTION_CLASS_NAMES={header:C.getClassName(j),body:C.getClassName(h),footer:C.getClassName(H)};r.TEMPLATES={header:'<div class="'+r.SECTION_CLASS_NAMES[I]+'"></div>',body:'<div class="'+r.SECTION_CLASS_NAMES[a]+'"></div>',footer:'<div class="'+r.SECTION_CLASS_NAMES[O]+'"></div>'};r.prototype={_syncUIStdMod:function(){this._uiSetStdMod(I,this.get(I+i));this._uiSetStdMod(a,this.get(a+i));this._uiSetStdMod(O,this.get(O+i));this._uiSetFillHeight(this.get(p));},_renderUIStdMod:function(){this._stdModNode.addClass(C.getClassName(K));},_bindUIStdMod:function(){this.after(J,this._afterHeaderChange);this.after(b,this._afterBodyChange);this.after(N,this._afterFooterChange);this.after(R,this._afterFillHeightChange);this.after(S,this._fillHeight);this.after(q,this._fillHeight);},_afterHeaderChange:function(L){if(L.src!==Q){this._uiSetStdMod(I,L.newVal,L.stdModPosition);}},_afterBodyChange:function(L){if(L.src!==Q){this._uiSetStdMod(a,L.newVal,L.stdModPosition);}},_afterFooterChange:function(L){if(L.src!==Q){this._uiSetStdMod(O,L.newVal,L.stdModPosition);}},_afterFillHeightChange:function(L){this._uiSetFillHeight(L.newVal);},_validateFillHeight:function(L){return !L||L==r.BODY||L==r.HEADER||L==r.FOOTER;},_uiSetFillHeight:function(s){var Y=this.getStdModNode(s);var L=this._currFillNode;if(L&&Y!==L){L.setStyle(Z,B);}if(Y){this._currFillNode=Y;}this._fillHeight();},_fillHeight:function(){if(this.get(p)){var L=this.get(Z);if(L!=B&&L!=X){this.fillHeight(this._currFillNode);}}},_uiSetStdMod:function(t,s,L){if(s){var Y=this.getStdModNode(t)||this._renderStdMod(t);if(s instanceof P||s instanceof c){this._addNodeRef(Y,s,L);}else{this._addNodeHTML(Y,s,L);}this.set(t+i,this._getStdModContent(t),{src:Q});this.fire(q);}},_renderStdMod:function(s){var L=this.get(U),Y=this._findStdModSection(s);if(!Y){Y=this._getStdModTemplate(s);}this._insertStdModSection(L,s,Y);this[s+T]=Y;return this[s+T];},_insertStdModSection:function(L,t,s){var Y=L.get(d);if(t===O||!Y){L.appendChild(s);}else{if(t===I){L.insertBefore(s,Y);}else{var u=this[O+T];if(u){L.insertBefore(s,u);}else{L.appendChild(s);}}}},_getStdModTemplate:function(L){return P.create(r.TEMPLATES[L],this._stdModNode.get(M));},_addNodeHTML:function(s,Y,L){if(L==n){s.append(Y);}else{if(L==F){s.prepend(Y);}else{s.setContent(Y);}}},_addNodeRef:function(w,u,Y){var L=true,t,v;if(Y==F){var x=w.get(d);if(x){if(u instanceof c){for(t=u.size()-1;t>=0;--t){w.insertBefore(u.item(t),x);}}else{w.insertBefore(u,x);}L=false;}}else{if(Y!=n){w.set(o,B);}}if(L){if(u instanceof c){for(t=0,v=u.size();t<v;++t){w.appendChild(u.item(t));}}else{w.appendChild(u);}}},_getPreciseHeight:function(s){var L=(s)?s.get(g):0,t="getBoundingClientRect";if(s&&s.hasMethod(t)){var Y=s.invoke(t);if(Y){L=Y.bottom-Y.top;}}return L;},_findStdModSection:function(L){return this.get(U).one("> ."+r.SECTION_CLASS_NAMES[L]);},_parseStdModHTML:function(v){var u=this._findStdModSection(v),s,Y;if(u){s=u.get(M).invoke(l);Y=u.get(G);for(var L=Y.size()-1;L>=0;L--){var t=s.get(d);if(t){s.insertBefore(Y.item(L),t);}else{s.appendChild(Y.item(L));}}return s;}return null;},_getStdModContent:function(L){return(this[L+T])?this[L+T].get(G):null;},setStdModContent:function(s,Y,L){this.set(s+i,Y,{stdModPosition:L});},getStdModNode:function(L){return this[L+T]||null;},fillHeight:function(Y){if(Y){var w=this.get(U),x=[this.headerNode,this.bodyNode,this.footerNode],L,y,z=0,u=0,t=false;for(var v=0,s=x.length;v<s;v++){L=x[v];if(L){if(L!==Y){z+=this._getPreciseHeight(L);}else{t=true;}}}if(t){if(W.ie||W.opera){Y.set(g,0);}y=w.get(g)-parseInt(w.getComputedStyle("paddingTop"),10)-parseInt(w.getComputedStyle("paddingBottom"),10)-parseInt(w.getComputedStyle("borderBottomWidth"),10)-parseInt(w.getComputedStyle("borderTopWidth"),10);if(D.isNumber(y)){u=y-z;if(u>=0){Y.set(g,u);}}}}}};A.WidgetStdMod=r;},"@VERSION@",{requires:["widget"]});