(function(i){i.widget("ui.mlayout",{_init:function(){this._items=null;this.element.data("muiResize",i.delegate(this,"resize")).addClass("mui-component mui-layout").css("position","relative");this.element.find(this.options.selector).css({position:"absolute",overflow:"hidden"});this.options.resizeOnInit&&this.resize({width:this.element.width(),width:this.element.height()})},items:function(){return this._items},sizeof:function(d){var f=null;if(typeof(d=="number")){if(d>=0&&d<this._items.length)f=this._items[d]}else i.each(this._items,
function(l,m){if(m.elmt.is(d)){f=m;return false}});if(f)return{width:f.width,height:f.height};return null},resize:function(d){var f=this.element.css({width:d.width+"px",height:d.height+"px"}).find(this.options.selector);if(this.options.columns){f.css("top",0).height(d.height);var l="width",m="left",e=this.options.columns.concat(),o={height:d.height}}else{f.css("left",0).width(d.width);l="height";m="top";e=this.options.rows.concat();o={width:d.width}}for(;e.length<f.length;)e.push("auto");e=this._items=
i.map(e,function(p,r){return i.extend({elmt:f.eq(r),hint:p,overridden:false,size:p,minSize:-1},o)});for(var g=this.options.space,k=d[l],c=k-(e.length-1)*g,n=[],h=[],j=0,b=0;b<e.length;b++){var a=e[b];if("number"==typeof a.size){j+=a.size;n.push(a)}else{a.size=a.hint+="";var q=/^(\d+)%$/.exec(a.size);if(q){a.size=Math.floor(c*parseInt(q[1])/100);j+=a.size;n.push(a)}else h.push(a)}}c-=j;if(c<0){do{if(g>0){g=(e.length-1)*g;if(g>-c){g=Math.floor((g+c)/(e.length-1));c=k-(e.length-1)*g-j;break}else{g=0;
c=k-j}}for(a=n.concat();c<0;){j=0;c=Math.ceil(-c/a.length);for(b=0;b<a.length;b++)if(a[b].size<c){a[b].size=0;a.splice(b,1)}else{a[b].size-=c;j+=a[b].size}c=k-j}if(c<0)c=0}while(0)}k=0;n=1/h.length;for(b=0;b<h.length;b++){h[b].size=Math.floor(c*n*(b+1))-k;k+=h[b].size}for(b=h=0;b<e.length;b++){a=e[b];a[l]=a.size;a[m]=h;a.elmt.css(l,a.size+"px").css(m,h+"px");h+=a.size+g;c=i.extend({},o);c[l]=a.size;a.elmt.muiResize(c)}this.options.onResize(d)}});i.ui.mlayout.getter="items sizeof";i.ui.mlayout.defaults=
{minWidth:-1,minHeight:-1,selector:"> *",columns:null,rows:null,space:0,resizeOnInit:false,onResize:function(){}}})(jQuery);
