text: //>>built
  define("dojox/grid/TreeGrid",["dojo/_base/kernel","../main","dojo/_base/declare","dojo/_base/array","dojo/_base/lang","dojo/_base/event","dojo/dom-attr","dojo/dom-class","dojo/query","dojo/keys","dijit/tree/ForestStoreModel","./DataGrid","./_Layout","./_FocusManager","./_RowManager","./_EditManager","./TreeSelection","./cells/tree","./_TreeView"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10,_11,_12){
  _1.experimental("dojox.grid.TreeGrid");
  var _13=_3("dojox.grid._TreeAggregator",null,{cells:[],grid:null,childFields:[],constructor:function(_14){
  this.cells=_14.cells||[];
  this.childFields=_14.childFields||[];
  this.grid=_14.grid;
  this.store=this.grid.store;
  },_cacheValue:function(_15,id,_16){
  _15[id]=_16;
  return _16;
  },clearSubtotalCache:function(){
  if(this.store){
  delete this.store._cachedAggregates;
  }
  },cnt:function(_17,_18,_19){
  var _1a=0;
  var _1b=this.store;
  var _1c=this.childFields;
  if(_1c[_18]){
  var _1d=_1b.getValues(_19,_1c[_18]);
  if(_17.index<=_18+1){
  _1a=_1d.length;
  }else{
  _4.forEach(_1d,function(c){
  _1a+=this.getForCell(_17,_18+1,c,"cnt");
  },this);
  }
  }else{
  _1a=1;
  }
  return _1a;
  },sum:function(_1e,_1f,_20){
  var _21=0;
  var _22=this.store;
  var _23=this.childFields;
  if(_23[_1f]){
  _4.forEach(_22.getValues(_20,_23[_1f]),function(c){
  _21+=this.getForCell(_1e,_1f+1,c,"sum");
  },this);
  }else{
  _21+=_22.getValue(_20,_1e.field);
  }
  return _21;
  },value:function(_24,_25,_26){
  },getForCell:function(_27,_28,_29,_2a){
  var _2b=this.store;
  if(!_2b||!_29||!_2b.isItem(_29)){
  return "";
  }
  var _2c=_2b._cachedAggregates=_2b._cachedAggregates||{};
  var id=_2b.getIdentity(_29);
  var _2d=_2c[id]=_2c[id]||[];
  if(!_27.getOpenState){
  _27=this.grid.getCell(_27.layoutIndex+_28+1);
  }
  var idx=_27.index;
  var _2e=_2d[idx]=_2d[idx]||{};
  _2a=(_2a||(_27.parentCell?_27.parentCell.aggregate:"sum"))||"sum";
  var _2f=_27.field;
  if(_2f==_2b.getLabelAttributes()[0]){
  _2a="cnt";
  }
  var _30=_2e[_2a]=_2e[_2a]||[];
  if(_30[_28]!=undefined){
  return _30[_28];
  }
  var _31=((_27.parentCell&&_27.parentCell.itemAggregates)?_27.parentCell.itemAggregates[_27.idxInParent]:"")||"";
  if(_31&&_2b.hasAttribute(_29,_31)){
  return this._cacheValue(_30,_28,_2b.getValue(_29,_31));
  }else{
  if(_31){
  return this._cacheValue(_30,_28,0);
  }
  }
  return this._cacheValue(_30,_28,this[_2a](_27,_28,_29));
  }});
  var _32=_3("dojox.grid._TreeLayout",_d,{_isCollapsable:false,_getInternalStructure:function(_33){
  var g=this.grid;
  var s=_33;
  var _34=s[0].cells[0];
  var _35={type:"dojox.grid._TreeView",cells:[[]]};
  var _36=[];
  var _37=0;
  var _38=function(_39,_3a){
  var _3b=_39.children;
  var _3c=function(_3d,idx){
  var k,n={};
  for(k in _3d){
  n[k]=_3d[k];
  }
  n=_5.mixin(n,{level:_3a,idxInParent:_3a>0?idx:-1,parentCell:_3a>0?_39:null});
  return n;
  };
  var ret=[];
  _4.forEach(_3b,function(c,idx){
  if("children" in c){
  _36.push(c.field);
  var _3e=ret[ret.length-1];
  _3e.isCollapsable=true;
  c.level=_3a;
  ret=ret.concat(_38(c,_3a+1));
  }else{
  ret.push(_3c(c,idx));
  }
  });
  _37=Math.max(_37,_3a);
  return ret;
  };
  var _3f={children:_34,itemAggregates:[]};
  _35.cells[0]=_38(_3f,0);
  g.aggregator=new _13({cells:_35.cells[0],grid:g,childFields:_36});
  if(g.scroller&&g.defaultOpen){
  g.scroller.defaultRowHeight=g.scroller._origDefaultRowHeight*(2*_37+1);
  }
  return [_35];
  },setStructure:function(_40){
  var s=_40;
  var g=this.grid;
  if(g&&g.treeModel&&!_4.every(s,function(i){
  return ("cells" in i);
  })){
  s=arguments[0]=[{cells:[s]}];
  }
  if(s.length==1&&s[0].cells.length==1){
  if(g&&g.treeModel){
  s[0].type="dojox.grid._TreeView";
  this._isCollapsable=true;
  s[0].cells[0][(this.grid.treeModel?this.grid.expandoCell:0)].isCollapsable=true;
  }else{
  var _41=_4.filter(s[0].cells[0],function(c){
  return ("children" in c);
  });
  if(_41.length===1){
  this._isCollapsable=true;
  }
  }
  }
  if(this._isCollapsable&&(!g||!g.treeModel)){
  arguments[0]=this._getInternalStructure(s);
  }
  this.inherited(arguments);
  },addCellDef:function(_42,_43,_44){
  var obj=this.inherited(arguments);
  return _5.mixin(obj,_12);
  }});
  var _45=_3("dojox.grid.TreePath",null,{level:0,_str:"",_arr:null,grid:null,store:null,cell:null,constructor:function(_46,_47){
  if(_5.isString(_46)){
  this._str=_46;
  this._arr=_4.map(_46.split("/"),function(_48){
  return parseInt(_48,10);
  });
  }else{
  if(_5.isArray(_46)){
  this._str=_46.join("/");
  this._arr=_46.slice(0);
  }else{
  if(typeof _46=="number"){
  this._str=String(_46);
  this._arr=[_46];
  }else{
  this._str=_46._str;
  this._arr=_46._arr.slice(0);
  }
  }
  }
  this.level=this._arr.length-1;
  this.grid=_47;
  this.store=this.grid.store;
  if(_47.treeModel){
  this.cell=_47.layout.cells[_47.expandoCell];
  }else{
  this.cell=_47.layout.cells[this.level];
  }
  },item:function(){
  if(!this._item){
  this._item=this.grid.getItem(this._arr);
  }
  return this._item;
  },compare:function(_49){
  if(_5.isString(_49)||_5.isArray(_49)){
  if(this._str==_49){
  return 0;
  }
  if(_49.join&&this._str==_49.join("/")){
  return 0;
  }
  _49=new _45(_49,this.grid);
  }else{
  if(_49 instanceof _45){
  if(this._str==_49._str){
  return 0;
  }
  }
  }
  for(var i=0,l=(this._arr.length<_49._arr.length?this._arr.length:_49._arr.length);i<l;i++){
  if(this._arr[i]<_49._arr[i]){
  return -1;
  }
  if(this._arr[i]>_49._arr[i]){
  return 1;
  }
  }
  if(this._arr.length<_49._arr.length){
  return -1;
  }
  if(this._arr.length>_49._arr.length){
  return 1;
  }
  return 0;
  },isOpen:function(){
  return this.cell.openStates&&this.cell.getOpenState(this.item());
  },previous:function(){
  var _4a=this._arr.slice(0);
  if(this._str=="0"){
  return null;
  }
  var _4b=_4a.length-1;
  if(_4a[_4b]===0){
  _4a.pop();
  return new _45(_4a,this.grid);
  }
  _4a[_4b]--;
  var _4c=new _45(_4a,this.grid);
  return _4c.lastChild(true);
  },next:function(){
  var _4d=this._arr.slice(0);
  if(this.isOpen()){
  _4d.push(0);
  }else{
  _4d[_4d.length-1]++;
  for(var i=this.level;i>=0;i--){
  var _4e=this.grid.getItem(_4d.slice(0,i+1));
  if(i>0){
  if(!_4e){
  _4d.pop();
  _4d[i-1]++;
  }
  }else{
  if(!_4e){
  return null;
  }
  }
  }
  }
  return new _45(_4d,this.grid);
  },children:function(_4f){
  if(!this.isOpen()&&!_4f){
  return null;
  }
  var _50=[];
  var _51=this.grid.treeModel;
  if(_51){
  var _52=this.item();
  var _53=_51.store;
  if(!_51.mayHaveChildren(_52)){
  return null;
  }
  _4.forEach(_51.childrenAttrs,function(_54){
  _50=_50.concat(_53.getValues(_52,_54));
  });
  }else{
  _50=this.store.getValues(this.item(),this.grid.layout.cells[this.cell.level+1].parentCell.field);
  if(_50.length>1&&this.grid.sortChildItems){
  var _55=this.grid.getSortProps();
  if(_55&&_55.length){
  var _56=_55[0].attribute,_57=this.grid;
  if(_56&&_50[0][_56]){
  var _58=!!_55[0].descending;
  _50=_50.slice(0);
  _50.sort(function(a,b){
  return _57._childItemSorter(a,b,_56,_58);
  });
  }
  }
  }
  }
  return _50;
  },childPaths:function(){
  var _59=this.children();
  if(!_59){
  return [];
  }
  return _4.map(_59,function(_5a,_5b){
  return new _45(this._str+"/"+_5b,this.grid);
  },this);
  },parent:function(){
  if(this.level===0){
  return null;
  }
  return new _45(this._arr.slice(0,this.level),this.grid);
  },lastChild:function(_5c){
  var _5d=this.children();
  if(!_5d||!_5d.length){
  return this;
  }
  var _5e=new _45(this._str+"/"+String(_5d.length-1),this.grid);
  if(!_5c){
  return _5e;
  }
  return _5e.lastChild(true);
  },toString:function(){
  return this._str;
  }});
  var _5f=_3("dojox.grid._TreeFocusManager",_e,{setFocusCell:function(_60,_61){
  if(_60&&_60.getNode(_61)){
  this.inherited(arguments);
  }
  },isLastFocusCell:function(){
  if(this.cell&&this.cell.index==this.grid.layout.cellCount-1){
  var _62=new _45(this.grid.rowCount-1,this.grid);
  _62=_62.lastChild(true);
  return this.rowIndex==_62._str;
  }
  return false;
  },next:function(){
  if(this.cell){
  var row=this.rowIndex,col=this.cell.index+1,cc=this.grid.layout.cellCount-1;
  var _63=new _45(this.rowIndex,this.grid);
  if(col>cc){
  var _64=_63.next();
  if(!_64){
  col--;
  }else{
  col=0;
  _63=_64;
  }
  }
  if(this.grid.edit.isEditing()){
  var _65=this.grid.getCell(col);
  if(!this.isLastFocusCell()&&!_65.editable){
  this._focusifyCellNode(false);
  this.cell=_65;
  this.rowIndex=_63._str;
  this.next();
  return;
  }
  }
  this.setFocusIndex(_63._str,col);
  }
  },previous:function(){
  if(this.cell){
  var row=(this.rowIndex||0),col=(this.cell.index||0)-1;
  var _66=new _45(row,this.grid);
  if(col<0){
  var _67=_66.previous();
  if(!_67){
  col=0;
  }else{
  col=this.grid.layout.cellCount-1;
  _66=_67;
  }
  }
  if(this.grid.edit.isEditing()){
  var _68=this.grid.getCell(col);
  if(!this.isFirstFocusCell()&&!_68.editable){
  this._focusifyCellNode(false);
  this.cell=_68;
  this.rowIndex=_66._str;
  this.previous();
  return;
  }
  }
  this.setFocusIndex(_66._str,col);
  }
  },move:function(_69,_6a){
  if(this.isNavHeader()){
  this.inherited(arguments);
  return;
  }
  if(!this.cell){
  return;
  }
  var sc=this.grid.scroller,r=this.rowIndex,rc=this.grid.rowCount-1,_6b=new _45(this.rowIndex,this.grid);
  if(_69){
  var row;
  if(_69>0){
  _6b=_6b.next();
  row=_6b._arr[0];
  if(row>sc.getLastPageRow(sc.page)){
  this.grid.setScrollTop(this.grid.scrollTop+sc.findScrollTop(row)-sc.findScrollTop(r));
  }
  }else{
  if(_69<0){
  _6b=_6b.previous();
  row=_6b._arr[0];
  if(row<=sc.getPageRow(sc.page)){
  this.grid.setScrollTop(this.grid.scrollTop-sc.findScrollTop(r)-sc.findScrollTop(row));
  }
  }
  }
  }
  var cc=this.grid.layout.cellCount-1,i=this.cell.index,col=Math.min(cc,Math.max(0,i+_6a));
  var _6c=this.grid.getCell(col);
  var _6d=_6a<0?-1:1;
  while(col>=0&&col<cc&&_6c&&_6c.hidden===true){
  col+=_6d;
  _6c=this.grid.getCell(col);
  }
  if(!_6c||_6c.hidden===true){
  col=i;
  }
  if(_69){
  this.grid.updateRow(r);
  }
  this.setFocusIndex(_6b._str,col);
  }});
  var _6e=_3("dojox.grid.TreeGrid",_c,{defaultOpen:true,sortChildItems:false,openAtLevels:[],treeModel:null,expandoCell:0,aggregator:null,_layoutClass:_32,createSelection:function(){
  this.selection=new _11(this);
  },_childItemSorter:function(a,b,_6f,_70){
  var av=this.store.getValue(a,_6f);
  var bv=this.store.getValue(b,_6f);
  if(av!=bv){
  return av<bv==_70?1:-1;
  }
  return 0;
  },_onNew:function(_71,_72){
  if(!_72||!_72.item){
  this.inherited(arguments);
  }else{
  var idx=this.getItemIndex(_72.item);
  if(typeof idx=="string"){
  this.updateRow(idx.split("/")[0]);
  }else{
  if(idx>-1){
  this.updateRow(idx);
  }
  }
  }
  },_onSet:function(_73,_74,_75,_76){
  this._checkUpdateStatus();
  if(this.aggregator){
  this.aggregator.clearSubtotalCache();
  }
  var idx=this.getItemIndex(_73);
  if(typeof idx=="string"){
  this.updateRow(idx.split("/")[0]);
  }else{
  if(idx>-1){
  this.updateRow(idx);
  }
  }
  },_onDelete:function(_77){
  this._cleanupExpandoCache(this._getItemIndex(_77,true),this.store.getIdentity(_77),_77);
  this.inherited(arguments);
  },_clearData:function(){
  this.inherited(arguments);
  this._by_idty_paths={};
  },_cleanupExpandoCache:function(_78,_79,_7a){
  },_addItem:function(_7b,_7c,_7d,_7e){
  if(!_7e&&this.model&&_4.indexOf(this.model.root.children,_7b)==-1){
  this.model.root.children[_7c]=_7b;
  }
  this.inherited(arguments);
  },getItem:function(idx){
  var _7f=_5.isArray(idx);
  if(_5.isString(idx)&&idx.indexOf("/")){
  idx=idx.split("/");
  _7f=true;
  }
  if(_7f&&idx.length==1){
  idx=idx[0];
  _7f=false;
  }
  if(!_7f){
  return _c.prototype.getItem.call(this,idx);
  }
  var s=this.store;
  var itm=_c.prototype.getItem.call(this,idx[0]);
  var cf,i,j;
  if(this.aggregator){
  cf=this.aggregator.childFields||[];
  if(cf){
  for(i=0;i<idx.length-1&&itm;i++){
  if(cf[i]){
  itm=(s.getValues(itm,cf[i])||[])[idx[i+1]];
  }else{
  itm=null;
  }
  }
  }
  }else{
  if(this.treeModel){
  cf=this.treeModel.childrenAttrs||[];
  if(cf&&itm){
  for(i=1,il=idx.length;(i<il)&&itm;i++){
  for(j=0,jl=cf.length;j<jl;j++){
  if(cf[j]){
  itm=(s.getValues(itm,cf[j])||[])[idx[i]];
  }else{
  itm=null;
  }
  if(itm){
  break;
  }
  }
  }
  }
  }
  }
  return itm||null;
  },_getItemIndex:function(_80,_81){
  if(!_81&&!this.store.isItem(_80)){
  return -1;
  }
  var idx=this.inherited(arguments);
  if(idx==-1){
  var _82=this.store.getIdentity(_80);
  return this._by_idty_paths[_82]||-1;
  }
  return idx;
  },postMixInProperties:function(){
  if(this.treeModel&&!("defaultOpen" in this.params)){
  this.defaultOpen=false;
  }
  var def=this.defaultOpen;
  this.openAtLevels=_4.map(this.openAtLevels,function(l){
  if(typeof l=="string"){
  switch(l.toLowerCase()){
  case "true":
  return true;
  break;
  case "false":
  return false;
  break;
  default:
  var r=parseInt(l,10);
  if(isNaN(r)){
  return def;
  }
  return r;
  break;
  }
  }
  return l;
  });
  this._by_idty_paths={};
  this.inherited(arguments);
  },postCreate:function(){
  this.inherited(arguments);
  if(this.treeModel){
  this._setModel(this.treeModel);
  }
  },setModel:function(_83){
  this._setModel(_83);
  this._refresh(true);
  },_setModel:function(_84){
  if(_84&&(!_b||!(_84 instanceof _b))){
  throw new Error("dojox.grid.TreeGrid: treeModel must be an instance of dijit.tree.ForestStoreModel");
  }
  this.treeModel=_84;
  _8.toggle(this.domNode,"dojoxGridTreeModel",this.treeModel?true:false);
  this._setQuery(_84?_84.query:null);
  this._setStore(_84?_84.store:null);
  },createScroller:function(){
  this.inherited(arguments);
  this.scroller._origDefaultRowHeight=this.scroller.defaultRowHeight;
  },createManagers:function(){
  this.rows=new _f(this);
  this.focus=new _5f(this);
  this.edit=new _10(this);
  },_setStore:function(_85){
  this.inherited(arguments);
  if(this.treeModel&&!this.treeModel.root.children){
  this.treeModel.root.children=[];
  }
  if(this.aggregator){
  this.aggregator.store=_85;
  }
  },getDefaultOpenState:function(_86,_87){
  var cf;
  var _88=this.store;
  if(this.treeModel){
  return this.defaultOpen;
  }
  if(!_86||!_88||!_88.isItem(_87)||!(cf=this.aggregator.childFields[_86.level])){
  return this.defaultOpen;
  }
  if(this.openAtLevels.length>_86.level){
  var _89=this.openAtLevels[_86.level];
  if(typeof _89=="boolean"){
  return _89;
  }else{
  if(typeof _89=="number"){
  return (_88.getValues(_87,cf).length<=_89);
  }
  }
  }
  return this.defaultOpen;
  },onStyleRow:function(row){
  if(!this.layout._isCollapsable){
  this.inherited(arguments);
  return;
  }
  var _8a=_7.get(row.node,"dojoxTreeGridBaseClasses");
  if(_8a){
  row.customClasses=_8a;
  }
  var i=row;
  var _8b=i.node.tagName.toLowerCase();
  i.customClasses+=(i.odd?" dojoxGridRowOdd":"")+(i.selected&&_8b=="tr"?" dojoxGridRowSelected":"")+(i.over&&_8b=="tr"?" dojoxGridRowOver":"");
  this.focus.styleRow(i);
  this.edit.styleRow(i);
  },styleRowNode:function(_8c,_8d){
  if(_8d){
  if(_8d.tagName.toLowerCase()=="div"&&this.aggregator){
  _9("tr[dojoxTreeGridPath]",_8d).forEach(function(_8e){
  this.rows.styleRowNode(_7.get(_8e,"dojoxTreeGridPath"),_8e);
  },this);
  }
  this.rows.styleRowNode(_8c,_8d);
  }
  },onCanSelect:function(_8f){
  var _90=_9("tr[dojoxTreeGridPath='"+_8f+"']",this.domNode);
  if(_90.length){
  if(_8.contains(_90[0],"dojoxGridSummaryRow")){
  return false;
  }
  }
  return this.inherited(arguments);
  },onKeyDown:function(e){
  if(e.altKey||e.metaKey){
  return;
  }
  switch(e.keyCode){
  case _a.UP_ARROW:
  if(!this.edit.isEditing()&&this.focus.rowIndex!="0"){
  _6.stop(e);
  this.focus.move(-1,0);
  }
  break;
  case _a.DOWN_ARROW:
  var _91=new _45(this.focus.rowIndex,this);
  var _92=new _45(this.rowCount-1,this);
  _92=_92.lastChild(true);
  if(!this.edit.isEditing()&&_91.toString()!=_92.toString()){
  _6.stop(e);
  this.focus.move(1,0);
  }
  break;
  default:
  this.inherited(arguments);
  break;
  }
  },canEdit:function(_93,_94){
  var _95=_93.getNode(_94);
  return _95&&this._canEdit;
  },doApplyCellEdit:function(_96,_97,_98){
  var _99=this.getItem(_97);
  var _9a=this.store.getValue(_99,_98);
  if(typeof _9a=="number"){
  _96=isNaN(_96)?_96:parseFloat(_96);
  }else{
  if(typeof _9a=="boolean"){
  _96=_96=="true"?true:_96=="false"?false:_96;
  }else{
  if(_9a instanceof Date){
  var _9b=new Date(_96);
  _96=isNaN(_9b.getTime())?_96:_9b;
  }
  }
  }
  this.store.setValue(_99,_98,_96);
  this.onApplyCellEdit(_96,_97,_98);
  }});
  _6e.markupFactory=function(_9c,_9d,_9e,_9f){
  var _a0=function(n){
  var w=_7.get(n,"width")||"auto";
  if((w!="auto")&&(w.slice(-2)!="em")&&(w.slice(-1)!="%")){
  w=parseInt(w,10)+"px";
  }
  return w;
  };
  var _a1=function(_a2){
  var _a3;
  if(_a2.nodeName.toLowerCase()=="table"&&_9("> colgroup",_a2).length===0&&(_a3=_9("> thead > tr",_a2)).length==1){
  var tr=_a3[0];
  return _9("> th",_a3[0]).map(function(th){
  var _a4={type:_5.trim(_7.get(th,"cellType")||""),field:_5.trim(_7.get(th,"field")||"")};
  if(_a4.type){
  _a4.type=_5.getObject(_a4.type);
  }
  var _a5=_9("> table",th)[0];
  if(_a5){
  _a4.name="";
  _a4.children=_a1(_a5);
  if(_7.has(th,"itemAggregates")){
  _a4.itemAggregates=_4.map(_7.get(th,"itemAggregates").split(","),function(v){
  return _5.trim(v);
  });
  }else{
  _a4.itemAggregates=[];
  }
  if(_7.has(th,"aggregate")){
  _a4.aggregate=_7.get(th,"aggregate");
  }
  _a4.type=_a4.type||_2.grid.cells.SubtableCell;
  }else{
  _a4.name=_5.trim(_7.get(th,"name")||th.innerHTML);
  if(_7.has(th,"width")){
  _a4.width=_a0(th);
  }
  if(_7.has(th,"relWidth")){
  _a4.relWidth=window.parseInt(_7.get(th,"relWidth"),10);
  }
  if(_7.has(th,"hidden")){
  _a4.hidden=_7.get(th,"hidden")=="true";
  }
  _a4.field=_a4.field||_a4.name;
  _c.cell_markupFactory(_9f,th,_a4);
  _a4.type=_a4.type||_2.grid.cells.Cell;
  }
  if(_a4.type&&_a4.type.markupFactory){
  _a4.type.markupFactory(th,_a4);
  }
  return _a4;
  });
  }
  return [];
  };
  var _a6;
  if(!_9c.structure){
  var row=_a1(_9d);
  if(row.length){
  _9c.structure=[{__span:Infinity,cells:[row]}];
  }
  }
  return _c.markupFactory(_9c,_9d,_9e,_9f);
  };
  return _6e;
  });
  