/*
	Copyright (c) 2004-2008, 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.compat.Grid"]){dojo._hasResource["dojox.grid.compat.Grid"]=true;dojo.provide("dojox.grid.compat.Grid");dojo.require("dojox.grid.compat.VirtualGrid");dojo.require("dojox.grid.compat._data.model");dojo.require("dojox.grid.compat._data.editors");dojo.require("dojox.grid.compat._data.dijitEditors");dojo.declare("dojox.Grid",dojox.VirtualGrid,{model:"dojox.grid.data.Table",postCreate:function(){if(this.model){var m=this.model;if(dojo.isString(m)){m=dojo.getObject(m);}this.model=(dojo.isFunction(m))?new m():m;this._setModel(this.model);}this.inherited(arguments);},destroy:function(){this.setModel(null);this.inherited(arguments);},_structureChanged:function(){this.indexCellFields();this.inherited(arguments);},_setModel:function(_2){this.model=_2;if(this.model){this.model.observer(this);this.model.measure();this.indexCellFields();}},setModel:function(_3){if(this.model){this.model.notObserver(this);}this._setModel(_3);},get:function(_4){return this.grid.model.getDatum(_4,this.fieldIndex);},modelAllChange:function(){this.rowCount=(this.model?this.model.getRowCount():0);this.updateRowCount(this.rowCount);},modelBeginUpdate:function(){this.beginUpdate();},modelEndUpdate:function(){this.endUpdate();},modelRowChange:function(_5,_6){this.updateRow(_6);},modelDatumChange:function(_7,_8,_9){this.updateRow(_8);},modelFieldsChange:function(){this.indexCellFields();this.render();},modelInsertion:function(_a){this.updateRowCount(this.model.getRowCount());},modelRemoval:function(_b){this.updateRowCount(this.model.getRowCount());},getCellName:function(_c){var v=this.model.fields.values,i=_c.fieldIndex;return i>=0&&i<v.length&&v[i].name||this.inherited(arguments);},indexCellFields:function(){var _f=this.layout.cells;for(var i=0,c;_f&&(c=_f[i]);i++){if(dojo.isString(c.field)){c.fieldIndex=this.model.fields.indexOf(c.field);}}},refresh:function(){this.edit.cancel();this.model.measure();},canSort:function(_12){var f=this.getSortField(_12);return f&&this.model.canSort(f);},getSortField:function(_14){var c=this.getCell(this.getSortIndex(_14));return (c.fieldIndex+1)*(this.sortInfo>0?1:-1);},sort:function(){this.edit.apply();this.model.sort(this.getSortField());},addRow:function(_16,_17){this.edit.apply();var i=_17||-1;if(i<0){i=this.selection.getFirstSelected()||0;}if(i<0){i=0;}this.model.insert(_16,i);this.model.beginModifyRow(i);for(var j=0,c;((c=this.getCell(j))&&!c.editor);j++){}if(c&&c.editor){this.edit.setEditCell(c,i);this.focus.setFocusCell(c,i);}else{this.focus.setFocusCell(this.getCell(0),i);}},removeSelectedRows:function(){this.edit.apply();var s=this.selection.getSelected();if(s.length){this.model.remove(s);this.selection.clear();}},canEdit:function(_1c,_1d){return (this.model.canModify?this.model.canModify(_1d):true);},doStartEdit:function(_1e,_1f){this.model.beginModifyRow(_1f);this.onStartEdit(_1e,_1f);},doApplyCellEdit:function(_20,_21,_22){this.model.setDatum(_20,_21,_22);this.onApplyCellEdit(_20,_21,_22);},doCancelEdit:function(_23){this.model.cancelModifyRow(_23);this.onCancelEdit.apply(this,arguments);},doApplyEdit:function(_24){this.model.endModifyRow(_24);this.onApplyEdit(_24);},styleRowState:function(_25){if(this.model.getState){var _26=this.model.getState(_25.index),c="";for(var i=0,ss=["inflight","error","inserting"],s;s=ss[i];i++){if(_26[s]){c=" dojoxGrid-row-"+s;break;}}_25.customClasses+=c;}},onStyleRow:function(_2b){this.styleRowState(_2b);this.inherited(arguments);}});dojox.Grid.markupFactory=function(_2c,_2d,_2e){var d=dojo;var _30=function(n){var w=d.attr(n,"width")||"auto";if((w!="auto")&&(w.substr(-2)!="em")){w=parseInt(w)+"px";}return w;};if(!_2c.model&&d.hasAttr(_2d,"store")){var _33=_2d.cloneNode(false);d.attr(_33,{"jsId":null,"dojoType":d.attr(_2d,"dataModelClass")||"dojox.grid.data.DojoData"});_2c.model=d.parser.instantiate([_33])[0];}if(!_2c.structure&&_2d.nodeName.toLowerCase()=="table"){_2c.structure=d.query("> colgroup",_2d).map(function(cg){var sv=d.attr(cg,"span");var v={noscroll:(d.attr(cg,"noscroll")=="true")?true:false,__span:(!!sv?parseInt(sv):1),cells:[]};if(d.hasAttr(cg,"width")){v.width=_30(cg);}return v;});if(!_2c.structure.length){_2c.structure.push({__span:Infinity,cells:[]});}d.query("thead > tr",_2d).forEach(function(tr,_38){var _39=0;var _3a=0;var _3b;var _3c=null;d.query("> th",tr).map(function(th){if(!_3c){_3b=0;_3c=_2c.structure[0];}else{if(_39>=(_3b+_3c.__span)){_3a++;_3b+=_3c.__span;lastView=_3c;_3c=_2c.structure[_3a];}}var _3e={name:d.trim(d.attr(th,"name")||th.innerHTML),field:d.trim(d.attr(th,"field")||""),colSpan:parseInt(d.attr(th,"colspan")||1)};_39+=_3e.colSpan;_3e.field=_3e.field||_3e.name;_3e.width=_30(th);if(!_3c.cells[_38]){_3c.cells[_38]=[];}_3c.cells[_38].push(_3e);});});}return new dojox.Grid(_2c,_2d);};dojox.grid.Grid=dojox.Grid;}