/*
	Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dojox.grid.EnhancedGrid"]){
dojo._hasResource["dojox.grid.EnhancedGrid"]=true;
dojo.provide("dojox.grid.EnhancedGrid");
dojo.require("dojox.grid.DataGrid");
dojo.require("dojox.grid.enhanced._PluginManager");
dojo.requireLocalization("dojox.grid.enhanced","EnhancedGrid",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,kk,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
dojo.experimental("dojox.grid.EnhancedGrid");
dojo.declare("dojox.grid.EnhancedGrid",dojox.grid.DataGrid,{plugins:null,pluginMgr:null,keepSelection:false,_pluginMgrClass:dojox.grid.enhanced._PluginManager,postMixInProperties:function(){
this._nls=dojo.i18n.getLocalization("dojox.grid.enhanced","EnhancedGrid",this.lang);
this.inherited(arguments);
},postCreate:function(){
this.pluginMgr=new this._pluginMgrClass(this);
this.pluginMgr.preInit();
this.inherited(arguments);
this.pluginMgr.postInit();
},plugin:function(_1){
return this.pluginMgr.getPlugin(_1);
},startup:function(){
this.inherited(arguments);
this.pluginMgr.startup();
},createSelection:function(){
this.selection=new dojox.grid.enhanced.DataSelection(this);
},canSort:function(_2,_3){
return true;
},doKeyEvent:function(e){
var _4=this.focus.focusView;
_4.content.decorateEvent(e);
if(!e.cell){
_4.header.decorateEvent(e);
}
this.inherited(arguments);
},doApplyCellEdit:function(_5,_6,_7){
if(!_7){
this.invalidated[_6]=true;
return;
}
this.inherited(arguments);
},mixin:function(_8,_9){
var _a={};
for(var p in _9){
if(p=="_inherited"||p=="declaredClass"||p=="constructor"||_9["privates"]&&_9["privates"][p]){
continue;
}
_a[p]=_9[p];
}
dojo.mixin(_8,_a);
},_copyAttr:function(_b,_c){
if(!_c){
return;
}
return this.inherited(arguments);
},_getHeaderHeight:function(){
this.inherited(arguments);
return dojo.marginBox(this.viewsHeaderNode).h;
},_fetch:function(_d,_e){
if(this.items){
return this.inherited(arguments);
}
_d=_d||0;
if(this.store&&!this._pending_requests[_d]){
if(!this._isLoaded&&!this._isLoading){
this._isLoading=true;
this.showMessage(this.loadingMessage);
}
this._pending_requests[_d]=true;
try{
var _f={start:_d,count:this.rowsPerPage,query:this.query,sort:this.getSortProps(),queryOptions:this.queryOptions,isRender:_e,onBegin:dojo.hitch(this,"_onFetchBegin"),onComplete:dojo.hitch(this,"_onFetchComplete"),onError:dojo.hitch(this,"_onFetchError")};
this._storeLayerFetch(_f);
}
catch(e){
this._onFetchError(e,{start:_d,count:this.rowsPerPage});
}
}
return 0;
},_storeLayerFetch:function(req){
this.store.fetch(req);
},getCellByField:function(_10){
return dojo.filter(this.layout.cells,function(_11){
return _11.field==_10;
})[0];
},onMouseUp:function(e){
},createView:function(){
var _12=this.inherited(arguments);
if(dojo.isMoz){
var _13=function(_14,_15){
for(var n=_14;n&&_15(n);n=n.parentNode){
}
return n;
};
var _16=function(_17){
var _18=_17.toUpperCase();
return function(_19){
return _19.tagName!=_18;
};
};
var _1a=_12.header.getCellX;
_12.header.getCellX=function(e){
var x=_1a.call(_12.header,e);
var n=_13(e.target,_16("th"));
if(n&&n!==e.target&&dojo.isDescendant(e.target,n)){
x+=n.firstChild.offsetLeft;
}
return x;
};
}
return _12;
},destroy:function(){
delete this._nls;
this.selection.destroy();
this.pluginMgr.destroy();
this.inherited(arguments);
}});
dojo.provide("dojox.grid.enhanced.DataSelection");
dojo.require("dojox.grid.enhanced.plugins._SelectionPreserver");
dojo.declare("dojox.grid.enhanced.DataSelection",dojox.grid.DataSelection,{constructor:function(_1b){
if(_1b.keepSelection){
this.preserver=new dojox.grid.enhanced.plugins._SelectionPreserver(this);
}
},_range:function(_1c,_1d){
this.grid._selectingRange=true;
this.inherited(arguments);
this.grid._selectingRange=false;
this.onChanged();
},deselectAll:function(_1e){
this.grid._selectingRange=true;
this.inherited(arguments);
this.grid._selectingRange=false;
this.onChanged();
},destroy:function(){
if(this.preserver){
this.preserver.destroy();
}
}});
dojox.grid.EnhancedGrid.markupFactory=function(_1f,_20,_21,_22){
return dojox.grid._Grid.markupFactory(_1f,_20,_21,dojo.partial(dojox.grid.DataGrid.cell_markupFactory,_22));
};
dojox.grid.EnhancedGrid.registerPlugin=function(_23,_24){
dojox.grid.enhanced._PluginManager.registerPlugin(_23,_24);
};
}
