blob: 2714e16b07b3ee6f32ebedbf82b1bb462b978386 [file] [log] [blame]
dojo.provide("dojo.widget.html.layout");
dojo.require("dojo.lang.common");
dojo.require("dojo.string.extras");
dojo.require("dojo.html.style");
dojo.require("dojo.html.layout");
dojo.widget.html.layout=function(_1,_2,_3){
dojo.html.addClass(_1,"dojoLayoutContainer");
_2=dojo.lang.filter(_2,function(_4,_5){
_4.idx=_5;
return dojo.lang.inArray(["top","bottom","left","right","client","flood"],_4.layoutAlign);
});
if(_3&&_3!="none"){
var _6=function(_7){
switch(_7.layoutAlign){
case "flood":
return 1;
case "left":
case "right":
return (_3=="left-right")?2:3;
case "top":
case "bottom":
return (_3=="left-right")?3:2;
default:
return 4;
}
};
_2.sort(function(a,b){
return (_6(a)-_6(b))||(a.idx-b.idx);
});
}
var f={top:dojo.html.getPixelValue(_1,"padding-top",true),left:dojo.html.getPixelValue(_1,"padding-left",true)};
dojo.lang.mixin(f,dojo.html.getContentBox(_1));
dojo.lang.forEach(_2,function(_b){
var _c=_b.domNode;
var _d=_b.layoutAlign;
with(_c.style){
left=f.left+"px";
top=f.top+"px";
bottom="auto";
right="auto";
}
dojo.html.addClass(_c,"dojoAlign"+dojo.string.capitalize(_d));
if((_d=="top")||(_d=="bottom")){
dojo.html.setMarginBox(_c,{width:f.width});
var h=dojo.html.getMarginBox(_c).height;
f.height-=h;
if(_d=="top"){
f.top+=h;
}else{
_c.style.top=f.top+f.height+"px";
}
if(_b.onResized){
_b.onResized();
}
}else{
if(_d=="left"||_d=="right"){
var w=dojo.html.getMarginBox(_c).width;
if(_b.resizeTo){
_b.resizeTo(w,f.height);
}else{
dojo.html.setMarginBox(_c,{width:w,height:f.height});
}
f.width-=w;
if(_d=="left"){
f.left+=w;
}else{
_c.style.left=f.left+f.width+"px";
}
}else{
if(_d=="flood"||_d=="client"){
if(_b.resizeTo){
_b.resizeTo(f.width,f.height);
}else{
dojo.html.setMarginBox(_c,{width:f.width,height:f.height});
}
}
}
}
});
};
dojo.html.insertCssText(".dojoLayoutContainer{ position: relative; display: block; overflow: hidden; }\n"+"body .dojoAlignTop, body .dojoAlignBottom, body .dojoAlignLeft, body .dojoAlignRight { position: absolute; overflow: hidden; }\n"+"body .dojoAlignClient { position: absolute }\n"+".dojoAlignClient { overflow: auto; }\n");