//>>built
define("dojox/grid/_Layout",["dojo/_base/kernel","../main","dojo/_base/declare","dojo/_base/array","dojo/_base/lang","dojo/dom-geometry","./cells","./_RowSelector"],function(_1,_2,_3,_4,_5,_6){
return _3("dojox.grid._Layout",null,{constructor:function(_7){
this.grid=_7;
},cells:[],structure:null,defaultWidth:"6em",moveColumn:function(_8,_9,_a,_b,_c){
var _d=this.structure[_8].cells[0];
var _e=this.structure[_9].cells[0];
var _f=null;
var _10=0;
var _11=0;
for(var i=0,c;c=_d[i];i++){
if(c.index==_a){
_10=i;
break;
}
}
_f=_d.splice(_10,1)[0];
_f.view=this.grid.views.views[_9];
for(i=0,c=null;c=_e[i];i++){
if(c.index==_b){
_11=i;
break;
}
}
if(!_c){
_11+=1;
}
_e.splice(_11,0,_f);
var _12=this.grid.getCell(this.grid.getSortIndex());
if(_12){
_12._currentlySorted=this.grid.getSortAsc();
}
this.cells=[];
_a=0;
var v;
for(i=0;v=this.structure[i];i++){
for(var j=0,cs;cs=v.cells[j];j++){
for(var k=0;c=cs[k];k++){
c.index=_a;
this.cells.push(c);
if("_currentlySorted" in c){
var si=_a+1;
si*=c._currentlySorted?1:-1;
this.grid.sortInfo=si;
delete c._currentlySorted;
}
_a++;
}
}
}
_4.forEach(this.cells,function(c){
var _13=c.markup[2].split(" ");
var _14=parseInt(_13[1].substring(5));
if(_14!=c.index){
_13[1]="idx=\""+c.index+"\"";
c.markup[2]=_13.join(" ");
}
});
this.grid.setupHeaderMenu();
},setColumnVisibility:function(_15,_16){
var _17=this.cells[_15];
if(_17.hidden==_16){
_17.hidden=!_16;
var v=_17.view,w=v.viewWidth;
if(w&&w!="auto"){
v._togglingColumn=_6.getMarginBox(_17.getHeaderNode()).w||0;
}
v.update();
return true;
}else{
return false;
}
},addCellDef:function(_18,_19,_1a){
var _1b=this;
var _1c=function(_1d){
var w=0;
if(_1d.colSpan>1){
w=0;
}else{
w=_1d.width||_1b._defaultCellProps.width||_1b.defaultWidth;
if(!isNaN(w)){
w=w+"em";
}
}
return w;
};
var _1e={grid:this.grid,subrow:_18,layoutIndex:_19,index:this.cells.length};
if(_1a&&_1a instanceof _2.grid.cells._Base){
var _1f=_5.clone(_1a);
_1e.unitWidth=_1c(_1f._props);
_1f=_5.mixin(_1f,this._defaultCellProps,_1a._props,_1e);
return _1f;
}
var _20=_1a.type||_1a.cellType||this._defaultCellProps.type||this._defaultCellProps.cellType||_2.grid.cells.Cell;
if(_5.isString(_20)){
_20=_5.getObject(_20);
}
_1e.unitWidth=_1c(_1a);
return new _20(_5.mixin({},this._defaultCellProps,_1a,_1e));
},addRowDef:function(_21,_22){
var _23=[];
var _24=0,_25=0,_26=true;
for(var i=0,def,_27;(def=_22[i]);i++){
_27=this.addCellDef(_21,i,def);
_23.push(_27);
this.cells.push(_27);
if(_26&&_27.relWidth){
_24+=_27.relWidth;
}else{
if(_27.width){
var w=_27.width;
if(typeof w=="string"&&w.slice(-1)=="%"){
_25+=window.parseInt(w,10);
}else{
if(w=="auto"){
_26=false;
}
}
}
}
}
if(_24&&_26){
_4.forEach(_23,function(_28){
if(_28.relWidth){
_28.width=_28.unitWidth=((_28.relWidth/_24)*(100-_25))+"%";
}
});
}
return _23;
},addRowsDef:function(_29){
var _2a=[];
if(_5.isArray(_29)){
if(_5.isArrayLike(_29[0])){
for(var i=0,row;_29&&(row=_29[i]);i++){
_2a.push(this.addRowDef(i,row));
}
}else{
_2a.push(this.addRowDef(0,_29));
}
}
return _2a;
},addViewDef:function(_2b){
this._defaultCellProps=_2b.defaultCell||{};
if(_2b.width&&_2b.width=="auto"){
delete _2b.width;
}
return _5.mixin({},_2b,{cells:this.addRowsDef(_2b.rows||_2b.cells)});
},setStructure:function(_2c){
this.fieldIndex=0;
this.cells=[];
var s=this.structure=[];
if(this.grid.rowSelector){
var sel={type:_2._scopeName+".grid._RowSelector"};
if(_5.isString(this.grid.rowSelector)){
var _2d=this.grid.rowSelector;
if(_2d=="false"){
sel=null;
}else{
if(_2d!="true"){
sel["width"]=_2d;
}
}
}else{
if(!this.grid.rowSelector){
sel=null;
}
}
if(sel){
s.push(this.addViewDef(sel));
}
}
var _2e=function(def){
return ("name" in def||"field" in def||"get" in def);
};
var _2f=function(def){
if(_5.isArray(def)){
if(_5.isArray(def[0])||_2e(def[0])){
return true;
}
}
return false;
};
var _30=function(def){
return (def!==null&&_5.isObject(def)&&("cells" in def||"rows" in def||("type" in def&&!_2e(def))));
};
if(_5.isArrayLike(_2c)){
var _31=false;
for(var i=0,st;(st=_2c[i]);i++){
if(_30(st)){
_31=true;
break;
}
}
if(!_31){
s.push(this.addViewDef({cells:_2c}));
}else{
for(i=0;(st=_2c[i]);i++){
if(_2f(st)){
s.push(this.addViewDef({cells:st}));
}else{
if(_30(st)){
s.push(this.addViewDef(st));
}
}
}
}
}else{
if(_30(_2c)){
s.push(this.addViewDef(_2c));
}
}
this.cellCount=this.cells.length;
this.grid.setupHeaderMenu();
}});
});
