text: //>>built
  require({cache:{"url:dojox/grid/resources/Expando.html":"<div class=\"dojoxGridExpando\"\n\t><div class=\"dojoxGridExpandoNode\" dojoAttachEvent=\"onclick:onToggle\"\n\t\t><div class=\"dojoxGridExpandoNodeInner\" dojoAttachPoint=\"expandoInner\"></div\n\t></div\n></div>\n"}});
  define("dojox/grid/LazyTreeGrid",["dojo/_base/kernel","dojo/_base/declare","dojo/_base/lang","dojo/_base/event","dojo/_base/array","dojo/query","dojo/parser","dojo/dom-construct","dojo/dom-class","dojo/dom-style","dojo/dom-geometry","dojo/dom","dojo/keys","dojo/text!./resources/Expando.html","dijit/_Widget","dijit/_TemplatedMixin","./TreeGrid","./_Builder","./_View","./_Layout","./cells/tree","./_RowManager","./_FocusManager","./_EditManager","./DataSelection","./util"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a,_b,_c,_d,_e,_f,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_1a){
  var _1b=_2("dojox.grid._LazyExpando",[_f,_10],{grid:null,view:null,rowIdx:-1,cellIdx:-1,level:0,itemId:"",templateString:_e,onToggle:function(evt){
  if(this.grid._treeCache.items[this.rowIdx]){
  this.grid.focus.setFocusIndex(this.rowIdx,this.cellIdx);
  this.setOpen(!this.grid._treeCache.items[this.rowIdx].opened);
  try{
  _4.stop(evt);
  }
  catch(e){
  }
  }
  },setOpen:function(_1c){
  var g=this.grid,_1d=g._by_idx[this.rowIdx].item;
  if(_1d&&g.treeModel.mayHaveChildren(_1d)&&!g._loading&&g._treeCache.items[this.rowIdx].opened!==_1c){
  g._treeCache.items[this.rowIdx].opened=_1c;
  g.expandoFetch(this.rowIdx,_1c);
  this._updateOpenState(_1d);
  }
  },_updateOpenState:function(_1e){
  var g=this.grid,_1f;
  if(_1e&&g.treeModel.mayHaveChildren(_1e)){
  _1f=g._treeCache.items[this.rowIdx].opened;
  this.expandoInner.innerHTML=_1f?"-":"+";
  _9.toggle(this.domNode,"dojoxGridExpandoOpened",_1f);
  this.domNode.parentNode.setAttribute("aria-expanded",_1f);
  }else{
  _9.remove(this.domNode,"dojoxGridExpandoOpened");
  }
  },setRowNode:function(_20,_21,_22){
  if(this.cellIdx<0||!this.itemId){
  return false;
  }
  this.view=_22;
  this.grid=_22.grid;
  this.rowIdx=_20;
  var _23=this.grid.isLeftToRight()?"marginLeft":"marginRight";
  _a.set(this.domNode.parentNode,_23,(this.level*1.125)+"em");
  this._updateOpenState(this.grid._by_idx[this.rowIdx].item);
  return true;
  }});
  var _24=_2("dojox.grid._TreeGridContentBuilder",_12._ContentBuilder,{generateHtml:function(_25,_26){
  var _27=this.getTableArray(),_28=this.grid,v=this.view,_29=v.structure.cells,_2a=_28.getItem(_26),_2b=0,_2c="",_2d=_28._treeCache.items[_26]?_28._treeCache.items[_26].treePath:null;
  _1a.fire(this.view,"onBeforeRow",[_26,_29]);
  if(_2a&&_3.isArray(_2d)){
  _2b=_2d.length;
  _2c=_28.treeModel.mayHaveChildren(_2a)?"":"dojoxGridNoChildren";
  }
  var i=0,j=0,row,_2e,_2f,_30=0,_31=[];
  for(;row=_29[j];j++){
  if(row.hidden||row.header){
  continue;
  }
  _27.push("<tr class=\""+_2c+"\">");
  _2f=this._getColSpans(_2b);
  if(_2f){
  _5.forEach(_2f,function(c){
  for(i=0;_2e=row[i];i++){
  if(i>=c.start&&i<=c.end){
  _30+=this._getCellWidth(row,i);
  }
  }
  _31.push(_30);
  _30=0;
  },this);
  }
  var m,cc,cs,pbm,k=0;
  for(i=0;_2e=row[i];i++){
  m=_2e.markup;
  cc=_2e.customClasses=[];
  cs=_2e.customStyles=[];
  if(_2f&&_2f[k]&&(i>=_2f[k].start&&i<=_2f[k].end)){
  var _32=_2f[k].primary||_2f[k].start;
  if(i==_32){
  m[5]=_2e.formatAtLevel(_2a,_2b,_26);
  m[1]=cc.join(" ");
  pbm=_b.getMarginBox(_2e.getHeaderNode()).w-_b.getContentBox(_2e.getHeaderNode()).w;
  cs=_2e.customStyles=["width:"+(_31[k]-pbm)+"px"];
  m[3]=cs.join(";");
  _27.push.apply(_27,m);
  }else{
  if(i==_2f[k].end){
  k++;
  continue;
  }else{
  continue;
  }
  }
  }else{
  m[5]=_2e.formatAtLevel(_2a,_2b,_26);
  m[1]=cc.join(" ");
  m[3]=cs.join(";");
  _27.push.apply(_27,m);
  }
  }
  _27.push("</tr>");
  }
  _27.push("</table>");
  return _27.join("");
  },_getColSpans:function(_33){
  var _34=this.grid.colSpans;
  return _34&&_34[_33]?_34[_33]:null;
  },_getCellWidth:function(_35,_36){
  var _37=_35[_36],_38=_37.getHeaderNode();
  if(_37.hidden){
  return 0;
  }
  if(_36==_35.length-1||_5.every(_35.slice(_36+1),function(_39){
  return _39.hidden;
  })){
  var _3a=_b.position(_35[_36].view.headerContentNode.firstChild);
  return _3a.x+_3a.w-_b.position(_38).x;
  }else{
  var _3b;
  do{
  _3b=_35[++_36];
  }while(_3b.hidden);
  return _b.position(_3b.getHeaderNode()).x-_b.position(_38).x;
  }
  }});
  _2("dojox.grid._TreeGridView",_13,{_contentBuilderClass:_24,postCreate:function(){
  this.inherited(arguments);
  this._expandos={};
  this.connect(this.grid,"_onCleanupExpandoCache","_cleanupExpandoCache");
  },destroy:function(){
  this._cleanupExpandoCache();
  this.inherited(arguments);
  },_cleanupExpandoCache:function(_3c){
  if(_3c&&this._expandos[_3c]){
  this._expandos[_3c].destroy();
  delete this._expandos[_3c];
  }else{
  var i;
  for(i in this._expandos){
  this._expandos[i].destroy();
  }
  this._expandos={};
  }
  },onAfterRow:function(_3d,_3e,_3f){
  _6("span.dojoxGridExpando",_3f).forEach(function(n){
  if(n&&n.parentNode){
  var _40,_41,_42=this.grid._by_idx;
  if(_42&&_42[_3d]&&_42[_3d].idty){
  _40=_42[_3d].idty;
  _41=this._expandos[_40];
  }
  if(_41){
  _8.place(_41.domNode,n,"replace");
  _41.itemId=n.getAttribute("itemId");
  _41.cellIdx=parseInt(n.getAttribute("cellIdx"),10);
  if(isNaN(_41.cellIdx)){
  _41.cellIdx=-1;
  }
  }else{
  _41=_7.parse(n.parentNode)[0];
  if(_40){
  this._expandos[_40]=_41;
  }
  }
  if(!_41.setRowNode(_3d,_3f,this)){
  _41.domNode.parentNode.removeChild(_41.domNode);
  }
  _8.destroy(n);
  }
  },this);
  this.inherited(arguments);
  },updateRow:function(_43){
  var _44=this.grid,_45;
  if(_44.keepSelection){
  _45=_44.getItem(_43);
  if(_45){
  _44.selection.preserver._reSelectById(_45,_43);
  }
  }
  this.inherited(arguments);
  }});
  var _46=_3.mixin(_3.clone(_15),{formatAtLevel:function(_47,_48,_49){
  if(!_47){
  return this.formatIndexes(_49,_47,_48);
  }
  var _4a="",ret="",_4b;
  if(this.isCollapsable&&this.grid.store.isItem(_47)){
  ret="<span "+_1._scopeName+"Type=\"dojox.grid._LazyExpando\" level=\""+_48+"\" class=\"dojoxGridExpando\""+" itemId=\""+this.grid.store.getIdentity(_47)+"\" cellIdx=\""+this.index+"\"></span>";
  }
  _4b=this.formatIndexes(_49,_47,_48);
  _4a=ret!==""?"<div>"+ret+_4b+"</div>":_4b;
  return _4a;
  },formatIndexes:function(_4c,_4d,_4e){
  var _4f=this.grid.edit.info,d=this.get?this.get(_4c,_4d):(this.value||this.defaultValue);
  if(this.editable&&(this.alwaysEditing||(_4f.rowIndex===_4c&&_4f.cell===this))){
  return this.formatEditing(d,_4c);
  }else{
  return this._defaultFormat(d,[d,_4c,_4e,this]);
  }
  }});
  var _50=_2("dojox.grid._LazyTreeLayout",_14,{setStructure:function(_51){
  var g=this.grid,s=_51;
  if(g&&!_5.every(s,function(i){
  return !!i.cells;
  })){
  s=arguments[0]=[{cells:[s]}];
  }
  if(s.length===1&&s[0].cells.length===1){
  s[0].type="dojox.grid._TreeGridView";
  this._isCollapsable=true;
  s[0].cells[0][this.grid.expandoCell].isCollapsable=true;
  }
  this.inherited(arguments);
  },addCellDef:function(_52,_53,def){
  var obj=this.inherited(arguments);
  return _3.mixin(obj,_46);
  }});
  var _54=_2("dojox.grid._LazyTreeGridCache",null,{constructor:function(){
  this.items=[];
  },getSiblingIndex:function(_55,_56){
  var i=_55-1,_57=0,tp;
  for(;i>=0;i--){
  tp=this.items[i]?this.items[i].treePath:[];
  if(tp.join("/")===_56.join("/")){
  _57++;
  }else{
  if(tp.length<_56.length){
  break;
  }
  }
  }
  return _57;
  },removeChildren:function(_58){
  var i=_58+1,_59,tp,_5a=this.items[_58]?this.items[_58].treePath:[];
  for(;i<this.items.length;i++){
  tp=this.items[i]?this.items[i].treePath:[];
  if(tp.join("/")===_5a.join("/")||tp.length<=_5a.length){
  break;
  }
  }
  _59=i-(_58+1);
  this.items.splice(_58+1,_59);
  return _59;
  }});
  var _5b=_2("dojox.grid.LazyTreeGrid",_11,{_layoutClass:_50,_size:0,treeModel:null,defaultState:null,colSpans:null,postCreate:function(){
  this._setState();
  this.inherited(arguments);
  if(!this._treeCache){
  this._treeCache=new _54();
  }
  if(!this.treeModel||!(this.treeModel instanceof dijit.tree.ForestStoreModel)){
  throw new Error("dojox.grid.LazyTreeGrid: must be used with a treeModel which is an instance of dijit.tree.ForestStoreModel");
  }
  _9.add(this.domNode,"dojoxGridTreeModel");
  _c.setSelectable(this.domNode,this.selectable);
  },createManagers:function(){
  this.rows=new _16(this);
  this.focus=new _17(this);
  this.edit=new _18(this);
  },createSelection:function(){
  this.selection=new _19(this);
  },setModel:function(_5c){
  if(!_5c){
  return;
  }
  this._setModel(_5c);
  this._cleanup();
  this._refresh(true);
  },setStore:function(_5d,_5e,_5f){
  if(!_5d){
  return;
  }
  this._setQuery(_5e,_5f);
  this.treeModel.query=_5e;
  this.treeModel.store=_5d;
  this.treeModel.root.children=[];
  this.setModel(this.treeModel);
  },onSetState:function(){
  },_setState:function(){
  if(this.defaultState){
  this._treeCache=this.defaultState.cache;
  this.sortInfo=this.defaultState.sortInfo||0;
  this.query=this.defaultState.query||this.query;
  this._lastScrollTop=this.defaultState.scrollTop;
  if(this.keepSelection){
  this.selection.preserver._selectedById=this.defaultState.selection;
  }else{
  this.selection.selected=this.defaultState.selection||[];
  }
  this.onSetState();
  }
  },getState:function(){
  var _60=this,_61=this.keepSelection?this.selection.preserver._selectedById:this.selection.selected;
  return {cache:_3.clone(_60._treeCache),query:_3.clone(_60.query),sortInfo:_3.clone(_60.sortInfo),scrollTop:_3.clone(_60.scrollTop),selection:_3.clone(_61)};
  },_setQuery:function(_62,_63){
  this.inherited(arguments);
  this.treeModel.query=_62;
  },filter:function(_64,_65){
  this._cleanup();
  this.inherited(arguments);
  },destroy:function(){
  this._cleanup();
  this.inherited(arguments);
  },expand:function(_66){
  this._fold(_66,true);
  },collapse:function(_67){
  this._fold(_67,false);
  },refresh:function(_68){
  if(!_68){
  this._cleanup();
  }
  this._refresh(true);
  },_cleanup:function(){
  this._treeCache.items=[];
  this._onCleanupExpandoCache();
  },setSortIndex:function(_69,_6a){
  if(this.canSort(_69+1)){
  this._cleanup();
  }
  this.inherited(arguments);
  },_refresh:function(_6b){
  this._clearData();
  this.updateRowCount(this._size);
  this._fetch(0,true);
  },render:function(){
  this.inherited(arguments);
  this.setScrollTop(this.scrollTop);
  },_onNew:function(_6c,_6d){
  var _6e=_6d&&this.store.isItem(_6d.item)&&_5.some(this.treeModel.childrenAttrs,function(c){
  return c===_6d.attribute;
  });
  var _6f=this._treeCache.items,_70=this._by_idx;
  if(!_6e){
  _6f.push({opened:false,treePath:[]});
  this._size+=1;
  this.inherited(arguments);
  }else{
  var _71=_6d.item,_72=this.store.getIdentity(_71),_73=-1,i=0;
  for(;i<_70.length;i++){
  if(_72===_70[i].idty){
  _73=i;
  break;
  }
  }
  if(_73>=0){
  if(_6f[_73]&&_6f[_73].opened){
  var _74=_6f[_73].treePath,pos=_73+1;
  for(;pos<_6f.length;pos++){
  if(_6f[pos].treePath.length<=_74.length){
  break;
  }
  }
  var _75=_74.slice();
  _75.push(_72);
  this._treeCache.items.splice(pos,0,{opened:false,treePath:_75});
  var _76=this.store.getIdentity(_6c);
  this._by_idty[_76]={idty:_76,item:_6c};
  _70.splice(pos,0,this._by_idty[_76]);
  this._size+=1;
  this.updateRowCount(this._size);
  this._updateRenderedRows(pos);
  }else{
  this.updateRow(_73);
  }
  }
  }
  },_onDelete:function(_77){
  var i=0,_78=-1,_79=this.store.getIdentity(_77);
  for(;i<this._by_idx.length;i++){
  if(_79===this._by_idx[i].idty){
  _78=i;
  break;
  }
  }
  if(_78>=0){
  var _7a=this._treeCache.items,_7b=_7a[_78]?_7a[_78].treePath:[],tp,_7c=1;
  i=_78+1;
  for(;i<this._size;i++,_7c++){
  tp=_7a[i]?_7a[i].treePath:[];
  if(_7a[i].treePath.length<=_7b.length){
  break;
  }
  }
  _7a.splice(_78,_7c);
  this._onCleanupExpandoCache(_79);
  this._by_idx.splice(_78,_7c);
  this._size-=_7c;
  this.updateRowCount(this._size);
  this._updateRenderedRows(_78);
  }
  },_onCleanupExpandoCache:function(_7d){
  },_fetch:function(_7e,_7f){
  if(!this._loading){
  this._loading=true;
  }
  _7e=_7e||0;
  var _80=this._size-_7e>0?Math.min(this.rowsPerPage,this._size-_7e):this.rowsPerPage;
  var i=0;
  var _81=[];
  this._reqQueueLen=0;
  for(;i<_80;i++){
  if(this._by_idx[_7e+i]){
  _81.push(this._by_idx[_7e+i].item);
  }else{
  break;
  }
  }
  if(_81.length===_80){
  this._reqQueueLen=1;
  this._onFetchBegin(this._size,{startRowIdx:_7e,count:_80});
  this._onFetchComplete(_81,{startRowIdx:_7e,count:_80});
  }else{
  var _82,_83,len=1,_84=this._treeCache.items,_85=_84[_7e]?_84[_7e].treePath:[];
  for(i=1;i<_80;i++){
  _82=_84[_7e+len-1]?_84[_7e+len-1].treePath.length:0;
  _83=_84[_7e+len]?_84[_7e+len].treePath.length:0;
  if(_82!==_83){
  this._reqQueueLen++;
  this._fetchItems({startRowIdx:_7e,count:len,treePath:_85});
  _7e=_7e+len;
  len=1;
  _85=_84[_7e]?_84[_7e].treePath:0;
  }else{
  len++;
  }
  }
  this._reqQueueLen++;
  this._fetchItems({startRowIdx:_7e,count:len,treePath:_85});
  }
  },_fetchItems:function(req){
  if(this._pending_requests[req.startRowIdx]){
  return;
  }
  this.showMessage(this.loadingMessage);
  this._pending_requests[req.startRowIdx]=true;
  var _86=_3.hitch(this,"_onFetchError"),_87=this._treeCache.getSiblingIndex(req.startRowIdx,req.treePath);
  if(req.treePath.length===0){
  this.store.fetch({start:_87,startRowIdx:req.startRowIdx,treePath:req.treePath,count:req.count,query:this.query,sort:this.getSortProps(),queryOptions:this.queryOptions,onBegin:_3.hitch(this,"_onFetchBegin"),onComplete:_3.hitch(this,"_onFetchComplete"),onError:_3.hitch(this,"_onFetchError")});
  }else{
  var _88=req.treePath[req.treePath.length-1],_89;
  var _8a={start:_87,startRowIdx:req.startRowIdx,treePath:req.treePath,count:req.count,parentId:_88,sort:this.getSortProps()};
  var _8b=this;
  var _8c=function(){
  var f=_3.hitch(_8b,"_onFetchComplete");
  if(arguments.length==1){
  f.apply(_8b,[arguments[0],_8a]);
  }else{
  f.apply(_8b,arguments);
  }
  };
  if(this._by_idty[_88]){
  _89=this._by_idty[_88].item;
  this.treeModel.getChildren(_89,_8c,_86,_8a);
  }else{
  this.store.fetchItemByIdentity({identity:_88,onItem:function(_8d){
  _8b.treeModel.getChildren(_8d,_8c,_86,_8a);
  },onError:_86});
  }
  }
  },_onFetchBegin:function(_8e,_8f){
  if(this._treeCache.items.length===0){
  this._size=parseInt(_8e,10);
  }
  _8e=this._size;
  this.inherited(arguments);
  },_onFetchComplete:function(_90,_91){
  var _92=_91.startRowIdx,_93=_91.count,_94=_90.length<=_93?0:_91.start,_95=_91.treePath||[];
  if(_3.isArray(_90)&&_90.length>0){
  var i=0,len=Math.min(_93,_90.length);
  for(;i<len;i++){
  if(!this._treeCache.items[_92+i]){
  this._treeCache.items[_92+i]={opened:false,treePath:_95};
  }
  if(!this._by_idx[_92+i]){
  this._addItem(_90[_94+i],_92+i,true);
  }
  }
  this.updateRows(_92,len);
  }
  if(this._size==0){
  this.showMessage(this.noDataMessage);
  }else{
  this.showMessage();
  }
  this._pending_requests[_92]=false;
  this._reqQueueLen--;
  if(this._loading&&this._reqQueueLen===0){
  this._loading=false;
  if(this._lastScrollTop){
  this.setScrollTop(this._lastScrollTop);
  }
  }
  },expandoFetch:function(_96,_97){
  if(this._loading||!this._by_idx[_96]){
  return;
  }
  this._loading=true;
  this._toggleLoadingClass(_96,true);
  this.expandoRowIndex=_96;
  var _98=this._by_idx[_96].item;
  if(_97){
  var _99={start:0,count:this.rowsPerPage,parentId:this.store.getIdentity(this._by_idx[_96].item),sort:this.getSortProps()};
  this.treeModel.getChildren(_98,_3.hitch(this,"_onExpandoComplete"),_3.hitch(this,"_onFetchError"),_99);
  }else{
  var num=this._treeCache.removeChildren(_96);
  this._by_idx.splice(_96+1,num);
  this._bop=this._eop=-1;
  this._size-=num;
  this.updateRowCount(this._size);
  this._updateRenderedRows(_96+1);
  this._toggleLoadingClass(_96,false);
  if(this._loading){
  this._loading=false;
  }
  this.focus._delayedCellFocus();
  }
  },_onExpandoComplete:function(_9a,_9b,_9c){
  _9c=isNaN(_9c)?_9a.length:parseInt(_9c,10);
  var _9d=this._treeCache.items[this.expandoRowIndex].treePath.slice(0);
  _9d.push(this.store.getIdentity(this._by_idx[this.expandoRowIndex].item));
  var i=1,_9e;
  for(;i<=_9c;i++){
  this._treeCache.items.splice(this.expandoRowIndex+i,0,{treePath:_9d,opened:false});
  }
  this._size+=_9c;
  this.updateRowCount(this._size);
  for(i=0;i<_9c;i++){
  if(_9a[i]){
  _9e=this.store.getIdentity(_9a[i]);
  this._by_idty[_9e]={idty:_9e,item:_9a[i]};
  this._by_idx.splice(this.expandoRowIndex+1+i,0,this._by_idty[_9e]);
  }else{
  this._by_idx.splice(this.expandoRowIndex+1+i,0,null);
  }
  }
  this._updateRenderedRows(this.expandoRowIndex+1);
  this._toggleLoadingClass(this.expandoRowIndex,false);
  this.stateChangeNode=null;
  if(this._loading){
  this._loading=false;
  }
  if(this.autoHeight===true){
  this._resize();
  }
  this.focus._delayedCellFocus();
  },styleRowNode:function(_9f,_a0){
  if(_a0){
  this.rows.styleRowNode(_9f,_a0);
  }
  },onStyleRow:function(row){
  if(!this.layout._isCollapsable){
  this.inherited(arguments);
  return;
  }
  row.customClasses=(row.odd?" dojoxGridRowOdd":"")+(row.selected?" dojoxGridRowSelected":"")+(row.over?" dojoxGridRowOver":"");
  this.focus.styleRow(row);
  this.edit.styleRow(row);
  },onKeyDown:function(e){
  if(e.altKey||e.metaKey){
  return;
  }
  var _a1=dijit.findWidgets(e.target)[0];
  if(e.keyCode===_d.ENTER&&_a1 instanceof _1b){
  _a1.onToggle();
  }
  this.inherited(arguments);
  },_toggleLoadingClass:function(_a2,_a3){
  var _a4=this.views.views,_a5,_a6=_a4[_a4.length-1].getRowNode(_a2);
  if(_a6){
  _a5=_6(".dojoxGridExpando",_a6)[0];
  if(_a5){
  _9.toggle(_a5,"dojoxGridExpandoLoading",_a3);
  }
  }
  },_updateRenderedRows:function(_a7){
  _5.forEach(this.scroller.stack,function(p){
  if(p*this.rowsPerPage>=_a7){
  this.updateRows(p*this.rowsPerPage,this.rowsPerPage);
  }else{
  if((p+1)*this.rowsPerPage>=_a7){
  this.updateRows(_a7,(p+1)*this.rowsPerPage-_a7+1);
  }
  }
  },this);
  },_fold:function(_a8,_a9){
  var _aa=-1,i=0,_ab=this._by_idx,_ac=this._by_idty[_a8];
  if(_ac&&_ac.item&&this.treeModel.mayHaveChildren(_ac.item)){
  for(;i<_ab.length;i++){
  if(_ab[i]&&_ab[i].idty===_a8){
  _aa=i;
  break;
  }
  }
  if(_aa>=0){
  var _ad=this.views.views[this.views.views.length-1].getRowNode(_aa);
  if(_ad){
  var _ae=dijit.findWidgets(_ad)[0];
  if(_ae){
  _ae.setOpen(_a9);
  }
  }
  }
  }
  }});
  _5b.markupFactory=function(_af,_b0,_b1,_b2){
  return _11.markupFactory(_af,_b0,_b1,_b2);
  };
  return _5b;
  });
  