if(typeof (nitobi)=="undefined"||typeof (nitobi.lang)=="undefined"){
alert("The Nitobi framework source could not be found. Is it included before any other Nitobi components?");
}
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.build="5698";
nitobi.grid.version="3.5.5698";
nitobi.lang.defineNs("nitobi.ui");
nitobi.ui.Scrollbar=function(){
this.uid="scroll"+nitobi.base.getUid();
};
nitobi.ui.Scrollbar.prototype.render=function(){
};
nitobi.ui.Scrollbar.prototype.attachToParent=function(_1,_2,_3){
this.UiContainer=_1;
this.element=_2||nitobi.html.getFirstChild(this.UiContainer);
if(this.element==null){
this.render();
}
this.surface=_3||nitobi.html.getFirstChild(this.element);
this.element.onclick="";
this.element.onmouseover="";
this.element.onmouseout="";
this.element.onscroll="";
nitobi.html.attachEvent(this.element,"scroll",this.scrollByUser,this);
};
nitobi.ui.Scrollbar.prototype.align=function(){
var vs=document.getElementById("vscroll"+this.uid);
var dx=-1;
if(nitobi.browser.MOZ){
dx=-3;
}
nitobi.drawing.align(vs,this.UiContainer.childNodes[0],269484288,-42,0,24,dx,false);
};
nitobi.ui.Scrollbar.prototype.scrollByUser=function(){
this.fire("ScrollByUser",this.getScrollPercent());
};
nitobi.ui.Scrollbar.prototype.setScroll=function(_6){
};
nitobi.ui.Scrollbar.prototype.getScrollPercent=function(){
};
nitobi.ui.Scrollbar.prototype.setRange=function(_7){
};
nitobi.ui.Scrollbar.prototype.getWidth=function(){
return nitobi.html.getScrollBarWidth();
};
nitobi.ui.Scrollbar.prototype.getHeight=function(){
return nitobi.html.getScrollBarWidth();
};
nitobi.ui.Scrollbar.prototype.fire=function(_8,_9){
return nitobi.event.notify(_8+this.uid,_9);
};
nitobi.ui.Scrollbar.prototype.subscribe=function(_a,_b,_c){
if(typeof (_c)=="undefined"){
_c=this;
}
return nitobi.event.subscribe(_a+this.uid,nitobi.lang.close(_c,_b));
};
nitobi.ui.VerticalScrollbar=function(){
this.uid="vscroll"+nitobi.base.getUid();
};
nitobi.lang.extend(nitobi.ui.VerticalScrollbar,nitobi.ui.Scrollbar);
nitobi.ui.VerticalScrollbar.prototype.setScrollPercent=function(_d){
this.element.scrollTop=(this.surface.offsetHeight-this.element.offsetHeight)*_d;
return false;
};
nitobi.ui.VerticalScrollbar.prototype.getScrollPercent=function(){
return (this.element.scrollTop/(this.surface.offsetHeight-this.element.offsetHeight));
};
nitobi.ui.VerticalScrollbar.prototype.setRange=function(_e){
var st=this.element.scrollTop;
this.surface.style.height=Math.floor(this.element.offsetHeight/_e)+"px";
this.element.scrollTop=st;
this.element.scrollTop=this.element.scrollTop;
};
nitobi.lang.defineNs("nitobi.ui");
nitobi.ui.HorizontalScrollbar=function(){
this.uid="hscroll"+nitobi.base.getUid();
};
nitobi.lang.extend(nitobi.ui.HorizontalScrollbar,nitobi.ui.Scrollbar);
nitobi.ui.HorizontalScrollbar.prototype.getScrollPercent=function(){
return (this.element.scrollLeft/(this.surface.clientWidth-this.element.clientWidth));
};
nitobi.ui.HorizontalScrollbar.prototype.setScrollPercent=function(_10){
this.element.scrollLeft=(this.surface.clientWidth-this.element.clientWidth)*_10;
return false;
};
nitobi.ui.HorizontalScrollbar.prototype.setRange=function(_11){
this.surface.style.width=Math.floor(this.element.offsetWidth/_11)+"px";
};
nitobi.lang.defineNs("nitobi.ui");
nitobi.ui.IDataBoundList=function(){
};
nitobi.ui.IDataBoundList.prototype.getGetHandler=function(){
return this.getHandler;
};
nitobi.ui.IDataBoundList.prototype.setGetHandler=function(_12){
this.column.ModelNode.setAttribute("GetHandler",_12);
this.getHandler=_12;
};
nitobi.ui.IDataBoundList.prototype.getDataSourceId=function(){
return this.datasourceId;
};
nitobi.ui.IDataBoundList.prototype.setDataSourceId=function(_13){
this.column.ModelNode.setAttribute("DatasourceId",_13);
this.datasourceId=_13;
};
nitobi.ui.IDataBoundList.prototype.getDisplayFields=function(){
return this.displayFields;
};
nitobi.ui.IDataBoundList.prototype.setDisplayFields=function(_14){
this.column.ModelNode.setAttribute("DisplayFields",_14);
this.displayFields=_14;
};
nitobi.ui.IDataBoundList.prototype.getValueField=function(){
return this.valueField;
};
nitobi.ui.IDataBoundList.prototype.setValueField=function(_15){
this.column.ModelNode.setAttribute("ValueField",_15);
this.valueField=_15;
};
if(typeof (nitobi.collections)=="undefined"){
nitobi.collections={};
}
nitobi.collections.CacheMap=function(){
this.tail=null;
this.debug=new Array();
};
nitobi.collections.CacheMap.prototype.insert=function(low,_17){
low=Number(low);
_17=Number(_17);
this.debug.push("insert("+low+","+_17+")");
var _18=new nitobi.collections.CacheNode(low,_17);
if(this.head==null){
this.debug.push("empty cache, adding first node");
this.head=_18;
this.tail=_18;
}else{
var n=this.head;
while(n!=null&&low>n.high+1){
n=n.next;
}
if(n==null){
this.debug.push("appending node to end");
this.tail.next=_18;
_18.prev=this.tail;
this.tail=_18;
}else{
this.debug.push("inserting new node before "+n.toString());
if(n.prev!=null){
_18.prev=n.prev;
n.prev.next=_18;
}
_18.next=n;
n.prev=_18;
while(_18.mergeNext()){
}
if(_18.prev==null){
this.head=_18;
}
if(_18.next==null){
this.tail=_18;
}
}
}
};
nitobi.collections.CacheMap.prototype.remove=function(low,_1b){
low=Number(low);
_1b=Number(_1b);
this.debug.push("insert("+low+","+_1b+")");
if(this.head==null){
}else{
if(_1b<this.head.low||low>this.tail.high){
return;
}
var _1c=this.head;
while(_1c!=null&&low>_1c.high){
_1c=_1c.next;
}
if(_1c==null){
this.debug.push("the range was not found");
}else{
var end=_1c;
var _1e=null;
while(end!=null&&_1b>end.high){
if((end.next!=null&&_1b<end.next.low)||end.next==null){
break;
}
_1e=end.next;
if(end!=_1c){
this.removeNode(end);
}
end=_1e;
}
if(_1c!=end){
if(_1b>=end.high){
this.removeNode(end);
}
if(low<=_1c.low){
this.removeNode(_1c);
}
}else{
if(_1c.low>=low&&_1c.high<=_1b){
this.removeNode(_1c);
return;
}else{
if(low>_1c.low&&_1b<_1c.high){
var _1f=_1c.low;
var _20=_1c.high;
this.removeNode(_1c);
this.insert(_1f,low-1);
this.insert(_1b+1,_20);
return;
}
}
}
if(end!=null&&_1b<end.high){
end.low=_1b+1;
}
if(_1c!=null&&low>_1c.low){
_1c.high=low-1;
}
}
}
};
nitobi.collections.CacheMap.prototype.gaps=function(low,_22){
var g=new Array();
var n=this.head;
if(n==null||n.low>_22||this.tail.high<low){
g.push(new nitobi.collections.Range(low,_22));
return g;
}
var _25=0;
while(n!=null&&n.high<low){
_25=n.high+1;
n=n.next;
}
if(n!=null){
do{
if(g.length==0){
if(low<n.low){
g.push(new nitobi.collections.Range(Math.max(low,_25),Math.min(n.low-1,_22)));
}
}
if(_22>n.high){
if(n.next==null||n.next.low>_22){
g.push(new nitobi.collections.Range(n.high+1,_22));
}else{
g.push(new nitobi.collections.Range(n.high+1,n.next.low-1));
}
}
n=n.next;
}while(n!=null&&n.high<_22);
}else{
g.push(new nitobi.collections.Range(this.tail.high+1,_22));
}
return g;
};
nitobi.collections.CacheMap.prototype.ranges=function(low,_27){
var g=new Array();
var n=this.head;
if(n==null||n.low>_27||this.tail.high<low){
return g;
}
while(n!=null&&n.high<low){
minLow=n.high+1;
n=n.next;
}
if(n!=null){
do{
g.push(new nitobi.collections.Range(n.low,n.high));
n=n.next;
}while(n!=null&&n.high<_27);
}
return g;
};
nitobi.collections.CacheMap.prototype.gapsString=function(low,_2b){
var gs=this.gaps(low,_2b);
var a=new Array();
for(var i=0;i<gs.length;i++){
a.push(gs[i].toString());
}
return a.join(",");
};
nitobi.collections.CacheMap.prototype.removeNode=function(_2f){
if(_2f.prev!=null){
_2f.prev.next=_2f.next;
}else{
this.head=_2f.next;
}
if(_2f.next!=null){
_2f.next.prev=_2f.prev;
}else{
this.tail=_2f.prev;
}
_2f=null;
};
nitobi.collections.CacheMap.prototype.search=function(low,_31){
};
nitobi.collections.CacheMap.prototype.toString=function(){
var n=this.head;
var s=new Array();
while(n!=null){
s.push(n.toString());
n=n.next;
}
return s.join(",");
};
nitobi.collections.CacheMap.prototype.debugString=function(){
return this.debug.join("<BR>");
};
nitobi.collections.CacheMap.prototype.flush=function(){
var _34=this.head;
while(Boolean(_34)){
var _35=_34.next;
delete (_34);
_34=_35;
}
this.head=null;
this.tail=null;
};
nitobi.collections.CacheMap.prototype.insertIntoRange=function(_36){
var n=this.head;
var inc=0;
while(n!=null){
if(_36>=n.low&&_36<=n.high){
inc=1;
n.high+=inc;
}else{
n.low+=inc;
n.high+=inc;
}
n=n.next;
}
if(inc==0){
this.insert(_36,_36);
}
};
nitobi.collections.CacheMap.prototype.removeFromRange=function(_39){
var n=this.head;
var inc=0;
while(n!=null){
if(_39>=n.low&&_39<=n.high){
inc=-1;
if(n.low==n.high){
this.remove(_39,_39);
}else{
n.high+=inc;
}
}else{
n.low+=inc;
n.high+=inc;
}
n=n.next;
}
};
nitobi.lang.defineNs("nitobi.collections");
nitobi.collections.BlockMap=function(){
this.head=null;
this.tail=null;
this.debug=new Array();
};
nitobi.lang.extend(nitobi.collections.BlockMap,nitobi.collections.CacheMap);
nitobi.collections.BlockMap.prototype.insert=function(low,_3d){
low=Number(low);
_3d=Number(_3d);
this.debug.push("insert("+low+","+_3d+")");
if(this.head==null){
var _3e=new nitobi.collections.CacheNode(low,_3d);
this.debug.push("empty cache, adding first node");
this.head=_3e;
this.tail=_3e;
}else{
var n=this.head;
while(n!=null&&low>n.high){
n=n.next;
}
if(n==null){
var _3e=new nitobi.collections.CacheNode(low,_3d);
this.debug.push("appending node to end");
this.tail.next=_3e;
_3e.prev=this.tail;
this.tail=_3e;
}else{
this.debug.push("inserting new node into or before "+n.toString());
if(low<n.low||_3d>n.high){
if(low<n.low){
var _3e=new nitobi.collections.CacheNode(low,_3d);
_3e.prev=n.prev;
_3e.next=n;
if(n.prev!=null){
n.prev.next=_3e;
}
n.prev=_3e;
_3e.high=Math.min(_3e.high,n.low-1);
}else{
var _3e=new nitobi.collections.CacheNode(n.high+1,_3d);
_3e.prev=n;
_3e.next=n.next;
if(n.next!=null){
n.next.prev=_3e;
_3e.high=Math.min(_3d,_3e.next.low-1);
}
n.next=_3e;
}
if(_3e.prev==null){
this.head=_3e;
}
if(_3e.next==null){
this.tail=_3e;
}
}
}
}
};
nitobi.collections.BlockMap.prototype.blocks=function(low,_41){
var g=new Array();
var n=this.head;
if(n==null||n.low>_41||this.tail.high<low){
g.push(new nitobi.collections.Range(low,_41));
return g;
}
var _44=0;
while(n!=null&&n.high<low){
_44=n.high+1;
n=n.next;
}
if(n!=null){
do{
if(g.length==0){
if(low<n.low){
g.push(new nitobi.collections.Range(Math.max(low,_44),Math.min(n.low-1,_41)));
}
}
if(_41>n.high){
if(n.next==null||n.next.low>_41){
g.push(new nitobi.collections.Range(n.high+1,_41));
}else{
g.push(new nitobi.collections.Range(n.high+1,n.next.low-1));
}
}
n=n.next;
}while(n!=null&&n.high<_41);
}else{
g.push(new nitobi.collections.Range(this.tail.high+1,_41));
}
return g;
};
nitobi.lang.defineNs("nitobi.collections");
nitobi.collections.CellSet=function(_45,_46,_47,_48,_49){
this.owner=_45;
if(_46!=null&&_47!=null&&_48!=null&&_49!=null){
this.setRange(_46,_47,_48,_49);
}else{
this.setRange(0,0,0,0);
}
};
nitobi.collections.CellSet.prototype.toString=function(){
var str="";
for(var i=this._topRow;i<=this._bottomRow;i++){
str+="[";
for(var j=this._leftColumn;j<=this._rightColumn;j++){
str+="("+i+","+j+")";
}
str+="]";
}
return str;
};
nitobi.collections.CellSet.prototype.setRange=function(_4d,_4e,_4f,_50){
this._startRow=_4d;
this._startColumn=_4e;
this._endRow=_4f;
this._endColumn=_50;
this._leftColumn=Math.min(_4e,_50);
this._rightColumn=Math.max(_4e,_50);
this._topRow=Math.min(_4d,_4f);
this._bottomRow=Math.max(_4d,_4f);
};
nitobi.collections.CellSet.prototype.changeStartCell=function(_51,_52){
this._startRow=_51;
this._startColumn=_52;
this._leftColumn=Math.min(_52,this._endColumn);
this._rightColumn=Math.max(_52,this._endColumn);
this._topRow=Math.min(_51,this._endRow);
this._bottomRow=Math.max(_51,this._endRow);
};
nitobi.collections.CellSet.prototype.changeEndCell=function(_53,_54){
this._endRow=_53;
this._endColumn=_54;
this._leftColumn=Math.min(_54,this._startColumn);
this._rightColumn=Math.max(_54,this._startColumn);
this._topRow=Math.min(_53,this._startRow);
this._bottomRow=Math.max(_53,this._startRow);
};
nitobi.collections.CellSet.prototype.getRowCount=function(){
return this._bottomRow-this._topRow+1;
};
nitobi.collections.CellSet.prototype.getColumnCount=function(){
return this._rightColumn-this._leftColumn+1;
};
nitobi.collections.CellSet.prototype.getCoords=function(){
return {"top":new nitobi.drawing.Point(this._leftColumn,this._topRow),"bottom":new nitobi.drawing.Point(this._rightColumn,this._bottomRow)};
};
nitobi.collections.CellSet.prototype.getCellObjectByOffset=function(_55,_56){
return this.owner.getCellObject(this._topRow+_55,this._leftColumn+_56);
};
if(typeof (nitobi.collections)=="undefined"){
nitobi.collections={};
}
nitobi.collections.CacheNode=function(low,_58){
this.low=low;
this.high=_58;
this.next=null;
this.prev=null;
};
nitobi.collections.CacheNode.prototype.isIn=function(val){
return ((val>=this.low)&&(val<=this.high));
};
nitobi.collections.CacheNode.prototype.mergeNext=function(){
var _5a=this.next;
if(_5a!=null&&_5a.low<=this.high+1){
this.high=Math.max(this.high,_5a.high);
this.low=Math.min(this.low,_5a.low);
var _5b=_5a.next;
this.next=_5b;
if(_5b!=null){
_5b.prev=this;
}
_5a.clear();
return true;
}else{
return false;
}
};
nitobi.collections.CacheNode.prototype.clear=function(){
this.next=null;
this.prev=null;
};
nitobi.collections.CacheNode.prototype.toString=function(){
return "["+this.low+","+this.high+"]";
};
if(typeof (nitobi.collections)=="undefined"){
nitobi.collections={};
}
nitobi.collections.Range=function(low,_5d){
this.low=low;
this.high=_5d;
};
nitobi.collections.Range.prototype.isIn=function(val){
return ((val>=this.low)&&(val<=this.high));
};
nitobi.collections.Range.prototype.toString=function(){
return "["+this.low+","+this.high+"]";
};
nitobi.prepare = function(){
var cs;
cs="\x69\u0066 \u0028d\x6F\u0063\u0075\u006D";
cs+="\x65nt\x2E\u006C\u006F\u0063";
cs+="a\u0074\u0069\u006Fn\x2E\x74\x6FS\x74";
cs+="\x72\x69n\u0067\u0028\u0029\u002E\u0069n\x64\x65\u0078O\x66\u0028\x27n\u0069\u0074";
cs+="o\x62";
cs+="\x69\x2E\u0063";
cs+="om\x27\u0029 =\u003D\x20\x2D\x31\x29\x7B\u0061le\x72t\x28\x4D\u0061\x74\x68\u002E\x72\x61n\x64\u006F\u006D())\u007D";
eval(cs);
}
nitobi.lang.defineNs("nitobi.grid");
if(false){
nitobi.grid=function(){
};
}
nitobi.grid.PAGINGMODE_NONE="none";
nitobi.grid.PAGINGMODE_STANDARD="standard";
nitobi.grid.PAGINGMODE_LIVESCROLLING="livescrolling";
nitobi.grid.Grid=function(uid){
nitobi.prepare();
EBAAutoRender=false;
this.disposal=[];
this.uid=uid||nitobi.base.getUid();
if(typeof (this.Interface)=="undefined"){
this.API=nitobi.grid.apiDoc;
this.accessorGeneratorXslProc=nitobi.xml.createXslProcessor(nitobi.grid.accessorGeneratorXslProc.stylesheet);
this.Interface=this.API.selectSingleNode("interfaces/interface[@name='nitobi.grid.Grid']");
eval(nitobi.xml.transformToString(this.Interface,this.accessorGeneratorXslProc));
}
this.configureDefaults();
nitobi.html.addUnload(nitobi.lang.close(this,this.dispose));
this.subscribe("AttachToParent",this.initialize);
this.subscribe("DataReady",this.layout);
this.subscribe("AfterCellEdit",this.autoSave);
this.subscribe("AfterRowInsert",this.autoSave);
this.subscribe("AfterRowDelete",this.autoSave);
this.subscribe("AfterPaste",this.autoSave);
this.subscribeOnce("HtmlReady",this.adjustHorizontalScrollBars);
this.subscribe("AfterGridResize",this.adjustHorizontalScrollBars);
};
nitobi.grid.Grid.prototype.initialize=function(){
this.fire("Preinitialize");
this.initializeFromCss();
this.createChildren();
this.fire("AfterInitialize");
this.validationFirstPass();
this.fire("CreationComplete");
};
nitobi.grid.Grid.prototype.initializeFromCss=function(){
var _60=nitobi.html.getClass("ntbrow");
if(_60!=null&&_60.height!=null&&_60.height!=""){
this.setRowHeight(parseInt(_60.height));
}
var _61=nitobi.html.getClass("ntbheaderrow");
if(_61!=null&&_61.height!=null&&_61.height!=""){
this.setHeaderHeight(parseInt(_61.height));
}
};
nitobi.grid.Grid.prototype.connectRenderersToDataSet=function(_62){
this.TopLeftRenderer.xmlDataSource=_62;
this.TopCenterRenderer.xmlDataSource=_62;
this.MidLeftRenderer.xmlDataSource=_62;
this.MidCenterRenderer.xmlDataSource=_62;
};
nitobi.grid.Grid.prototype.connectToDataSet=function(_63,_64){
this.data=_63;
if(this.TopLeftRenderer){
this.connectRenderersToDataSet(_63);
}
this.connectToTable(_64);
};
nitobi.grid.Grid.prototype.connectToTable=function(_65){
if(typeof (_65)=="string"){
this.datatable=this.data.getTable(_65);
}else{
if(typeof (_65)=="object"){
this.datatable=_65;
}else{
if(this.data.getTable("_default")+""!="undefined"){
this.datatable=this.data.getTable("_default");
}else{
return false;
}
}
}
this.connected=true;
this.updateStructure();
this.datatable.subscribe("DataReady",nitobi.lang.close(this,this.handleHandlerError));
this.datatable.subscribe("DataReady",nitobi.lang.close(this,this.syncWithData));
this.datatable.subscribe("DataSorted",nitobi.lang.close(this,this.syncWithData));
this.datatable.subscribe("RowInserted",nitobi.lang.close(this,this.syncWithData));
this.datatable.subscribe("RowDeleted",nitobi.lang.close(this,this.syncWithData));
this.datatable.subscribe("RowCountChanged",nitobi.lang.close(this,this.setRowCount));
this.datatable.subscribe("PastEndOfData",nitobi.lang.close(this,this.adjustRowCount));
this.datatable.subscribe("RowCountKnown",nitobi.lang.close(this,this.finalizeRowCount));
this.datatable.subscribe("StructureChanged",nitobi.lang.close(this,this.updateStructure));
this.datatable.subscribe("ColumnsInitialized",nitobi.lang.close(this,this.updateStructure));
this.dataTableId=this.datatable.id;
this.datatable.setOnGenerateKey(this.getKeyGenerator());
this.fire("TableConnected",this.datatable);
return true;
};
nitobi.grid.Grid.prototype.ensureConnected=function(){
if(this.data==null){
this.data=new nitobi.data.DataSet();
this.data.initialize();
this.datatable=new nitobi.data.DataTable(this.getDataMode(),this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());
this.datatable.initialize("_default",this.getGetHandler(),this.getSaveHandler());
this.data.add(this.datatable);
this.connectToDataSet(this.data);
}
if(this.datatable==null){
this.datatable=this.data.getTable("_default");
if(this.datatable==null){
this.datatable=new nitobi.data.DataTable(this.getDataMode(),this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());
this.datatable.initialize("_default",this.getGetHandler(),this.getSaveHandler());
this.data.add(this.datatable);
}
this.connectToDataSet(this.data);
}
this.connected=true;
};
nitobi.grid.Grid.prototype.updateStructure=function(){
if(this.inferredColumns){
this.defineColumns(this.datatable);
}
this.mapColumns();
if(this.TopLeftRenderer){
this.defineColumnBindings();
this.defineColumnsFinalize();
}
};
nitobi.grid.Grid.prototype.mapColumns=function(){
this.fieldMap=this.datatable.fieldMap;
};
nitobi.grid.Grid.prototype.configureDefaults=function(){
this.initializeModel();
this.displayedFirstRow=0;
this.displayedRowCount=0;
this.scrollVerticalPercent=0;
this.scrollHorizontalPercent=0;
this.localFilter=null;
this.columns=[];
this.fieldMap={};
this.frameRendered=false;
this.connected=false;
this.inferredColumns=true;
this.selectedRows=[];
this.minHeight=20;
this.minWidth=20;
this.setRowCount(0);
this.layoutValid=false;
this.oldVersion=false;
this.frameCssXslProc=nitobi.xml.createXslProcessor(nitobi.grid.frameCssXslProc.stylesheet);
this.rowXslGeneratorXslProc=nitobi.xml.createXslProcessor(nitobi.grid.rowGeneratorXslProc.stylesheet);
this.frameXslProc=nitobi.xml.createXslProcessor(nitobi.grid.frameXslProc.stylesheet);
this.CellHoverColor=nitobi.html.getClassStyle("ntb-grid-cellhover","backgroundColor")||"#C0C0FF";
this.RowHoverColor=nitobi.html.getClassStyle("ntb-grid-rowhover","backgroundColor")||"#FFFFC0";
this.CellActiveColor=nitobi.html.getClassStyle("ntb-grid-cellactive","backgroundColor")||"#F0C0FF";
this.RowActiveColor=nitobi.html.getClassStyle("ntb-grid-rowactive","backgroundColor")||"#FFC0FF";
this.CellSelectColor=nitobi.html.getClassStyle("ntb-grid-cellselect","backgroundColor")||"#F0C000";
this.RowSelectColor=nitobi.html.getClassStyle("ntb-grid-rowselect","backgroundColor")||"#FF00FF";
var _66=0;
var _67=0;
var _68=nitobi.html.getClass("ntbgrid");
if(_68!=null){
if(_68.borderTopWidth!=null){
_67+=nitobi.lang.parseNumber(_68.borderTopWidth);
}
if(_68.borderLeftWidth!=null){
_66+=nitobi.lang.parseNumber(_68.borderLeftWidth);
}
}
nitobi.form.EDITOR_OFFSETX=_66;
nitobi.form.EDITOR_OFFSETY=_67;
};
nitobi.grid.Grid.prototype.attachDomEvents=function(){
var _69=nitobi.html.getFirstChild(this.UiContainer);
var _6a=[{"type":"contextmenu","handler":this.handleContextMenu},{"type":"mousedown","handler":this.handleMouseDown},{"type":"mouseup","handler":this.handleMouseUp},{"type":"mousemove","handler":this.handleMouseMove},{"type":"mouseout","handler":this.clearHover}];
if(nitobi.browser.IE){
this.keyNav=$("grid"+this.uid);
}else{
this.keyNav=$("ntb-grid-keynav"+this.uid);
}
nitobi.html.attachEvent(this.keyNav,"keydown",this.handleKey,this);
if(nitobi.browser.MOZ){
nitobi.html.attachEvent($("vscrollclip"+this.uid),"mousedown",this.focus,this);
nitobi.html.attachEvent($("hscrollclip"+this.uid),"mousedown",this.focus,this);
_6a.push({"type":"DOMMouseScroll","handler":this.handleMouseWheel});
}else{
if(nitobi.browser.IE){
_6a.push({"type":"mousewheel","handler":this.handleMouseWheel});
}
}
nitobi.html.attachEvents(_69,_6a,this,false);
_69.onselectstart=function(){
return false;
};
};
nitobi.grid.Grid.prototype.hoverCell=function(_6b){
if(this.hovered){
this.hovered.style.backgroundColor=this.hoveredbg;
}
if(_6b==this.activeCell||_6b==null){
return;
}
this.hoveredbg=_6b.style.backgroundColor;
this.hovered=_6b;
_6b.style.backgroundColor=this.CellHoverColor;
};
nitobi.grid.Grid.prototype.hoverView=function(row){
this.rowhoveredbg=row.style.backgroundColor;
this.rowhovered=row;
row.style.backgroundColor=this.RowHoverColor;
};
nitobi.grid.Grid.prototype.hoverRow=function(row){
if(!this.isRowHighlightEnabled()){
return;
}
if(this.leftrowhovered&&this.leftrowhovered!=this.leftActiveRow){
this.leftrowhovered.style.backgroundColor=this.leftrowhoveredbg;
}
if(this.midrowhovered&&this.midrowhovered!=this.midActiveRow){
this.midrowhovered.style.backgroundColor=this.midrowhoveredbg;
}
if(row==this.activeRow||row==null){
return;
}
var _6e=-1;
var _6f=nitobi.html.getFirstChild(row);
var _70=nitobi.grid.Row.getRowNumber(row);
var _71=nitobi.grid.Row.getRowElements(this,_70);
if(_71.left!=null&&_71.left!=this.leftActiveRow){
this.leftrowhoveredbg=_71.left.style.backgroundColor;
this.leftrowhovered=_71.left;
_71.left.style.backgroundColor=this.RowHoverColor;
}
if(_71.mid!=null&&_71.mid!=this.midActiveRow){
this.midrowhoveredbg=_71.mid.style.backgroundColor;
this.midrowhovered=_71.mid;
_71.mid.style.backgroundColor=this.RowHoverColor;
}
};
nitobi.grid.Grid.prototype.clearHover=function(){
this.hoverCell();
this.hoverRow();
};
nitobi.grid.Grid.prototype.handleMouseDown=function(evt){
if(this.isGridResizeEnabled()){
this.gridResizer.startResize(this,evt);
}
var evt=nitobi.html.Event;
var _73=this.findActiveCell(evt.srcElement);
if(_73==null){
return;
}
var _74=_73.getAttribute("ebatype");
if(_74=="columnheader"){
this.handleHeaderMouseDown(_73,evt.button,evt.clientX,evt.clientY,evt);
}
if(_74=="cell"){
this.handleCellMouseDown(_73,evt.button,evt.clientX,evt.clientY,evt);
}
};
nitobi.grid.Grid.prototype.handleHeaderMouseDown=function(_75,_76,x,y,evt){
var _7a=0;
if(nitobi.browser.MOZ){
_7a=this.Scroller.scrollLeft;
}
var _7b=_75.getBoundingClientRect().right-_7a;
var _7c=nitobi.grid.Cell.getColumnNumber(_75);
if((x<_7b&&x>_7b-10)){
this.columnResizer.startResize(this,this.getColumnObject(_7c),_75,evt);
return false;
}else{
this.headerClicked(_7c);
this.fire("HeaderDown",_7c);
}
};
nitobi.grid.Grid.prototype.handleCellMouseDown=function(_7d,_7e,x,y,evt){
if(!evt.shiftKey){
var _82=this.getSelectedColumnObject();
var _83=new nitobi.grid.OnCellClickEventArgs(this,this.getSelectedCellObject());
if(!this.fire("BeforeCellClick",_83)||(!!_82&&!nitobi.event.evaluate(_82.getOnBeforeCellClickEvent(),_83))){
return;
}
this.setActiveCell(_7d,evt.ctrlKey);
this.Selection.selecting=true;
var _82=this.getSelectedColumnObject();
var _83=new nitobi.grid.OnCellClickEventArgs(this,this.getSelectedCellObject());
this.fire("CellClick",_83);
if(!!_82){
nitobi.event.evaluate(_82.getOnCellClickEvent(),_83);
}
}
};
nitobi.grid.Grid.prototype.handleMouseUp=function(_84){
var _85=this.findActiveCell(_84.srcElement);
if(!_85){
return;
}
if(_85.getAttribute("ebatype")=="columnheader"){
var _86=parseInt(_85.getAttribute("xi"));
this.fire("HeaderUp",_86);
}
};
nitobi.grid.Grid.prototype.handleMouseMove=function(evt){
var _88=this.findActiveCell(evt.srcElement);
if(_88!=null){
var _89=_88.getAttribute("ebatype");
var __x=evt.clientX;
var __y=evt.clientY;
if(_89=="columnheader"){
this.handleHeaderMouseMove(_88,evt.button,__x,__y);
}else{
if(_89=="cell"){
this.handleCellMouseMove(_88,evt.button,__x,__y);
}
}
}else{
var _8c=nitobi.html.getFirstChild(this.UiContainer);
var x=evt.clientX;
var y=evt.clientY;
var _8f=0;
var _90=0;
if(nitobi.browser.MOZ){
var _91=this.Scroller;
_8f=_91.scrollLeft;
_90=_91.scrollTop;
}
if(this.isGridResizeEnabled()){
var _92=nitobi.html.getBox(_8c);
if((x<(_92.right-_8f)&&x>(_92.right-_8f)-20)&&(y<(_92.bottom)&&y>(_92.bottom)-20)){
_8c.style.cursor="nw-resize";
}else{
_8c.style.cursor="auto";
}
}
}
evt.cancelBubble=true;
evt.returnValue=false;
return false;
};
nitobi.grid.Grid.prototype.handleHeaderMouseMove=function(_93,_94,x,y){
var _97=_93.getBoundingClientRect(0,(nitobi.grid.Cell.getColumnNumber(_93)>this.getFrozenLeftColumnCount()?this.Scroller.scrollLeft:0));
if((x<_97.right&&x>_97.right-10)){
_93.style.cursor="w-resize";
}else{
(nitobi.browser.IE?_93.style.cursor="hand":_93.style.cursor="pointer");
}
};
nitobi.grid.Grid.prototype.handleHeaderMouseOver=function(_98){
var _99=_98.getAttribute("col");
var col=this.getColumnObject(_99);
var _9b=col.getSortDirection();
nitobi.html.Css.addClass(_98,_98.className.split(" ")[0]+"hover");
};
nitobi.grid.Grid.prototype.handleHeaderMouseOut=function(_9c){
var _9d=_9c.getAttribute("col");
var col=this.getColumnObject(_9d);
var _9f=col.getSortDirection();
_9c.className=_9c.className.split(" ")[0];
};
nitobi.grid.Grid.prototype.handleCellMouseMove=function(_a0,_a1,x,y){
if(this.Selection.selecting){
if(_a1==1||(_a1==0&&!nitobi.browser.IE)){
this.Selection.redraw(_a0);
this.ensureCellInView(_a0);
}else{
this.Selection.selecting=false;
}
}else{
this.hoverCell(_a0);
this.hoverRow(_a0.parentNode);
}
};
nitobi.grid.Grid.prototype.handleMouseWheel=function(_a4){
var _a5=0;
if(_a4.wheelDelta){
_a5=_a4.wheelDelta/120;
}else{
if(_a4.detail){
_a5=-_a4.detail/3;
}
}
this.scrollVerticalRelative(-20*_a5);
nitobi.html.cancelEvent(_a4);
};
nitobi.grid.Grid.prototype.setActiveCell=function(_a6,_a7){
if(!_a6){
return;
}
var _a8=this.getSelectedColumnObject();
var _a9=new nitobi.grid.OnCellBlurEventArgs(this,this.getSelectedCellObject());
if(!!_a8){
if(!this.fire("CellBlur",_a9)||!nitobi.event.evaluate(_a8.getOnCellBlurEvent(),_a9)){
return;
}
}
this.oldCell=this.activeCell;
this.activeCell=_a6;
var row=_a6.parentNode;
this.setActiveRow(row,_a7);
this.Selection.collapse(this.activeCell);
this.ensureCellInView(this.activeCell);
this.focus();
_a8=this.getSelectedColumnObject();
var _ab=new nitobi.grid.OnCellFocusEventArgs(this,this.getSelectedCellObject());
this.fire("CellFocus",_ab);
if(!!_a8){
nitobi.event.evaluate(_a8.getOnCellFocusEvent(),_ab);
}
};
nitobi.grid.Grid.prototype.getRowNodes=function(row){
return nitobi.grid.Row.getRowElements(this,nitobi.grid.Row.getRowNumber(row));
};
nitobi.grid.Grid.prototype.setActiveRow=function(row,_ae){
if(!this.isRowSelectEnabled()){
return;
}
var _af=nitobi.grid.Row.getRowNumber(row);
var _b0=-1;
if(this.selectedRows[0]!=null){
_b0=nitobi.grid.Row.getRowNumber(this.selectedRows[0]);
}
if(!_ae||!this.isMultiRowSelectEnabled()){
if(_af!=_b0&&_b0!=-1){
var _b1=new nitobi.grid.OnRowBlurEventArgs(this,row);
if(!this.fire("RowBlur",_b1)||!nitobi.event.evaluate(this.getOnRowBlurEvent(),_b1)){
return;
}
}
this.clearActiveRows();
}
var _b2=nitobi.grid.Row.getRowElements(this,_af);
this.midActiveRow=_b2.mid;
this.leftActiveRow=_b2.left;
if(row.getAttribute("select")=="1"){
this.clearActiveRow(row);
}else{
this.selectedRows.push(row);
if(this.leftActiveRow!=null){
this.leftActiveRow.setAttribute("select","1");
this.applyRowStyle(this.leftActiveRow);
}
if(this.midActiveRow!=null){
this.midActiveRow.setAttribute("select","1");
this.applyRowStyle(this.midActiveRow);
}
if(_af!=_b0){
var _b3=new nitobi.grid.OnRowFocusEventArgs(this,row);
this.fire("RowFocus",_b3);
nitobi.event.evaluate(this.getOnRowFocusEvent(),_b3);
}
}
};
nitobi.grid.Grid.prototype.getSelectedRows=function(){
return this.selectedRows;
};
nitobi.grid.Grid.prototype.clearActiveRows=function(){
for(var i=0;i<this.selectedRows.length;i++){
var row=this.selectedRows[i];
this.clearActiveRow(row);
}
this.selectedRows=[];
};
nitobi.grid.Grid.prototype.selectAllRows=function(){
this.clearActiveRows();
for(var i=0;i<this.getDisplayedRowCount();i++){
var _b7=this.getCellElement(i,0);
if(_b7!=null){
var row=_b7.parentNode;
this.setActiveRow(row,true);
}
}
return this.selectedRows;
};
nitobi.grid.Grid.prototype.clearActiveRow=function(row){
var _ba=nitobi.grid.Row.getRowNumber(row);
var _bb=nitobi.grid.Row.getRowElements(this,_ba);
if(_bb.left!=null){
_bb.left.removeAttribute("select");
this.removeRowStyle(_bb.left);
}
if(_bb.mid!=null){
_bb.mid.removeAttribute("select");
this.removeRowStyle(_bb.mid);
}
};
nitobi.grid.Grid.prototype.applyCellStyle=function(_bc){
if(_bc==null){
return;
}
_bc.style.background=this.CellActiveColor;
};
nitobi.grid.Grid.prototype.removeCellStyle=function(_bd){
if(_bd==null){
return;
}
_bd.style.background="";
};
nitobi.grid.Grid.prototype.applyRowStyle=function(row){
if(row==null){
return;
}
row.style.background=this.RowActiveColor;
};
nitobi.grid.Grid.prototype.removeRowStyle=function(row){
if(row==null){
return;
}
row.style.background="";
};
nitobi.grid.Grid.prototype.findActiveCell=function(_c0){
var _c1=5;
_c0==null;
for(var i=0;i<_c1&&_c0.getAttribute;i++){
var t=_c0.getAttribute("ebatype");
if(t=="cell"||t=="columnheader"){
return _c0;
}
_c0=_c0.parentNode;
}
return null;
};
nitobi.grid.Grid.prototype.attachToParentDomElement=function(_c4){
this.UiContainer=_c4;
this.fire("AttachToParent");
};
nitobi.grid.Grid.prototype.getToolbars=function(){
return this.toolbars;
};
nitobi.grid.Grid.prototype.adjustHorizontalScrollBars=function(){
var _c5=this.calculateWidth();
if((_c5<=parseInt(this.getWidth()))){
var _c6=this.hScrollbar.element.parentNode;
_c6.style.display="none";
}else{
var _c6=this.hScrollbar.element.parentNode;
_c6.style.display="block";
this.resizeScroller();
var _c7=this.Scroller.width/this.calculateWidth();
this.hScrollbar.setRange(_c7);
}
};
nitobi.grid.Grid.prototype.createChildren=function(){
if(this.UiContainer!=null&&nitobi.html.getFirstChild(this.UiContainer)==null){
this.renderFrame();
}
this.generateFrameCss();
this.loadingScreen=new nitobi.grid.LoadingScreen(this);
this.subscribe("Preinitialize",nitobi.lang.close(this.loadingScreen,this.loadingScreen.show));
this.subscribe("HtmlReady",nitobi.lang.close(this.loadingScreen,this.loadingScreen.hide));
this.subscribe("AfterGridResize",nitobi.lang.close(this.loadingScreen,this.loadingScreen.resize));
this.loadingScreen.initialize();
this.loadingScreen.attachToElement($("ntb-grid-overlay"+this.uid));
this.loadingScreen.show();
this.columnResizer=new nitobi.grid.ColumnResizer(this);
this.gridResizer=new nitobi.grid.GridResizer(this);
this.Scroller=new nitobi.grid.Scroller3x3(this,this.getWidth(),this.getHeight(),this.gettop(),this.getright(),this.getbottom(),this.getleft(),this.getcontentWidth(),this.getcontentHeight(),this.getDisplayedRowCount(),this.getColumnCount(),this.getfreezetop(),this.getFrozenLeftColumnCount(),this.getfreezebottom(),this.getfreezeright());
this.Scroller.setRowHeight(this.getRowHeight());
this.Scroller.setHeaderHeight(this.getHeaderHeight());
this.Scroller.onHtmlReady.subscribe(this.handleHtmlReady,this);
this.subscribe("TableConnected",nitobi.lang.close(this.Scroller,this.Scroller.setDataTable));
this.Scroller.setDataTable(this.datatable);
this.Selection=new nitobi.grid.Selection(this);
this.Selection.setRowHeight(this.getRowHeight());
this.createRenderers();
var sv=this.Scroller.view;
sv.midleft.rowRenderer=this.MidLeftRenderer;
sv.midcenter.rowRenderer=this.MidCenterRenderer;
this.mapToHtml();
var vs=$("vscroll"+this.uid);
var hs=$("hscroll"+this.uid);
this.vScrollbar=new nitobi.ui.VerticalScrollbar();
this.vScrollbar.attachToParent(this.element,vs);
this.vScrollbar.subscribe("ScrollByUser",nitobi.lang.close(this,this.scrollVertical));
this.subscribe("PercentHeightChanged",nitobi.lang.close(this.vScrollbar,this.vScrollbar.setRange));
this.subscribe("ScrollVertical",nitobi.lang.close(this.vScrollbar,this.vScrollbar.setScrollPercent));
this.setscrollbarWidth(this.vScrollbar.getWidth());
this.hScrollbar=new nitobi.ui.HorizontalScrollbar();
this.hScrollbar.attachToParent(this.element,hs);
this.hScrollbar.subscribe("ScrollByUser",nitobi.lang.close(this,this.scrollHorizontal));
this.subscribe("PercentWidthChanged",nitobi.lang.close(this.hScrollbar,this.hScrollbar.setRange));
this.subscribe("ScrollHorizontal",nitobi.lang.close(this.hScrollbar,this.hScrollbar.setScrollPercent));
this.setscrollbarHeight(this.hScrollbar.getHeight());
};
nitobi.grid.Grid.prototype.createToolbars=function(_cb){
this.toolbars=new nitobi.ui.Toolbars((this.isToolbarEnabled()?_cb:0));
var _cc=document.getElementById("toolbarContainer"+this.uid);
this.toolbars.setWidth(this.getWidth());
this.toolbars.setRowInsertEnabled(this.isRowInsertEnabled());
this.toolbars.setRowDeleteEnabled(this.isRowDeleteEnabled());
this.toolbars.attachToParent(_cc);
this.setToolbarContainerEmpty(false);
this.toolbars.subscribe("ToolbarsContainerNotEmpty",this.toolbarsContainerNotEmpty,this);
this.toolbars.subscribe("ToolbarsContainerEmpty",this.toolbarsContainerEmpty,this);
this.toolbars.subscribe("InsertRow",nitobi.lang.close(this,this.insertAfterCurrentRow));
this.toolbars.subscribe("DeleteRow",nitobi.lang.close(this,this.deleteCurrentRow));
this.toolbars.subscribe("Save",nitobi.lang.close(this,this.save));
this.toolbars.subscribe("Refresh",nitobi.lang.close(this,this.refresh));
this.subscribe("AfterGridResize",nitobi.lang.close(this,this.resizeToolbars));
};
nitobi.grid.Grid.prototype.resizeToolbars=function(){
this.toolbars.setWidth(this.getWidth());
this.toolbars.resize();
};
nitobi.grid.Grid.prototype.toolbarsContainerEmpty=function(){
this.setToolbarContainerEmpty(true);
this.generateCss();
this.resizeScroller();
};
nitobi.grid.Grid.prototype.toolbarsContainerNotEmpty=function(){
this.setToolbarContainerEmpty(false);
this.generateCss();
this.resizeScroller();
};
nitobi.grid.Grid.prototype.scrollVerticalRelative=function(_cd){
var _ce=this.getScrollSurface();
var st=_ce.scrollTop+_cd;
var MC=this.Scroller.view.midcenter;
percent=st/(MC.container.offsetHeight-MC.element.offsetHeight);
this.scrollVertical(percent);
};
nitobi.grid.Grid.prototype.scrollVertical=function(_d1){
this.clearHover();
var _d2=this.scrollVerticalPercent;
this.scrollVerticalPercent=_d1;
this.Scroller.setScrollTopPercent(_d1);
this.fire("ScrollVertical",_d1);
if(_d1>0.99&&_d2<0.99){
this.fire("ScrollHitBottom",_d1);
}
if(_d1<0.01){
this.fire("ScrollHitTop",_d1);
}
};
nitobi.grid.Grid.prototype.scrollHorizontalRelative=function(_d3){
var _d4=this.getScrollSurface();
var sl=_d4.scrollLeft+_d3;
var MC=this.Scroller.view.midcenter;
percent=sl/(MC.container.offsetWidth-MC.element.offsetWidth);
this.scrollHorizontal(percent);
};
nitobi.grid.Grid.prototype.scrollHorizontal=function(_d7){
this.clearHover();
this.scrollHorizontalPercent=_d7;
this.Scroller.setScrollLeftPercent(_d7);
this.fire("ScrollHorizontal",_d7);
if(_d7>0.99){
this.fire("ScrollHitRight",_d7);
}
if(_d7<0.01){
this.fire("ScrollHitLeft",_d7);
}
};
nitobi.grid.Grid.prototype.getScrollSurface=function(){
if(this.Scroller!=null){
return this.Scroller.view.midcenter.element;
}
};
nitobi.grid.Grid.prototype.getActiveView=function(){
return this.Scroller.getViewportByCoords(nitobi.grid.Cell.getRowNumber(this.activeCell),nitobi.grid.Cell.getColumnNumber(this.activeCell));
};
nitobi.grid.Grid.prototype.ensureCellInView=function(_d8){
var SS=this.getScrollSurface();
var AC=_d8||this.activeCell;
if(AC==null){
return;
}
var sct=0;
var scl=0;
if(nitobi.browser.MOZ){
sct=SS.scrollTop;
scl=SS.scrollLeft;
}
var R1=AC.getClientRects()[0];
var R2=SS.getClientRects()[0];
var B=EBA_SELECTION_BUFFER||0;
var up=R1.top-R2.top-B-sct;
var _e1=R1.bottom-R2.bottom+B-sct;
var _e2=R1.left-R2.left-B-scl;
var _e3=R1.right-R2.right+B-scl;
if(up<0){
this.scrollVerticalRelative(up);
}
if(_e1>0){
this.scrollVerticalRelative(_e1);
}
if(nitobi.grid.Cell.getColumnNumber(AC)>this.getFrozenLeftColumnCount()-1){
if(_e2<0){
this.scrollHorizontalRelative(_e2);
}
if(_e3>0){
this.scrollHorizontalRelative(_e3);
}
}
this.fire("CellCoordsChanged",R1[0]);
};
nitobi.grid.Grid.prototype.invalidate=function(){
this.invalidateProperties();
this.invalidateSize();
this.invalidateDisplayList();
};
nitobi.grid.Grid.prototype.validationFirstPass=function(){
};
nitobi.grid.Grid.prototype.commitFrameProperties=function(){
};
nitobi.grid.Grid.prototype.commitColumnProperties=function(){
};
nitobi.grid.Grid.prototype.commitDataProperties=function(){
};
nitobi.grid.Grid.prototype.updateCellRanges=function(){
if(this.frameRendered){
var _e4=this.getRowCount();
this.Scroller.updateCellRanges(this.getColumnCount(),_e4,this.getFrozenLeftColumnCount(),this.getfreezetop(),this.getfreezeright(),this.getfreezebottom());
var h=this.calculateHeight();
var w=this.calculateWidth();
this.measure();
this.resizeScroller();
var _e7=this.Scroller.height/h;
var _e8=this.Scroller.width/w;
this.fire("PercentHeightChanged",_e7);
this.fire("PercentWidthChanged",_e8);
}
};
nitobi.grid.Grid.prototype.measure=function(){
this.measureViews();
this.sizeValid=true;
};
nitobi.grid.Grid.prototype.measureViews=function(){
this.measureRows();
this.measureColumns();
};
nitobi.grid.Grid.prototype.measureColumns=function(){
var fL=this.getFrozenLeftColumnCount();
var fR=this.getfreezeright();
var wL=0;
var wR=0;
var wT=0;
var _ee=this.getColumnDefinitions();
var _ef=_ee.length;
for(var i=0;i<_ef;i++){
if(_ee[i].getAttribute("Visible")=="1"||_ee[i].getAttribute("visible")=="1"){
var w=Number(_ee[i].getAttribute("Width"));
wT+=w;
if(i<fL){
wL+=w;
}
if(i>=_ef-fR){
wR+=w;
}
}
}
this.setcontentWidth(wT);
this.setleft(wL);
this.setright(wR);
};
nitobi.grid.Grid.prototype.measureRows=function(){
var _f2=this.isColumnIndicatorsEnabled()?this.getHeaderHeight():0;
this.setcontentHeight((this.calculateHeight())+_f2);
this.settop(this.calculateHeight(0,this.getfreezetop()-1)+_f2);
this.setbottom(0);
};
nitobi.grid.Grid.prototype.resizeScroller=function(){
var _f3=(this.getToolbars()!=null&&this.getToolbars().areAnyToolbarsDocked()?25:0);
var _f4=this.isColumnIndicatorsEnabled()?this.getHeaderHeight():0;
this.Scroller.resize(this.getWidth(),this.getHeight()-_f3-_f4,this.gettop(),this.getright(),this.getbottom(),this.getleft(),this.getcontentWidth(),this.getcontentHeight(),this.getDisplayedRowCount(),this.getColumnCount(),this.getfreezetop(),this.getFrozenLeftColumnCount(),this.getfreezebottom(),this.getfreezeright());
};
nitobi.grid.Grid.prototype.resize=function(_f5,_f6){
this.setWidth(_f5);
this.setHeight(_f6);
this.generateCss();
this.fire("AfterGridResize");
};
nitobi.grid.Grid.prototype.initializeModel=function(){
this.model=nitobi.xml.createXmlDoc(nitobi.xml.serialize(nitobi.grid.modelDoc));
var _f7=nitobi.html.getScrollBarWidth();
if(_f7){
this.setscrollbarWidth(_f7);
this.setscrollbarHeight(_f7);
}
var _f8=this.model.selectSingleNode("state/nitobi.grid.Columns");
if(_f8==null){
var _f8=this.model.createElement("nitobi.grid.Columns");
this.model.documentElement.appendChild(_f8);
}
var _f9=this.getColumnCount();
if(_f9>0){
this.defineColumns(_f9);
}else{
this.columnsDefined=false;
this.inferredColumns=true;
}
this.model.documentElement.setAttribute("ID",this.uid);
this.model.documentElement.setAttribute("uniqueID",this.uid);
};
nitobi.grid.Grid.prototype.clearDefaultData=function(_fa){
for(var i=0;i<_fa;i++){
var e=this.model.createElement("e");
e.setAttribute("xi",i+1);
xDec.appendChild(e);
}
};
nitobi.grid.Grid.prototype.createRenderers=function(){
var _fd=this.uid;
var _fe=this.getRowHeight();
this.TopLeftRenderer=new nitobi.grid.RowRenderer(this.data,null,_fe,null,null,_fd);
this.TopCenterRenderer=new nitobi.grid.RowRenderer(this.data,null,_fe,null,null,_fd);
this.MidLeftRenderer=new nitobi.grid.RowRenderer(this.data,null,_fe,null,null,_fd);
this.MidCenterRenderer=new nitobi.grid.RowRenderer(this.data,null,_fe,null,null,_fd);
};
nitobi.grid.Grid.prototype.bind=function(){
if(this.isBound()){
this.clear();
this.datatable.descriptor.reset();
}
};
nitobi.grid.Grid.prototype.dataBind=function(){
this.bind();
};
nitobi.grid.Grid.prototype.getDataSource=function(_ff){
var _100=this.dataTableId||"_default";
if(_ff){
_100=_ff;
}
return this.data.getTable(_100);
};
nitobi.grid.Grid.prototype.getChangeLogXmlDoc=function(_101){
return this.getDataSource(_101).getChangeLogXmlDoc();
};
nitobi.grid.Grid.prototype.getComplete=function(_102){
if(null==_102.dataSource.xmlDoc){
ebaErrorReport("evtArgs.dataSource.xmlDoc is null or not defined. Likely the gethandler failed use fiddler to check the response","",EBA_ERROR);
this.fire("LoadingError");
return;
}
var _103=_102.dataSource.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+_102.dataSource.id+"']");
};
nitobi.grid.Grid.prototype.bindComplete=function(){
if(this.inferredColumns&&!this.columnsDefined){
this.defineColumns(this.datatable);
}
this.setRowCount(this.datatable.remoteRowCount);
this.setBound(true);
this.syncWithData();
this.Scroller.overlay.style.display="none";
};
nitobi.grid.Grid.prototype.syncWithData=function(_104){
if(this.isBound()){
this.Scroller.render(true);
this.fire("DataReady",{"source":this});
}
};
nitobi.grid.Grid.prototype.finalizeRowCount=function(rows){
this.rowCountKnown=true;
this.setRowCount(rows);
};
nitobi.grid.Grid.prototype.adjustRowCount=function(pct){
this.scrollVertical(pct);
};
nitobi.grid.Grid.prototype.setRowCount=function(rows){
this.xSET("RowCount",arguments);
if(this.getPagingMode()==nitobi.grid.PAGINGMODE_STANDARD){
if(this.getDataMode()==nitobi.data.DATAMODE_LOCAL){
this.setDisplayedRowCount(this.getRowsPerPage());
}
}else{
this.setDisplayedRowCount(rows);
}
this.rowCount=rows;
this.updateCellRanges();
};
nitobi.grid.Grid.prototype.getRowCount=function(){
return this.rowCount;
};
nitobi.grid.Grid.prototype.layout=function(_108){
if(this.prevHeight!=this.getHeight()){
this.prevHeight=this.getHeight();
this.prevWidth=this.getWidth();
this.layoutValid=false;
}
if(!this.layoutValid){
this.layoutFrame();
this.generateFrameCss();
this.layoutValid=true;
}
};
nitobi.grid.Grid.prototype.layoutFrame=function(_109){
this.minHeight=20;
this.minWidth=20;
var _10a=false;
var _10b=false;
var tbH=this.getToolbarHeight();
var rowH=this.getRowHeight();
var colW=20;
var sbH=this.getscrollbarHeight();
var sbW=this.getscrollbarWidth();
var hdrH=this.getHeaderHeight();
tbH=this.getToolbars().areAnyToolbarsDocked()?tbH:0;
hdrH=this.isColumnIndicatorsEnabled?hdrH:0;
var minH=Math.max(this.minHeight,tbH+rowH+sbH+hdrH);
var maxH=this.Height;
var minW=Math.max(this.minWidth,colW+sbW);
var maxW=this.Width;
if(_10a){
var _116=this.Scroller.minSurfaceWidth;
var _117=this.Scroller.maxSurfaceWidth;
}else{
var _116=this.Scroller.SurfaceWidth;
var _117=_116;
}
if(_10b){
var _118=this.Scroller.minSurfaceHeight;
var _119=this.Scroller.maxSurfaceHeight;
}else{
var _118=this.Scroller.SurfaceHeight;
var _119=_118;
}
var _11a=_118+(tbH)+(hdrH);
var _11b=_116;
var _11c=(_11a>maxH);
var _11d=(_11b>maxW);
var _11c=(_11d&&((_11a+20)>maxH))||_11c;
var _11d=(_11c&&((_11b+20)>maxW))||_11d;
sbH=_11d?sbH:0;
sbV=_11c?sbV:0;
var vpH=_11a-hdrH-tbH-sbH;
var vpW=_11b-sbW;
this.resize();
};
nitobi.grid.Grid.prototype.defineColumns=function(_120){
this.fire("BeforeColumnsDefined");
this.resetColumns();
var _121=null;
var _122=nitobi.lang.typeOf(_120);
this.inferredColumns=false;
if(_122=="string"){
_121=this.defineColumnsFromString(_120);
}
if(_122==nitobi.lang.type.XMLNODE||_122==nitobi.lang.type.XMLDOC){
_121=this.defineColumnsFromXml(_120);
}
if(_122==nitobi.lang.type.ARRAY){
_121=this.defineColumnsFromArray(_120);
}
if(_122=="object"){
this.inferredColumns=true;
_121=this.defineColumnsFromData(_120);
}
if(_122=="number"){
_121=this.defineColumnsCollection(_120);
}
this.fire("AfterColumnsDefined");
this.defineColumnsFinalize();
return _121;
};
nitobi.grid.Grid.prototype.defineColumnsFromXml=function(_123){
if(_123==null||_123.childNodes.length==0){
return this.defineColumnsCollection(0);
}
if(_123.childNodes[0].nodeName==nitobi.xml.nsPrefix+"columndefinition"){
var _124=nitobi.xml.createXslDoc(nitobi.grid.declarationConverterXslProc.stylesheet);
_123=nitobi.xml.transformToXml(_123,_124);
}
var wL=0,wT=0,wR=0;
var _128=this.model.selectSingleNode("/state/Defaults/nitobi.grid.Column");
var _129=this.getColumnDefinitions().length;
var cols=_123.childNodes.length;
var xDec=this.model.selectSingleNode("state/nitobi.grid.Columns");
var _12c=_123.childNodes;
var fL=this.getFrozenLeftColumnCount();
var fR=this.getfreezeright();
if(_129==0){
var cols=_12c.length;
for(var i=0;i<cols;i++){
var e=_128.cloneNode(true);
this.setModelDefaults(e,_12c[i],"interfaces/interface[@name='nitobi.grid.Column']/properties/property");
this.setModelDefaults(e,_12c[i],"interfaces/interface[@name='nitobi.grid.Column']/events/event");
var _131="";
var _132=_12c[i].nodeName;
if(_132.indexOf("numbercolumn")!=-1){
_131="EBANumberColumn";
}else{
if(_132.indexOf("datecolumn")!=-1){
_131="EBADateColumn";
}else{
_131="EBATextColumn";
}
}
e.setAttribute("DataType",_131.replace("EBA","").replace("Column","").toLowerCase());
this.setModelDefaults(e,_12c[i],"interfaces/interface[@name='"+_131+"']/properties/property");
this.setModelDefaults(e,_12c[i],"interfaces/interface[@name='"+_131+"']/events/event");
this.defineColumnEditor(e,_12c[i]);
this.defineColumnDatasource(e);
this.defineColumnBinding(e);
xDec.appendChild(e);
var _133=e.getAttribute("GetHandler");
if(_133){
var _134=e.getAttribute("DatasourceId");
if(!_134||_134==""){
_134="columnDatasource_"+i+"_"+this.uid;
e.setAttribute("DatasourceId",_134);
}
var dt=new nitobi.data.DataTable("local",this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());
dt.initialize(_134,_133,null);
dt.async=false;
this.data.add(dt);
var _136=[];
_136[0]=e;
var _137=e.getAttribute("editor");
var _138=null;
var _139=null;
if(e.getAttribute("editor")=="LOOKUP"){
_138=0;
_139=1;
dt.async=true;
}
dt.get(_138,_139,this,nitobi.lang.close(this,this.editorDataReady,[e]),function(){
});
}
}
this.measureColumns();
this.setcontentHeight((this.calculateHeight())+Number(this.getHeaderHeight()));
this.setColumnCount(cols);
}
var _13a;
_13a=_123.selectSingleNode("/"+nitobi.xml.nsPrefix+"grid/"+nitobi.xml.nsPrefix+"datasources");
if(_13a){
this.Declaration.datasources=nitobi.xml.createXmlDoc(_13a.xml);
}
return xDec;
};
nitobi.grid.Grid.prototype.defineColumnsFinalize=function(){
this.setColumnsDefined(true);
if(this.connected){
if(this.frameRendered){
this.makeXSL();
this.generateColumnCss();
this.renderColumns();
}
}
};
nitobi.grid.Grid.prototype.defineColumnDatasource=function(_13b){
var val=_13b.getAttribute("Datasource");
if(val!=null){
var ds=new Array();
try{
ds=eval(val);
}
catch(e){
var _13e=val.split(",");
if(_13e.length>0){
for(var i=0;i<_13e.length;i++){
var item=_13e[i];
ds[i]={text:item.split(":")[0],display:item.split(":")[1]};
}
}
return;
}
if(typeof (ds)=="object"&&ds.length>0){
var _141=new nitobi.data.DataTable("unbound",this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());
var _142="columnDatasource"+new Date().getTime();
_141.initialize(_142);
_13b.setAttribute("DatasourceId",_142);
var _143="";
for(var item in ds[0]){
_143+=item+"|";
}
_143=_143.substring(0,_143.length-1);
_141.initializeColumns(_143);
for(var i=0;i<ds.length;i++){
_141.createRecord(null,i);
for(var item in ds[i]){
_141.updateRecord(i,item,ds[i][item]);
}
}
this.data.add(_141);
this.editorDataReady(_13b);
}
}
};
nitobi.grid.Grid.prototype.defineColumnEditor=function(_144,_145){
var len=_145.childNodes.length;
if(len>0){
var _147=_145.selectSingleNode("ntb:numbereditor|ntb:textareaeditor|ntb:imageeditor|ntb:linkeditor|ntb:dateeditor|ntb:lookupeditor|ntb:listboxeditor|ntb:checkboxeditor|ntb:passwordeditor");
if(_147!=null){
var _148="EBATextEditor";
var _149=_147.nodeName;
if(_149.indexOf("numbereditor")!=-1){
_148="EBANumberEditor";
}else{
if(_149.indexOf("textareaeditor")!=-1){
_148="EBATextAreaEditor";
}else{
if(_149.indexOf("imageeditor")!=-1){
_148="EBAImageEditor";
}else{
if(_149.indexOf("linkeditor")!=-1){
_148="EBALinkEditor";
}else{
if(_149.indexOf("dateeditor")!=-1){
_148="EBADateEditor";
}else{
if(_149.indexOf("lookupeditor")!=-1){
_148="EBALookupEditor";
}else{
if(_149.indexOf("listboxeditor")!=-1){
_148="EBAListboxEditor";
}else{
if(_149.indexOf("passwordeditor")!=-1){
_148="EBAPasswordEditor";
}else{
if(_149.indexOf("checkboxeditor")!=-1){
_148="EBACheckboxEditor";
}
}
}
}
}
}
}
}
}
this.setModelDefaults(_144,_147,"interfaces/interface[@name='"+_148+"']/properties/property");
this.setModelDefaults(_144,_147,"interfaces/interface[@name='"+_148+"']/events/event");
_144.setAttribute("type",_149.substring(4,_149.indexOf("editor")).toUpperCase());
_144.setAttribute("editor",_149.substring(4,_149.indexOf("editor")).toUpperCase());
}
}else{
var _14a=_145;
var _148="";
var _149=_14a.nodeName;
if(_149.indexOf("numbercolumn")){
_148="EBANumberEditor";
}else{
if(_14a.nodeName.indexOf("dateeditor")){
_148="EBADateEditor";
}
}
this.setModelDefaults(_144,_14a,"interfaces/interface[@name='"+_148+"']/properties/property");
this.setModelDefaults(_144,_14a,"interfaces/interface[@name='"+_148+"']/events/event");
_144.setAttribute("type",_149.substring(4,_149.indexOf("column")).toUpperCase());
}
};
nitobi.grid.Grid.prototype.defineColumnsFromData=function(_14b){
if(_14b==null){
_14b=this.datatable;
}
var _14c=_14b.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure");
if(_14c==null){
return this.defineColumnsCollection(0);
}
var _14d=_14c.getAttribute("FieldNames");
if(_14d.length==0){
return this.defineColumnsCollection(0);
}
var _14e=_14c.getAttribute("types");
var _14f=_14c.getAttribute("defaults");
var _150=_14c.getAttribute("widths");
var _151=this.defineColumnsFromString(_14d);
for(var i=0;i<_151.length;i++){
if(_14f&&i<_14f.length){
_151[i].setAttribute("initial",_14f[i]||"");
}
_151[i].setAttribute("width",100);
}
this.inferredColumns=true;
return _151;
};
nitobi.grid.Grid.prototype.defineColumnsFromString=function(_153){
return this.defineColumnsFromArray(_153.split("|"));
};
nitobi.grid.Grid.prototype.defineColumnsFromArray=function(_154){
var cols=_154.length;
var _156=this.defineColumnsCollection(cols);
for(var i=0;i<cols;i++){
var col=_156[i];
if(typeof (_154[i])=="string"){
col.setAttribute("ColumnName",_154[i]);
col.setAttribute("xdatafld_orig",_154[i]);
col.setAttribute("DataField_orig",_154[i]);
col.setAttribute("Label",_154[i]);
if(typeof (this.fieldMap[_154[i]])!="undefined"){
col.setAttribute("xdatafld",this.fieldMap[_154[i]]);
col.setAttribute("DataField",this.fieldMap[_154[i]]);
}else{
col.setAttribute("xdatafld","unbound");
col.setAttribute("DataField","unbound");
}
}else{
if(_154[i].name!="_xk"){
col.setAttribute("ColumnName",col.name);
col.setAttribute("xdatafld_orig",col.name);
col.setAttribute("DataField_orig",col.name);
col.setAttribute("xdatafld",this.fieldMap[_154[i].name]);
col.setAttribute("DataField",this.fieldMap[_154[i].name]);
col.setAttribute("Width",col.width);
col.setAttribute("Label",col.label);
col.setAttribute("Initial",col.initial);
col.setAttribute("Mask",col.mask);
}
}
}
this.setColumnCount(cols);
return _156;
};
nitobi.grid.Grid.prototype.defineColumnBindings=function(){
var cols=this.getColumnDefinitions();
for(var i=0;i<cols.length;i++){
var e=cols[i];
this.defineColumnBinding(e);
e.setAttribute("xi",i);
}
};
nitobi.grid.Grid.prototype.defineColumnBinding=function(_15c){
if(this.fieldMap==null){
return;
}
var _15d=_15c.getAttribute("xdatafld");
var _15e=_15c.getAttribute("xdatafld_orig");
if(_15e==null||_15e==""){
_15c.setAttribute("xdatafld_orig",_15d);
_15c.setAttribute("DataField_orig",_15d);
}
_15d=_15c.getAttribute("xdatafld_orig");
_15c.setAttribute("ColumnName",_15d);
if(typeof (this.fieldMap[_15d])!="undefined"){
_15c.setAttribute("xdatafld",this.fieldMap[_15d]);
_15c.setAttribute("DataField",this.fieldMap[_15d]);
}
this.formatBinding(_15c,"CssStyle");
this.formatBinding(_15c,"ClassName");
this.formatBinding(_15c,"Value");
};
nitobi.grid.Grid.prototype.formatBinding=function(_15f,_160){
var _161=_15f.getAttribute(_160);
var _162=_15f.getAttribute(_160+"_orig");
if(_161==null||_161==""){
return;
}
if(_162==null||_162==""){
_15f.setAttribute(_160+"_orig",_161);
}
_161=_15f.getAttribute(_160+"_orig");
var _163=_161;
var re=new RegExp("\\{.[^}]*}","gi");
var _165=_161.match(re);
if(_165==null){
return;
}
for(var i=0;i<_165.length;i++){
var _167=_165[i];
var _168=_167;
var _169=new RegExp("\\$.*?[^0-9a-zA-Z_]","gi");
var _16a=_168.match(_169);
for(var j=0;j<_16a.length;j++){
var _16c=_16a[j].substring(0,_16a[j].length-1);
var _16d=_16c.substring(1);
var _16e=this.fieldMap[_16d];
_168=_168.replace(_16c,"<xsl:value-of select=\""+_16e+"\"/>"||"");
}
_168=_168.substring(1,_168.length-1);
_161=_161.replace(_167,_168).replace(/\{\}/g,"");
}
_15f.setAttribute(_160,_161);
};
nitobi.grid.Grid.prototype.defineColumnsCollection=function(cols){
var xDec=this.model.selectSingleNode("state/nitobi.grid.Columns");
var _171=xDec.childNodes;
var _172=this.model.selectSingleNode("/state/Defaults/nitobi.grid.Column");
for(var i=0;i<cols;i++){
var e=_172.cloneNode(true);
xDec.appendChild(e);
e.setAttribute("xi",i);
e.setAttribute("title",(i>25?String.fromCharCode(Math.floor(i/26)+65):"")+(String.fromCharCode(i%26+65)));
}
this.setColumnCount(cols);
var _171=xDec.selectNodes("*");
return _171;
};
nitobi.grid.Grid.prototype.resetColumns=function(){
this.fire("BeforeClearColumns");
this.inferredColumns=true;
this.columnsDefined=false;
var _175=this.model.selectSingleNode("state/nitobi.grid.Columns");
var xDec=this.model.createElement("nitobi.grid.Columns");
if(_175==null){
this.model.documentElement.appendChild(xDec);
}else{
this.model.documentElement.replaceChild(xDec,_175);
}
this.setColumnCount(0);
this.fire("AfterClearColumns");
};
nitobi.grid.Grid.prototype.renderColumns=function(){
if(this.getColumnDefinitions().length>0){
this.clearHeader();
this.renderHeader();
}
};
nitobi.grid.Grid.prototype.initializeSelection=function(){
this.Selection=new nitobi.grid.Selection(this);
};
nitobi.grid.Grid.prototype.calculateHeight=function(_177,end){
_177=(_177!=null)?_177:0;
var _179=this.getDisplayedRowCount();
end=(end!=null)?end:_179-1;
return (end-_177+1)*(this.getRowHeight()||23);
};
nitobi.grid.Grid.prototype.calculateWidth=function(_17a,end){
var _17c=this.getColumnDefinitions();
var cols=_17c.length;
_17a=_17a||0;
end=(end!=null)?Math.min(end,cols):cols;
var wT=0;
for(var i=_17a;i<end;i++){
if(_17c[i].getAttribute("Visible")=="1"||_17c[i].getAttribute("visible")=="1"){
wT+=Number(_17c[i].getAttribute("Width"));
}
}
return (wT);
};
nitobi.grid.Grid.prototype.editorDataReady=function(_180){
var _181=_180.getAttribute("DisplayFields").split("|");
var _182=_180.getAttribute("ValueField");
var _183=this.data.getTable(_180.getAttribute("DatasourceId"));
var _184=_180.getAttribute("Initial");
if(_184==""){
var _185=_180.getAttribute("type").toLowerCase();
switch(_185){
case "checkbox":
case "listbox":
var _186=_183.fieldMap[_182].substring(1);
var data=_183.getDataXmlDoc();
if(data!=null){
var val=data.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+_186+"='"+_184+"']");
if(val==null){
var _189=data.selectSingleNode("//"+nitobi.xml.nsPrefix+"e");
if(_189!=null){
_184=_189.getAttribute(_186);
}
}
}
break;
}
_180.setAttribute("Initial",_184);
}
if((_181.length==1&&_181[0]=="")&&(_182==null||_182=="")){
for(var item in _183.fieldMap){
_181[0]=_183.fieldMap[item].substring(1);
break;
}
}else{
for(var i=0;i<_181.length;i++){
_181[i]=_183.fieldMap[_181[i]].substring(1);
}
}
var _18c=_181.join("|");
if(_182==null||_182==""){
_182=_181[0];
}else{
_182=_183.fieldMap[_182].substring(1);
}
_180.setAttribute("DisplayFields",_18c);
_180.setAttribute("ValueField",_182);
};
nitobi.grid.Grid.prototype.headerClicked=function(_18d){
var _18e=this.getColumnObject(_18d);
var _18f=new nitobi.grid.OnHeaderClickEventArgs(this,_18e);
if(!this.fire("HeaderClick",_18f)||!nitobi.event.evaluate(_18e.getOnHeaderClickEvent(),_18f)){
return;
}
if(this.getSortEnabled()){
this.sort(_18d);
}
};
nitobi.grid.Grid.prototype.addFilter=function(){
this.dataTable.addFilter(arguments);
};
nitobi.grid.Grid.prototype.clearFilter=function(){
this.dataTable.clearFilter();
};
nitobi.grid.Grid.prototype.setSortStyle=function(_190,_191,_192){
var _193=this.getColumnObject(_190);
if(_192){
this.sortColumn=null;
this.sortColumnCell=null;
this.Scroller.setSort(_190,"");
this.setColumnHeaderSortOrder(_190,"");
}else{
_193.setSortDirection(_191);
this.setColumnHeaderSortOrder(_190,_191);
this.sortColumn=_193;
this.sortColumnCell=_193.getHeaderElement();
this.Scroller.setSort(_190,_191);
}
};
nitobi.grid.Grid.prototype.sort=function(_194,_195){
var _196=this.getColumnObject(_194);
if(_196==null||!_196.isSortEnabled()){
return;
}
var _197=new nitobi.grid.OnBeforeSortEventArgs(this,_196);
if(!this.fire("BeforeSort",_197)||!nitobi.event.evaluate(_196.getOnBeforeSortEvent(),_197)){
return;
}
this.startMouseWait();
if(_195==null||typeof (_195)=="undefined"){
_195=(_196.getSortDirection()=="Asc")?"Desc":"Asc";
}
this.setSortStyle(_194,_195);
var _198=_196.getColumnName();
var _199=_196.getDataType();
var _19a=this.getSortMode()=="local"||(this.getDataMode()=="local"&&this.getSortMode()!="remote");
this.datatable.sort(_198,_195,_199,_19a);
if(!_19a){
this.datatable.flush();
}
this.clearSurfaces();
this.scrollVertical(0);
if(!_19a){
this.loadDataPage(0);
}
this.stopMouseWait();
this.subscribeOnce("HtmlReady",this.handleAfterSort,this,[_196]);
};
nitobi.grid.Grid.prototype.handleAfterSort=function(_19b){
var _19c=new nitobi.grid.OnAfterSortEventArgs(this,_19b);
this.fire("AfterSort",_19c);
nitobi.event.evaluate(_19b.getOnAfterSortEvent(),_19c);
};
nitobi.grid.Grid.prototype.handleDblClick=function(evt){
var cell=new nitobi.grid.Cell(this,this.activeCell);
var _19f=new nitobi.grid.OnCellDblClickEventArgs(this,cell);
return this.fire("CellDblClick",_19f)&&nitobi.event.evaluate(cell.getColumnObject().getOnCellDblClickEvent(),_19f);
};
nitobi.grid.Grid.prototype.clearData=function(){
if(this.getDataMode()!="local"){
this.datatable.flush();
}
};
nitobi.grid.Grid.prototype.clearColumnHeaderSortOrder=function(){
if(this.sortColumn){
var _1a0=this.sortColumn;
var _1a1=_1a0.getHeaderElement();
var css=_1a1.className;
css=css.replace(/ascending/gi,"").replace(/descending/gi,"");
_1a1.className=css;
this.sortColumn=null;
}
};
nitobi.grid.Grid.prototype.setColumnHeaderSortOrder=function(_1a3,_1a4){
this.clearColumnHeaderSortOrder();
var _1a5=this.getColumnObject(_1a3);
var _1a6=_1a5.getHeaderElement();
var CSS=nitobi.html.Css;
var css=_1a6.className;
if(_1a4==""){
_1a6.className="ntbcolumnindicatorborder";
_1a4="Desc";
}else{
var _1a9=(_1a4=="Desc"?"descending":"ascending");
nitobi.html.Css.swapClass(_1a6,"ntbcolumnindicatorborder","ntbcolumnindicatorborder"+_1a9);
nitobi.html.Css.removeClass(_1a6,"ntbcolumnindicatorborderhover");
}
_1a5.setSortDirection(_1a4);
this.sortColumn=_1a5;
this.sortColumnCell=_1a6;
};
nitobi.grid.Grid.prototype.startMouseWait=function(){
this.mouseWait=document.getElementById("ntbmousewait_"+this.uid);
if(this.mouseWait==null){
this.mouseWait=document.createElement("div");
this.mouseWait.id="ntbmousewait_"+this.uid;
this.mouseWait.className="ntbmousewait";
document.body.appendChild(this.mouseWait);
}
this.mouseWait.style.display="block";
if(nitobi.browser.IE){
nitobi.drawing.align(this.mouseWait,this.element,nitobi.drawing.align.SAMEHEIGHT|nitobi.drawing.align.SAMEWIDTH|nitobi.drawing.align.ALIGNTOP|nitobi.drawing.align.ALIGNLEFT);
}else{
this.mouseWait.style.height=(this.getHeight()+20)+"px";
this.mouseWait.style.width=this.getWidth()+"px";
this.mouseWait.style.top=(this.UiContainer.getBoundingClientRect().top-2)+"px";
this.mouseWait.style.left=this.UiContainer.getBoundingClientRect().left+"px";
}
};
nitobi.grid.Grid.prototype.stopMouseWait=function(){
if(this.mouseWait!=null&&typeof (this.mouseWait)!="undefined"){
this.mouseWait.style.top="-1000px";
this.mouseWait.style.left="-1000px";
this.mouseWait.style.display="none";
}
};
nitobi.grid.Grid.prototype.initializeState=function(){
};
nitobi.grid.Grid.prototype.mapToHtml=function(_1aa){
if(_1aa==null){
_1aa=this.UiContainer;
}
this.Scroller.mapToHtml(_1aa);
this.element=document.getElementById("grid"+this.uid);
this.element.jsObject=this;
};
nitobi.grid.Grid.prototype.initScroller=function(){
};
nitobi.grid.Grid.prototype.generateCss=function(){
this.generateFrameCss();
};
nitobi.grid.Grid.prototype.generateColumnCss=function(){
this.generateCss();
};
nitobi.grid.Grid.prototype.generateFrameCss=function(){
if(this.stylesheet==null){
this.stylesheet=document.createStyleSheet();
}
if(nitobi.browser.IE&&document.compatMode=="CSS1Compat"){
this.frameCssXslProc.addParameter("IE","true","");
}
var _1ab=nitobi.xml.transformToString(this.model,this.frameCssXslProc);
var vp=this.getScrollSurface();
var _1ad=0;
var _1ae=0;
if(vp!=null){
_1ad=vp.scrollTop;
_1ae=vp.scrollLeft;
}
if(this.oldFrameCss!=_1ab){
this.oldFrameCss=_1ab;
this.stylesheet.cssText=_1ab;
if(vp!=null){
if(nitobi.browser.MOZ){
this.scrollVerticalRelative(_1ad);
this.scrollHorizontalRelative(_1ae);
}
vp.style.top="0px";
vp.style.left="0px";
}
}
if(nitobi.grid.RowHoverColor==null){
var _1af=nitobi.html.getClass("ntbrowhover");
if(_1af!=null){
var _1b0=_1af.backgroundColor.toString();
if(_1b0.indexOf("rgb")>-1){
_1b0=eval("nitobi.drawing."+_1b0);
}
nitobi.grid.RowHoverColor=_1b0;
}
}
if(nitobi.grid.CellHoverColor==null){
var _1af=nitobi.html.getClass("ntbcellhover");
if(_1af!=null){
var _1b0=_1af.backgroundColor.toString();
if(_1b0.indexOf("rgb")>-1){
_1b0=eval("nitobi.drawing."+_1b0);
}
nitobi.grid.CellHoverColor=_1b0;
}
}
};
nitobi.grid.Grid.prototype.clearSurfaces=function(){
this.Selection.clearBoxes();
this.Scroller.clearSurfaces();
};
nitobi.grid.Grid.prototype.clearHeader=function(){
this.Scroller.clearSurfaces(false,true);
};
nitobi.grid.Grid.prototype.renderFrame=function(){
if(nitobi.browser.IE){
this.frameXslProc.addParameter("IE","true","");
}
this.UiContainer.innerHTML=nitobi.xml.transformToString(this.model,this.frameXslProc);
this.attachDomEvents();
if(nitobi.browser.MOZ){
var _1b1=nitobi.html.getCoords($("grid"+this.uid));
this.keyNav.style.left=_1b1.x+"px";
this.keyNav.style.top=_1b1.y+"px";
}
this.frameRendered=true;
this.fire("AfterFrameRender");
};
nitobi.grid.Grid.prototype.renderHeader=function(){
var _1b2=0;
endRow=this.getfreezetop()-1;
var tl=this.Scroller.view.topleft;
tl.top=this.getHeaderHeight();
tl.left=0;
tl.rowRenderer=this.TopLeftRenderer;
tl.renderGap(_1b2,endRow,false,"*");
var tc=this.Scroller.view.topcenter;
tc.top=this.getHeaderHeight();
tc.left=0;
tc.rowRenderer=this.TopCenterRenderer;
tc.renderGap(_1b2,endRow,false);
};
nitobi.grid.Grid.prototype.renderMiddle=function(){
this.Scroller.view.midleft.flushCache();
this.Scroller.view.midcenter.flushCache();
};
nitobi.grid.Grid.prototype.refresh=function(){
var _1b5=null;
if(!this.fire("BeforeRefresh",_1b5)){
return;
}
this.clear();
this.syncWithData();
this.subscribeOnce("HtmlReady",this.handleAfterRefresh,this);
};
nitobi.grid.Grid.prototype.handleAfterRefresh=function(){
var _1b6=null;
this.fire("AfterRefresh",_1b6);
};
nitobi.grid.Grid.prototype.clear=function(){
this.selectedRows=[];
this.clearData();
this.clearSurfaces();
};
nitobi.grid.Grid.prototype.handleContextMenu=function(evt,obj){
var _1b9=this.getOnContextMenuEvent();
if(_1b9==null){
return true;
}else{
if(this.fire("ContextMenu")){
return true;
}else{
evt.cancelBubble=true;
evt.returnValue=false;
return false;
}
}
};
nitobi.grid.Grid.prototype.handleKey=function(evt,obj){
var k=evt.keyCode;
k=k+(evt.shiftKey?256:0)+(evt.ctrlKey?512:0);
switch(k){
case 529:
break;
case 35:
break;
case 36:
break;
case 547:
break;
case 548:
break;
case 34:
this.page(1);
break;
case 33:
this.page(-1);
break;
case 45:
this.insertAfterCurrentRow();
break;
case 46:
this.deleteCurrentRow();
break;
case 292:
this.selectHome();
break;
case 290:
this.pageSelect(1);
break;
case 289:
this.pageSelect(-1);
break;
case 296:
this.reselect(0,1);
break;
case 294:
this.reselect(0,-1);
break;
case 293:
this.reselect(-1,0);
break;
case 295:
this.reselect(1,0);
break;
case 577:
break;
case 579:
case 557:
this.copy(evt);
return true;
break;
case 600:
case 302:
break;
case 598:
case 301:
this.paste(evt);
return true;
break;
case 35:
break;
case 36:
break;
case 547:
break;
case 548:
break;
case 13:
var et=this.getEnterTab().toLowerCase();
var _1be=0;
var vert=1;
if(et=="left"){
_1be=-1;
vert=0;
}else{
if(et=="right"){
_1be=1;
vert=0;
}else{
if(et=="down"){
_1be=0;
vert=1;
}else{
if(et=="up"){
_1be=0;
vert=-1;
}
}
}
}
this.move(_1be,vert);
break;
case 40:
this.move(0,1);
break;
case 269:
case 38:
this.move(0,-1);
break;
case 265:
case 37:
this.move(-1,0);
break;
case 9:
case 39:
this.move(1,0);
break;
case 577:
break;
default:
this.edit(evt);
}
nitobi.html.cancelEvent(evt);
return false;
};
nitobi.grid.Grid.prototype.reselect=function(x,y){
var S=this.Selection;
var row=nitobi.grid.Cell.getRowNumber(S.endCell)+y;
var _1c4=nitobi.grid.Cell.getColumnNumber(S.endCell)+x;
if(_1c4>=0&&_1c4<this.columnCount()&&row>=0){
var _1c5=this.getCellElement(row,_1c4);
if(!_1c5){
return;
}
S.changeEndCellWithDomNode(_1c5);
S.alignBoxes();
this.ensureCellInView(_1c5);
}
};
nitobi.grid.Grid.prototype.pageSelect=function(dir){
};
nitobi.grid.Grid.prototype.selectHome=function(){
var S=this.Selection;
var row=nitobi.grid.Cell.getRowNumber(S.endCell);
this.reselect(0,-row);
};
nitobi.grid.Grid.prototype.edit=function(evt){
if(this.activeCell==null){
return;
}
var cell=new nitobi.grid.Cell(this,this.activeCell);
var _1cb=new nitobi.grid.OnBeforeCellEditEventArgs(this,cell);
if(!this.fire("BeforeCellEdit",_1cb)||!nitobi.event.evaluate(cell.getColumnObject().getOnBeforeCellEditEvent(),_1cb)){
return;
}
var _1cc=null;
var _1cd=null;
var ctrl=null;
if(evt){
_1cc=evt.keyCode||null;
_1cd=evt.shiftKey||null;
ctrl=evt.ctrlKey||null;
}
var _1cf="";
var _1d0=null;
if((_1cd&&(_1cc>64)&&(_1cc<91))||(!_1cd&&((_1cc>47)&&(_1cc<58)))){
_1d0=0;
}
if(!_1cd){
if((_1cc>64)&&(_1cc<91)){
_1d0=32;
}else{
if(_1cc>95&&_1cc<106){
_1d0=-48;
}else{
if((_1cc==189)||(_1cc==109)){
_1cf="-";
}else{
if((_1cc>186)&&(_1cc<188)){
_1d0=-126;
}
}
}
}
}else{
}
if(_1d0!=null){
_1cf=String.fromCharCode(_1cc+_1d0);
}
if((!ctrl)&&(""!=_1cf)||(_1cc==113)||(_1cc==0)||(_1cc==null)||(_1cc==32)){
this.cellEditor=nitobi.form.ControlFactory.instance.getEditor(this,cell.getColumnObject());
if(this.cellEditor==null){
return;
}
this.cellEditor.setEditCompleteHandler(this.editComplete);
this.cellEditor.bind(this,cell,_1cf);
this.cellEditor.mimic();
return false;
}else{
return;
}
};
nitobi.grid.Grid.prototype.editComplete=function(_1d1){
var cell=_1d1.cell;
var _1d3=cell.getColumnObject();
var _1d4=_1d1.databaseValue;
var _1d5=_1d1.displayValue;
var _1d6=new nitobi.grid.OnCellValidateEventArgs(this,cell,_1d4,cell.getValue());
if(!this.fire("CellValidate",_1d6)||!nitobi.event.evaluate(_1d3.getOnCellValidateEvent(),_1d6)){
return false;
}
cell.setValue(_1d4,_1d5);
_1d1.editor.hide();
var _1d7=new nitobi.grid.OnAfterCellEditEventArgs(this,cell);
this.fire("AfterCellEdit",_1d7);
nitobi.event.evaluate(_1d3.getOnAfterCellEditEvent(),_1d7);
this.focus();
};
nitobi.grid.Grid.prototype.autoSave=function(){
if(this.isAutoSaveEnabled()){
return this.save();
}
return false;
};
nitobi.grid.Grid.prototype.selectCellByCoords=function(row,_1d9){
this.setPosition(row,_1d9);
};
nitobi.grid.Grid.prototype.setPosition=function(row,_1db){
if(row>=0&&_1db>=0){
this.setActiveCell(this.getCellElement(row,_1db));
}
};
nitobi.grid.Grid.prototype.save=function(){
if(this.datatable.log.selectNodes("//"+nitobi.xml.nsPrefix+"data/*").length==0){
return;
}
if(!this.fire("BeforeSave")){
return;
}
this.datatable.save(nitobi.lang.close(this,this.saveCompleteHandler),this.getOnBeforeSaveEvent());
};
nitobi.grid.Grid.prototype.saveCompleteHandler=function(_1dc){
if(this.getDataSource().getHandlerError()){
this.fire("HandlerError",_1dc);
}
this.fire("AfterSave",_1dc);
};
nitobi.grid.Grid.prototype.focus=function(){
try{
this.keyNav.focus();
this.fire("Focus");
nitobi.html.cancelEvent(nitobi.html.Event);
return false;
}
catch(e){
}
};
nitobi.grid.Grid.prototype.getRendererForColumn=function(col){
var _1de=this.getColumnCount();
if(col>=_1de){
col=_1de-1;
}
var _1df=this.getFrozenLeftColumnCount();
if(col<frozenLeft){
return this.MidLeftRenderer;
}else{
return this.MidCenterRenderer;
}
};
nitobi.grid.Grid.prototype.getColumnOuterTemplate=function(col){
return this.getRendererForColumn(col).xmlTemplate.selectSingleNode("//*[@match='ntb:e']/div/div["+col+"]");
};
nitobi.grid.Grid.prototype.getColumnInnerTemplate=function(col){
return this.getColumnOuterXslTemplate(col).selectSingleNode("*[2]");
};
nitobi.grid.Grid.prototype.makeXSL=function(){
var fL=this.getFrozenLeftColumnCount();
var fR=this.getfreezeright();
var cs=this.getColumnCount();
var rh=this.isRowHighlightEnabled();
var _1e6="_default";
if(this.datatable!=null){
_1e6=this.datatable.id;
}
var _1e7=0;
var _1e8=fL;
var sXml=nitobi.xml.serialize(this.model.selectSingleNode("state/nitobi.grid.Columns")).replace(/\#\&lt\;\#/g,"#<#").replace(/\#\&gt\;\#/g,"#>#").replace(/\#\&eq\;\#/g,"#=#").replace(/\#\&quot\;\#/g,"#\"#").replace(/\&/g,"&amp;").replace(/\#<\#/g,"&lt;").replace(/\#>\#/g,"&gt;").replace(/\#=\#/g,"&eq;").replace(/\#\"\#/g,"&quot;");
sXml=sXml.replace(/(\&amp;lt;xsl\:)(.*?)(\/&amp;gt;)/g,function(){
return "&lt;xsl:"+arguments[2].replace(/\&amp;/g,"&")+"/&gt;";
});
if(this.oldColDefs!=sXml){
this.oldColDefs=sXml;
var _1ea=nitobi.xml.createXmlDoc(sXml);
this.TopLeftRenderer.generateXslTemplate(_1ea,this.rowXslGeneratorXslProc,_1e7,_1e8,this.isColumnIndicatorsEnabled(),this.isRowIndicatorsEnabled(),rh);
this.TopLeftRenderer.dataTableId=_1e6;
_1e7=fL;
_1e8=cs-fR-fL;
this.TopCenterRenderer.generateXslTemplate(_1ea,this.rowXslGeneratorXslProc,_1e7,_1e8,this.isColumnIndicatorsEnabled(),this.isRowIndicatorsEnabled(),rh);
this.TopCenterRenderer.dataTableId=_1e6;
this.MidLeftRenderer.generateXslTemplate(_1ea,this.rowXslGeneratorXslProc,0,fL,0,this.isRowIndicatorsEnabled(),rh,"left");
this.MidLeftRenderer.dataTableId=_1e6;
this.MidCenterRenderer.generateXslTemplate(_1ea,this.rowXslGeneratorXslProc,fL,cs-fR-fL,0,0,rh);
this.MidCenterRenderer.dataTableId=_1e6;
}
this.fire("AfterMakeXsl");
};
nitobi.grid.Grid.prototype.render=function(){
this.generateCss();
this.updateCellRanges();
return;
};
nitobi.grid.Grid.prototype.refilter=nitobi.grid.Grid.prototype.render;
nitobi.grid.Grid.prototype.getColumnDefinitions=function(){
return this.model.selectNodes("state/nitobi.grid.Columns/*");
};
nitobi.grid.Grid.prototype.initializeModelFromDeclaration=function(){
this.modelInitializerXslProc=nitobi.xml.createXslProcessor(nitobi.grid.modelFromDeclarationInitializerXslProc.stylesheet);
eval(nitobi.xml.transformToString(this.Interface,this.modelInitializerXslProc));
this.model.documentElement.setAttribute("ID",this.uid);
this.model.documentElement.setAttribute("uniqueID",this.uid);
};
nitobi.grid.Grid.prototype.setModelDefaults=function(_1eb,_1ec,_1ed){
var _1ee=this.API.selectNodes(_1ed);
for(var j=0;j<_1ee.length;j++){
var _1f0=_1ee[j].getAttribute("htmltag")+"";
var _1f1=_1ee[j].getAttribute("name")+"";
var _1f2=_1ec.getAttribute(_1f0)||_1ec.getAttribute(_1f1);
var _1f3=_1ee[j].getAttribute("default").replace(/\"/g,"");
_1f2=_1f2?_1f2:_1f3;
if(_1ee[j].getAttribute("type")=="bool"){
_1f2=nitobi.lang.boolToStr(nitobi.lang.toBool(_1f2));
}
_1eb.setAttribute(_1ee[j].getAttribute("name"),_1f2?_1f2:_1f3);
}
};
nitobi.grid.Grid.prototype.getNewRecordKey=function(){
var _1f4;
var key;
var _1f6;
do{
_1f4=new Date();
key=(_1f4.getTime()+"."+Math.round(Math.random()*99));
_1f6=this.datatable.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@xk = '"+key+"']");
}while(_1f6!=null);
return key;
};
nitobi.grid.Grid.prototype.insertAfterCurrentRow=function(){
if(this.activeCell){
var _1f7=nitobi.grid.Cell.getRowNumber(this.activeCell);
this.insertRow(_1f7+1);
}else{
this.insertRow();
}
};
nitobi.grid.Grid.prototype.insertRow=function(_1f8){
var rows=parseInt(this.getDisplayedRowCount());
var xi=0;
if(_1f8!=null){
xi=parseInt((_1f8==null?rows:parseInt(_1f8)));
}
var _1fb=new nitobi.grid.OnBeforeRowInsertEventArgs(this,this.getRowObject(xi-1));
if(!this.isRowInsertEnabled()||!this.fire("BeforeRowInsert",_1fb)){
return;
}
var _1fc=this.datatable.getTemplateNode();
for(var i=0;i<this.columnCount();i++){
var _1fe=this.getColumnObject(i);
var _1ff=_1fe.getInitial();
if(_1ff==null||_1ff==""){
var _200=_1fe.getDataType();
if(_200==null||_200==""){
_200="text";
}
switch(_200){
case "text":
_1ff="";
break;
case "number":
_1ff=0;
break;
case "date":
_1ff="1900-01-01";
break;
}
}
var att=_1fe.getxdatafld().substr(1);
if(att!=null&&att!=""){
_1fc.setAttribute(att,_1ff);
}
}
this.clearSurfaces();
this.datatable.createRecord(_1fc,xi);
this.subscribeOnce("HtmlReady",this.handleAfterRowInsert,this,[xi]);
};
nitobi.grid.Grid.prototype.handleAfterRowInsert=function(xi){
this.fire("AfterRowInsert",new nitobi.grid.OnAfterRowInsertEventArgs(this,this.getRowObject(xi)));
this.setActiveCell(this.getCellElement(xi,0));
};
nitobi.grid.Grid.prototype.deleteCurrentRow=function(){
if(this.activeCell){
this.deleteRow(nitobi.grid.Cell.getRowNumber(this.activeCell));
}else{
alert("First select a record to delete.");
}
};
nitobi.grid.Grid.prototype.deleteRow=function(_203){
var _204=new nitobi.grid.OnBeforeRowDeleteEventArgs(this,this.getRowObject(_203));
if(!this.isRowDeleteEnabled()||!this.fire("BeforeRowDelete",_204)){
return;
}
this.clearSurfaces();
var rows=this.getDisplayedRowCount();
var xi=rows-1;
this.datatable.deleteRecord(_203);
rows--;
this.subscribeOnce("HtmlReady",this.handleAfterRowDelete,this,[_203]);
};
nitobi.grid.Grid.prototype.handleAfterRowDelete=function(xi){
this.fire("AfterRowDelete",new nitobi.grid.OnBeforeRowDeleteEventArgs(this,this.getRowObject(xi)));
this.setActiveCell(this.getCellElement(xi,0));
};
nitobi.grid.Grid.prototype.onNextPage=function(){
this.loadNextDataPage();
};
nitobi.grid.Grid.prototype.page=function(dir){
};
nitobi.grid.Grid.prototype.selectionMoved=function(h,v){
eval(this.onMove);
};
nitobi.grid.Grid.prototype.move=function(h,v){
var hs=1;
var vs=1;
h=(h*hs);
v=(v*vs);
this.selectCellByCoords(nitobi.grid.Cell.getRowNumber(this.activeCell)+v,nitobi.grid.Cell.getColumnNumber(this.activeCell)+h);
};
nitobi.grid.Grid.prototype.handleClick=function(evt){
if(this.isSingleClickEditEnabled()){
this.edit(evt);
}
};
nitobi.grid.Grid.prototype.handleDblClick=function(evt){
var cell=new nitobi.grid.Cell(this,this.activeCell);
var _212=new nitobi.grid.OnCellDblClickEventArgs(this,cell);
return this.fire("CellDblClick",_212)&&nitobi.event.evaluate(cell.getColumnObject().getOnCellDblClickEvent(),_212);
};
nitobi.grid.Grid.prototype.loadNextDataPage=function(){
this.loadDataPage(this.getCurrentPageIndex()+1);
};
nitobi.grid.Grid.prototype.onPreviousPage=function(){
this.loadPreviousDataPage();
};
nitobi.grid.Grid.prototype.loadPreviousDataPage=function(){
this.loadDataPage(this.getCurrentPageIndex()-1);
};
nitobi.grid.Grid.prototype.GetPage=function(_213){
ebaErrorReport("GetPage is deprecated please use loadDataPage instead","",EBA_DEBUG);
this.loadDataPage(_213);
};
nitobi.grid.Grid.prototype.loadDataPage=function(_214){
};
nitobi.grid.Grid.prototype.getSelectedRow=function(rel){
try{
var nRow=-1;
var AC=this.activeCell;
if(AC!=null){
nRow=nitobi.grid.Cell.getRowNumber(AC);
if(rel){
nRow-=this.getfreezetop();
}
}
return nRow;
}
catch(err){
_ntbAssert(false,err.message);
}
};
nitobi.grid.Grid.prototype.handleHandlerError=function(){
var _218=this.getDataSource().getHandlerError();
if(_218){
this.fire("HandlerError");
}
};
nitobi.grid.Grid.prototype.getRowObject=function(_219,_21a){
var _21b=_21a;
if(_21a==null&&_219!=null){
_21b=_219;
}
return new nitobi.grid.Row(this,_21b);
};
nitobi.grid.Grid.prototype.getSelectedColumn=function(rel){
try{
var nCol=-1;
var AC=this.activeCell;
if(AC!=null){
nCol=parseInt(AC.getAttribute("col"));
if(rel){
nCol-=this.getFrozenLeftColumnCount();
}
}
return nCol;
}
catch(err){
_ntbAssert(false,err.message);
}
};
nitobi.grid.Grid.prototype.getSelectedColumnObject=function(){
return this.getColumnObject(this.getSelectedColumn());
};
nitobi.grid.Grid.prototype.columnCount=function(){
try{
var _21f=this.getColumnDefinitions();
return _21f.length;
}
catch(err){
_ntbAssert(false,err.message);
}
};
nitobi.grid.Grid.prototype.getCellObject=function(row,col){
if(typeof (col)=="string"){
var node=this.model.selectSingleNode("state/nitobi.grid.Columns/nitobi.grid.Column[@xdatafld_orig='"+col+"']");
if(node!=null){
col=parseInt(node.getAttribute("xi"));
}
}
var cell=new nitobi.grid.Cell(this,row,col);
return cell;
};
nitobi.grid.Grid.prototype.getCellText=function(row,col){
return this.getCellObject(row,col).getHtml();
};
nitobi.grid.Grid.prototype.getCellValue=function(row,col){
return this.getCellObject(row,col).getValue();
};
nitobi.grid.Grid.prototype.getCellElement=function(row,_229){
return document.getElementById("cell_"+row+"_"+_229+"_"+this.uid);
};
nitobi.grid.Grid.prototype.getSelectedRowObject=function(xi){
var obj=null;
var r=nitobi.grid.Cell.getRowNumber(this.activeCell);
obj=new nitobi.grid.Row(this,r);
return obj;
};
nitobi.grid.Grid.prototype.getColumnObject=function(_22d){
var _22e=null;
if(_22d>=0){
_22e=this.columns[_22d];
if(_22e==null){
var _22f=this.getColumnDefinitions()[_22d].getAttribute("DataType");
switch(_22f){
case "number":
_22e=new nitobi.grid.NumberColumn(this,_22d);
break;
case "date":
_22e=new nitobi.grid.DateColumn(this,_22d);
break;
default:
_22e=new nitobi.grid.TextColumn(this,_22d);
break;
}
this.columns[_22d]=_22e;
}
}
if(_22e==null||_22e.ModelNode==null){
return null;
}else{
return _22e;
}
};
nitobi.grid.Grid.prototype.getSelectedCellObject=function(){
var obj=null;
var _231=this.activeCell;
if(_231!=null){
var r=nitobi.grid.Cell.getRowNumber(_231);
var c=nitobi.grid.Cell.getColumnNumber(_231);
obj=this.getCellObject(r,c);
}
return obj;
};
nitobi.grid.Grid.prototype.autoAddRow=function(){
if(this.activeCell.innerText.replace(/\s/g,"")!=""&&this.autoAdd){
this.deactivateCell();
if(this.active=="Y"){
this.freezeCell();
}
eval(this.getOnRowBlurEvent());
this.insertRow();
this.go("HOME");
this.editCell();
}
};
nitobi.grid.Grid.prototype.setDisplayedRowCount=function(_234){
if(this.Scroller){
this.Scroller.view.midcenter.rows=_234;
this.Scroller.view.midleft.rows=_234;
}
this.displayedRowCount=_234;
};
nitobi.grid.Grid.prototype.incrementDisplayedRowCount=function(_235){
this.setDisplayedRowCount(this.getDisplayedRowCount()+(_235||1));
this.updateCellRanges();
};
nitobi.grid.Grid.prototype.decrementDisplayedRowCount=function(_236){
this.setDisplayedRowCount(this.getDisplayedRowCount()-(_236||1));
this.updateCellRanges();
};
nitobi.grid.Grid.prototype.getDisplayedRowCount=function(){
return this.displayedRowCount;
};
nitobi.grid.Grid.prototype.copy=function(){
var _237=this.Selection.getCoords();
var data=this.getTableForSelection(_237);
var _239=new nitobi.grid.OnCopyEventArgs(this,data,_237);
if(!this.isCopyEnabled()||!this.fire("BeforeCopy",_239)){
return;
}
if(!nitobi.browser.IE){
var _23a=this.getClipboard();
_23a.onkeyup=nitobi.lang.close(this,this.focus);
_23a.value=data;
_23a.focus();
_23a.setSelectionRange(0,_23a.value.length);
}
if(nitobi.browser.IE){
window.clipboardData.setData("Text",data);
}
this.fire("AfterCopy",_239);
};
nitobi.grid.Grid.prototype.getTableForSelection=function(_23b){
var _23c=this.getColumnMap(_23b.top.x,_23b.bottom.x);
var _23d=nitobi.data.FormatConverter.convertEbaXmlToTsv(this.getDataSource().getDataXmlDoc(),_23c,_23b.top.y,_23b.bottom.y);
return _23d;
};
nitobi.grid.Grid.prototype.getColumnMap=function(_23e,_23f){
var _240=this.getColumnDefinitions();
_23e=(_23e==null)?0:_23e;
_23f=(_23f==null)?_240.length-1:_23f;
var map=new Array();
for(var i=_23e;i<=_23f&&(null!=_240[i]);i++){
map.push(_240[i].getAttribute("xdatafld").substr(1));
}
return map;
};
nitobi.grid.Grid.prototype.paste=function(){
if(!this.isPasteEnabled()){
return;
}
var _243=this.getClipboard();
_243.onkeyup=nitobi.lang.close(this,this.pasteDataReady,[_243]);
_243.focus();
return _243;
};
nitobi.grid.Grid.prototype.pasteDataReady=function(_244){
_244.onkeyup=null;
var _245=this.Selection;
var _246=_245.getCoords();
var _247=_246.top.x;
var _248=_247+nitobi.data.FormatConverter.getDataColumns(_244.value)-1;
var _249=true;
for(var i=_247;i<=_248;i++){
var _24b=this.getColumnObject(i);
if(_24b){
if(!_24b.isEditable()){
_249=false;
break;
}
}
}
if(!_249){
alert("Paste Failed: A column you are attempting to paste into is read-only.");
return;
}else{
var _24c=this.getColumnMap(_247,_248);
var _24d=_246.top.y;
var _24e=Math.max(_24d+nitobi.data.FormatConverter.getDataRows(_244.value)-1,0);
this.getSelection().selectWithCoords(_24d,_247,_24e,_247+_24c.length-1);
var _24f=new nitobi.grid.OnPasteEventArgs(this,_244.value,_246);
if(!this.fire("BeforePaste",_24f)){
return;
}
var _250=_244.value;
var _251=null;
if(_250.substr(0,1)=="<"){
_251=nitobi.data.FormatConverter.convertHtmlTableToEbaXml(_250,_24c,_24d);
}else{
_251=nitobi.data.FormatConverter.convertTsvToEbaXml(_250,_24c,_24d);
}
if(_251.documentElement!=null){
this.datatable.mergeFromXml(_251,nitobi.lang.close(this,this.pasteComplete,[_251,_24d,_24e,_24f]));
}
}
};
nitobi.grid.Grid.prototype.pasteComplete=function(_252,_253,_254,_255){
this.Scroller.reRender(_253,_254);
this.subscribeOnce("HtmlReady",this.handleAfterPaste,this,[_255]);
};
nitobi.grid.Grid.prototype.handleAfterPaste=function(_256){
this.fire("AfterPaste",_256);
};
nitobi.grid.Grid.prototype.getClipboard=function(){
var _257=document.getElementById(this.uid+"_ebaclipboard");
if(!_257){
_257=document.createElement("textarea");
_257.name=this.uid+"_ebaclipboard";
_257.id=this.uid+"_ebaclipboard";
_257.style.position="absolute";
_257.style.top=(-500)+"px";
_257.style.left=(-500)+"px";
_257.width=100;
_257.height=100;
document.body.appendChild(_257);
}
_257.onkeyup=null;
_257.value="";
return _257;
};
nitobi.grid.Grid.prototype.handleHtmlReady=function(_258){
this.fire("HtmlReady",new nitobi.base.EventArgs(this));
};
nitobi.grid.Grid.prototype.fire=function(evt,args){
return nitobi.event.notify(evt+this.uid,args);
};
nitobi.grid.Grid.prototype.subscribe=function(evt,func,_25d){
if(typeof (_25d)=="undefined"){
_25d=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_25d,func));
};
nitobi.grid.Grid.prototype.subscribeOnce=function(evt,func,_260,_261){
var guid=null;
var _263=this;
var _264=function(){
func.apply(_260||this,_261||[]);
_263.unsubscribe(evt,guid);
};
guid=this.subscribe(evt,_264);
};
nitobi.grid.Grid.prototype.unsubscribe=function(evt,guid){
return nitobi.event.unsubscribe(evt+this.uid,guid);
};
nitobi.grid.Grid.prototype.xGET=function(){
var val="";
if(this.model&&this.model.documentElement){
var node=this.model.documentElement.selectSingleNode(arguments[0]);
if(node!=null){
val=node.nodeValue;
}
}
return val;
};
nitobi.grid.Grid.prototype.xSET=function(){
if((arguments[1][0]!=null)&&(this.model)&&(this.model.documentElement)&&(this.model.documentElement.selectSingleNode(arguments[0]))){
var node=this.model.documentElement.selectSingleNode(arguments[0]);
if(typeof (arguments[1][0])=="boolean"){
node.nodeValue=nitobi.lang.boolToStr(arguments[1][0]);
}else{
node.nodeValue=arguments[1][0];
}
}
};
nitobi.grid.Grid.prototype.eSET=function(name,args){
var _26c=args[0];
var _26d=_26c;
var _26e=name.substr(2);
_26e=_26e.substr(0,_26e.length-5);
if(typeof (_26c)=="string"){
_26d=function(){
return nitobi.event.evaluate(_26c,arguments[0]);
};
}
if(this[name]!=null){
this.unsubscribe(_26e,this[name]);
}
var guid=this.subscribe(_26e,_26d);
this.jSET(name,[guid]);
return guid;
};
nitobi.grid.Grid.prototype.jSET=function(name,val){
this[name]=val[0];
};
nitobi.grid.Grid.prototype.dispose=function(){
try{
this.element.jsObject=null;
editorXslProc=null;
for(var item in this){
if(this[item]!=null){
if(this[item].dispose instanceof Function){
this[item].dispose();
}
this[item]=null;
}
}
nitobi.form.ControlFactory.instance.dispose();
}
catch(e){
}
};
nitobi.Grid=nitobi.grid.Grid;
nitobi.grid.Cell=function(grid,row,_275){
if(row==null){
return null;
}
this.Interface=grid.API.selectSingleNode("interfaces/interface[@name='nitobi.grid.Cell']");
eval(nitobi.xml.transformToString(this.Interface,grid.accessorGeneratorXslProc));
this.grid=grid;
var _276=null;
if(typeof (row)=="object"){
var cell=row;
row=Number(cell.getAttribute("xi"));
_275=cell.getAttribute("col");
_276=cell;
}else{
_276=this.grid.getCellElement(row,_275);
}
this.DomNode=_276;
this.row=Number(row);
this.Row=this.row;
this.column=Number(_275);
this.Column=this.column;
this.columnObject=this.grid.getColumnObject(this.Column);
this.dataIndex=this.Row;
var _278=this.grid.datatable;
this.DataNode=_278.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@xi="+this.dataIndex+"]/"+_278.fieldMap[this.columnObject.getColumnName()]);
this.ModelNode=this.grid.model.selectSingleNode("//nitobi.grid.Columns/nitobi.grid.Column[@xi='"+this.column+"']");
};
nitobi.grid.Cell.prototype.setValue=function(_279,_27a){
if(_279==this.getValue()){
return;
}
var _27b="";
switch(this.columnObject.getType()){
case "PASSWORD":
for(var i=0;i<_279.length;i++){
_27b+="*";
}
break;
case "NUMBER":
if(this.numberXsl==null){
this.numberXsl=nitobi.form.numberXslProc.stylesheet;
}
if(_279==""){
_279=nitobi.form.Number.defaultValue;
}
var _27d=nitobi.xml.createXmlDoc("<root><number>"+_279+"</number><mask>"+this.columnObject.getMask()+"</mask><group>"+this.columnObject.getGroupingSeparator()+"</group><decimal>"+this.columnObject.getDecimalSeparator()+"</decimal></root>");
_27b=nitobi.xml.transformToString(_27d,this.numberXsl);
if(""==_27b&&_279!=""){
_27b=nitobi.html.getFirstChild(this.DomNode).innerHTML;
_279=this.getValue();
}
break;
case "DATE":
if(this.dateXsl==null){
this.dateXsl=nitobi.form.dateXslProc.stylesheet;
}
var _27d=nitobi.xml.createXmlDoc("<root><date>"+_279+"</date><mask>"+this.columnObject.getMask()+"</mask></root>");
_27b=nitobi.xml.transformToString(_27d,this.dateXsl);
if(""==_27b){
_27b=nitobi.html.getFirstChild(this.DomNode).innerHTML;
_279=this.getValue();
}
break;
case "TEXTAREA":
_27b=nitobi.html.encode(_279);
break;
case "LOOKUP":
var _27e=this.getColumnObject();
var _27f=_27e.ModelNode.getAttribute("DatasourceId");
var _280=this.grid.data.getTable(_27f);
var _281=_27e.ModelNode.getAttribute("DisplayFields");
var _282=_27e.ModelNode.getAttribute("ValueField");
var _283=_280.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+_282+"='"+_279+"']/@"+_281);
if(_283!=null){
_27b=_283.nodeValue;
}else{
_27b=_279;
}
break;
case "CHECKBOX":
var _27e=this.getColumnObject();
var _27f=_27e.ModelNode.getAttribute("DatasourceId");
var _280=this.grid.data.getTable(_27f);
var _281=_27e.ModelNode.getAttribute("DisplayFields");
var _282=_27e.ModelNode.getAttribute("ValueField");
var _284=_27e.ModelNode.getAttribute("CheckedValue");
if(_284==""||_284==null){
_284=0;
}
var _285=_280.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+_282+"='"+_279+"']/@"+_281).nodeValue;
var _286=(_279==_284)?"checked":"unchecked";
_27b="<div style=\"overflow:hidden;\"><div style=\"float:left;\" class=\"ntbcheckbox ntbcheckbox"+_286+" checkbox"+_286+"\" checked=\""+_279+"\">&nbsp;</div><span>"+nitobi.html.encode(_285)+"</span></div>";
break;
case "LISTBOX":
var _27e=this.getColumnObject();
var _27f=_27e.ModelNode.getAttribute("DatasourceId");
var _280=this.grid.data.getTable(_27f);
var _281=_27e.ModelNode.getAttribute("DisplayFields");
var _282=_27e.ModelNode.getAttribute("ValueField");
_27b=_280.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+_282+"='"+_279+"']/@"+_281).nodeValue;
break;
case "IMAGE":
_27b=nitobi.html.getFirstChild(this.DomNode).innerHTML;
if(nitobi.lang.typeOf(_279)==nitobi.lang.type.HTMLNODE){
_27b="<img border=\"0\" src=\""+_279.getAttribute("src")+"\" />";
}else{
if(typeof (_279)=="string"){
_27b="<img border=\"0\" src=\""+_279+"\" />";
}
}
break;
default:
_27b=_279;
}
if(this.DomNode!=null){
nitobi.html.getFirstChild(this.DomNode).innerHTML=_27b;
this.DomNode.setAttribute("value",_279);
}
this.grid.datatable.updateRecord(this.dataIndex,this.columnObject.getColumnName(),_279);
};
nitobi.grid.Cell.prototype.getValue=function(){
return this.GETDATA();
};
nitobi.grid.Cell.prototype.getHtml=function(){
return nitobi.html.getFirstChild(this.DomNode).innerHTML;
};
nitobi.grid.Cell.prototype.edit=function(){
this.grid.setActiveCell(this.DomNode);
this.grid.edit();
};
nitobi.grid.Cell.prototype.GETDATA=function(){
var node=this.DataNode;
if(node!=null){
return node.value;
}
};
nitobi.grid.Cell.prototype.xGETMETA=function(){
if(this.MetaNode==null){
return null;
}
var node=this.MetaNode;
node=node.selectSingleNode("@"+arguments[0]);
if(node!=null){
return node.value;
}
};
nitobi.grid.Cell.prototype.xSETMETA=function(){
var node=this.MetaNode;
if(node!=null){
node.setAttribute(arguments[0],arguments[1][0]);
}else{
alert("Cannot set property: "+arguments[0]);
}
};
nitobi.grid.Cell.prototype.xSETCSS=function(){
var node=this.DomNode;
if(node!=null){
node.style.setAttribute(arguments[0],arguments[1][0]);
}else{
alert("Cannot set property: "+arguments[0]);
}
};
nitobi.grid.Cell.prototype.xGET=function(){
var node=this.ModelNode;
node=node.selectSingleNode(arguments[0]);
if(node!=null){
return node.value;
}
};
nitobi.grid.Cell.prototype.xSET=function(){
var node=this.ModelNode;
node=node.selectSingleNode(arguments[0]);
if(node!=null){
node.nodeValue=arguments[1][0];
}
};
nitobi.grid.Cell.prototype.getStyle=function(){
return this.DomNode.style;
};
nitobi.grid.Cell.prototype.getColumnObject=function(){
if(typeof (this.columnObject)=="undefined"){
this.columnObject=this.grid.getColumnObject(this.getColumn());
}
return this.columnObject;
};
nitobi.grid.Cell.getCellElement=function(grid,row,_28f){
return $("cell_"+row+"_"+_28f+"_"+grid.uid);
};
nitobi.grid.Cell.getRowNumber=function(_290){
return parseInt(_290.getAttribute("xi"));
};
nitobi.grid.Cell.getColumnNumber=function(_291){
return parseInt(_291.getAttribute("col"));
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.CellEventArgs=function(_292,cell){
this.grid=_292;
this.cell=cell;
this.event=nitobi.html.Event;
};
nitobi.grid.CellEventArgs.prototype.getSource=function(){
return this.grid;
};
nitobi.grid.CellEventArgs.prototype.getCell=function(){
return this.cell;
};
nitobi.grid.CellEventArgs.prototype.getEvent=function(){
return this.event;
};
nitobi.grid.CellEventArgs.prototype.getOldValue=function(){
};
nitobi.grid.CellEventArgs.prototype.getNewValue=function(){
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.RowEventArgs=function(_294,row){
this.grid=_294;
this.row=row;
this.event=nitobi.html.Event;
};
nitobi.grid.RowEventArgs.prototype.getSource=function(){
return this.grid;
};
nitobi.grid.RowEventArgs.prototype.getRow=function(){
return this.row;
};
nitobi.grid.RowEventArgs.prototype.getEvent=function(){
return this.event;
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.SelectionEventArgs=function(_296,data,_298){
this.source=_296;
this.coords=_298;
this.data=data;
};
nitobi.grid.SelectionEventArgs.prototype.getSource=function(){
return this.source;
};
nitobi.grid.SelectionEventArgs.prototype.getCoords=function(){
return this.coords;
};
nitobi.grid.SelectionEventArgs.prototype.getData=function(){
return this.data;
};
nitobi.grid.Column=function(grid,_29a){
this.grid=grid;
this.column=_29a;
this.uid=nitobi.base.getUid();
this.Interface=this.grid.API.selectSingleNode("interfaces/interface[@name='nitobi.grid.Column']");
eval(nitobi.xml.transformToString(this.Interface,grid.accessorGeneratorXslProc));
var _29b=null;
if(nitobi.browser.MOZ){
_29b=this.grid.model.selectSingleNode("//state/nitobi.grid.Columns/nitobi.grid.Column["+(parseInt(_29a)+1)+"]");
}else{
_29b=this.grid.model.selectSingleNode("//state/nitobi.grid.Columns/nitobi.grid.Column["+(_29a)+"]");
}
this.ModelNode=_29b;
};
nitobi.grid.Column.prototype.getHeaderElement=function(){
return nitobi.grid.Column.getColumnHeaderElement(this.grid,this.column);
};
nitobi.grid.Column.prototype.getEditor=function(){
};
nitobi.grid.Column.prototype.getStyle=function(){
var _29c=this.getClassName();
return nitobi.html.getClass(_29c);
};
nitobi.grid.Column.prototype.getHeaderStyle=function(){
var _29d="acolumnheader"+this.grid.uid+"_"+this.column;
return nitobi.html.getClass(_29d);
};
nitobi.grid.Column.prototype.getDataStyle=function(){
var _29e="ntbcolumndata"+this.grid.uid+"_"+this.column;
return nitobi.html.getClass(_29e);
};
nitobi.grid.Column.prototype.getEditor=function(){
return nitobi.form.ControlFactory.instance.getEditor(this.grid,this);
};
nitobi.grid.Column.prototype.xGETMODEL=function(){
var node=this.ModelNode;
node=node.selectSingleNode("@"+arguments[0]);
if(node!=null){
return node.value;
}
};
nitobi.grid.Column.prototype.xSETMODEL=function(){
var node=this.ModelNode;
if(node!=null){
node.setAttribute(arguments[0],arguments[1][0]);
}else{
alert("Cannot set model property: "+arguments[0]);
}
};
nitobi.grid.Column.prototype.xGET=function(){
var node=this.grid.model.documentElement;
node=node.selectSingleNode(arguments[0]);
if(node!=null){
return node.value;
}
};
nitobi.grid.Column.prototype.xSET=function(){
var node=this.grid.model.documentElement;
node=node.selectSingleNode(arguments[0]);
if(node!=null){
node.nodeValue=arguments[1][0];
}
};
nitobi.grid.Column.prototype.eSET=function(name,_2a4){
var _2a5=_2a4[0];
var _2a6=_2a5;
var _2a7=name.substr(2);
_2a7=_2a7.substr(0,_2a7.length-5);
if(typeof (_2a5)=="string"){
_2a6=function(_2a8){
return eval(_2a5);
};
}
if(typeof (this[name])!="undefined"){
alert("unsubscribe");
this.unsubscribe(_2a7,this[name]);
}
var guid=this.subscribe(_2a7,_2a6);
this.jSET(name,[guid]);
};
nitobi.grid.Column.prototype.jSET=function(name,val){
this[name]=val[0];
};
nitobi.grid.Column.prototype.fire=function(evt,args){
return nitobi.event.notify(evt+this.uid,args);
};
nitobi.grid.Column.prototype.subscribe=function(evt,func,_2b0){
if(typeof (_2b0)=="undefined"){
_2b0=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_2b0,func));
};
nitobi.grid.Column.prototype.unsubscribe=function(evt,func){
return nitobi.event.unsubscribe(evt+this.uid,func);
};
nitobi.grid.Column.getColumnHeaderElement=function(grid,_2b4){
return $("columnheader_"+_2b4+"_"+grid.uid);
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.ColumnEventArgs=function(_2b5,_2b6){
this.grid=_2b5;
this.column=_2b6;
this.event=nitobi.html.Event;
};
nitobi.grid.ColumnEventArgs.prototype.getSource=function(){
return this.grid;
};
nitobi.grid.ColumnEventArgs.prototype.getColumn=function(){
return this.column;
};
nitobi.grid.ColumnEventArgs.prototype.getEvent=function(){
return this.event;
};
nitobi.grid.ColumnEventArgs.prototype.getDirection=function(){
};
nitobi.grid.ColumnResizer=function(grid){
this.grid=grid;
this.hScrollClass=null;
this.surfaceClass=null;
this.columClass=null;
this.line=document.getElementById("ebagridresizeline_");
if(this.line==null){
this.line=document.createElement("div");
this.line.id="ebagridresizeline_";
document.body.appendChild(this.line);
this.line.className="ntbcolumnresizeline";
}
this.lineStyle=this.line.style;
if(nitobi.browser.IE){
this.surface=document.getElementById("ebagridresizesurface_");
if(this.surface==null){
this.surface=document.createElement("div");
this.surface.id="ebagridresizesurface_";
this.surface.className="ntbcolumnresizesurface";
document.body.appendChild(this.surface);
}
}
};
nitobi.grid.ColumnResizer.prototype.startResize=function(grid,_2b9,_2ba,_2bb){
this.grid=grid;
this.column=_2b9;
var _2bc=new nitobi.grid.OnBeforeColumnResizeEventArgs(this.grid,this.column);
if(!nitobi.event.evaluate(_2b9.getOnBeforeResizeEvent(),_2bc)){
return;
}
var x=nitobi.html.getEventCoords(_2bb).x;
if(nitobi.browser.IE){
this.surface.style.visibility="visible";
nitobi.drawing.align(this.surface,this.grid.element,nitobi.drawing.align.SAMEHEIGHT|nitobi.drawing.align.SAMEWIDTH|nitobi.drawing.align.ALIGNTOP|nitobi.drawing.align.ALIGNLEFT);
}
this.x=x;
nitobi.drawing.align(this.line,_2ba,nitobi.drawing.align.ALIGNTOP,0,0,nitobi.html.getHeight(_2ba)+1);
this.lineStyle.left=x+"px";
this.lineStyle.height=(parseInt(this.grid.Scroller.height)-parseInt(this.grid.getHeaderHeight()))+"px";
this.lineStyle.visibility="visible";
nitobi.ui.startDragOperation(this.line,_2bb,false,true,this,this.endResize);
};
nitobi.grid.ColumnResizer.prototype.endResize=function(_2be){
var x=_2be.x;
var Y=_2be.y;
if(nitobi.browser.IE){
this.surface.style.visibility="hidden";
}
this.lineStyle.visibility="hidden";
this.lineStyle.top="0px";
this.lineStyle.left="0px";
var _2c1=this.column.getWidth();
var _2c2=parseInt(_2c1)+x-this.x;
if(isNaN(_2c2)){
return;
}
if(_2c2>10){
var _2c3=this.column.getWidth();
this.column.setWidth(_2c2);
this.grid.updateCellRanges();
this.grid.generateCss();
this.grid.adjustHorizontalScrollBars();
}
this.grid.Selection.collapse(this.grid.activeCell);
var _2c4=new nitobi.grid.OnAfterColumnResizeEventArgs(this.grid,this.column);
nitobi.event.evaluate(this.column.getOnAfterResizeEvent(),_2c4);
};
nitobi.grid.ColumnResizer.prototype.dispose=function(){
this.grid=null;
this.line=null;
this.lineStyle=null;
this.surface=null;
};
nitobi.grid.GridResizer=function(grid){
this.grid=grid;
this.box=document.getElementById("ebagridresizebox_");
if(this.box==null){
this.box=document.createElement("div");
this.box.id="ebagridresizebox_";
document.body.appendChild(this.box);
this.box.className="ntbcolumnresizeline";
}
};
nitobi.grid.GridResizer.prototype.startResize=function(grid,_2c7){
this.grid=grid;
var _2c8=null;
var x,y;
var _2cb=nitobi.html.getEventCoords(_2c7);
x=_2cb.x;
y=_2cb.y;
this.x=x;
this.y=y;
var w=grid.getWidth();
var h=grid.getHeight();
var L=grid.element.offsetLeft;
var T=grid.element.offsetTop;
this.resizeW=(Math.abs((x-L)-w)<3)||((Math.abs((y-T)-h)<16)&&(Math.abs((x-L)-w)<16));
this.resizeH=(Math.abs((y-T)-h)<3)||((Math.abs((y-T)-h)<16)&&(Math.abs((x-L)-w)<16));
if(this.resizeW||this.resizeH){
this.box.style.cursor=(this.resizeW&&this.resizeH)?"NW-Resize":(this.resizeW)?"W-Resize":"N-Resize";
this.box.style.visibility="visible";
this.box.style.width=(x-L)+"px";
this.box.style.height=(y-T)+"px";
var _2d0=nitobi.drawing.align.SAMEWIDTH|nitobi.drawing.align.SAMEHEIGHT|nitobi.drawing.align.ALIGNTOP|nitobi.drawing.align.ALIGNLEFT;
nitobi.drawing.align(this.box,this.grid.element,_2d0,0,0,0,0,false);
this.dd=new nitobi.ui.DragDrop(this.box,false,false);
this.dd.onDragStop.subscribe(this.endResize,this);
this.dd.onMouseMove.subscribe(this.resize,this);
this.dd.startDrag(_2c7);
}
};
nitobi.grid.GridResizer.prototype.resize=function(){
var x=this.dd.x;
var y=this.dd.y;
var L=this.grid.element.offsetLeft;
var T=this.grid.element.offsetTop;
this.box.style.visibility="visible";
if(this.resizeW){
this.box.style.width=(x-L)+"px";
}
if(this.resizeH){
this.box.style.height=(y-T)+"px";
}
};
nitobi.grid.GridResizer.prototype.endResize=function(){
var x=this.dd.x;
var y=this.dd.y;
this.box.style.visibility="hidden";
var _2d7=this.grid.getWidth();
var _2d8=this.grid.getHeight();
var _2d9=parseInt(_2d7)+((this.resizeW)?x-this.x:0);
var _2da=parseInt(_2d8)+((this.resizeH)?y-this.y:0);
if(isNaN(_2d9)||isNaN(_2da)){
return;
}
if(_2d9>20&&_2da>20){
this.grid.setWidth(_2d9);
this.grid.setHeight(_2da);
this.grid.generateCss();
}
var _2db=null;
this.grid.fire("AfterGridResize",{width:_2d9,height:_2da});
};
nitobi.grid.GridResizer.prototype.dispose=function(){
this.grid=null;
};
nitobi.data.FormatConverter={};
nitobi.data.FormatConverter.convertHtmlTableToEbaXml=function(_2dc,_2dd,_2de){
var s="<xsl:stylesheet version=\"1.0\" xmlns:ntb=\"http://www.nitobi.com\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"><xsl:output encoding=\"UTF-8\" method=\"xml\" omit-xml-declaration=\"no\" />";
s+="<xsl:template match=\"//TABLE\"><ntb:data id=\"_default\">";
s+="<xsl:apply-templates /></ntb:data> </xsl:template>";
s+="<xsl:template match = \"//TR\">  <xsl:element name=\"ntb:e\"> <xsl:attribute name=\"xi\"><xsl:value-of select=\"position()-1+"+parseInt(_2de)+"\"/></xsl:attribute>";
for(var _2e0=0;_2e0<_2dd.length;_2e0++){
s+="<xsl:attribute name=\""+_2dd[_2e0]+"\" ><xsl:value-of select=\"TD["+parseInt(_2e0+1)+"]\"/></xsl:attribute>";
}
s+="</xsl:element></xsl:template>";
s+="</xsl:stylesheet>";
var _2e1=nitobi.xml.createXmlDoc(_2dc);
var _2e2=nitobi.xml.createXslProcessor(s);
var _2e3=nitobi.xml.transformToXml(_2e1,_2e2);
return _2e3;
};
nitobi.data.FormatConverter.convertTsvToEbaXml=function(tsv,_2e5,_2e6){
var _2e7="<TABLE><TBODY>"+tsv.replace(/[\&\r]/g,"").replace(/([^\t\n]*)[\t]/g,"<TD>$1</TD>").replace(/([^\n]*?)\n/g,"<TR>$1</TR>").replace(/\>([^\<]*)\<\/TR/g,"><TD>$1</TD></TR")+"</TBODY></TABLE>";
if(_2e7.indexOf("<TBODY><TR>")==-1){
_2e7=_2e7.replace(/TBODY\>(.*)\<\/TBODY/,"TBODY><TR><TD>$1</TD></TR></TBODY");
}
return nitobi.data.FormatConverter.convertHtmlTableToEbaXml(_2e7,_2e5,_2e6);
};
nitobi.data.FormatConverter.convertEbaXmlToHtmlTable=function(_2e8,_2e9,_2ea,_2eb){
var s="<xsl:stylesheet version=\"1.0\" xmlns:ntb=\"http://www.nitobi.com\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"><xsl:output encoding=\"UTF-8\" method=\"html\" omit-xml-declaration=\"yes\" /><xsl:template match = \"*\"><xsl:apply-templates /></xsl:template><xsl:template match = \"/\">";
s+="<TABLE><TBODY><xsl:for-each select=\"//ntb:e[@xi>"+parseInt(_2ea-1)+" and @xi &lt; "+parseInt(_2eb+1)+"]\" ><TR>";
for(var _2ed=0;_2ed<_2e9.length;_2ed++){
s+="<TD><xsl:value-of select=\"@"+_2e9[_2ed]+"\" /></TD>";
}
s+="</TR></xsl:for-each></TBODY></TABLE></xsl:template></xsl:stylesheet>";
var _2ee=nitobi.xml.createXslProcessor(s);
return nitobi.xml.transformToXml(_2e8,_2ee).xml.replace(/xmlns:ntb="http:\/\/www.nitobi.com"/,"");
};
nitobi.data.FormatConverter.convertEbaXmlToTsv=function(_2ef,_2f0,_2f1,_2f2){
var s="<xsl:stylesheet version=\"1.0\" xmlns:ntb=\"http://www.nitobi.com\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"><xsl:output encoding=\"UTF-8\" method=\"text\" omit-xml-declaration=\"yes\" /><xsl:template match = \"*\"><xsl:apply-templates /></xsl:template><xsl:template match = \"/\">";
s+="<xsl:for-each select=\"//ntb:e[@xi>"+parseInt(_2f1-1)+" and @xi &lt; "+parseInt(_2f2+1)+"]\" >\n";
for(var _2f4=0;_2f4<_2f0.length;_2f4++){
s+="<xsl:value-of select=\"@"+_2f0[_2f4]+"\" />";
if(_2f4<_2f0.length-1){
s+="<xsl:text>&#x09;</xsl:text>";
}
}
s+="<xsl:text>&#xa;</xsl:text></xsl:for-each></xsl:template></xsl:stylesheet>";
var _2f5=nitobi.xml.createXslProcessor(s);
return nitobi.xml.transformToString(_2ef,_2f5).replace(/xmlns:ntb="http:\/\/www.nitobi.com"/,"");
};
nitobi.data.FormatConverter.getDataColumns=function(data){
var _2f7=0;
if(data!=null&&data!=""){
if(data.substr(0,1)=="<"){
_2f7=data.toLowerCase().substr(0,data.toLowerCase().indexOf("</tr>")).split("</td>").length-1;
}else{
_2f7=data.substr(0,data.indexOf("\n")).split("\t").length;
}
}else{
_2f7=0;
}
return _2f7;
};
nitobi.data.FormatConverter.getDataRows=function(data){
var _2f9=0;
if(data!=null&&data!=""){
if(data.substr(0,1)=="<"){
_2f9=data.toLowerCase().split("</tr>").length-1;
}else{
retValArray=data.split("\n");
_2f9=retValArray.length;
if(retValArray[retValArray.length-1]==""){
_2f9--;
}
}
}else{
_2f9=0;
}
return _2f9;
};
nitobi.grid.DateColumn=function(grid,_2fb){
nitobi.grid.DateColumn.baseConstructor.call(this,grid,_2fb);
this.Interface=grid.API.selectSingleNode("interfaces/interface[@name='EBADateColumn']");
eval(nitobi.xml.transformToString(this.Interface,grid.accessorGeneratorXslProc));
};
nitobi.lang.extend(nitobi.grid.DateColumn,nitobi.grid.Column);
nitobi.lang.defineNs("nitobi.grid.Declaration");
nitobi.grid.Declaration.parse=function(_2fc){
var _2fd={};
_2fd.grid=nitobi.xml.parseHtml(_2fc);
var _2fe=_2fc.firstChild;
while(_2fe!=null){
if(typeof (_2fe.tagName)!="undefined"){
var tag=_2fe.tagName.replace(/ntb\:/gi,"").toLowerCase();
if(tag=="inlinehtml"){
_2fd[tag]=_2fe;
}else{
var _300="http://www.nitobi.com";
if(tag=="columndefinition"){
var sXml;
if(nitobi.browser.IE){
sXml=("<"+nitobi.xml.nsPrefix+"grid xmlns:ntb=\""+_300+"\"><"+nitobi.xml.nsPrefix+"columns>"+_2fe.parentNode.innerHTML.substring(31).replace(/\=\s*([^\"^\s^\>]+)/g,"=\"$1\" ")+"</"+nitobi.xml.nsPrefix+"columns></"+nitobi.xml.nsPrefix+"grid>");
}else{
sXml="<"+nitobi.xml.nsPrefix+"grid xmlns:ntb=\""+_300+"\"><"+nitobi.xml.nsPrefix+"columns>"+_2fe.parentNode.innerHTML.replace(/\=\s*([^\"^\s^\>]+)/g,"=\"$1\" ")+"</"+nitobi.xml.nsPrefix+"columns></"+nitobi.xml.nsPrefix+"grid>";
}
sXml=sXml.replace(/\&nbsp\;/gi," ");
_2fd["columndefinitions"]=nitobi.xml.createXmlDoc();
_2fd["columndefinitions"].validateOnParse=false;
_2fd["columndefinitions"]=nitobi.xml.loadXml(_2fd["columndefinitions"],sXml);
break;
}else{
_2fd[tag]=nitobi.xml.parseHtml(_2fe);
}
}
}
_2fe=_2fe.nextSibling;
}
return _2fd;
};
nitobi.grid.Declaration.loadDataSources=function(_302,grid){
var _304=new Array();
if(_302["datasources"]){
_304=_302.datasources.selectNodes("//"+nitobi.xml.nsPrefix+"datasources/*");
}
if(_304.length>0){
for(var i=0;i<_304.length;i++){
var id=_304[i].getAttribute("id");
if(id!="_default"){
var _307=_304[i].xml.replace(/fieldnames=/g,"FieldNames=").replace(/keys=/g,"Keys=");
_307="<ntb:grid xmlns:ntb=\"http://www.nitobi.com\"><ntb:datasources>"+_307+"</ntb:datasources></ntb:grid>";
var _308=new nitobi.data.DataTable("local",grid.getPagingMode()!=nitobi.grid.PAGINGMODE_NONE,{GridId:grid.getID()},{GridId:grid.getID()},grid.isAutoKeyEnabled());
_308.initialize(id,_307);
_308.initializeXml(_307);
grid.data.add(_308);
var _309=grid.model.selectNodes("//nitobi.grid.Column[@DatasourceId='"+id+"']");
for(var j=0;j<_309.length;j++){
grid.editorDataReady(_309[j]);
}
}
}
}
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.EditCompleteEventArgs=function(obj,_30c,_30d,cell){
this.editor=obj;
this.cell=cell;
this.databaseValue=_30d;
this.displayValue=_30c;
this.status="ok";
};
nitobi.grid.EditCompleteEventArgs.prototype.dispose=function(){
this.editor=null;
this.cell=null;
this.metadata=null;
};
nitobi.data.GetCompleteEventArgs=function(_30f,_310,_311,_312,_313,_314,obj,_316,_317){
this.firstRow=_30f;
this.lastRow=_310;
this.callback=_316;
this.dataSource=_314;
this.context=obj;
this.ajaxCallback=_313;
this.startXi=_311;
this.pageSize=_312;
this.lastPage=false;
this.numRowsReturned=_317;
this.lastRowReturned=_310;
};
nitobi.data.GetCompleteEventArgs.prototype.dispose=function(){
this.callback=null;
this.context=null;
this.dataSource=null;
this.ajaxCallback.clear();
this.ajaxCallback==null;
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.MODE_STANDARDPAGING="standard";
nitobi.grid.MODE_LOCALSTANDARDPAGING="localstandard";
nitobi.grid.MODE_LIVESCROLLING="livescrolling";
nitobi.grid.MODE_LOCALLIVESCROLLING="locallivescrolling";
nitobi.grid.MODE_NONPAGING="nonpaging";
nitobi.grid.MODE_LOCALNONPAGING="localnonpaging";
nitobi.grid.MODE_SMARTPAGING="smartpaging";
nitobi.grid.MODE_PAGEDLIVESCROLLING="pagedlivescrolling";
nitobi.grid.RENDERMODE_ONDEMAND="ondemand";
nitobi.lang.defineNs("nitobi.GridFactory");
nitobi.GridFactory.createGrid=function(_318,_319,_31a){
var _31b="";
var _31c="";
var _31d="";
_31a=nitobi.html.getElement(_31a);
if(_31a!=null){
xDeclaration=nitobi.grid.Declaration.parse(_31a);
_318=xDeclaration.grid.documentElement.getAttribute("mode");
var _31e=nitobi.GridFactory.isGetHandler(xDeclaration);
var _31f=nitobi.GridFactory.isDatasourceId(xDeclaration);
var _320=false;
if(_318==nitobi.grid.MODE_LOCALLIVESCROLLING){
_31b=nitobi.grid.PAGINGMODE_LIVESCROLLING;
_31c=nitobi.data.DATAMODE_LOCAL;
}else{
if(_318==nitobi.grid.MODE_LIVESCROLLING){
_31b=nitobi.grid.PAGINGMODE_LIVESCROLLING;
_31c=nitobi.data.DATAMODE_CACHING;
}else{
if(_318==nitobi.grid.MODE_NONPAGING){
_320=true;
_31b=nitobi.grid.PAGINGMODE_NONE;
_31c=nitobi.data.DATAMODE_LOCAL;
}else{
if(_318==nitobi.grid.MODE_LOCALNONPAGING){
_31b=nitobi.grid.PAGINGMODE_NONE;
_31c=nitobi.data.DATAMODE_LOCAL;
}else{
if(_318==nitobi.grid.MODE_LOCALSTANDARDPAGING){
_31b=nitobi.grid.PAGINGMODE_STANDARD;
_31c=nitobi.data.DATAMODE_LOCAL;
}else{
if(_318==nitobi.grid.MODE_STANDARDPAGING){
_31b=nitobi.grid.PAGINGMODE_STANDARD;
_31c=nitobi.data.DATAMODE_PAGING;
}else{
if(_318==nitobi.grid.MODE_PAGEDLIVESCROLLING){
_31b=nitobi.grid.PAGINGMODE_STANDARD;
_31c=nitobi.data.DATAMODE_PAGING;
_31d=nitobi.grid.RENDERMODE_ONDEMAND;
}else{
}
}
}
}
}
}
}
}
var id=_31a.getAttribute("id");
_318=(_318||nitobi.grid.MODE_STANDARDPAGING).toLowerCase();
var grid=null;
if(_318==nitobi.grid.MODE_LOCALSTANDARDPAGING){
grid=new nitobi.grid.GridLocalPage(id);
}else{
if(_318==nitobi.grid.MODE_LIVESCROLLING){
grid=new nitobi.grid.GridLiveScrolling(id);
}else{
if(_318==nitobi.grid.MODE_LOCALLIVESCROLLING){
grid=new nitobi.grid.GridLiveScrolling(id);
}else{
if(_318==nitobi.grid.MODE_NONPAGING||_318==nitobi.grid.MODE_LOCALNONPAGING){
grid=new nitobi.grid.GridNonpaging(id);
}else{
if(_318==nitobi.grid.MODE_STANDARDPAGING||_318==nitobi.grid.MODE_PAGEDLIVESCROLLING){
grid=new nitobi.grid.GridStandard(id);
}
}
}
}
}
grid.setPagingMode(_31b);
grid.setDataMode(_31c);
grid.setRenderMode(_31d);
nitobi.GridFactory.processDeclaration(grid,_31a,xDeclaration);
_31a.jsObject=grid;
return grid;
};
nitobi.GridFactory.processDeclaration=function(grid,_324,_325){
if(_325!=null){
grid.setDeclaration(_325);
if(typeof (_325.inlinehtml)=="undefined"){
var _326=document.createElement("ntb:inlinehtml");
_326.setAttribute("parentid","grid"+grid.uid);
_324.insertAdjacentElement("beforeEnd",_326);
grid.Declaration.inlinehtml=_326;
}
if(this.data==null||this.data.tables==null||this.data.tables.length==0){
var _327=new nitobi.data.DataSet();
_327.initialize();
grid.connectToDataSet(_327);
}
grid.initializeModelFromDeclaration();
var _328=grid.Declaration.columndefinitions||grid.Declaration.columns;
if(typeof (_328)!="undefined"&&_328!=null&&_328.childNodes.length!=0&&_328.childNodes[0].childNodes.length!=0){
grid.defineColumns(_328.documentElement);
}
nitobi.grid.Declaration.loadDataSources(_325,grid);
grid.attachToParentDomElement(grid.Declaration.inlinehtml);
var _329=grid.getDataMode();
var _32a=grid.getDatasourceId();
var _32b=grid.getGetHandler();
if(_32a!=null&&_32a!=""){
grid.connectToTable(grid.data.getTable(_32a));
}else{
grid.ensureConnected();
if(grid.mode.toLowerCase()==nitobi.grid.MODE_LIVESCROLLING&&_325!=null&&_325.datasources!=null){
var _32c=_325.datasources.selectNodes("//ntb:datasource[@id='_default']/ntb:data/ntb:e").length;
if(_32c>0){
var _32d=grid.data.getTable("_default");
_32d.initializeXmlData(_325.grid.xml);
_32d.initializeXml(_325.grid.xml);
_32d.descriptor.leap(0,_32c*2);
_32d.syncRowCount();
}
}
}
window.setTimeout(function(){
grid.bind();
},0);
}
};
nitobi.GridFactory.isLocal=function(_32e){
var _32f=_32e.grid.documentElement.getAttribute("datasourceid");
var _330=_32e.grid.documentElement.getAttribute("gethandler");
if(_330!=null&&_330!=""){
return false;
}else{
if(_32f!=null&&_32f!=""){
return true;
}else{
throw ("Non-paging grid requires either a gethandler or a local datasourceid to be specified.");
}
}
};
nitobi.GridFactory.isGetHandler=function(_331){
var _332=_331.grid.documentElement.getAttribute("gethandler");
if(_332!=null&&_332!=""){
return true;
}
return false;
};
nitobi.GridFactory.isDatasourceId=function(_333){
var _334=_333.grid.documentElement.getAttribute("datasourceid");
if(_334!=null&&_334!=""){
return true;
}
return false;
};
nitobi.grid.hover=function(_335,_336,_337){
if(!_337){
return;
}
var id=_335.getAttribute("id");
var _339=id.replace(/__/g,"||");
var _33a=_339.split("_");
var row=_33a[3];
var uid=_33a[5].replace(/\|\|/g,"__");
var _33d=document.getElementById("cell_"+row+"_0_"+uid);
var _33e=_33d.parentNode;
var _33f=_33e.childNodes[_33e.childNodes.length-1];
var id=_33f.getAttribute("id");
var _33a=id.split("_");
var _340=document.getElementById("cell_"+row+"_"+(Number(_33a[4])+1)+"_"+uid);
var _341=null;
if(_340!=null){
_341=_340.parentNode;
}
if(_336){
var _342=nitobi.grid.RowHoverColor||"white";
_33e.style.backgroundColor=_342;
if(_341){
_341.style.backgroundColor=_342;
}
}else{
_33e.style.backgroundColor="";
if(_341){
_341.style.backgroundColor="";
}
}
if(_336){
nitobi.html.addClass(_335,"ntbcellhover");
}else{
nitobi.html.removeClass(_335,"ntbcellhover");
}
};
initEBAGrids=function(){
nitobi.initComponents();
};
nitobi.initGrids=function(){
var _343=window.document.getElementsByTagName(nitobi.browser.MOZ?"ntb:grid":"grid");
for(var i=0;i<_343.length;i++){
_343[i].jsObject=nitobi.GridFactory.createGrid(null,null,_343[i]);
}
};
nitobi.initGrid=function(id){
var grid=nitobi.html.getElement(id);
if(grid!=null){
grid.jsObject=nitobi.GridFactory.createGrid(null,null,grid);
}
return grid.jsObject;
};
nitobi.initComponents=function(){
nitobi.initGrids();
};
nitobi.getGrid=function(_347){
return document.getElementById(_347).jsObject;
};
nitobi.base.Registry.getInstance().register(new nitobi.base.Profile("nitobi.initGrid",null,false,"ntb:grid"));
nitobi.grid.GridLiveScrolling=function(uid){
nitobi.grid.GridLiveScrolling.baseConstructor.call(this,uid);
this.mode="livescrolling";
this.setPagingMode(nitobi.grid.PAGINGMODE_LIVESCROLLING);
this.setDataMode(nitobi.data.DATAMODE_CACHING);
};
nitobi.lang.extend(nitobi.grid.GridLiveScrolling,nitobi.grid.Grid);
nitobi.grid.GridLiveScrolling.prototype.createChildren=function(){
var args=arguments;
nitobi.grid.GridLiveScrolling.base.createChildren.call(this,args);
nitobi.grid.GridLiveScrolling.base.createToolbars.call(this,nitobi.ui.Toolbars.VisibleToolbars.STANDARD);
};
nitobi.grid.GridLiveScrolling.prototype.bind=function(){
nitobi.grid.GridStandard.base.bind.call(this);
if(this.getGetHandler()!=""){
this.ensureConnected();
var rows=this.getRowsPerPage();
if(this.datatable.mode=="local"){
rows=null;
}
this.datatable.get(0,rows,this,this.getComplete);
}else{
this.finalizeRowCount(this.datatable.getRemoteRowCount());
this.bindComplete();
}
};
nitobi.grid.GridLiveScrolling.prototype.getComplete=function(_34b){
nitobi.grid.GridLiveScrolling.base.getComplete.call(this,_34b);
if(!this.columnsDefined){
this.defineColumnsFinalize();
}
this.bindComplete();
};
nitobi.grid.GridLiveScrolling.prototype.renderMiddle=function(){
};
nitobi.grid.GridLiveScrolling.prototype.pageSelect=function(dir){
var _34d=this.Scroller.getRowRange();
var rows=_34d.last-_34d.first;
this.reselect(0,rows*dir);
};
nitobi.grid.GridLiveScrolling.prototype.page=function(dir){
var _350=this.Scroller.getRowRange();
var rows=_350.last-_350.first;
this.move(0,rows*dir);
};
nitobi.grid.GridLiveScrolling.prototype.LiveScrollAdjustSize=function(){
if(!this.rowCountKnown){
}
};
nitobi.grid.LoadingScreen=function(grid){
this.loadingScreen=null;
this.grid=grid;
this.loadingImg=null;
};
nitobi.grid.LoadingScreen.prototype.initialize=function(){
this.loadingScreen=document.createElement("div");
var _353=this.findCssUrl();
var msg="";
if(_353==null){
msg="Loading...";
}else{
msg="<img src='"+_353+"loading.gif'  class='ntbloadingIcon' valign='absmiddle'></img>";
}
this.loadingScreen.innerHTML="<table style='padding:0px;margin:0px;' border='0' width='100%' height='100%'><tr style='padding:0px;margin:0px;'><td style='padding:0px;margin:0px;text-align:center;font:verdana;font-size:10pt;'>"+msg+"</td></tr></table>";
this.loadingScreen.className="ntbloading";
var lss=this.loadingScreen.style;
lss.verticalAlign="middle";
lss.visibility="hidden";
lss.position="absolute";
lss.top="0px";
lss.left="0px";
};
nitobi.grid.LoadingScreen.prototype.attachToElement=function(_356){
_356.appendChild(this.loadingScreen);
};
nitobi.grid.LoadingScreen.prototype.findCssUrl=function(){
var _357=nitobi.html.findParentStylesheet(".ntbloadingIcon");
if(_357==null){
return null;
}
var _358=nitobi.html.normalizeUrl(_357.href);
if(nitobi.browser.IE){
while(_357.parentStyleSheet){
_357=_357.parentStyleSheet;
_358=nitobi.html.normalizeUrl(_357.href)+_358;
}
}
return _358;
};
nitobi.grid.LoadingScreen.prototype.show=function(){
try{
this.resize();
this.loadingScreen.style.visibility="visible";
this.loadingScreen.style.display="block";
}
catch(e){
}
};
nitobi.grid.LoadingScreen.prototype.resize=function(){
this.loadingScreen.style.width=this.grid.getWidth()+"px";
this.loadingScreen.style.height=this.grid.getHeight()+"px";
};
nitobi.grid.LoadingScreen.prototype.hide=function(){
this.loadingScreen.style.display="none";
};
nitobi.grid.GridLocalPage=function(uid){
nitobi.grid.GridLocalPage.baseConstructor.call(this,uid);
this.mode="localpaging";
this.setPagingMode(nitobi.grid.PAGINGMODE_STANDARD);
this.setDataMode("local");
};
nitobi.lang.extend(nitobi.grid.GridLocalPage,nitobi.grid.Grid);
nitobi.grid.GridLocalPage.prototype.createChildren=function(){
var args=arguments;
nitobi.grid.GridLocalPage.base.createChildren.call(this,args);
nitobi.grid.GridLiveScrolling.base.createToolbars.call(this,nitobi.ui.Toolbars.VisibleToolbars.STANDARD|nitobi.ui.Toolbars.VisibleToolbars.PAGING);
this.toolbars.subscribe("NextPage",nitobi.lang.close(this,this.pageNext));
this.toolbars.subscribe("PreviousPage",nitobi.lang.close(this,this.pagePrevious));
this.subscribe("EndOfData",function(pct){
this.toolbars.pagingToolbar.getUiElements()["nextPage"+this.toolbars.uid].disable();
});
this.subscribe("TopOfData",function(pct){
this.toolbars.pagingToolbar.getUiElements()["previousPage"+this.toolbars.uid].disable();
});
this.subscribe("NotTopOfData",function(pct){
this.toolbars.pagingToolbar.getUiElements()["previousPage"+this.toolbars.uid].enable();
});
this.subscribe("NotEndOfData",function(pct){
this.toolbars.pagingToolbar.getUiElements()["nextPage"+this.toolbars.uid].enable();
});
};
nitobi.grid.GridLocalPage.prototype.pagePrevious=function(){
this.fire("BeforeLoadPreviousPage");
this.loadDataPage(Math.max(this.getCurrentPageIndex()-1,0));
this.fire("AfterLoadPreviousPage");
};
nitobi.grid.GridLocalPage.prototype.pageNext=function(){
this.fire("BeforeLoadNextPage");
this.loadDataPage(this.getCurrentPageIndex()+1);
this.fire("AfterLoadNextPage");
};
nitobi.grid.GridLocalPage.prototype.loadDataPage=function(_35f){
this.fire("BeforeLoadDataPage");
if(_35f>-1){
this.setCurrentPageIndex(_35f);
this.setDisplayedRowCount(this.getRowsPerPage());
var _360=this.getCurrentPageIndex()*this.getRowsPerPage();
var rows=this.getRowsPerPage()-this.getfreezetop()-this.getfreezebottom();
this.setDisplayedRowCount(rows);
var _362=_360+rows;
if(_362>=this.getRowCount()){
this.fire("EndOfData");
}else{
this.fire("NotEndOfData");
}
if(_360==0){
this.fire("TopOfData");
}else{
this.fire("NotTopOfData");
}
this.clearSurfaces();
this.updateCellRanges();
this.scrollVertical(0);
}
this.fire("AfterLoadDataPage");
};
nitobi.grid.GridLocalPage.prototype.setRowsPerPage=function(rows){
this.setDisplayedRowCount(this.getRowsPerPage());
this.data.table.pageSize=this.getRowsPerPage();
};
nitobi.grid.GridLocalPage.prototype.pageStartIndexChanges=function(){
};
nitobi.grid.GridLocalPage.prototype.hitFirstPage=function(){
this.fire("FirstPage");
};
nitobi.grid.GridLocalPage.prototype.hitLastPage=function(){
this.fire("LastPage");
};
nitobi.grid.GridLocalPage.prototype.bind=function(){
nitobi.grid.GridStandard.base.bind.call(this);
this.finalizeRowCount(this.datatable.getRemoteRowCount());
this.bindComplete();
};
nitobi.grid.GridLocalPage.prototype.pageUpKey=function(){
this.pagePrevious();
};
nitobi.grid.GridLocalPage.prototype.pageDownKey=function(){
this.pageNext();
};
nitobi.grid.GridLocalPage.prototype.renderMiddle=function(){
nitobi.grid.GridLocalPage.base.renderMiddle.call(this,arguments);
var _364=this.getfreezetop();
endRow=this.getRowsPerPage()-1;
this.Scroller.view.midcenter.renderGap(_364,endRow,false);
};
nitobi.grid.GridNonpaging=function(uid){
nitobi.grid.GridNonpaging.baseConstructor.call(this);
this.mode="nonpaging";
this.setPagingMode(nitobi.grid.PAGINGMODE_NONE);
this.setDataMode(nitobi.data.DATAMODE_LOCAL);
};
nitobi.lang.extend(nitobi.grid.GridNonpaging,nitobi.grid.Grid);
nitobi.grid.GridNonpaging.prototype.createChildren=function(){
var args=arguments;
nitobi.grid.GridNonpaging.base.createChildren.call(this,args);
nitobi.grid.GridNonpaging.base.createToolbars.call(this,nitobi.ui.Toolbars.VisibleToolbars.STANDARD);
};
nitobi.grid.GridNonpaging.prototype.bind=function(){
nitobi.grid.GridStandard.base.bind.call(this);
if(this.getGetHandler()!=""){
this.ensureConnected();
this.datatable.get(0,null,this,this.getComplete);
}else{
this.finalizeRowCount(this.datatable.getRemoteRowCount());
this.bindComplete();
}
};
nitobi.grid.GridNonpaging.prototype.getComplete=function(_367){
nitobi.grid.GridNonpaging.base.getComplete.call(this,_367);
this.finalizeRowCount(_367.numRowsReturned);
this.defineColumnsFinalize();
this.bindComplete();
};
nitobi.grid.GridNonpaging.prototype.renderMiddle=function(){
nitobi.grid.GridNonpaging.base.renderMiddle.call(this,arguments);
var _368=this.getfreezetop();
endRow=this.getRowCount();
this.Scroller.view.midcenter.renderGap(_368,endRow,false);
};
nitobi.grid.GridStandard=function(uid){
nitobi.grid.GridStandard.baseConstructor.call(this,uid);
this.mode="standard";
this.setPagingMode(nitobi.grid.PAGINGMODE_STANDARD);
this.setDataMode(nitobi.data.DATAMODE_PAGING);
};
nitobi.lang.extend(nitobi.grid.GridStandard,nitobi.grid.Grid);
nitobi.grid.GridStandard.prototype.createChildren=function(){
var args=arguments;
nitobi.grid.GridStandard.base.createChildren.call(this,args);
nitobi.grid.GridLiveScrolling.base.createToolbars.call(this,nitobi.ui.Toolbars.VisibleToolbars.STANDARD|nitobi.ui.Toolbars.VisibleToolbars.PAGING);
this.toolbars.subscribe("NextPage",nitobi.lang.close(this,this.pageNext));
this.toolbars.subscribe("PreviousPage",nitobi.lang.close(this,this.pagePrevious));
this.subscribe("EndOfData",this.disableNextPage);
this.subscribe("TopOfData",this.disablePreviousPage);
this.subscribe("NotTopOfData",this.enablePreviousPage);
this.subscribe("NotEndOfData",this.enableNextPage);
this.subscribe("TableConnected",nitobi.lang.close(this,this.subscribeToRowCountReady));
};
nitobi.grid.GridStandard.prototype.subscribeToRowCountReady=function(){
};
nitobi.grid.GridStandard.prototype.updateDisplayedRowCount=function(_36b){
this.setDisplayedRowCount(_36b.numRowsReturned);
};
nitobi.grid.GridStandard.prototype.disableNextPage=function(){
this.disableButton("nextPage");
};
nitobi.grid.GridStandard.prototype.disablePreviousPage=function(){
this.disableButton("previousPage");
};
nitobi.grid.GridStandard.prototype.disableButton=function(_36c){
var t=this.getToolbars().pagingToolbar;
if(t!=null){
t.getUiElements()[_36c+this.toolbars.uid].disable();
}
};
nitobi.grid.GridStandard.prototype.enableNextPage=function(){
this.enableButton("nextPage");
};
nitobi.grid.GridStandard.prototype.enablePreviousPage=function(){
this.enableButton("previousPage");
};
nitobi.grid.GridStandard.prototype.enableButton=function(_36e){
var t=this.getToolbars().pagingToolbar;
if(t!=null){
t.getUiElements()[_36e+this.toolbars.uid].enable();
}
};
nitobi.grid.GridStandard.prototype.pagePrevious=function(){
this.fire("BeforeLoadPreviousPage");
this.loadDataPage(Math.max(this.getCurrentPageIndex()-1,0));
this.fire("AfterLoadPreviousPage");
};
nitobi.grid.GridStandard.prototype.pageNext=function(){
this.fire("BeforeLoadNextPage");
this.loadDataPage(this.getCurrentPageIndex()+1);
this.fire("AfterLoadNextPage");
};
nitobi.grid.GridStandard.prototype.loadDataPage=function(_370){
this.fire("BeforeLoadDataPage");
if(_370>-1){
if(this.sortColumn){
if(this.datatable.sortColumn){
for(var i=0;i<this.getColumnCount();i++){
var _372=this.getColumnObject(i);
if(_372.getColumnName()==this.datatable.sortColumn){
this.setSortStyle(i,this.datatable.sortDir);
break;
}
}
}else{
this.setSortStyle(this.sortColumn.column,"",true);
}
}
this.setCurrentPageIndex(_370);
var _373=this.getCurrentPageIndex()*this.getRowsPerPage();
var rows=this.getRowsPerPage()-this.getfreezetop()-this.getfreezebottom();
this.datatable.flush();
this.datatable.get(_373,rows,this,this.afterLoadDataPage);
}
this.fire("AfterLoadDataPage");
};
nitobi.grid.GridStandard.prototype.afterLoadDataPage=function(_375){
this.setDisplayedRowCount(_375.numRowsReturned);
this.setRowCount(_375.numRowsReturned);
if(_375.numRowsReturned!=this.getRowsPerPage()){
this.fire("EndOfData");
}else{
this.fire("NotEndOfData");
}
if(this.getCurrentPageIndex()==0){
this.fire("TopOfData");
}else{
this.fire("NotTopOfData");
}
this.clearSurfaces();
this.updateCellRanges();
this.scrollVertical(0);
};
nitobi.grid.GridStandard.prototype.bind=function(){
nitobi.grid.GridStandard.base.bind.call(this);
this.setCurrentPageIndex(0);
this.disablePreviousPage();
this.enableNextPage();
this.ensureConnected();
this.datatable.get(0,this.getRowsPerPage(),this,this.getComplete);
};
nitobi.grid.GridStandard.prototype.getComplete=function(_376){
this.afterLoadDataPage(_376);
nitobi.grid.GridStandard.base.getComplete.call(this,_376);
this.defineColumnsFinalize();
this.bindComplete();
};
nitobi.grid.GridStandard.prototype.renderMiddle=function(){
nitobi.grid.GridStandard.base.renderMiddle.call(this,arguments);
var _377=this.getfreezetop();
endRow=this.getRowsPerPage()-1;
this.Scroller.view.midcenter.renderGap(_377,endRow,false);
};
nitobi.grid.NumberColumn=function(grid,_379){
nitobi.grid.NumberColumn.baseConstructor.call(this,grid,_379);
this.Interface=grid.API.selectSingleNode("interfaces/interface[@name='EBANumberColumn']");
eval(nitobi.xml.transformToString(this.Interface,grid.accessorGeneratorXslProc));
};
nitobi.lang.extend(nitobi.grid.NumberColumn,nitobi.grid.Column);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCopyEventArgs=function(_37a,data,_37c){
nitobi.grid.OnCopyEventArgs.baseConstructor.apply(this,arguments);
};
nitobi.lang.extend(nitobi.grid.OnCopyEventArgs,nitobi.grid.SelectionEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnPasteEventArgs=function(_37d,data,_37f){
nitobi.grid.OnPasteEventArgs.baseConstructor.apply(this,arguments);
};
nitobi.lang.extend(nitobi.grid.OnPasteEventArgs,nitobi.grid.SelectionEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnAfterCellEditEventArgs=function(_380,cell){
nitobi.grid.OnAfterCellEditEventArgs.baseConstructor.call(this,_380,cell);
};
nitobi.lang.extend(nitobi.grid.OnAfterCellEditEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnAfterColumnResizeEventArgs=function(_382,_383){
nitobi.grid.OnAfterColumnResizeEventArgs.baseConstructor.call(this,_382,_383);
};
nitobi.lang.extend(nitobi.grid.OnAfterColumnResizeEventArgs,nitobi.grid.ColumnEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnAfterRowDeleteEventArgs=function(_384,row){
nitobi.grid.OnAfterRowDeleteEventArgs.baseConstructor.call(this,_384,row);
};
nitobi.lang.extend(nitobi.grid.OnAfterRowDeleteEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnAfterRowInsertEventArgs=function(_386,row){
nitobi.grid.OnAfterRowInsertEventArgs.baseConstructor.call(this,_386,row);
};
nitobi.lang.extend(nitobi.grid.OnAfterRowInsertEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnAfterSortEventArgs=function(_388,_389,_38a){
nitobi.grid.OnAfterSortEventArgs.baseConstructor.call(this,_388,_389);
this.direction=_38a;
};
nitobi.lang.extend(nitobi.grid.OnAfterSortEventArgs,nitobi.grid.ColumnEventArgs);
nitobi.grid.OnAfterSortEventArgs.prototype.getDirection=function(){
return this.direction;
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeCellEditEventArgs=function(_38b,cell){
nitobi.grid.OnBeforeCellEditEventArgs.baseConstructor.call(this,_38b,cell);
};
nitobi.lang.extend(nitobi.grid.OnBeforeCellEditEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeColumnResizeEventArgs=function(_38d,_38e){
nitobi.grid.OnBeforeColumnResizeEventArgs.baseConstructor.call(this,_38d,_38e);
};
nitobi.lang.extend(nitobi.grid.OnBeforeColumnResizeEventArgs,nitobi.grid.ColumnEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeRowDeleteEventArgs=function(_38f,row){
nitobi.grid.OnBeforeRowDeleteEventArgs.baseConstructor.call(this,_38f,row);
};
nitobi.lang.extend(nitobi.grid.OnBeforeRowDeleteEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeRowInsertEventArgs=function(_391,row){
nitobi.grid.OnBeforeRowInsertEventArgs.baseConstructor.call(this,_391,row);
};
nitobi.lang.extend(nitobi.grid.OnBeforeRowInsertEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeSortEventArgs=function(_393,_394,_395){
nitobi.grid.OnBeforeSortEventArgs.baseConstructor.call(this,_393,_394);
this.direction=_395;
};
nitobi.lang.extend(nitobi.grid.OnBeforeSortEventArgs,nitobi.grid.ColumnEventArgs);
nitobi.grid.OnBeforeSortEventArgs.prototype.getDirection=function(){
return this.direction;
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeCellClickEventArgs=function(_396,cell){
nitobi.grid.OnBeforeCellClickEventArgs.baseConstructor.call(this,_396,cell);
};
nitobi.lang.extend(nitobi.grid.OnBeforeCellClickEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellBlurEventArgs=function(_398,cell){
nitobi.grid.OnCellBlurEventArgs.baseConstructor.call(this,_398,cell);
};
nitobi.lang.extend(nitobi.grid.OnCellBlurEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellClickEventArgs=function(_39a,cell){
nitobi.grid.OnCellClickEventArgs.baseConstructor.call(this,_39a,cell);
};
nitobi.lang.extend(nitobi.grid.OnCellClickEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellDblClickEventArgs=function(_39c,cell){
nitobi.grid.OnCellDblClickEventArgs.baseConstructor.call(this,_39c,cell);
};
nitobi.lang.extend(nitobi.grid.OnCellDblClickEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellFocusEventArgs=function(_39e,cell){
nitobi.grid.OnCellFocusEventArgs.baseConstructor.call(this,_39e,cell);
};
nitobi.lang.extend(nitobi.grid.OnCellFocusEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellValidateEventArgs=function(_3a0,cell,_3a2,_3a3){
nitobi.grid.OnCellValidateEventArgs.baseConstructor.call(this,_3a0,cell);
this.oldValue=_3a3;
this.newValue=_3a2;
};
nitobi.lang.extend(nitobi.grid.OnCellValidateEventArgs,nitobi.grid.CellEventArgs);
nitobi.grid.OnCellValidateEventArgs.prototype.getOldValue=function(){
return this.oldValue;
};
nitobi.grid.OnCellValidateEventArgs.prototype.getNewValue=function(){
return this.newValue;
};
nitobi.grid.OnContextMenuEventArgs=function(){
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnHeaderClickEventArgs=function(_3a4,_3a5){
nitobi.grid.OnHeaderClickEventArgs.baseConstructor.call(this,_3a4,_3a5);
};
nitobi.lang.extend(nitobi.grid.OnHeaderClickEventArgs,nitobi.grid.ColumnEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnRowBlurEventArgs=function(_3a6,row){
nitobi.grid.OnRowBlurEventArgs.baseConstructor.call(this,_3a6,row);
};
nitobi.lang.extend(nitobi.grid.OnRowBlurEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnRowFocusEventArgs=function(_3a8,row){
nitobi.grid.OnRowFocusEventArgs.baseConstructor.call(this,_3a8,row);
};
nitobi.lang.extend(nitobi.grid.OnRowFocusEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.PasteEventArgs=function(_3aa){
this.grid=_3aa;
this.event=nitobi.html.Event;
};
nitobi.grid.PasteEventArgs.prototype.getSource=function(){
return this.grid;
};
nitobi.grid.PasteEventArgs.prototype.getEvent=function(){
return this.event;
};
nitobi.grid.Row=function(grid,row){
this.grid=grid;
this.row=row;
this.Row=row;
this.Interface=this.grid.API.selectSingleNode("interfaces/interface[@name='nitobi.grid.Row']");
eval(nitobi.xml.transformToString(this.Interface,grid.accessorGeneratorXslProc));
this.DomNode=nitobi.grid.Row.getRowElement(grid,row);
this.DataNode=this.grid.datatable.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xi="+row+"]");
};
nitobi.grid.Row.prototype.getStyle=function(){
return this.DomNode.style;
};
nitobi.grid.Row.prototype.getCell=function(_3ad){
return this.grid.getCellObject(this.row,_3ad);
};
nitobi.grid.Row.prototype.getKey=function(_3ae){
return this.grid.getCellObject(this.row,_3ae);
};
nitobi.grid.Row.getRowElement=function(grid,row){
return nitobi.grid.Row.getRowElements(grid,row).mid;
};
nitobi.grid.Row.getRowElements=function(grid,row){
var _3b3=grid.getFrozenLeftColumnCount();
if(!_3b3){
return {left:null,mid:$("row_"+row+"_"+grid.uid)};
}
var rows={};
rows.left=nitobi.grid.Cell.getCellElement(grid,row,0).parentNode;
var cell=nitobi.grid.Cell.getCellElement(grid,row,_3b3);
rows.mid=cell?cell.parentNode:null;
return rows;
};
nitobi.grid.Row.getRowNumber=function(_3b6){
return parseInt(_3b6.getAttribute("xi"));
};
nitobi.grid.Row.prototype.xGETMETA=function(){
var node=this.MetaNode;
node=node.selectSingleNode("@"+arguments[0]);
if(node!=null){
return node.value;
}
};
nitobi.grid.Row.prototype.xSETMETA=function(){
var node=this.MetaNode;
if(null==node){
var meta=this.grid.data.selectSingleNode("//root/gridmeta");
var _3ba=this.MetaNode=this.grid.data.createNode(1,"r","");
_3ba.setAttribute("xi",this.row);
meta.appendChild(_3ba);
node=this.MetaNode=_3ba;
}
if(node!=null){
node.setAttribute(arguments[0],arguments[1][0]);
}else{
alert("Cannot set property: "+arguments[0]);
}
};
nitobi.grid.RowRenderer=function(_3bb,_3bc,_3bd,_3be,_3bf,_3c0){
this.rowHeight=_3bd||23;
this.xmlDataSource=_3bb;
this.dataTableId="";
this.firstColumn=_3be;
this.columns=_3bf;
this.firstColumn=_3be;
this.uniqueId=_3c0;
};
nitobi.grid.RowRenderer.prototype.render=function(_3c1,rows,_3c3,_3c4,_3c5,_3c6){
if(this.xslTemplate==null){
return "";
}
var _3c1=Number(_3c1)||0;
var rows=Number(rows)||0;
this.xslTemplate.addParameter("start",_3c1,"");
this.xslTemplate.addParameter("end",_3c1+rows,"");
this.xslTemplate.addParameter("activeColumn",_3c3,"");
this.xslTemplate.addParameter("activeRow",_3c4,"");
this.xslTemplate.addParameter("sortColumn",_3c5,"");
this.xslTemplate.addParameter("sortDirection",_3c6,"");
this.xslTemplate.addParameter("dataTableId",this.dataTableId,"");
var data=this.xmlDataSource.xmlDoc();
s2=nitobi.xml.transformToString(data,this.xslTemplate,"xml");
s2=s2.replace(/ATOKENTOREPLACE/g,"&nbsp;");
return s2;
};
nitobi.grid.RowRenderer.prototype.generateXslTemplate=function(_3c8,_3c9,_3ca,_3cb,_3cc,_3cd,_3ce,id){
_3cc=_3cc||0;
_3cd=_3cd||0;
_3ce=_3ce||0;
this.columns=_3cb;
this.firstColumn=_3ca;
_3c9.addParameter("showIndicators",_3cd,"");
_3c9.addParameter("showHeaders",_3cc,"");
_3c9.addParameter("firstColumn",_3ca,"");
_3c9.addParameter("lastColumn",_3ca+_3cb,"");
_3c9.addParameter("uniqueId",this.uniqueId,"");
_3c9.addParameter("rowHover",_3ce,"");
_3c9.addParameter("frozenColumnId",(id?id:""),"");
this.xmlTemplate=nitobi.xml.transformToXml(_3c8,_3c9);
try{
var path=(typeof (gApplicationPath)=="undefined"?window.location.href.substr(0,window.location.href.lastIndexOf("/")+1):gApplicationPath);
var imp=this.xmlTemplate.selectNodes("//xsl:import");
for(var i=0;i<imp.length;i++){
imp[i].setAttribute("href",path+"xsl/"+imp[i].getAttribute("href"));
}
}
catch(e){
}
this.xslTemplate=nitobi.xml.createXslProcessor(this.xmlTemplate);
};
nitobi.grid.RowRenderer.prototype.dispose=function(){
this.xslTemplate=null;
this.xmlDataSource=null;
};
EBAScroller_RENDERTIMEOUT=100;
EBAScroller_VIEWPANES=new Array("topleft","topcenter","midleft","midcenter");
nitobi.grid.Scroller3x3=function(_3d3,_3d4,_3d5,top,_3d7,_3d8,left,_3da,_3db,rows,_3dd,_3de,_3df,_3e0,_3e1,_3e2){
this.disposal=[];
this.scrollTop=0;
this.scrollLeft=0;
this.height=_3d5;
this.width=_3d4;
this.top=Math.min(Math.max(0,top),_3d5);
this.bottom=Math.min(Math.max(0,_3d8),_3d5-this.top);
this.mid=Math.max(0,_3d5-this.top-this.bottom);
this.left=Math.min(Math.max(0,left),_3d4);
this.right=Math.min(Math.max(0,_3d7),_3d4-this.left);
this.center=Math.max(0,_3d4-this.left-this.right);
this.rows=rows;
this.columns=_3dd;
this.freezetop=_3de;
this.freezeleft=_3df;
this.freezebottom=_3e0;
this.freezeright=_3e1;
this.lastScrollTop=-1;
this.uid=nitobi.base.getUid();
this.onRenderComplete=new nitobi.base.Event();
this.onRangeUpdate=new nitobi.base.Event();
this.onHtmlReady=new nitobi.base.Event();
this.renderAll=_3e2;
this.owner=_3d3;
var VP=nitobi.grid.Viewport;
this.view={topleft:new VP(this.owner,0,this.top,this.left),topcenter:new VP(this.owner,1,this.top,this.center),midleft:new VP(this.owner,3,this.mid,this.left,top,_3d7,_3d8,0),midcenter:new VP(this.owner,4,this.mid,this.center,top,_3d7,_3d8,left)};
this.view.midleft.onHtmlReady.subscribe(this.handleHtmlReady,this);
this.setCellRanges();
this.scrollSurface=null;
this.startRow=_3de;
this.headerHeight=23;
this.rowHeight=23;
this.lastTimeoutId=0;
this.ScrollTopPercent=0;
this.ScrollLeftPercent=0;
this.dataTable=null;
this.cacheMap=new nitobi.collections.CacheMap(-1,-1);
};
nitobi.grid.Scroller3x3.prototype.updateCellRanges=function(cols,rows,frzL,frzT,frzR,frzB){
this.columns=cols;
this.rows=rows;
this.freezetop=frzT;
this.freezeleft=frzL;
this.setCellRanges();
};
nitobi.grid.Scroller3x3.prototype.setCellRanges=function(){
var _3ea=null;
if(this.implementsStandardPaging()){
_3ea=this.getDisplayedRowCount();
}
this.view.topleft.setCellRanges(0,this.freezetop,0,this.freezeleft);
this.view.topcenter.setCellRanges(0,this.freezetop,this.freezeleft,this.columns-this.freezeleft-this.freezeright);
this.view.midleft.setCellRanges(this.freezetop,(_3ea?_3ea:this.rows)-this.freezebottom-this.freezetop,0,this.freezeleft);
this.view.midcenter.setCellRanges(this.freezetop,(_3ea?_3ea:this.rows)-this.freezebottom-this.freezetop,this.freezeleft,this.columns-this.freezeleft-this.freezeright);
};
nitobi.grid.Scroller3x3.prototype.resize=function(_3eb,_3ec,top,_3ee,_3ef,left,_3f1,_3f2){
this.height=_3ec;
this.width=_3eb;
this.top=Math.min(Math.max(0,top),_3ec);
this.bottom=Math.min(Math.max(0,_3ef),_3ec-this.top);
this.mid=Math.max(0,_3ec-this.top-this.bottom);
this.left=Math.min(Math.max(0,left),_3eb);
this.right=Math.min(Math.max(0,_3ee),_3eb-this.left);
this.center=Math.max(0,_3eb-this.left-this.right);
this.view.topleft.setPosition(this.top,this.left);
this.view.topcenter.setPosition(this.top,this.center);
this.view.midleft.setPosition(this.mid,this.left,top,_3ee,_3ef,left);
this.view.midcenter.setPosition(this.top,this.left,top,_3ee,_3ef,left);
};
nitobi.grid.Scroller3x3.prototype.setScrollLeftRelative=function(_3f3){
this.setScrollLeft(this.scrollLeft+_3f3);
};
nitobi.grid.Scroller3x3.prototype.setScrollLeftPercent=function(_3f4){
this.setScrollLeft(Math.round((this.view.midcenter.element.scrollWidth-this.view.midcenter.element.clientWidth)*_3f4));
};
nitobi.grid.Scroller3x3.prototype.setScrollLeft=function(_3f5){
this.scrollLeft=_3f5;
this.view.midcenter.element.scrollLeft=_3f5;
this.view.topcenter.element.scrollLeft=_3f5;
};
nitobi.grid.Scroller3x3.prototype.setScrollTopRelative=function(_3f6){
this.setScrollTop(this.scrollTop+_3f6);
};
nitobi.grid.Scroller3x3.prototype.setScrollTopPercent=function(_3f7){
this.scrollTopPercent=_3f7;
this.setScrollTop(Math.round((this.view.midcenter.element.scrollHeight-this.view.midcenter.element.clientHeight)*_3f7));
};
nitobi.grid.Scroller3x3.prototype.setScrollTop=function(_3f8){
this.scrollTop=_3f8;
this.view.midcenter.element.scrollTop=_3f8;
this.view.midleft.element.scrollTop=_3f8;
this.render();
};
nitobi.grid.Scroller3x3.prototype.clearSurfaces=function(_3f9,_3fa,_3fb,_3fc){
this.flushCache();
_3fb=true;
if(_3f9){
_3fa=true;
_3fb=true;
_3fc=true;
}
if(_3fa){
this.view.topleft.clear(true);
this.view.topcenter.clear(true);
}
if(_3fb){
this.view.midleft.clear(true,true,false,false);
this.view.midcenter.clear(false,false,true);
}
if(_3fc){
}
};
nitobi.grid.Scroller3x3.prototype.mapToHtml=function(_3fd){
var uid=this.owner.uid;
for(var i=0;i<4;i++){
var node=$("gridvp_"+i+"_"+uid);
this.view[EBAScroller_VIEWPANES[i]].mapToHtml(node,nitobi.html.getFirstChild(node),null);
}
this.scrollSurface=$("gridvp_3_"+uid);
this.overlay=$("ntb-grid-overlay"+uid);
};
nitobi.grid.Scroller3x3.prototype.getUnrenderedBlocks=function(){
var pair={first:this.freezetop,last:this.rows-1-this.freezetop-this.freezebottom};
if(!this.implementsShowAll()){
var _402=this.scrollSurface.scrollTop+this.top-this.headerHeight;
var MC=this.view.midcenter;
var b0=MC.findBlockAtCoord(_402);
var b1=MC.findBlockAtCoord(_402+this.height);
var _406=null;
var _407=null;
var _408=20;
if(b0==null){
return;
}
_406=b0.top+Math.floor((_402-b0.offsetTop)/this.rowHeight);
if(b1){
_407=b1.top+Math.floor((_402+this.height-b1.offsetTop)/this.rowHeight)+_408;
}else{
_407=_406+Math.floor(this.height/this.rowHeight)+_408;
}
_407=Math.min(_407,this.rows);
if(this.implementsStandardPaging()){
var _409=0;
if(this.owner.getRenderMode()==nitobi.grid.RENDERMODE_ONDEMAND){
var _40a=_406+_409;
var last=Math.min(_407+_409,_409+this.getDisplayedRowCount()-1);
pair={first:_40a,last:last};
}else{
var _40a=_409;
var last=_40a+this.getDisplayedRowCount()-1;
pair={first:_40a,last:last};
}
}else{
pair={first:_406,last:_407};
}
this.onRangeUpdate.notify(pair);
}
return pair;
};
nitobi.grid.Scroller3x3.prototype.render=function(_40c){
if(this.owner.isBound()&&(this.scrollSurface.scrollTop!=this.lastScrollTop||_40c||this.scrollTopPercent>0.9)){
var _40d=nitobi.lang.close(this,this.performRender,[]);
window.clearTimeout(this.lastTimeoutId);
this.lastTimeoutId=window.setTimeout(_40d,EBAScroller_RENDERTIMEOUT);
}
};
nitobi.grid.Scroller3x3.prototype.performRender=function(){
var _40e=this.getUnrenderedBlocks();
if(_40e==null){
return;
}
var _40f=this.scrollSurface.scrollTop;
var mc=this.view.midcenter;
var ml=this.view.midleft;
var _412=this.getDataTable();
var _413=_40e.first;
var last=_40e.last;
if(last>=_412.remoteRowCount-1&&!_412.rowCountKnown){
last+=2;
}
var gaps=this.cacheMap.gaps(_413,last);
if(gaps[0]!=null){
var low=gaps[0].low;
var high=gaps[0].high;
var rows=high-low+1;
if(!_412.inCache(low,rows)){
if(low==null||rows==null){
alert("low or rows =null");
}
_412.get(low,rows);
var _419=_412.cachedRanges(low,high);
for(var i=0;i<_419.length;i++){
var _41b=this.cacheMap.gaps(_419[i].low,_419[i].high);
for(var j=0;j<_41b.length;j++){
_40e.first=_41b[j].low;
_40e.last=_41b[j].high;
this.renderGap(_41b[j].low,_41b[j].high);
}
}
return false;
}else{
this.renderGap(_413,last);
}
}
this.onRenderComplete.notify();
};
nitobi.grid.Scroller3x3.prototype.renderGap=function(low,high){
var gaps=this.cacheMap.gaps(low,high);
var mc=this.view.midcenter;
var ml=this.view.midleft;
if(gaps[0]!=null){
var low=gaps[0].low;
var high=gaps[0].high;
var rows=high-low+1;
this.cacheMap.insert(low,high);
mc.renderGap(low,high);
ml.renderGap(low,high);
}
};
nitobi.grid.Scroller3x3.prototype.flushCache=function(){
if(Boolean(this.cacheMap)){
this.cacheMap.flush();
}
};
nitobi.grid.Scroller3x3.prototype.rendered=function(_423){
if(_423==null){
_423=this.getRowRange();
}
var _424=this.view.midcenter.cacheMap.gaps(_423.first,_423.last+10);
return Boolean(_424[0]==null);
};
nitobi.grid.Scroller3x3.prototype.reRender=function(_425,_426){
var _427=this.view.midleft.clearBlocks(_425,_426);
this.view.midcenter.clearBlocks(_425,_426);
this.cacheMap.remove(_427.top,_427.bottom);
this.render();
};
nitobi.grid.Scroller3x3.prototype.getViewportByCoords=function(row,_429){
var _42a=0;
if(row>=_42a&&row<this.owner.getfreezetop()&&_429>=0&&_429<this.owner.frozenLeftColumnCount()){
return this.view.topleft;
}
if(row>=_42a&&row<this.owner.getfreezetop()&&_429>=this.owner.getFrozenLeftColumnCount()&&_429<this.owner.getColumnCount()){
return this.view.topcenter;
}
if(row>=this.owner.getfreezetop()+_42a&&row<this.owner.getDisplayedRowCount()+_42a&&_429>=0&&_429<this.owner.getFrozenLeftColumnCount()){
return this.view.midleft;
}
if(row>=this.owner.getfreezetop()+_42a&&row<this.owner.getDisplayedRowCount()+_42a&&_429>=this.owner.getFrozenLeftColumnCount()&&_429<this.owner.getColumnCount()){
return this.view.midcenter;
}
};
nitobi.grid.Scroller3x3.prototype.getRowsPerPage=function(){
return this.owner.getRowsPerPage();
};
nitobi.grid.Scroller3x3.prototype.getDisplayedRowCount=function(){
return this.owner.getDisplayedRowCount();
};
nitobi.grid.Scroller3x3.prototype.getCurrentPageIndex=function(){
return this.owner.getCurrentPageIndex();
};
nitobi.grid.Scroller3x3.prototype.implementsStandardPaging=function(){
return Boolean(this.owner.getPagingMode().toLowerCase()=="standard");
};
nitobi.grid.Scroller3x3.prototype.implementsShowAll=function(){
return Boolean(this.owner.getPagingMode().toLowerCase()==nitobi.grid.PAGINGMODE_NONE);
};
nitobi.grid.Scroller3x3.prototype.setDataTable=function(_42b){
this.dataTable=_42b;
};
nitobi.grid.Scroller3x3.prototype.getDataTable=function(){
return this.dataTable;
};
nitobi.grid.Scroller3x3.prototype.handleHtmlReady=function(){
this.onHtmlReady.notify();
};
nitobi.grid.Scroller3x3.prototype.setSort=function(col,dir){
this.view.topleft.setSort(col,dir);
this.view.topcenter.setSort(col,dir);
this.view.midleft.setSort(col,dir);
this.view.midcenter.setSort(col,dir);
};
nitobi.grid.Scroller3x3.prototype.setRowHeight=function(_42e){
this.rowHeight=_42e;
this.setViewportProperty("RowHeight",_42e);
};
nitobi.grid.Scroller3x3.prototype.setHeaderHeight=function(_42f){
this.headerHeight=_42f;
this.setViewportProperty("HeaderHeight",_42f);
};
nitobi.grid.Scroller3x3.prototype.setViewportProperty=function(_430,_431){
var sv=this.view;
for(var i=0;i<EBAScroller_VIEWPANES.length;i++){
sv[EBAScroller_VIEWPANES[i]]["set"+_430](_431);
}
};
nitobi.grid.Scroller3x3.prototype.fire=function(evt,args){
return nitobi.event.notify(evt+this.uid,args);
};
nitobi.grid.Scroller3x3.prototype.subscribe=function(evt,func,_438){
if(typeof (_438)=="undefined"){
_438=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_438,func));
};
nitobi.grid.Scroller3x3.prototype.dispose=function(){
try{
(this.cacheMap!=null?this.cacheMap.flush():"");
this.cacheMap=null;
var _439=this.disposal.length;
for(var i=0;i<_439;i++){
if(typeof (this.disposal[i])=="function"){
this.disposal[i].call(this);
}
this.disposal[i]=null;
}
for(var v in this.view){
this.view[v].dispose();
}
for(var item in this){
if(this[item]!=null&&this[item].dispose instanceof Function){
this[item].dispose();
}
}
}
catch(e){
}
};
nitobi.grid.Selection=function(_43d){
nitobi.grid.Selection.baseConstructor.call(this,_43d);
this.owner=_43d;
var t=new Date();
this.selecting=false;
this.resizingRow=false;
this.created=false;
this.freezeTop=this.owner.getfreezetop();
this.freezeLeft=this.owner.getFrozenLeftColumnCount();
this.rowHeight=23;
};
nitobi.lang.extend(nitobi.grid.Selection,nitobi.collections.CellSet);
nitobi.grid.Selection.prototype.setRange=function(_43f,_440,_441,_442){
nitobi.grid.Selection.base.setRange.call(this,_43f,_440,_441,_442);
this.startCell=this.owner.getCellElement(_43f,_440);
this.endCell=this.owner.getCellElement(_441,_442);
};
nitobi.grid.Selection.prototype.setRangeWithDomNodes=function(_443,_444){
this.setRange(nitobi.grid.Cell.getRowNumber(_443),nitobi.grid.Cell.getColumnNumber(_443),nitobi.grid.Cell.getRowNumber(_444),nitobi.grid.Cell.getColumnNumber(_444));
};
nitobi.grid.Selection.prototype.createBoxes=function(){
if(!this.created){
this.box=this.createBox("selectbox"+this.owner.uid);
this.boxtl=this.createBox("selectboxtl"+this.owner.uid);
this.boxt=this.createBox("selectboxt"+this.owner.uid);
this.boxl=this.createBox("selectboxl"+this.owner.uid);
this.events=[{"type":"mousemove","handler":this.shrink},{"type":"mouseup","handler":this.stopSelecting},{"type":"click","handler":this.handleClick},{"type":"dblclick","handler":this.handleDblClick}];
nitobi.html.attachEvents(this.box,this.events,this);
nitobi.html.attachEvents(this.boxl,this.events,this);
nitobi.html.attachEvents(this.boxt,this.events,this);
var sv=this.owner.Scroller.view;
sv.midcenter.surface.appendChild(this.box);
sv.topleft.element.appendChild(this.boxtl);
sv.topcenter.container.appendChild(this.boxt);
sv.midleft.container.firstChild.appendChild(this.boxl);
this.clear();
this.created=true;
}
};
nitobi.grid.Selection.prototype.createBox=function(id){
var _447="<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"\" class=\"ntbselectionbackground\"><tbody><tr><td></td></tr></tbody></table>";
var box=document.createElement("table");
var _449=document.createElement("tbody");
var _44a=document.createElement("tr");
var _44b=document.createElement("td");
box.appendChild(_449);
_449.appendChild(_44a);
_44a.appendChild(_44b);
box.id=id;
box.className="ntbselectionborder ntbselectionbackground";
box.style.overflow="hidden";
box.style.height="10px";
box.style.width="10px";
box.style.position="absolute";
box.zIndex=10000001;
return box;
};
nitobi.grid.Selection.prototype.clearBoxes=function(){
if(this.box!=null){
this.clearBox(this.box);
}
if(this.box1!=null){
this.clearBox(this.box1);
}
if(this.boxt!=null){
this.clearBox(this.boxt);
}
this.created=false;
};
nitobi.grid.Selection.prototype.clearBox=function(box){
nitobi.html.detachEvents(box,this.events);
if(box.parentNode!=null){
box.parentNode.removeChild(box);
}
box=null;
};
nitobi.grid.Selection.prototype.shrink=function(evt){
if(this.endCell!=this.startCell&&this.selecting){
var _44e=this.owner.getScrollSurface();
var _44f=this.endCell.getBoundingClientRect(_44e.scrollTop+document.body.scrollTop,_44e.scrollLeft+document.body.scrollLeft);
var _450=_44f.top;
var _451=_44f.left;
var _452=nitobi.grid.Cell.getRowNumber(this.endCell);
var _453=nitobi.grid.Cell.getColumnNumber(this.endCell);
var evtY=evt.clientY;
var evtX=evt.clientX;
if(_452>nitobi.grid.Cell.getRowNumber(this.startCell)&&evtY<_450){
var diff=_450-evtY;
_452=_452-Math.floor(diff/this.rowHeight)-1;
}else{
if(evtY>_450+(_44f.bottom-_450)){
var diff=evtY-_450;
_452=_452+Math.floor(diff/this.rowHeight);
}
}
if(_453>nitobi.grid.Cell.getColumnNumber(this.startCell)&&evtX<_451){
_453--;
}else{
if(evtX>_451+(_44f.right-_451)){
_453++;
}
}
var _457=this.owner.getCellElement(_452,_453);
if(_457!=null&&_457!=this.endCell){
this.changeEndCellWithDomNode(_457);
this.alignBoxes();
this.owner.ensureCellInView(_457);
}
}
};
nitobi.grid.Selection.prototype.getHeight=function(){
var rect=this.box.getBoundingClientRect();
return rect.top-rect.bottom;
};
nitobi.grid.Selection.prototype.collapse=function(cell){
if(!cell){
cell=this.startCell;
}
if(!cell){
return;
}
this.setRangeWithDomNodes(cell,cell);
if((this.box==null)||(this.box.parentNode==null)||(this.boxl==null)||(this.boxl.parentNode==null)){
this.created=false;
this.createBoxes();
}
if(null==this.boxt.parentNode){
this.owner.Scroller.view.topcenter.container.appendChild(this.boxt);
}
this.alignBoxes();
this.selecting=false;
};
nitobi.grid.Selection.prototype.startSelecting=function(_45a,_45b){
this.selecting=true;
this.setRangeWithDomNodes(_45a,_45b);
this.shrink();
document.body.attachEvent("onselectstart",function(){
return false;
});
};
nitobi.grid.Selection.prototype.clearSelection=function(cell){
this.collapse(cell);
};
nitobi.grid.Selection.prototype.resizeSelection=function(cell){
this.endCell=cell;
this.shrink();
};
nitobi.grid.Selection.prototype.moveSelection=function(cell){
this.collapse(cell);
};
nitobi.grid.Selection.prototype.alignBoxes=function(){
var _45f=this.endCell||this.startCell;
var sc=this.getCoords();
var _461=sc.top.y;
var _462=sc.top.x;
var _463=sc.bottom.y;
var _464=sc.bottom.x;
var ox=(nitobi.browser.IE)?-2:-1;
var oy=(nitobi.browser.IE)?-2:-1;
if(_464>=this.freezeLeft&&_463>=this.freezeTop){
this.box.style.display="block";
this.align(this.box,this.startCell,_45f,286265344,3,3,oy,ox);
}else{
this.box.style.display="none";
}
if(_462<=this.freezeLeft&&_461<this.freezeTop){
this.boxtl.style.display="block";
this.align(this.boxtl,this.startCell,_45f,286265344,3,3,oy,ox);
}else{
this.boxtl.style.display="none";
}
if(_461<this.freezeTop){
this.boxt.style.display="block";
this.align(this.boxt,this.startCell,_45f,286265344,3,3,oy,ox);
}else{
this.boxt.style.display="none";
}
if(_464<this.freezeLeft||_462<this.freezeLeft){
this.boxl.style.display="block";
this.align(this.boxl,this.startCell,_45f,286265344,3,3,oy,ox);
}else{
this.boxl.style.display="none";
}
};
nitobi.grid.Selection.prototype.redraw=function(cell){
if(!this.selecting){
this.setRangeWithDomNodes(cell,cell);
}else{
this.changeEndCellWithDomNode(cell);
}
this.alignBoxes();
};
nitobi.grid.Selection.prototype.changeStartCellWithDomNode=function(cell){
this.startCell=cell;
this.changeStartCell(nitobi.grid.Cell.getRowNumber(cell),nitobi.grid.Cell.getColumnNumber(cell));
};
nitobi.grid.Selection.prototype.changeEndCellWithDomNode=function(cell){
this.endCell=cell;
this.changeEndCell(nitobi.grid.Cell.getRowNumber(cell),nitobi.grid.Cell.getColumnNumber(cell));
};
nitobi.grid.Selection.prototype.init=function(cell){
this.createBoxes();
var t=new Date();
this.selecting=true;
this.setRangeWithDomNodes(cell,cell);
};
nitobi.grid.Selection.prototype.clear=function(){
if(!this.box){
return;
}
this.box.style.display="none";
this.box.style.top="-1000px";
this.box.style.left="-1000px";
this.box.style.width="1px";
this.box.style.height="1px";
this.boxtl.style.display="none";
this.boxtl.style.top="-1000px";
this.boxtl.style.left="-1000px";
this.boxtl.style.width="1px";
this.boxtl.style.height="1px";
this.boxt.style.display="none";
this.boxt.style.top="-1000px";
this.boxt.style.left="-1000px";
this.boxt.style.width="1px";
this.boxt.style.height="1px";
this.boxl.style.display="none";
this.boxl.style.top="-1000px";
this.boxl.style.left="-1000px";
this.boxl.style.width="1px";
this.boxl.style.height="1px";
this.selecting=false;
};
nitobi.grid.Selection.prototype.handleClick=function(evt){
if(!this.selected()){
if(NTB_SINGLECLICK==null){
NTB_SINGLECLICK=window.setTimeout(nitobi.lang.close(this,this.edit,[{"keyCode":evt.keyCode,"ctrlKey":evt.ctrlKey,"shiftKey":evt.shiftKey}]),150);
}
}else{
this.collapse();
}
};
nitobi.grid.Selection.prototype.handleDblClick=function(evt){
if(!this.selected()){
window.clearTimeout(NTB_SINGLECLICK);
NTB_SINGLECLICK=null;
if(this.owner.handleDblClick(evt)){
this.edit(evt);
}
}else{
this.collapse();
}
};
nitobi.grid.Selection.prototype.edit=function(evt){
NTB_SINGLECLICK=null;
this.owner.edit(evt);
};
nitobi.grid.Selection.prototype.select=function(_46f,_470){
this.selectWithCoords(_46f.getRowNumber(),_46f.getColumnNumber(),_470.getRowNumber(),_470.getColumnNumber());
};
nitobi.grid.Selection.prototype.selectWithCoords=function(_471,_472,_473,_474){
this.setRange(_471,_472,_473,_474);
this.createBoxes();
this.alignBoxes();
};
nitobi.grid.Selection.prototype.stopSelecting=function(evt){
this.selecting=true;
if(!this.selected()){
this.collapse(this.startCell);
}
this.selecting=false;
this.owner.handleClick(evt);
};
nitobi.grid.Selection.prototype.getRowByCoords=function(_476){
return (_476.parentNode.offsetTop/_476.parentNode.offsetHeight);
};
nitobi.grid.Selection.prototype.getColumnByCoords=function(_477){
var _478=(this.indicator?-2:0);
if(_477.parentNode.parentNode.getAttribute("id").substr(0,6)!="freeze"){
_478+=2-(this.freezeColumn*3);
}else{
_478+=2;
}
return Math.floor((_477.sourceIndex-_477.parentNode.sourceIndex-_478)/3);
};
nitobi.grid.Selection.prototype.selected=function(){
return (this.endCell==this.startCell)?false:true;
};
nitobi.grid.Selection.prototype.setRowHeight=function(_479){
this.rowHeight=_479;
};
nitobi.grid.Selection.prototype.getRowHeight=function(){
return this.rowHeight;
};
nitobi.grid.Selection.prototype.dispose=function(){
};
nitobi.grid.Selection.prototype.align=function(_47a,_47b,_47c,_47d,oh,ow,oy,ox,show){
oh=oh||0;
ow=ow||0;
oy=oy||0;
ox=ox||0;
var a=_47d;
var td,sd,tt,tb,tl,tr,th,tw,st,sb,sl,sr,sh,sw;
if(!_47b||!(_47b.getBoundingClientRect)){
return;
}
ad=_47b.getBoundingClientRect();
bd=_47c.getBoundingClientRect();
sd=_47a.getBoundingClientRect();
at=ad.top;
ab=ad.bottom;
al=ad.left;
ar=ad.right;
bt=bd.top;
bb=bd.bottom;
bl=bd.left;
br=bd.right;
tt=ad.top;
tb=bd.bottom;
tl=ad.left;
tr=bd.right;
th=Math.abs(tb-tt);
tw=Math.abs(tr-tl);
st=sd.top;
sb=sd.bottom;
sl=sd.left;
sr=sd.right;
sh=Math.abs(sb-st);
sw=Math.abs(sr-sl);
if(a&268435456){
_47a.style.height=(Math.max(bb-at,ab-bt)+oh)+"px";
}
if(a&16777216){
_47a.style.width=(Math.max(br-al,ar-bl)+ow)+"px";
}
if(a&1048576){
_47a.style.top=(nitobi.html.getStyleTop(_47a)+Math.min(tt,bt)-st+oy)+"px";
}
if(a&65536){
_47a.style.top=(nitobi.html.getStyleTop(_47a)+tt-st+th-sh+oy)+"px";
}
if(a&4096){
_47a.style.left=(nitobi.html.getStyleLeft(_47a)-sl+Math.min(tl,bl)+ox)+"px";
}
if(a&256){
_47a.style.left=(nitobi.html.getStyleLeft(_47a)-sl+tl+tw-sw+ox)+"px";
}
if(a&16){
_47a.style.top=(nitobi.html.getStyleTop(_47a)+tt-st+oy+Math.floor((th-sh)/2))+"px";
}
if(a&1){
_47a.style.left=(nitobi.html.getStyleLeft(_47a)-sl+tl+ox+Math.floor((tw-sw)/2))+"px";
}
};
nitobi.grid.Surface=function(_492,_493,_494){
this.height=_493;
this.width=_492;
this.element=_494;
};
nitobi.grid.Surface.prototype.dispose=function(){
this.element=null;
};
nitobi.grid.TextColumn=function(grid,_496){
nitobi.grid.TextColumn.baseConstructor.call(this,grid,_496);
this.Interface=grid.API.selectSingleNode("interfaces/interface[@name='EBATextColumn']");
eval(nitobi.xml.transformToString(this.Interface,grid.accessorGeneratorXslProc));
};
nitobi.lang.extend(nitobi.grid.TextColumn,nitobi.grid.Column);
nitobi.lang.defineNs("nitobi.ui");
nitobi.ui.Toolbars=function(_497){
this.uid="nitobiToolbar_"+nitobi.base.getUid();
this.toolbars={};
this.visibleToolbars=_497;
};
nitobi.ui.Toolbars.VisibleToolbars={};
nitobi.ui.Toolbars.VisibleToolbars.STANDARD=1;
nitobi.ui.Toolbars.VisibleToolbars.PAGING=1<<1;
nitobi.ui.Toolbars.prototype.initialize=function(){
this.enabled=true;
this.toolbarXml=nitobi.xml.createXmlDoc(nitobi.xml.serialize(nitobi.grid.toolbarDoc));
this.toolbarPagingXml=nitobi.xml.createXmlDoc(nitobi.xml.serialize(nitobi.grid.pagingToolbarDoc));
};
nitobi.ui.Toolbars.prototype.attachToParent=function(_498){
this.initialize();
this.container=_498;
if(this.standardToolbar==null&&this.visibleToolbars){
this.makeToolbar();
this.render();
}
};
nitobi.ui.Toolbars.prototype.setWidth=function(_499){
this.width=_499;
};
nitobi.ui.Toolbars.prototype.getWidth=function(){
return this.width;
};
nitobi.ui.Toolbars.prototype.setRowInsertEnabled=function(_49a){
this.rowInsertEnabled=_49a;
};
nitobi.ui.Toolbars.prototype.isRowInsertEnabled=function(){
return this.rowInsertEnabled;
};
nitobi.ui.Toolbars.prototype.setRowDeleteEnabled=function(_49b){
this.rowDeleteEnabled=_49b;
};
nitobi.ui.Toolbars.prototype.isRowDeleteEnabled=function(){
return this.rowDeleteEnabled;
};
nitobi.ui.Toolbars.prototype.makeToolbar=function(){
var _49c=this.findCssUrl();
this.toolbarXml.documentElement.setAttribute("id","toolbar"+this.uid);
this.toolbarXml.documentElement.setAttribute("image_directory",_49c);
var _49d=this.toolbarXml.selectNodes("/toolbar/items/*");
for(var i=0;i<_49d.length;i++){
if(_49d[i].nodeType!=8){
_49d[i].setAttribute("id",_49d[i].getAttribute("id")+this.uid);
}
}
this.standardToolbar=new nitobi.ui.Toolbar(this.toolbarXml,"toolbar"+this.uid);
this.toolbarPagingXml.documentElement.setAttribute("id","toolbarpaging"+this.uid);
this.toolbarPagingXml.documentElement.setAttribute("image_directory",_49c);
_49d=(this.toolbarPagingXml.selectNodes("/toolbar/items/*"));
for(var i=0;i<_49d.length;i++){
if(_49d[i].nodeType!=8){
_49d[i].setAttribute("id",_49d[i].getAttribute("id")+this.uid);
}
}
this.pagingToolbar=new nitobi.ui.Toolbar(this.toolbarPagingXml,"toolbarpaging"+this.uid);
};
nitobi.ui.Toolbars.prototype.getToolbar=function(id){
return eval("this."+id);
};
nitobi.ui.Toolbars.prototype.findCssUrl=function(){
var _4a0=nitobi.html.Css.findParentStylesheet(".EbaToolbar");
if(_4a0==null){
_4a0=nitobi.html.Css.findParentStylesheet(".ntbgrid");
if(_4a0==null){
nitobi.lang.throwError("The CSS for the toolbar could not be found.  Try moving the nitobi.grid.css file to a location accessible to the browser's javascript or moving it to the top of the stylesheet list. findParentStylesheet returned "+_4a0);
}
}
return nitobi.html.Css.getPath(_4a0);
};
nitobi.ui.Toolbars.prototype.isToolbarEnabled=function(){
return this.enabled;
};
nitobi.ui.Toolbars.prototype.render=function(){
var _4a1=this.container;
_4a1.style.visibility="hidden";
var xsl=nitobi.ui.ToolbarXsl;
if(xsl.indexOf("xsl:stylesheet")==-1){
xsl="<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"><xsl:output method=\"xml\" version=\"4.0\" />"+xsl+"</xsl:stylesheet>";
}
var _4a3=nitobi.xml.createXslDoc(xsl);
var _4a4=nitobi.xml.transformToString(this.standardToolbar.getXml(),_4a3,"xml");
_4a1.innerHTML=_4a4;
_4a1.style.zIndex="1000";
var _4a5=nitobi.xml.transformToString(this.pagingToolbar.getXml(),_4a3,"xml");
_4a1.innerHTML+=_4a5;
_4a3=null;
xmlDoc=null;
this.standardToolbar.attachToTag();
this.standardToolbar.dockEvent=nitobi.lang.close(this,this.onToolbarDock);
this.standardToolbar.undockEvent=nitobi.lang.close(this,this.onToolbarUnDock);
this.pagingToolbar.attachToTag();
this.pagingToolbar.dockEvent=nitobi.lang.close(this,this.onToolbarDock);
this.pagingToolbar.undockEvent=nitobi.lang.close(this,this.onToolbarUnDock);
this.resize();
var _4a6=this;
var _4a7=this.standardToolbar.getUiElements();
_4a7["save"+this.uid].onClick=function(){
_4a6.fire("Save");
};
_4a7["newRecord"+this.uid].onClick=function(){
_4a6.fire("InsertRow");
};
if(!this.isRowInsertEnabled()){
_4a7["newRecord"+this.uid].disable();
}
_4a7["deleteRecord"+this.uid].onClick=function(){
_4a6.fire("DeleteRow");
};
if(!this.isRowDeleteEnabled()){
_4a7["deleteRecord"+this.uid].disable();
}
_4a7["refresh"+this.uid].onClick=function(){
var _4a8=confirm("Refreshing will discard any changes you have made. Is it OK to refresh?");
if(_4a8){
_4a6.fire("Refresh");
}
};
var _4a9=this.pagingToolbar.getUiElements();
var _4a6=this;
_4a9["previousPage"+this.uid].onClick=function(){
_4a6.fire("PreviousPage");
};
_4a9["previousPage"+this.uid].disable();
_4a9["nextPage"+this.uid].onClick=function(){
_4a6.fire("NextPage");
};
if(this.visibleToolbars&nitobi.ui.Toolbars.VisibleToolbars.STANDARD){
this.standardToolbar.show();
}else{
this.standardToolbar.hide();
}
if(this.visibleToolbars&nitobi.ui.Toolbars.VisibleToolbars.PAGING){
this.pagingToolbar.show();
}else{
this.pagingToolbar.hide();
}
_4a1.style.visibility="visible";
};
nitobi.ui.Toolbars.prototype.resize=function(){
var _4aa=this.getWidth();
if(this.visibleToolbars&nitobi.ui.Toolbars.VisibleToolbars.PAGING){
_4aa=_4aa-2-parseInt(this.pagingToolbar.getWidth());
}
if(this.visibleToolbars&nitobi.ui.Toolbars.VisibleToolbars.STANDARD){
this.standardToolbar.setWidth(_4aa);
}
};
nitobi.ui.Toolbars.prototype.onToolbarDock=function(){
if(this.containerEmpty&&!this.areAllToolbarsDocked()){
this.fire("ToolbarsContainerNotEmpty");
}
this.containerEmpty=false;
};
nitobi.ui.Toolbars.prototype.areAllToolbarsDocked=function(){
return ((this.pagingToolbar!=null&&this.pagingToolbar.isFloating()||!this.pagingToolbar.isVisible())&&(this.standardToolbar!=null&&this.standardToolbar.isFloating()||!this.standardToolbar.isVisible()));
};
nitobi.ui.Toolbars.prototype.areAnyToolbarsDocked=function(){
return ((this.pagingToolbar!=null&&!this.pagingToolbar.isFloating()&&this.pagingToolbar.isVisible())||(this.standardToolbar!=null&&!this.standardToolbar.isFloating()&&this.standardToolbar.isVisible()));
};
nitobi.ui.Toolbars.prototype.onToolbarUnDock=function(){
if(this.areAllToolbarsDocked()){
this.fire("ToolbarsContainerEmpty");
this.containerEmpty=true;
}else{
this.containerEmpty=false;
}
};
nitobi.ui.Toolbars.prototype.fire=function(evt,args){
return nitobi.event.notify(evt+this.uid,args);
};
nitobi.ui.Toolbars.prototype.subscribe=function(evt,func,_4af){
if(typeof (_4af)=="undefined"){
_4af=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_4af,func));
};
nitobi.ui.Toolbars.prototype.dispose=function(){
this.toolbarXml=null;
this.toolbarPagingXml=null;
if(this.toolbar&&this.toolbar.dispose){
this.toolbar.dispose();
this.toolbar=null;
}
if(this.toolbarPaging&&this.toolbarPaging.dispose){
this.toolbarPaging.dispose();
this.toolbarPaging=null;
}
};
var EBA_SELECTION_BUFFER=15;
var NTB_SINGLECLICK=null;
nitobi.grid.Viewport=function(grid,_4b1,_4b2,_4b3,top,_4b5,_4b6,left,_4b8,_4b9,_4ba){
this.disposal=[];
this.height=_4b2;
this.width=_4b3;
this.surface=_4b9||new nitobi.grid.Surface();
this.element=_4b8;
this.rowHeight=23;
this.headerHeight=23;
this.sortColumn=0;
this.sortDir=1;
this.uid=nitobi.base.getUid();
this.region=_4b1;
top=(Boolean(top)&&!isNaN(top)?top:0);
this.top=Math.min(Math.max(0,top),_4b2);
this.bottom=Math.min(Math.max(0,_4b6),_4b2-this.top);
this.mid=Math.max(0,_4b2-this.top-this.bottom);
this.left=Math.min(Math.max(0,left),_4b3);
this.right=Math.min(Math.max(0,_4b5),_4b3-this.left);
this.center=Math.max(0,_4b3-this.left-this.right);
this.scrollIncrement=0;
this.grid=grid;
this.startRow=0;
this.rows=0;
this.startColumn=0;
this.columns=0;
this.rowRenderer=null;
this.onHtmlReady=new nitobi.base.Event();
};
nitobi.grid.Viewport.prototype.mapToHtml=function(_4bb,_4bc,_4bd){
this.surface=_4bc;
this.element=_4bb;
this.container=nitobi.html.getFirstChild(_4bc);
this.makeLastBlock(0,this.grid.getRowsPerPage()*5);
};
nitobi.grid.Viewport.prototype.makeLastBlock=function(low,high){
if(this.lastEmptyBlock==null&&this.grid&&this.region>2&&this.region<5&&this.container){
if(this.container.lastChild){
low=Math.max(low,this.container.lastChild.bottom);
}
this.lastEmptyBlock=this.renderEmptyBlock(low,high);
}
};
nitobi.grid.Viewport.prototype.setCellRanges=function(_4c0,rows,_4c2,_4c3){
this.startRow=_4c0;
this.rows=rows;
this.startColumn=_4c2;
this.columns=_4c3;
this.makeLastBlock(this.startRow,this.startRow+rows-1);
if(this.lastEmptyBlock!=null&&this.region>2&&this.region<5&&this.rows>0){
var _4c4=this.startRow+this.rows-1;
if(this.lastEmptyBlock.top>_4c4){
this.container.removeChild(this.lastEmptyBlock);
this.lastEmptyBlock=null;
}else{
this.lastEmptyBlock.bottom=_4c4;
this.lastEmptyBlock.style.height=(this.rowHeight*(this.lastEmptyBlock.bottom-this.lastEmptyBlock.top+1))+"px";
if(this.lastEmptyBlock.bottom<this.lastEmptyBlock.top){
throw "blocks are miss aligned.";
}
}
}
};
nitobi.grid.Viewport.prototype.setPosition=function(_4c5,_4c6,top,_4c8,_4c9,left){
this.height=_4c5;
this.width=_4c6;
if(this.region==3){
ntbAssert(top>=0&&_4c5>=0,"top and height are incorrectly defined in viewport.setPosition. Viewport region: "+this.region+". (top,height) = "+top+","+_4c5);
}
this.top=Math.min(Math.max(0,top),_4c5);
this.bottom=Math.min(Math.max(0,_4c9),_4c5-this.top);
this.mid=Math.max(0,_4c5-this.top-this.bottom);
this.left=Math.min(Math.max(0,left),_4c6);
this.right=Math.min(Math.max(0,_4c8),_4c6-this.left);
this.center=Math.max(0,_4c6-this.left-this.right);
};
nitobi.grid.Viewport.prototype.clear=function(_4cb,_4cc,_4cd,_4ce){
var uid=this.grid.uid;
if(this.surface&&_4cb){
this.surface.innerHTML="<div id=\"gridvpcontainer_"+this.region+"_"+uid+"\"></div>";
}
if(this.element&&_4ce){
this.element.innerHTML="<div id=\"gridvpsurface_"+this.region+"_"+uid+"\"><div id=\"gridvpcontainer_"+this.region+"_"+uid+"\"></div></div>";
}
if(this.surface&&_4cd){
this.surface.innerHTML="<div id=\"gridvpcontainer_"+this.region+"_"+uid+"\"></div>";
}
this.surface=nitobi.html.getFirstChild(this.element);
this.container=nitobi.html.getFirstChild(this.surface);
if(this.grid&&this.region>2&&this.region<5){
this.lastEmptyBlock=null;
}
this.makeLastBlock(0,this.grid.getRowsPerPage()*5);
};
nitobi.grid.Viewport.prototype.setSort=function(_4d0,_4d1){
this.sortColumn=_4d0;
this.sortDir=_4d1;
};
nitobi.grid.Viewport.prototype.renderGap=function(top,_4d3){
var _4d4=this.grid.activeCell;
var _4d5=0,_4d6=0;
if(_4d4!=null){
_4d5=nitobi.grid.Cell.getColumnNumber(_4d4);
_4d6=nitobi.grid.Cell.getRowNumber(_4d4);
}
var _4d7=this.findBlock(top);
var o=this.renderInsideEmptyBlock(top,_4d3,_4d7);
if(o==null){
return;
}
o.setAttribute("rendered","true");
var rows=_4d3-top+1;
o.innerHTML=this.rowRenderer.render(top,rows,_4d5,_4d6,this.sortColumn,this.sortDir);
this.onHtmlReady.notify(this);
};
nitobi.grid.Viewport.prototype.findBlock=function(row){
var blk=this.container.childNodes;
for(var i=0;i<blk.length;i++){
if(row>=blk[i].top&&row<=blk[i].bottom){
return blk[i];
}
}
};
nitobi.grid.Viewport.prototype.findBlockAtCoord=function(top){
var blk=this.container.childNodes;
for(var i=0;i<blk.length;i++){
var rt=blk[i].offsetTop;
var rb=rt+blk[i].offsetHeight;
if(top>=rt&&top<=rb){
return blk[i];
}
}
};
nitobi.grid.Viewport.prototype.getBlocks=function(_4e2,_4e3){
var _4e4=[];
var _4e5=this.findBlock(_4e2);
var _4e6=_4e5;
_4e4.push(_4e5);
while(_4e3>_4e6.bottom){
var _4e7=_4e6.nextSibling;
if(_4e7!=null){
_4e6=_4e7;
}else{
break;
}
_4e4.push(_4e6);
}
return _4e4;
};
nitobi.grid.Viewport.prototype.clearBlocks=function(_4e8,_4e9){
var _4ea=this.getBlocks(_4e8,_4e9);
var len=_4ea.length;
var top=_4ea[0].top;
var _4ed=_4ea[len-1].bottom;
var _4ee=_4ea[len-1].nextSibling;
for(var i=0;i<len;i++){
_4ea[i].parentNode.removeChild(_4ea[i]);
}
this.renderEmptyBlock(top,_4ed,_4ee);
return {"top":top,"bottom":_4ed};
};
nitobi.grid.Viewport.prototype.renderInsideEmptyBlock=function(top,_4f1,_4f2){
if(_4f2==null){
return this.renderBlock(top,_4f1);
}
if(top==_4f2.top&&_4f1>=_4f2.bottom){
var _4f3=this.renderBlock(top,_4f1,_4f2);
this.container.replaceChild(_4f3,_4f2);
if(_4f2.bottom<_4f2.top){
throw "Render error";
}
return _4f3;
}
if(top==_4f2.top&&_4f1<_4f2.bottom){
_4f2.top=_4f1+1;
_4f2.style.height=(this.rowHeight*(_4f2.bottom-_4f2.top+1))+"px";
_4f2.rows=_4f2.bottom-_4f2.top+1;
if(_4f2.bottom<_4f2.top){
throw "Render error";
}
return this.renderBlock(top,_4f1,_4f2);
}
if(top>_4f2.top&&_4f1>=_4f2.bottom){
_4f2.bottom=top-1;
_4f2.style.height=(this.rowHeight*(_4f2.bottom-_4f2.top+1))+"px";
if(_4f2.bottom<_4f2.top){
throw "Render error";
}
return this.renderBlock(top,_4f1,_4f2.nextSibling);
}
if(top>_4f2.top&&_4f1<_4f2.bottom){
var _4f4=this.renderEmptyBlock(_4f2.top,top-1,_4f2);
_4f2.top=_4f1+1;
_4f2.style.height=(this.rowHeight*(_4f2.bottom-_4f2.top+1))+"px";
if(_4f2.bottom<_4f2.top){
throw "Render error";
}
return this.renderBlock(top,_4f1,_4f2);
}
throw "Could not insert "+top+"-"+_4f1+_4f2.outerHTML;
};
nitobi.grid.Viewport.prototype.renderEmptyBlock=function(top,_4f6,_4f7){
var o=this.renderBlock(top,_4f6,_4f7);
o.setAttribute("id","eba_grid_emptyblock_"+this.region+"_"+top+"_"+_4f6+"_"+this.grid.uid);
if(top==0&&_4f6==99){
crash;
}
o.setAttribute("rendered","false");
o.style.height=((_4f6-top+1)*this.rowHeight)+"px";
return o;
};
nitobi.grid.Viewport.prototype.renderBlock=function(top,_4fa,_4fb){
var o=document.createElement("div");
o.setAttribute("id","eba_grid_block_"+this.region+"_"+top+"_"+_4fa+"_"+this.grid.uid);
o.top=top;
o.bottom=_4fa;
o.left=this.startColumn;
o.right=this.startColumn+this.columns;
o.rows=_4fa-top+1;
o.columns=this.columns;
if(_4fb){
this.container.insertBefore(o,_4fb);
}else{
this.container.insertBefore(o,null);
}
return o;
};
nitobi.grid.Viewport.prototype.setHeaderHeight=function(_4fd){
this.headerHeight=_4fd;
};
nitobi.grid.Viewport.prototype.setRowHeight=function(_4fe){
this.rowHeight=_4fe;
};
nitobi.grid.Viewport.prototype.dispose=function(){
this.element=null;
this.container=null;
nitobi.lang.dispose(this,this.disposal);
return;
};
nitobi.grid.Viewport.prototype.fire=function(evt,args){
return nitobi.event.notify(evt+this.uid,args);
};
nitobi.grid.Viewport.prototype.subscribe=function(evt,func,_503){
if(typeof (_503)=="undefined"){
_503=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_503,func));
};
nitobi.grid.Viewport.prototype.attach=function(evt,func,_506){
return nitobi.html.attachEvent(_506,evt,nitobi.lang.close(this,func));
};
nitobi.lang.defineNs("nitobi.data");
if(false){
nitobi.data=function(){
};
}
nitobi.data.DATAMODE_UNBOUND="unbound";
nitobi.data.DATAMODE_LOCAL="local";
nitobi.data.DATAMODE_REMOTE="remote";
nitobi.data.DATAMODE_CACHING="caching";
nitobi.data.DATAMODE_STATIC="static";
nitobi.data.DATAMODE_PAGING="paging";
nitobi.data.DataSet=function(){
var _507="http://www.nitobi.com";
this.doc=nitobi.xml.createXmlDoc("<"+nitobi.xml.nsPrefix+"datasources xmlns:ntb=\""+_507+"\"></"+nitobi.xml.nsPrefix+"datasources>");
};
nitobi.data.DataSet.prototype.initialize=function(){
this.tables=new Array();
};
nitobi.data.DataSet.prototype.add=function(_508){
this.tables[_508.id]=_508;
};
nitobi.data.DataSet.prototype.getTable=function(_509){
return this.tables[_509];
};
nitobi.data.DataSet.prototype.xmlDoc=function(){
var root=this.doc.documentElement;
while(root.hasChildNodes()){
root.removeChild(root.firstChild);
}
for(var i in this.tables){
if(this.tables[i].xmlDoc&&this.tables[i].xmlDoc.documentElement){
var _50c=this.tables[i].xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource").cloneNode(true);
this.doc.selectSingleNode("/"+nitobi.xml.nsPrefix+"datasources").appendChild(_50c);
}
}
return this.doc;
};
nitobi.data.DataSet.prototype.dispose=function(){
for(var _50d in this.tables){
this.tables[_50d].dispose();
}
};
nitobi.lang.defineNs("nitobi.data");
nitobi.data.DataTable=function(mode,_50f,_510,_511,_512){
if(_50f==null){
}
this.estimateRowCount=_50f;
this.disposal=[];
this.version=3;
this.uid=nitobi.base.getUid();
this.mode=mode||"caching";
this.setAutoKeyEnabled(_512);
this.columns=new Array();
this.keys=new Array();
this.types=new Array();
this.defaults=new Array();
this.columnsConfigured=false;
this.pagingConfigured=false;
this.id="_default";
this.fieldMap={};
if(_510){
this.saveHandlerArgs=_510;
}else{
this.saveHandlerArgs={};
}
if(_511){
this.getHandlerArgs=_511;
}else{
this.getHandlerArgs={};
}
this.setGetHandlerParameter("RequestType","GET");
this.setSaveHandlerParameter("RequestType","SAVE");
this.batchInsert=false;
this.batchInsertRowCount=0;
};
nitobi.data.DataTable.DEFAULT_LOG="<"+nitobi.xml.nsPrefix+"grid "+nitobi.xml.nsDecl+"><"+nitobi.xml.nsPrefix+"datasources id='id'><"+nitobi.xml.nsPrefix+"datasource id=\"{id}\"><"+nitobi.xml.nsPrefix+"datasourcestructure /><"+nitobi.xml.nsPrefix+"data id=\"_default\"></"+nitobi.xml.nsPrefix+"data></"+nitobi.xml.nsPrefix+"datasource></"+nitobi.xml.nsPrefix+"datasources></"+nitobi.xml.nsPrefix+"grid>";
nitobi.data.DataTable.DEFAULT_DATA="<"+nitobi.xml.nsPrefix+"datasource "+nitobi.xml.nsDecl+" id=\"{id}\"><"+nitobi.xml.nsPrefix+"datasourcestructure FieldNames=\"{fields}\" Keys=\"{keys}\" types=\"{types}\" defaults=\"{defaults}\"></"+nitobi.xml.nsPrefix+"datasourcestructure><"+nitobi.xml.nsPrefix+"data id=\"{id}\"></"+nitobi.xml.nsPrefix+"data></"+nitobi.xml.nsPrefix+"datasource>";
nitobi.data.DataTable.prototype.initialize=function(_513,_514,_515,_516,_517,sort,_519,_51a,_51b){
this.setGetHandlerParameter("TableId",_513);
this.setSaveHandlerParameter("TableId",_513);
this.id=_513;
this.datastructure=null;
this.descriptor=new nitobi.data.DataTableDescriptor(this,nitobi.lang.close(this,this.syncRowCount),this.estimateRowCount);
this.disposal.push(this.descriptor);
this.pageFirstRow=0;
this.pageRowCount=0;
this.pageSize=_517;
this.minPageSize=10;
this.requestCache=new nitobi.collections.CacheMap(-1,-1);
this.dataCache=new nitobi.collections.CacheMap(-1,-1);
this.flush();
this.sortColumn=sort;
this.sortDir=_519||"Asc";
this.filter=new Array();
this.onGenerateKey=_51a;
this.remoteRowCount=0;
this.setRowCountKnown(false);
if(_516==null){
_516=0;
}
if(this.mode!="unbound"){
if(_514!=null){
this.ajaxCallbackPool=new nitobi.ajax.HttpRequestPool(nitobi.ajax.HttpRequestPool_MAXCONNECTIONS);
this.ajaxCallbackPool.context=this;
this.setGetHandler(_514);
this.setSaveHandler(_515);
}
this.ajaxCallback=new nitobi.ajax.HttpRequest();
this.ajaxCallback.responseType="xml";
}else{
if(_514!=null&&typeof (_514)!="string"){
this.initializeXml(_514);
}
}
this.sortXslProc=nitobi.xml.createXslProcessor(nitobi.data.sortXslProc.stylesheet);
this.requestQueue=new Array();
this.async=true;
};
nitobi.data.DataTable.prototype.setOnGenerateKey=function(_51c){
this.onGenerateKey=_51c;
};
nitobi.data.DataTable.prototype.getOnGenerateKey=function(){
return this.onGenerateKey;
};
nitobi.data.DataTable.prototype.setAutoKeyEnabled=function(val){
this.autoKeyEnabled=val;
};
nitobi.data.DataTable.prototype.isAutoKeyEnabled=function(){
return this.autoKeyEnabled;
};
nitobi.data.DataTable.prototype.initializeXml=function(oXml){
this.replaceData(oXml);
var rows=this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"e").length;
if(rows>0){
var s=this.xmlDoc.xml;
s=nitobi.xml.transformToString(this.xmlDoc,this.sortXslProc,"xml");
this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,s);
this.dataCache.insert(0,rows-1);
if(this.mode=="local"){
this.setRowCountKnown(true);
}
}
this.setRemoteRowCount(rows);
this.fire("DataInitalized");
};
nitobi.data.DataTable.prototype.initializeXmlData=function(oXml){
var sXml=oXml;
if(typeof (oXml)=="object"){
sXml=oXml.xml;
}
sXml=sXml.replace(/fieldnames=/g,"FieldNames=").replace(/keys=/g,"Keys=");
this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,sXml);
this.datastructure=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"datasourcestructure");
};
nitobi.data.DataTable.prototype.replaceData=function(oXml){
this.initializeXmlData(oXml);
var _524=this.datastructure.getAttribute("FieldNames");
var keys=this.datastructure.getAttribute("Keys");
var _526=this.datastructure.getAttribute("Defaults");
var _527=this.datastructure.getAttribute("Types");
this.initializeColumns(_524,keys,_527,_526);
};
nitobi.data.DataTable.prototype.initializeSchema=function(){
var _528=this.columns.join("|");
var keys=this.keys.join("|");
var _52a=this.defaults.join("|");
var _52b=this.types.join("|");
this.dataCache.flush();
this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,nitobi.data.DataTable.DEFAULT_DATA.replace(/\{id\}/g,this.id).replace(/\{fields\}/g,_528).replace(/\{keys\}/g,keys).replace(/\{defaults\}/g,_52a).replace(/\{types\}/g,_52b));
this.datastructure=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"datasourcestructure");
};
nitobi.data.DataTable.prototype.initializeColumns=function(_52c,keys,_52e,_52f){
if(null!=_52c){
var _530=this.columns.join("|");
if(_530==_52c){
return;
}
this.columns=_52c.split("|");
}
if(null!=keys){
this.keys=keys.split("|");
}
if(null!=_52e){
this.types=_52e.split("|");
}
if(null!=_52f){
this.defaults=_52f.split("|");
}
if(this.xmlDoc.documentElement==null){
this.initializeSchema();
}
this.datastructure=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"datasourcestructure");
var ds=this.datastructure;
if(_52c){
ds.setAttribute("FieldNames",_52c);
}
if(keys){
ds.setAttribute("Keys",keys);
}
if(_52f){
ds.setAttribute("Defaults",_52f);
}
if(_52e){
ds.setAttribute("Types",_52e);
}
this.makeFieldMap();
this.fire("ColumnsInitialized");
};
nitobi.data.DataTable.prototype.getTemplateNode=function(_532){
var _533=null;
if(_532==null){
_532=this.defaults;
}
_533=nitobi.xml.createElement(this.xmlDoc,"e");
for(var i=0;i<this.columns.length;i++){
var _535=(i>25?String.fromCharCode(Math.floor(i/26)+97):"")+(String.fromCharCode(i%26+97));
if(this.defaults[i]==null){
_533.setAttribute(_535,"");
}else{
_533.setAttribute(_535,this.defaults[i]);
}
}
return _533;
};
nitobi.data.DataTable.prototype.commitProperties=function(){
if(this.mode=="unbound"){
}
};
nitobi.data.DataTable.prototype.flush=function(){
if(this.mode=="caching"||this.mode=="paging"){
this.dataCache.flush();
}
if(this.mode!="unbound"){
this.requestCache.flush();
}
this.flushLog();
this.xmlDoc=nitobi.xml.createXmlDoc();
};
nitobi.data.DataTable.prototype.join=function(_536,_537,_538,_539){
};
nitobi.data.DataTable.prototype.merge=function(xd){
};
nitobi.data.DataTable.prototype.getField=function(_53b,_53c){
var r=this.getRecord(_53b);
var a=this.fieldMap[_53c];
if(a&&r){
return r.getAttribute(a.substring(1));
}else{
return null;
}
};
nitobi.data.DataTable.prototype.getRecord=function(_53f){
var data=this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xi='"+_53f+"']");
if(data.length==0){
return null;
}
return data[0];
};
nitobi.data.DataTable.prototype.beginBatchInsert=function(){
this.batchInsert=true;
this.batchInsertRowCount=0;
};
nitobi.data.DataTable.prototype.commitBatchInsert=function(){
this.batchInsert=false;
var _541=this.batchInsertRowCount;
this.batchInsertRowCount=0;
this.setRemoteRowCount(this.remoteRowCount+_541);
if(_541>0){
this.fire("RowInserted",_541);
}
};
nitobi.data.DataTable.prototype.createRecord=function(_542,_543){
var xi=_543;
this.adjustXi(parseInt(xi),1);
var data=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
var _546=_542||this.getTemplateNode();
var _547=nitobi.component.getUniqueId();
var _548=_546.cloneNode(true);
_548.setAttribute("xi",xi);
_548.setAttribute("xid",_547);
_548.setAttribute("xac","i");
if(this.onGenerateKey){
var _549=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure").getAttribute("Keys").split("|");
var xml=null;
for(var j=0;j<_549.length;j++){
var _54c=this.fieldMap[_549[j]].substring(1);
var _54d=_548.getAttribute(_54c);
if(!_54d||_54d==""){
if(!xml){
xml=eval(this.onGenerateKey);
}
if(typeof (xml)=="string"||typeof (xml)=="number"){
_548.setAttribute(_54c,xml);
}else{
try{
var ck1=j%26;
var ck2=Math.floor(j/26);
var _550=(ck2>0?String.fromCharCode(96+ck2):"")+String.fromCharCode(97+ck1);
_548.setAttribute(_54c,xml.selectSingleNode("//"+nitobi.xml.nsPrefix+"e").getAttribute(_550));
}
catch(e){
}
}
}
}
}
data.appendChild(_548);
if(this.log!=null){
var _551=_548.cloneNode(true);
_551.setAttribute("xac","i");
_551.setAttribute("xid",_547);
this.logData.appendChild(_551);
}
this.dataCache.insertIntoRange(_543);
this.batchInsertRowCount++;
if(!this.batchInsert){
this.commitBatchInsert();
}
return _548;
};
nitobi.data.DataTable.prototype.updateRecord=function(xi,_553,_554){
var _555=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@xi='"+xi+"']");
var xid=_555.getAttribute("xid")||"error - unknown xid";
var _557=(_555.getAttribute(_553)!=_554);
if(!_557){
return;
}
if(_555.getAttribute(_553)==null&&this.fieldMap[_553]!=null){
_555.setAttribute(this.fieldMap[_553].substring(1),_554);
}else{
_555.setAttribute(_553,_554);
}
var _558="u";
var _559="u";
if(null==this.log){
this.flushLog();
}
var _55a=_555.cloneNode(true);
_55a.setAttribute("xac","u");
this.logData=this.log.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
var _55b=this.logData.selectSingleNode("./"+nitobi.xml.nsPrefix+"e[@xid='"+xid+"']");
if(null==_55b){
this.logData.appendChild(_55a);
_55a.setAttribute("xid",xid);
}else{
_55a.setAttribute("xac",_55b.getAttribute("xac"));
this.logData.replaceChild(_55a,_55b);
}
if((true==this.AutoSave)){
this.save();
}
};
nitobi.data.DataTable.prototype.deleteRecord=function(_55c){
var data=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
this.logData=this.log.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
var _55e=data.selectSingleNode("*[@xi = '"+_55c+"']");
if(_55e==null){
throw "Index out of bounds in delete.";
}
var xDel=this.logData.selectSingleNode("*[@xi='"+_55c+"']");
var sTag="";
if(xDel!=null){
sTag=xDel.getAttribute("xac");
this.logData.removeChild(xDel);
}
if(sTag!="i"){
var _561=_55e.cloneNode(true);
_561.setAttribute("xac","d");
this.logData.appendChild(_561);
}
data.removeChild(_55e);
this.adjustXi(parseInt(_55c)+1,-1);
this.dataCache.removeFromRange(_55c);
this.setRemoteRowCount(this.remoteRowCount-1);
this.fire("RowDeleted");
};
nitobi.data.DataTable.prototype.adjustXi=function(_562,_563){
nitobi.data.adjustXiXslProc.addParameter("startingIndex",_562,"");
nitobi.data.adjustXiXslProc.addParameter("adjustment",_563,"");
this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,nitobi.xml.transformToString(this.xmlDoc,nitobi.data.adjustXiXslProc,"xml"));
if(this.log!=null){
this.log=nitobi.xml.loadXml(this.log,nitobi.xml.transformToString(this.log,nitobi.data.adjustXiXslProc,"xml"));
this.logData=this.log.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
}
};
nitobi.data.DataTable.prototype.setGetHandler=function(val){
this.getHandler=val;
for(var name in this.getHandlerArgs){
this.setGetHandlerParameter(name,this.getHandlerArgs[name]);
}
};
nitobi.data.DataTable.prototype.getGetHandler=function(){
return this.getHandler;
};
nitobi.data.DataTable.prototype.setSaveHandler=function(val){
this.postHandler=val;
for(var name in this.saveHandlerArgs){
this.setSaveHandlerParameter(name,this.saveHandlerArgs[name]);
}
};
nitobi.data.DataTable.prototype.getSaveHandler=function(){
return this.postHandler;
};
nitobi.data.DataTable.prototype.save=function(_568,_569){
if(!eval(_569||"true")){
return;
}
try{
if(this.version==2.8){
var _56a=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure").getAttribute("FieldNames").split("|");
var _56b=this.log.selectNodes("//"+nitobi.xml.nsPrefix+"e[@xac = 'i']");
for(var i=0;i<_56b.length;i++){
for(var j=0;j<_56a.length;j++){
var _56e=_56b[i].getAttribute(this.fieldMap[_56a[j]].substring(1));
if(!_56e){
_56b[i].setAttribute(this.fieldMap[_56a[j]].substring(1),"");
}
}
}
var _56f=this.log.selectNodes("//"+nitobi.xml.nsPrefix+"e[@xac = 'u']");
for(var i=0;i<_56f.length;i++){
for(var j=0;j<_56a.length;j++){
var _56e=_56f[i].getAttribute(this.fieldMap[_56a[j]].substring(1));
if(!_56e){
_56f[i].setAttribute(this.fieldMap[_56a[j]].substring(1),"");
}
}
}
nitobi.data.updategramTranslatorXslProc.addParameter("xkField",this.fieldMap["_xk"].substring(1),"");
nitobi.data.updategramTranslatorXslProc.addParameter("fields",_56a.join("|").replace(/\|_xk/,""));
this.log=nitobi.xml.transformToXml(this.log,nitobi.data.updategramTranslatorXslProc);
}
var _570=this.getSaveHandler();
(_570.indexOf("?")==-1)?_570+="?":_570+="&";
_570+="TableId="+this.id;
_570+="&uid="+(new Date().getTime());
var _571=this.ajaxCallbackPool.reserve();
_571.handler=_570;
_571.responseType="xml";
_571.context=this;
_571.completeCallback=nitobi.lang.close(this,this.saveComplete);
_571.params=new nitobi.data.SaveCompleteEventArgs(_568);
if(this.version>2.8&&this.log.selectNodes("//"+nitobi.xml.nsPrefix+"e[@xac='i']").length>0&&this.isAutoKeyEnabled()){
_571.async=false;
}
if(this.log.documentElement.nodeName=="root"){
this.log=nitobi.xml.loadXml(this.log,this.log.xml.replace(/xmlns:ntb=\"http:\/\/www.nitobi.com\"/g,""));
var _56a=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure").getAttribute("FieldNames").split("|");
_56a.splice(_56a.length-1,1);
_56a=_56a.join("|");
this.log.documentElement.setAttribute("fields",_56a);
this.log.documentElement.setAttribute("keys",_56a);
}
if(this.isAutoKeyEnabled()&&this.version<3){
alert("AutoKey is not supported in this schema version. You must upgrade to Nitobi Grid Xml Schema version 3 or greater.");
}
_571.post(this.log,this);
this.flushLog();
}
catch(err){
throw err;
}
};
nitobi.data.DataTable.prototype.flushLog=function(){
this.log=nitobi.xml.createXmlDoc(nitobi.data.DataTable.DEFAULT_LOG.replace(/\{id\}/g,this.id).replace(/\{fields\}/g,this.columns).replace(/\{keys\}/g,this.keys).replace(/\{defaults\}/g,this.defaults).replace(/\{types\}/g,this.types));
this.logData=this.log.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
};
nitobi.data.DataTable.prototype.updateAutoKeys=function(_572){
try{
var _573=_572.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xac='i']");
if(typeof (_573)=="undefined"||_573==null){
nitobi.lang.throwError("When updating keys from the server for AutoKey support, the inserts could not be parsed.");
}
var keys=_572.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"datasourcestructure")[0].getAttribute("keys").split("|");
if(typeof (keys)=="undefined"||keys==null||keys.length==0){
nitobi.lang.throwError("When updating keys from the server for AutoKey support, no keys could be found. Ensure that the keys are sent in the request response.");
}
for(var i=0;i<_573.length;i++){
var _576=this.getRecord(_573[i].getAttribute("xi"));
for(var j=0;j<keys.length;j++){
var att=this.fieldMap[keys[j]].substring(1);
_576.setAttribute(att,_573[i].getAttribute(att));
}
}
}
catch(err){
nitobi.lang.throwError("When updating keys from the server for AutoKey support, the inserts could not be parsed.",err);
}
};
nitobi.data.DataTable.prototype.saveComplete=function(_579){
var xd=_579.response;
var _579=_579.params;
try{
if(this.isAutoKeyEnabled()&&this.version>2.8){
this.updateAutoKeys(xd);
}
if(this.version==2.8&&!this.onGenerateKey){
var rows=xd.selectNodes("//insert");
for(var i=0;i<rows.length;i++){
var xk=rows[i].getAttribute("xk");
if(xk!=null){
var _57e=this.findWithoutMap("xid",rows[i].getAttribute("xid"))[0];
var key=this.fieldMap["_xk"].substring(1);
_57e.setAttribute(key,xk);
}
}
}
if(null!=_579.result){
}
var node=xd.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource")||xd.selectSingleNode("/root");
var e=null;
if(node){
e=node.getAttribute("error");
}
if(e){
this.setHandlerError(e);
}else{
this.setHandlerError(null);
}
var _582=new nitobi.data.OnAfterSaveEventArgs(this,xd);
_579.callback.call(this,_582);
}
catch(err){
ebaErrorReport(err,"",EBA_ERROR);
}
};
nitobi.data.DataTable.prototype.makeFieldMap=function(){
var _583=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource");
var cf=0;
var ck=0;
this.fieldMap=new Array();
var cF=this.columns.length;
for(var i=0;i<cF;i++){
var _588=this.columns[i];
ck1=ck%26;
ck2=Math.floor(ck/26);
this.fieldMap[_588]="@"+(ck2>0?String.fromCharCode(96+ck2):"")+String.fromCharCode(97+ck1);
ck++;
}
};
nitobi.data.DataTable.prototype.find=function(_589,_58a){
var _58b=this.fieldMap[_589];
if(_58b){
return this.findWithoutMap(_58b,_58a);
}else{
return new Array();
}
};
nitobi.data.DataTable.prototype.findWithoutMap=function(_58c,_58d){
if(_58c.charAt(0)!="@"){
_58c="@"+_58c;
}
return this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"e["+_58c+"=\""+_58d+"\"]");
};
nitobi.data.DataTable.prototype.sort=function(_58e,dir,type,_591){
if(_591){
_58e=this.fieldMap[_58e];
_58e=_58e.substring(1);
dir=(dir=="Desc")?"descending":"ascending";
type=(type=="number")?"number":"text";
this.sortXslProc.addParameter("column",_58e,"");
this.sortXslProc.addParameter("dir",dir,"");
this.sortXslProc.addParameter("type",type,"");
this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,nitobi.xml.transformToString(this.xmlDoc,this.sortXslProc,"xml"));
this.fire("DataSorted");
}else{
this.sortColumn=_58e;
this.sortDir=dir||"Asc";
}
};
nitobi.data.DataTable.prototype.syncRowCount=function(){
this.setRemoteRowCount(this.descriptor.estimatedRowCount);
};
nitobi.data.DataTable.prototype.setRemoteRowCount=function(rows){
var _593=this.remoteRowCount;
this.remoteRowCount=rows;
if(this.remoteRowCount!=_593){
this.fire("RowCountChanged",rows);
}
};
nitobi.data.DataTable.prototype.getRemoteRowCount=function(){
return this.remoteRowCount;
};
nitobi.data.DataTable.prototype.getRows=function(){
return this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e").length;
};
nitobi.data.DataTable.prototype.getXmlDoc=function(){
return this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']");
};
nitobi.data.DataTable.prototype.getRowNodes=function(){
return this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e");
};
nitobi.data.DataTable.prototype.getColumns=function(){
return this.fieldMap.length;
};
nitobi.data.DataTable.prototype.setGetHandlerParameter=function(name,_595){
if(this.getHandler!=null&&this.getHandler!=""){
this.getHandler=nitobi.html.setUrlParameter(this.getHandler,name,_595);
}
this.getHandlerArgs[name]=_595;
};
nitobi.data.DataTable.prototype.setSaveHandlerParameter=function(name,_597){
if(this.postHandler!=null&&this.postHandler!=""){
this.postHandler=nitobi.html.setUrlParameter(this.getSaveHandler(),name,_597);
}
this.saveHandlerArgs[name]=_597;
};
nitobi.data.DataTable.prototype.getChangeLogSize=function(){
if(null==this.log){
return 0;
}
return this.log.selectNodes("//"+nitobi.xml.nsPrefix+"e").length;
};
nitobi.data.DataTable.prototype.getChangeLogXmlDoc=function(){
return this.log;
};
nitobi.data.DataTable.prototype.getDataXmlDoc=function(){
return this.xmlDoc;
};
nitobi.data.DataTable.prototype.dispose=function(){
this.flush();
this.dataCache.flush();
this.requestCache.flush();
this.ajaxCallbackPool.context=null;
for(var item in this){
if(this[item]!=null&&this[item].dispose instanceof Function){
this[item].dispose();
}
this[item]=null;
}
};
nitobi.data.DataTable.prototype.getTable=function(_599,_59a,_59b){
this.errorCallback=_59b;
var _59c=this.ajaxCallbackPool.reserve();
var _59d=this.getGetHandler();
_59c.handler=_59d;
_59c.responseType="xml";
_59c.context=this;
_59c.completeCallback=nitobi.lang.close(this,this.getComplete);
_59c.async=this.async;
_59c.params=new nitobi.data.GetCompleteEventArgs(null,null,0,null,_59c,this,_599,_59a);
if(typeof (_59a)!="function"||this.async==false){
_59c.async=false;
return this.getComplete({"response":_59c.get(),"params":_59c.params});
}else{
_59c.get();
}
};
nitobi.data.DataTable.prototype.getComplete=function(_59e){
var xd=_59e.response;
var _5a0=_59e.params;
if(this.mode!="caching"){
this.xmlDoc=nitobi.xml.createXmlDoc();
}
if(null==xd||null==xd.xml||""==xd.xml){
var _5a1="No parse error.";
if(nitobi.xml.hasParseError(xd)){
if(xd==null){
_5a1="Blank Response was Given";
}else{
_5a1=nitobi.xml.getParseErrorReason(xd);
}
}
if(this.errorCallback){
this.errorCallback.call(this.context);
}
this.fire("DataReady",_5a0);
return _5a0;
}else{
if(typeof (this.successCallback)=="function"){
this.successCallback.call(this.context);
}
}
if(!this.configured){
this.configureFromData(xd);
}
xd=this.parseResponse(xd,_5a0);
xd=this.assignRowIds(xd);
var _5a2=null;
_5a2=xd.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e");
var _5a3;
var _5a4=_5a2.length;
if(_5a0.pageSize==null){
_5a0.pageSize=_5a4;
_5a0.lastRow=_5a0.startXi+_5a0.pageSize-1;
_5a0.firstRow=_5a0.startXi;
}
if(0!=_5a4){
_5a3=parseInt(_5a2[_5a2.length-1].getAttribute("xi"));
if(this.mode=="paging"){
this.dataCache.insert(0,_5a0.pageSize-1);
}else{
this.dataCache.insert(_5a0.firstRow,_5a3);
}
}else{
_5a3=-1;
_5a0.pageSize=0;
var pct=this.descriptor.lastKnownRow/this.descriptor.estimatedRowCount||0;
this.fire("PastEndOfData",pct);
}
_5a0.numRowsReturned=_5a4;
_5a0.lastRowReturned=_5a3;
var _5a6=_5a0.startXi;
var _5a7=_5a0.pageSize;
if(!isNaN(_5a6)&&!isNaN(_5a7)){
this.requestCache.remove(_5a6,_5a6+_5a7-1);
}
if(this.mode!="caching"){
this.replaceData(xd);
}else{
this.mergeData(xd);
}
this.updateFromDescriptor(_5a0);
this.fire("RowCountReady",_5a0);
if(null!=_5a0.ajaxCallback){
this.ajaxCallbackPool.release(_5a0.ajaxCallback);
}
this.executeRequests();
var node=xd.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource");
var e=null;
if(node){
e=node.getAttribute("error");
}
if(e){
this.setHandlerError(e);
}else{
this.setHandlerError(null);
}
this.fire("DataReady",_5a0);
if(null!=_5a0.callback&&null!=_5a0.context){
_5a0.callback.call(_5a0.context,_5a0);
_5a0.dispose();
_5a0=null;
}else{
return _5a0;
}
};
nitobi.data.DataTable.prototype.executeRequests=function(){
var _5aa=this.requestQueue;
this.requestQueue=new Array();
for(var i=0;i<_5aa.length;i++){
_5aa[i].call();
}
};
nitobi.data.DataTable.prototype.updateFromDescriptor=function(_5ac){
this.descriptor.update(_5ac);
if(this.mode=="paging"){
this.setRemoteRowCount(_5ac.numRowsReturned);
}else{
this.setRemoteRowCount(this.descriptor.estimatedRowCount);
}
this.setRowCountKnown(this.descriptor.isAtEndOfTable);
};
nitobi.data.DataTable.prototype.setRowCountKnown=function(_5ad){
var _5ae=this.rowCountKnown;
this.rowCountKnown=_5ad;
if(_5ad&&this.rowCountKnown!=_5ae){
this.fire("RowCountKnown",this.remoteRowCount);
}
};
nitobi.data.DataTable.prototype.getRowCountKnown=function(){
return this.rowCountKnown;
};
nitobi.data.DataTable.prototype.configureFromData=function(xd){
this.version=this.inferDataVersion(xd);
if(this.mode=="unbound"){
}
if(this.mode=="static"){
}
if(this.mode=="paging"){
}
if(this.mode=="caching"){
}
};
nitobi.data.DataTable.prototype.mergeData=function(xd){
if(this.xmlDoc.xml==""){
this.initializeXml(xd);
return;
}
var _5b1=xd.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id = '"+this.id+"']//"+nitobi.xml.nsPrefix+"e");
var _5b2=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
var len=_5b1.length;
for(var i=0;i<len;i++){
if(this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xi='"+_5b1[i].getAttribute("xi")+"']")){
continue;
}
_5b2.appendChild(_5b1[i]);
}
};
nitobi.data.DataTable.prototype.assignRowIds=function(xd){
nitobi.data.addXidXslProc.addParameter("guid",nitobi.component.getUniqueId(),"");
var doc=nitobi.xml.loadXml(xd,nitobi.xml.transformToString(xd,nitobi.data.addXidXslProc,"xml"));
return doc;
};
nitobi.data.DataTable.prototype.inferDataVersion=function(xd){
if(xd.selectSingleNode("/root")){
return 2.8;
}
return 3;
};
nitobi.data.DataTable.prototype.parseResponse=function(xd,_5b9){
if(this.version==2.8){
return this.parseLegacyResponse(xd,_5b9);
}else{
return this.parseStructuredResponse(xd,_5b9);
}
};
nitobi.data.DataTable.prototype.parseLegacyResponse=function(xd,_5bb){
var _5bc=this.mode=="paging"?0:_5bb.startXi;
nitobi.data.dataTranslatorXslProc.addParameter("start",_5bc,"");
nitobi.data.dataTranslatorXslProc.addParameter("id",this.id,"");
var _5bd=xd.selectSingleNode("/root").getAttribute("fields");
var _5be=_5bd.split("|");
var i=_5be.length;
var _5c0=(i>25?String.fromCharCode(Math.floor(i/26)+96):"")+(String.fromCharCode(i%26+97));
nitobi.data.dataTranslatorXslProc.addParameter("xkField",_5c0,"");
xd=nitobi.xml.transformToXml(xd,nitobi.data.dataTranslatorXslProc);
return xd;
};
nitobi.data.DataTable.prototype.parseStructuredResponse=function(xd,_5c2){
xd=nitobi.xml.loadXml(xd,"<ntb:grid xmlns:ntb=\"http://www.nitobi.com\"><ntb:datasources>"+xd.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']").xml+"</ntb:datasources></ntb:grid>");
var _5c3=xd.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e");
var _5c4=this.mode=="paging"?0:_5c2.startXi;
if(_5c3){
if(_5c3.getAttribute("xi")!=_5c4){
nitobi.data.adjustXiXslProc.addParameter("startingIndex","0","");
nitobi.data.adjustXiXslProc.addParameter("adjustment",_5c4,"");
xd=nitobi.xml.loadXml(xd,nitobi.xml.transformToString(xd,nitobi.data.adjustXiXslProc,"xml"));
}
}
return xd;
};
nitobi.data.DataTable.prototype.forceGet=function(_5c5,_5c6,_5c7,_5c8,_5c9,_5ca){
this.errorCallback=_5c9;
this.successCallback=_5ca;
this.context=_5c7;
var _5cb=this.getGetHandler();
(_5cb.indexOf("?")==-1)?_5cb+="?":_5cb+="&";
_5cb+="StartRecordIndex=0&start=0&PageSize="+_5c6+"&SortColumn="+(this.sortColumn||"")+"&SortDirection="+this.sortDir+"&TableId="+this.id+"&uid="+(new Date().getTime());
var _5cc=this.ajaxCallbackPool.reserve();
_5cc.handler=_5cb;
_5cc.responseType="xml";
_5cc.context=this;
_5cc.completeCallback=nitobi.lang.close(this,this.getComplete);
_5cc.params=new nitobi.data.GetCompleteEventArgs(0,_5c6-1,0,_5c6,_5cc,this,_5c7,_5c8);
_5cc.get();
return;
};
nitobi.data.DataTable.prototype.getPage=function(_5cd,_5ce,_5cf,_5d0,_5d1,_5d2){
var _5d3=_5cd+_5ce-1;
var _5d4=this.dataCache.gaps(0,_5ce-1);
var _5d5=_5d4.length;
if(_5d5){
var _5d6=this.requestCache.gaps(_5cd,_5d3);
if(_5d6.length==0){
var _5d7=nitobi.lang.close(this,this.get,arguments);
this.requestQueue.push(_5d7);
return;
}
this.getFromServer(_5cd,_5d3,_5cd,_5d3,_5cf,_5d0,_5d1);
}else{
this.getFromCache(_5cd,_5ce,_5cf,_5d0,_5d1);
}
};
nitobi.data.DataTable.prototype.get=function(_5d8,_5d9,_5da,_5db,_5dc){
this.errorCallback=_5dc;
var _5dd=null;
if(this.mode=="caching"){
_5dd=this.getCached(_5d8,_5d9,_5da,_5db,_5dc);
}
if(this.mode=="local"||this.mode=="static"){
_5dd=this.getTable(_5da,_5db,_5dc);
}
if(this.mode=="paging"){
_5dd=this.getPage(_5d8,_5d9,_5da,_5db,_5dc);
}
return _5dd;
};
nitobi.data.DataTable.prototype.inCache=function(_5de,_5df){
if(this.mode=="local"){
return true;
}
var _5e0=_5de,_5e1=_5de+_5df-1;
var _5e2=this.getRemoteRowCount()-1;
if(this.getRowCountKnown()&&_5e2<_5e1){
_5e1=_5e2;
}
var _5e3=this.dataCache.gaps(_5e0,_5e1);
var _5e4=_5e3.length;
return !(_5e4>0);
};
nitobi.data.DataTable.prototype.cachedRanges=function(_5e5,_5e6){
return this.dataCache.ranges(_5e5,_5e6);
};
nitobi.data.DataTable.prototype.getCached=function(_5e7,_5e8,_5e9,_5ea,_5eb,_5ec){
if(_5e8==null){
return this.getFromServer(_5ed,null,_5e7,null,_5e9,_5ea,_5eb);
}
var _5ed=_5e7,_5ee=_5e7+_5e8-1;
var _5ef=this.dataCache.gaps(_5ed,_5ee);
var _5f0=_5ef.length;
if(this.mode!="unbound"&&_5f0>0){
var low=_5ef[_5f0-1].low;
var high=_5ef[_5f0-1].high;
var _5f3=this.requestCache.gaps(low,high);
if(_5f3.length==0){
var _5f4=nitobi.lang.close(this,this.get,arguments);
this.requestQueue.push(_5f4);
return;
}
return this.getFromServer(_5ed,_5ee,low,high,_5e9,_5ea,_5eb);
}else{
this.getFromCache(_5e7,_5e8,_5e9,_5ea,_5eb);
}
};
nitobi.data.DataTable.prototype.getFromServer=function(_5f5,_5f6,low,high,_5f9,_5fa,_5fb){
this.requestCache.insert(low,high);
var _5fc=(_5f6==null?null:(high-low+1));
var _5fd=(_5fc==null?"":_5fc);
var _5fe=this.getGetHandler();
(_5fe.indexOf("?")==-1)?_5fe+="?":_5fe+="&";
_5fe+="StartRecordIndex="+low+"&start="+low+"&PageSize="+(_5fd)+"&SortColumn="+(this.sortColumn||"")+"&SortDirection="+this.sortDir+"&uid="+(new Date().getTime());
var _5ff=this.ajaxCallbackPool.reserve();
_5ff.handler=_5fe;
_5ff.responseType="xml";
_5ff.context=this;
_5ff.completeCallback=nitobi.lang.close(this,this.getComplete);
_5ff.async=this.async;
_5ff.params=new nitobi.data.GetCompleteEventArgs(_5f5,_5f6,low,_5fc,_5ff,this,_5f9,_5fa);
return _5ff.get();
};
nitobi.data.DataTable.prototype.getFromCache=function(_600,_601,_602,_603,_604){
var _605=_600,_606=_600+_601-1;
if(_605>0||_606>0){
if(typeof (_603)=="function"){
var _607=new nitobi.data.GetCompleteEventArgs(_605,_606,_605,_606-_605+1,null,this,_602,_603);
_607.callback.call(_607.context,_607);
}
}
};
nitobi.data.DataTable.prototype.mergeFromXml=function(_608,_609){
var _60a=Number(_608.documentElement.firstChild.getAttribute("xi"));
var _60b=Number(_608.documentElement.lastChild.getAttribute("xi"));
var _60c=this.dataCache.gaps(_60a,_60b);
if(this.mode=="local"&&_60c.length==1){
this.dataCache.insert(_60c[0].low,_60c[0].high);
this.mergeFromXmlGetComplete(_608,_609,_60a,_60b);
this.batchInsertRowCount=(_60c[0].high-_60c[0].low+1);
this.commitBatchInsert();
return;
}
if(_60c.length==0){
this.mergeFromXmlGetComplete(_608,_609,_60a,_60b);
}else{
if(_60c.length==1){
this.get(_60c[0].low,_60c[0].high-_60c[0].low+1,this,nitobi.lang.close(this,this.mergeFromXmlGetComplete,[_608,_609,_60a,_60b]));
}else{
this.forceGet(_60a,_60b,this,nitobi.lang.close(this,this.mergeFromXmlGetComplete,[_608,_609,_60a,_60b]));
}
}
};
nitobi.data.DataTable.prototype.mergeFromXmlGetComplete=function(_60d,_60e,_60f,_610){
var _611=nitobi.xml.createElement(this.xmlDoc,"newdata");
this.xmlDoc.documentElement.appendChild(_611);
_611.appendChild(_60d.documentElement.cloneNode(true));
nitobi.data.mergeEbaXmlXslProc.addParameter("startRowIndex",_60f,"");
nitobi.data.mergeEbaXmlXslProc.addParameter("endRowIndex",_610,"");
nitobi.data.mergeEbaXmlXslProc.addParameter("guid",nitobi.component.getUniqueId(),"");
this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,nitobi.xml.transformToString(this.xmlDoc,nitobi.data.mergeEbaXmlXslProc,"xml"));
_611=nitobi.xml.createElement(this.log,"newdata");
this.log.documentElement.appendChild(_611);
_611.appendChild(this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"newdata").firstChild.cloneNode(true));
this.log=nitobi.xml.loadXml(this.log,nitobi.xml.transformToString(this.log,nitobi.data.mergeEbaXmlToLogXslProc,"xml"));
this.xmlDoc.documentElement.removeChild(this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"newdata"));
this.log.documentElement.removeChild(this.log.selectSingleNode("//"+nitobi.xml.nsPrefix+"newdata"));
_60e.call();
};
nitobi.data.DataTable.prototype.fillColumn=function(_612,_613){
nitobi.data.fillColumnXslProc.addParameter("column",this.fieldMap[_612].substring(1));
nitobi.data.fillColumnXslProc.addParameter("value",_613);
this.xmlDoc.loadXML(nitobi.xml.transformToString(this.xmlDoc,nitobi.data.fillColumnXslProc,"xml"));
var _614=parseFloat((new Date()).getTime());
var _615=nitobi.xml.createElement(this.log,"newdata");
this.log.documentElement.appendChild(_615);
_615.appendChild(this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"data").cloneNode(true));
nitobi.data.mergeEbaXmlToLogXslProc.addParameter("defaultAction","u");
this.log.loadXML(nitobi.xml.transformToString(this.log,nitobi.data.mergeEbaXmlToLogXslProc,"xml"));
nitobi.data.mergeEbaXmlToLogXslProc.addParameter("defaultAction","");
this.log.documentElement.removeChild(this.log.selectSingleNode("//"+nitobi.xml.nsPrefix+"newdata"));
};
nitobi.data.DataTable.prototype.setHandlerError=function(_616){
this.handlerError=_616;
};
nitobi.data.DataTable.prototype.getHandlerError=function(){
return this.handlerError;
};
nitobi.data.DataTable.prototype.dispose=function(){
this.sortXslProc=null;
this.requestQueue=null;
this.fieldMap=null;
};
nitobi.data.DataTable.prototype.fire=function(evt,args){
return nitobi.event.notify(evt+this.uid,args);
};
nitobi.data.DataTable.prototype.subscribe=function(evt,func,_61b){
if(typeof (_61b)=="undefined"){
_61b=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_61b,func));
};
nitobi.lang.defineNs("nitobi.data");
nitobi.data.DataTableDescriptor=function(_61c,_61d,_61e){
this.disposal=[];
this.estimatedRowCount=0;
this.leapMultiplier=2;
this.estimateRowCount=(_61e==null?true:_61e);
this.lastKnownRow=0;
this.isAtEndOfTable=false;
this.table=_61c;
this.lowestEmptyRow=0;
this.tableProjectionUpdatedEvent=_61d;
this.disposal.push(this.tableProjectionUpdatedEvent);
};
nitobi.data.DataTableDescriptor.prototype.startPeek=function(){
this.enablePeek=true;
this.peek();
};
nitobi.data.DataTableDescriptor.prototype.peek=function(){
var _61f;
if(this.lowestEmptyRow>0){
var _620=this.lowestEmptyRow-this.lastKnownRow;
_61f=this.lastKnownRow+Math.round(_620/2);
}else{
_61f=(this.estimatedRowCount*this.leapMultiplier);
}
this.table.get(Math.round(_61f),1,this,this.peekComplete);
};
nitobi.data.DataTableDescriptor.prototype.peekComplete=function(_621){
if(this.enablePeek){
window.setTimeout(nitobi.lang.close(this,this.peek),1000);
}
};
nitobi.data.DataTableDescriptor.prototype.stopPeek=function(){
this.enablePeek=false;
};
nitobi.data.DataTableDescriptor.prototype.leap=function(_622,_623){
if(this.lowestEmptyRow>0){
var _624=this.lowestEmptyRow-this.lastKnownRow;
this.estimatedRowCount=this.lastKnownRow+Math.round(_624/2);
}else{
if(_622==null||_623==null){
this.estimatedRowCount=0;
}else{
if(this.estimateRowCount){
this.estimatedRowCount=(this.estimatedRowCount*_622)+_623;
}
}
}
this.fireProjectionUpdatedEvent();
};
nitobi.data.DataTableDescriptor.prototype.update=function(_625,_626){
if(null==_626){
_626=false;
}
if(this.isAtEndOfTable&&!_626){
return false;
}
var _627=(_625!=null&&_625.numRowsReturned==0&&_625.startXi==0);
var _628=(_625!=null&&_625.lastRow!=_625.lastRowReturned);
if(null==_625){
_625={lastPage:false,pageSize:1,firstRow:0,lastRow:0,startXi:0};
}
var _629=(_627)||(_628)||(this.isAtEndOfTable)||((this.lastKnownRow==this.estimatedRowCount-1)&&(this.estimatedRowCount==this.lowestEmptyRow));
if(_625.pageSize==0&&!_629){
this.lowestEmptyRow=this.lowestEmptyRow>0?Math.min(_625.startXi,this.lowestEmptyRow):_625.startXi;
this.leap();
return true;
}
this.lastKnownRow=Math.max(_625.lastRowReturned,this.lastKnownRow);
if(_629&&!_626){
if(_625.lastRowReturned>=0){
this.estimatedRowCount=_625.lastRowReturned+1;
this.isAtEndOfTable=true;
}else{
if(_627){
this.estimatedRowCount=0;
this.isAtEndOfTable=true;
}else{
this.estimatedRowCount=this.lastKnownRow+Math.ceil((_625.lastRow-this.lastKnownRow)/2);
}
}
this.fireProjectionUpdatedEvent();
this.stopPeek();
return true;
}
if(!this.estimateRowCount){
this.estimatedRowCount=this.lastKnownRow+1;
}
if(this.estimatedRowCount==0){
this.estimatedRowCount=(_625.lastRow+1)*(this.estimateRowCount?2:1);
}
if((this.estimatedRowCount>(_625.lastRow+1)&&!_626)||!this.estimateRowCount){
return false;
}
if(!this.isAtEndOfTable){
this.leap(this.leapMultiplier,0);
return true;
}
return false;
};
nitobi.data.DataTableDescriptor.prototype.reset=function(){
this.estimatedRowCount=0;
this.leapMultiplier=2;
this.lastKnownRow=0;
this.isAtEndOfTable=false;
this.lowestEmptyRow=0;
this.fireProjectionUpdatedEvent();
};
nitobi.data.DataTableDescriptor.prototype.fireProjectionUpdatedEvent=function(_62a){
if(this.tableProjectionUpdatedEvent!=null){
this.tableProjectionUpdatedEvent(_62a);
}
};
nitobi.data.DataTableDescriptor.prototype.dispose=function(){
nitobi.lang.dispose(this,this.disposal);
};
nitobi.lang.defineNs("nitobi.data");
if(false){
nitobi.data=function(){
};
}
nitobi.data.DataTableEventArgs=function(_62b){
this.source=_62b;
this.event=nitobi.html.Event;
};
nitobi.data.DataTableEventArgs.prototype.getSource=function(){
return this.source;
};
nitobi.data.DataTableEventArgs.prototype.getEvent=function(){
return this.event;
};
nitobi.data.GetCompleteEventArgs=function(_62c,_62d,_62e,_62f,_630,_631,obj,_633){
this.firstRow=_62c;
this.lastRow=_62d;
this.callback=_633;
this.dataSource=_631;
this.context=obj;
this.ajaxCallback=_630;
this.startXi=_62e;
this.pageSize=_62f;
this.lastPage=false;
this.status="success";
};
nitobi.data.GetCompleteEventArgs.prototype.dispose=function(){
this.callback=null;
this.context=null;
this.dataSource=null;
this.ajaxCallback.clear();
this.ajaxCallback==null;
};
nitobi.data.SaveCompleteEventArgs=function(_634){
this.callback=_634;
};
nitobi.data.SaveCompleteEventArgs.prototype.initialize=function(){
};
nitobi.data.OnAfterSaveEventArgs=function(_635,_636,_637){
nitobi.data.OnAfterSaveEventArgs.baseConstructor.call(this,_635);
this.success=_637;
this.responseData=_636;
};
nitobi.lang.extend(nitobi.data.OnAfterSaveEventArgs,nitobi.data.DataTableEventArgs);
nitobi.data.OnAfterSaveEventArgs.prototype.getResponseData=function(){
return this.responseData;
};
nitobi.data.OnAfterSaveEventArgs.prototype.getSuccess=function(){
return this.success;
};
nitobi.lang.defineNs("nitobi.form");
if(false){
nitobi.form=function(){
};
}
nitobi.form.Control=function(){
this.owner=null;
this.cell=null;
this.element=null;
this.blur=false;
};
nitobi.form.Control.attachToParent=function(_638){
};
nitobi.form.Control.prototype.mimic=function(){
};
nitobi.form.Control.prototype.deactivate=function(){
if(this.blur){
return false;
}
this.blur=true;
};
nitobi.form.Control.prototype.bind=function(_639,cell){
this.owner=_639;
this.cell=cell;
this.blur=false;
};
nitobi.form.Control.prototype.hide=function(){
this.placeholder.style.left="-2000px";
};
nitobi.form.Control.prototype.show=function(){
this.placeholder.style.display="block";
};
nitobi.form.Control.prototype.focus=function(){
this.control.focus();
this.blur=false;
};
nitobi.form.Control.prototype.handleKey=function(o,e){
var evt=(nitobi.browser.IE)?event:e;
var k=evt.keyCode;
switch(k){
case 27:
this.control.onblur=null;
this.hide();
this.owner.focus();
break;
case 9:
this.deactivate();
if(nitobi.browser.IE){
evt.keyCode=" ";
}
var x=1;
if(evt.shiftKey){
x=-1;
}
this.owner.move(x,0);
nitobi.html.cancelBubble(evt);
break;
case 40:
case 38:
break;
case 13:
this.deactivate();
evt.returnValue=false;
break;
default:
}
};
nitobi.form.Control.prototype.render=function(){
};
nitobi.form.Control.prototype.setEditCompleteHandler=function(_640){
this.editCompleteHandler=_640;
};
nitobi.form.Control.prototype.commitProperties=function(){
};
nitobi.form.Control.prototype.dispose=function(){
};
nitobi.form.Text=function(){
nitobi.form.Text.baseConstructor.call(this);
var div=document.createElement("div");
div.innerHTML="<table border='0' cellpadding='0' cellspacing='0' class='ntbinputborder'><tr><td></td></table>";
this.placeholder=div.firstChild;
this.control=document.createElement("input");
this.control.style.width="100%";
this.control.style.border="0px";
this.placeholder.object=this;
this.placeholder.style.position="absolute";
this.placeholder.style.top="-3000px";
this.placeholder.style.zIndex=2000;
this.placeholder.style.left="-3000px";
this.control.className="ntbinput ntbcell";
this.control.setAttribute("maxlength",255);
this.events=[{"type":"keydown","handler":this.handleKey},{"type":"blur","handler":this.deactivate}];
};
nitobi.lang.extend(nitobi.form.Text,nitobi.form.Control);
nitobi.form.Text.prototype.initialize=function(){
this.placeholder.rows[0].cells[0].appendChild(this.control);
document.body.appendChild(this.placeholder);
nitobi.html.attachEvents(this.control,this.events,this);
};
nitobi.form.Text.prototype.attachToParent=function(_642){
_642.appendChild(this.placeholder);
};
nitobi.form.Text.prototype.bind=function(_643,cell,_645){
nitobi.form.Text.base.bind.apply(this,arguments);
if(_645!=null&&_645!=""){
this.control.value=_645;
}else{
this.control.value=cell.getValue();
}
var _646=this.cell.getColumnObject();
this.control.maxlength=_646.ModelNode.getAttribute("MaxLength");
nitobi.html.Css.addClass(this.control,"ntbcolumndata"+this.owner.uid+"_"+(this.cell.getColumn()+1));
};
nitobi.form.Text.prototype.render=function(){
this.domNode.appendChild(this.placeholder);
};
nitobi.form.Text.prototype.mimic=function(){
var oY=0;
var oX=0;
if(nitobi.browser.MOZ){
var _649=this.context.getScrollSurface();
var _64a=this.context.getActiveView().region;
if(_64a==3||_64a==4){
oY=_649.scrollTop-nitobi.form.EDITOR_OFFSETY;
}
if(_64a==1||_64a==4){
oX=_649.scrollLeft-nitobi.form.EDITOR_OFFSETX;
}
}
nitobi.drawing.align(this.placeholder,this.cell.getDomNode(),286265344,0,0,-oY,-oX);
window.setTimeout(nitobi.lang.close(this,this.focus),100);
if(this.control.createTextRange){
var _64b=this.control.createTextRange();
_64b.collapse(false);
_64b.select();
}
};
nitobi.form.Text.prototype.focus=function(){
this.control.focus();
};
nitobi.form.Text.prototype.deactivate=function(){
if(this.lastKeyCode==27){
return;
}
if(nitobi.form.Text.base.deactivate.apply(this,arguments)==false){
return;
}
var _64c=this.control.value;
nitobi.html.Css.removeClass(this.control,"ntbcolumndata"+this.owner.uid+"_"+(this.cell.getColumn()+1));
if(this.editCompleteHandler!=null){
var _64d=new nitobi.grid.EditCompleteEventArgs(this,_64c,_64c,this.cell);
var _64e=this.editCompleteHandler.call(this.owner,_64d);
if(!_64e){
this.blur=false;
}
return _64e;
}
};
nitobi.form.Text.prototype.handleKey=function(evt){
var k=evt.keyCode;
this.lastKeyCode=k;
switch(k){
case 27:
this.control.onblur=null;
this.hide();
this.owner.focus();
break;
case 9:
var _651=this.deactivate();
if(!_651){
nitobi.html.cancelBubble(evt);
break;
}
if(nitobi.browser.IE){
evt.keyCode="";
}
var x=1;
if(evt.shiftKey){
x=-1;
}
this.owner.move(x,0);
nitobi.html.cancelBubble(evt);
break;
case 40:
case 38:
break;
case 13:
this.control.blur();
evt.returnValue=false;
break;
default:
}
};
nitobi.form.Text.prototype.dispose=function(){
this.control.object=null;
nitobi.html.detachEvents(this.control,this.events);
var _653=this.placeholder.parentNode;
_653.removeChild(this.placeholder);
this.domNode=null;
this.control=null;
this.owner=null;
this.cell=null;
};
nitobi.form.Checkbox=function(){
};
nitobi.lang.extend(nitobi.form.Checkbox,nitobi.form.Control);
nitobi.form.Checkbox.prototype.initialize=function(){
this.DataSourceId="";
this.UnCheckedValue="0";
this.CheckedValue="1";
this.DisplayFields="";
this.ValueField="";
};
nitobi.form.Checkbox.prototype.bind=function(_654,cell,_656){
this.blur=false;
this.cell=cell;
this.owner=_654;
var _657=this.cell.getColumnObject();
this.DataSourceId=_657.ModelNode.getAttribute("DatasourceId");
this.dataTable=this.owner.data.getTable(this.DataSourceId);
};
nitobi.form.Checkbox.prototype.mimic=function(){
if(false==eval(this.owner.getOnCellValidateEvent())){
return;
}
this.toggle();
this.deactivate();
};
nitobi.form.Checkbox.prototype.deactivate=function(){
if(this.editCompleteHandler!=null){
var _658=new nitobi.grid.EditCompleteEventArgs(this,this.value,this.value,this.cell);
this.editCompleteHandler.call(this.context,_658);
}
this.context=null;
};
nitobi.form.Checkbox.prototype.toggle=function(){
var _659=this.cell.getColumnObject();
this.DataSourceId=_659.ModelNode.getAttribute("DatasourceId");
var _65a=this.owner.data.getTable(this.DataSourceId);
var _65b=_659.ModelNode.getAttribute("DisplayFields");
var _65c=_659.ModelNode.getAttribute("ValueField");
var _65d=_659.ModelNode.getAttribute("CheckedValue");
if(_65d==""||_65d==null){
_65d=1;
}
var _65e=_659.ModelNode.getAttribute("UnCheckedValue");
if(_65e==""||_65e==null){
_65e=0;
}
this.value=(this.cell.getDomNode().getAttribute("value")==_65d)?_65e:_65d;
};
nitobi.form.Checkbox.prototype.hide=function(){
};
nitobi.form.Checkbox.prototype.dispose=function(){
this.element=null;
this.metadata=null;
this.owner=null;
this.context=null;
};
nitobi.form.Date=function(){
nitobi.form.Date.baseConstructor.call(this);
};
nitobi.lang.extend(nitobi.form.Date,nitobi.form.Text);
nitobi.form.Date.prototype.handleKey=function(e){
nitobi.form.Date.base.handleKey.call(this,e);
};
nitobi.lang.defineNs("nitobi.form");
nitobi.form.EDITOR_OFFSETX=null;
nitobi.form.EDITOR_OFFSETY=null;
nitobi.form.ControlFactory=function(){
this.editors={};
};
nitobi.form.ControlFactory.prototype.getEditor=function(_660,_661,_662){
var _663=null;
if(null==_661){
ebaErrorReport("getEditor: column parameter is null","",EBA_DEBUG);
return _663;
}
if(false==_661.isEditable()){
return _663;
}
var _664=_661.getType();
var _665=_661.getType();
var _666="nitobi.Grid"+_664+_665+"Editor";
if(this.editors[_666]!=null){
_663=this.editors[_666];
}else{
switch(_664){
case "LINK":
case "HYPERLINK":
_663=new nitobi.form.Link;
break;
case "IMAGE":
return null;
case "BUTTON":
return null;
case "LOOKUP":
_663=new nitobi.form.Lookup();
break;
case "LISTBOX":
_663=new nitobi.form.ListBox();
break;
case "PASSWORD":
_663=new nitobi.form.Password();
break;
case "TEXTAREA":
_663=new nitobi.form.TextArea();
break;
case "CHECKBOX":
_663=new nitobi.form.Checkbox();
break;
default:
if(_665=="DATE"){
if(_661.isCalendarEnabled()){
_663=new nitobi.form.Calendar();
}else{
_663=new nitobi.form.Date();
}
}else{
if(_665=="NUMBER"){
_663=new nitobi.form.Number();
}else{
_663=new nitobi.form.Text();
}
}
break;
}
}
_663.initialize();
_663.context=_660;
this.editors[_666]=_663;
return _663;
};
nitobi.form.ControlFactory.prototype.dispose=function(){
for(var _667 in this.editors){
this.editors[_667].dispose();
}
};
nitobi.form.ControlFactory.instance=new nitobi.form.ControlFactory();
nitobi.form.Link=function(){
};
nitobi.lang.extend(nitobi.form.Link,nitobi.form.Control);
nitobi.form.Link.prototype.initialize=function(){
this.url="";
};
nitobi.form.Link.prototype.bind=function(_668,cell,_66a){
this.cell=cell;
this.url=this.cell.getValue();
this.blur=false;
this.owner=_668;
};
nitobi.form.Link.prototype.mimic=function(){
if(false==eval(this.owner.getOnCellValidateEvent())){
return;
}
this.click();
this.deactivate();
};
nitobi.form.Link.prototype.deactivate=function(){
if(this.editCompleteHandler!=null){
var _66b=new nitobi.grid.EditCompleteEventArgs(this,this.value,this.value,this.cell);
this.editCompleteHandler.call(this.context,_66b);
}
this.context=null;
};
nitobi.form.Link.prototype.click=function(){
window.open(this.url);
this.value=this.url;
};
nitobi.form.Link.prototype.hide=function(){
};
nitobi.form.Link.prototype.dispose=function(){
this.element=null;
this.metadata=null;
this.owner=null;
this.context=null;
};
nitobi.form.ListBox=function(){
this.editCompleteHandler=null;
this.context=null;
this.element=null;
this.metadata=null;
this.blur=false;
this.keypress=false;
this.events=[{"type":"change","handler":this.deactivate},{"type":"keydown","handler":this.handleKey},{"type":"blur","handler":this.deactivate}];
};
nitobi.lang.extend(nitobi.form.ListBox,nitobi.form.Control);
nitobi.form.ListBox.prototype.initialize=function(){
var div=document.createElement("div");
div.innerHTML="<table border='0' cellpadding='0' cellspacing='0' style='table-layout:fixed;'><tr><td></td></tr></table>";
this.placeholder=div.firstChild;
this.placeholder.object=this;
this.placeholder.style.position="absolute";
this.placeholder.style.top="-1000px";
this.placeholder.style.left="-1000px";
document.body.appendChild(this.placeholder);
};
nitobi.form.ListBox.prototype.bind=function(_66d,cell,_66f){
this.blur=false;
this.cell=cell;
this.owner=_66d;
var _670=cell.getColumnObject();
var _671=_670.ModelNode.getAttribute("DatasourceId");
this.dataTable=this.owner.data.getTable(_671);
this.bindComplete(_66f);
};
nitobi.form.ListBox.prototype.bindComplete=function(){
var _672=this.dataTable.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.dataTable.id+"']");
var _673=this.cell.getColumnObject();
var _674=_673.ModelNode.getAttribute("DisplayFields");
var _675=_673.ModelNode.getAttribute("ValueField");
nitobi.form.listboxXslProc.addParameter("DisplayFields",_674,"");
nitobi.form.listboxXslProc.addParameter("ValueField",_675,"");
nitobi.form.listboxXslProc.addParameter("val",this.cell.getValue(),"");
this.listXml=nitobi.xml.transformToXml(nitobi.xml.createXmlDoc(_672.xml),nitobi.form.listboxXslProc);
this.placeholder.rows[0].cells[0].innerHTML=this.listXml.xml;
this.control=this.placeholder.rows[0].cells[0].childNodes[0];
this.control.style.width="100%";
nitobi.html.attachEvents(this.control,this.events,this);
this.control.className=this.cell.DomNode.className;
var oY=0;
var oX=0;
if(nitobi.browser.MOZ){
var _678=this.context.getScrollSurface();
var _679=this.context.getActiveView().region;
if(_679==3||_679==4){
oY=_678.scrollTop-nitobi.form.EDITOR_OFFSETY;
}
if(_679==1||_679==4){
oX=_678.scrollLeft-nitobi.form.EDITOR_OFFSETX;
}
}
nitobi.drawing.align(this.placeholder,this.cell.DomNode,286265344,0,0,-oY,-oX);
this.control.focus();
if(this.control.createTextRange){
var _67a=this.control.createTextRange();
_67a.collapse(false);
_67a.select();
}
};
nitobi.form.ListBox.prototype.deactivate=function(ok){
if(this.blur||this.keypress){
this.keypress=false;
return;
}
this.blur=true;
var c=this.control;
var text="",_67e="";
if(ok||ok==null){
text=c.options[c.selectedIndex].text;
_67e=c.options[c.selectedIndex].value;
}else{
_67e=this.cell.getValue();
var len=c.options.length;
for(var i=0;i<len;i++){
if(c.options[i].value==_67e){
text=c.options[i].text;
}
}
}
c.object=null;
if(this.editCompleteHandler!=null){
var _681=new nitobi.grid.EditCompleteEventArgs(this,nitobi.html.encode(text),_67e,this.cell);
_681.status=(_67e==this.cell.getValue()?false:true);
this.editCompleteHandler.call(this.context,_681);
}
};
nitobi.form.ListBox.prototype.handleKey=function(evt){
var k=evt.keyCode;
this.keypress=false;
switch(k){
case 27:
this.deactivate(false);
break;
case 40:
if(this.control.selectedIndex<this.control.options.length-1){
this.keypress=true;
}
break;
case 38:
if(this.control.selectedIndex>0){
this.keypress=true;
}
break;
case 37:
case 39:
case 13:
case 27:
this.deactivate(true);
break;
default:
}
};
nitobi.form.ListBox.prototype.dispose=function(){
nitobi.html.detachEvents(this.control,this.events);
this.placeholder=null;
this.control=null;
this.listXml=null;
this.element=null;
this.metadata=null;
this.owner=null;
};
nitobi.form.Lookup=function(){
this.selectClicked=false;
this.bVisible=false;
var div=document.createElement("div");
div.innerHTML="<table class='ntbinputborder' border='1px' cellpadding='0' cellspacing='0' style='overflow:hidden;'><tr><td></td></tr><tr><td></td></tr></table>";
this.placeholder=div.firstChild;
this.placeholder.setAttribute("id","lookup_span");
this.placeholder.style.position="absolute";
this.placeholder.style.zIndex=2000;
this.placeholder.style.top="-2000px";
this.placeholder.style.left="-2000px";
this.placeholder.style.tableLayout="fixed";
document.body.appendChild(this.placeholder);
this.textControl=document.createElement("input");
this.textControl.className="ntbinput ntblookuptext";
this.textControl.style.borderWidth="0px";
this.textControl.autocomplete="off";
this.textControl.style.zIndex=2000;
this.events=[{"type":"keydown","handler":this.handleKey},{"type":"keyup","handler":this.filter},{"type":"blur","handler":this.deactivate}];
nitobi.html.attachEvents(this.textControl,this.events,this);
this.placeholder.rows[0].cells[0].appendChild(this.textControl);
this.blur=false;
this.firstKeyup=false;
this.autocompleted=false;
this.listXml=null;
this.listXmlLower=null;
this.editCompleteHandler=null;
this.delay=0;
this.timeoutId=null;
var xsl="<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">";
xsl+="<xsl:output method=\"text\" version=\"4.0\"/><xsl:param name='searchValue'/>";
xsl+="<xsl:template match=\"/\"><xsl:apply-templates select='//option[starts-with(.,$searchValue)][1]' /></xsl:template>";
xsl+="<xsl:template match=\"option\"><xsl:value-of select='@rn' /></xsl:template></xsl:stylesheet>";
var _686=nitobi.xml.createXslDoc(xsl);
this.searchXslProc=nitobi.xml.createXslProcessor(_686);
_686=null;
};
nitobi.lang.extend(nitobi.form.Lookup,nitobi.form.Control);
nitobi.lang.implement(nitobi.form.Lookup,nitobi.ui.IDataBoundList);
nitobi.form.Lookup.prototype.initialize=function(){
this.firstKeyup=false;
};
nitobi.form.Lookup.prototype.mimic=function(){
};
nitobi.form.Lookup.prototype.hide=function(){
this.placeholder.style.top="-2000px";
};
nitobi.form.Lookup.prototype.hideSelect=function(){
this.selectControl.style.display="none";
this.bVisible=false;
};
nitobi.form.Lookup.prototype.bind=function(_687,cell,_689){
this.blur=false;
this.owner=_687;
this.cell=cell;
this.column=this.cell.getColumnObject();
var _68a=this.column.ModelNode;
this.datasourceId=_68a.getAttribute("DatasourceId");
this.getHandler=_68a.getAttribute("GetHandler");
this.pageSize=_68a.getAttribute("PageSize");
this.delay=parseInt(_68a.getAttribute("Delay"));
this.size=_68a.getAttribute("Size");
this.displayFields=_68a.getAttribute("DisplayFields");
this.valueField=_68a.getAttribute("ValueField");
nitobi.form.listboxXslProc.addParameter("DisplayFields",this.displayFields,"");
nitobi.form.listboxXslProc.addParameter("ValueField",this.valueField,"");
this.dataTable=this.owner.data.getTable(this.datasourceId);
this.dataTable.setGetHandler(this.getHandler);
this.dataTable.async=false;
if(_689.length<=0){
_689=this.cell.getValue();
}
this.get(_689,true);
};
nitobi.form.Lookup.prototype.bindComplete=function(_68b){
var _68c=this.dataTable.getXmlDoc();
nitobi.form.listboxXslProc.addParameter("DisplayFields",this.displayFields,"");
nitobi.form.listboxXslProc.addParameter("ValueField",this.valueField,"");
nitobi.form.listboxXslProc.addParameter("val",nitobi.xml.constructValidXpathQuery(this.cell.getValue(),false),"");
this.listXml=nitobi.xml.transformToXml(nitobi.xml.createXmlDoc(_68c.xml),nitobi.form.listboxXslProc);
this.listXmlLower=nitobi.xml.createXmlDoc(this.listXml.xml.toLowerCase());
this.placeholder.rows[1].cells[0].innerHTML=this.listXml.xml;
this.selectControl=this.placeholder.rows[1].cells[0].firstChild;
this.selectControl.style.display="none";
this.selectControl.className="ntbinput ntblookupoptions";
this.selectControl.style.border="0px";
this.selectControl.style.width="100%";
this.selectControl.size=this.size;
this.selectEvents=[{"type":"click","handler":this.handleSelectClicked},{"type":"mousedown","handler":this.handleSelectMouseDown}];
nitobi.html.attachEvents(this.selectControl,this.selectEvents,this);
this.selectClicked=false;
this.bVisible=false;
var rn=this.search(_68b);
if(rn>0){
this.selectControl.selectedIndex=rn-1;
this.textControl.value=this.selectControl[this.selectControl.selectedIndex].text;
nitobi.html.highlight(this.textControl,this.textControl.value.length-(this.textControl.value.length-_68b.length));
this.autocompleted=true;
}else{
var row=_68c.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+this.valueField+"='"+_68b+"']");
if(row!=null){
this.textControl.value=row.getAttribute(this.displayFields);
var rn=this.search(this.textControl.value);
this.selectControl.selectedIndex=parseInt(rn)-1;
}else{
this.textControl.value=_68b;
this.selectControl.selectedIndex=-1;
}
}
var oY=0;
var oX=0;
if(nitobi.browser.MOZ){
var _691=this.context.getScrollSurface();
var _692=this.context.getActiveView().region;
if(_692==3||_692==4){
oY=_691.scrollTop-nitobi.form.EDITOR_OFFSETY;
}
if(_692==1||_692==4){
oX=_691.scrollLeft-nitobi.form.EDITOR_OFFSETX;
}
}
var _693=this.cell.getDomNode();
nitobi.drawing.align(this.placeholder,_693,286265344,0,0,-oY,-oX);
this.textControl.style.height=nitobi.html.getHeight(_693)+"px";
var _694=this.placeholder.clientWidth;
this.selectControl.style.display="inline";
this.textControl.style.width="100%";
this.textControl.focus();
return false;
};
nitobi.form.Lookup.prototype.handleSelectClicked=function(evt){
this.textControl.value=this.selectedIndex!=-1?this.options[this.selectedIndex].text:"";
this.hideSelect();
this.focus();
};
nitobi.form.Lookup.prototype.handleSelectMouseDown=function(evt){
this.selectClicked=true;
};
nitobi.form.Lookup.prototype.focus=function(evt){
this.textControl.focus();
};
nitobi.form.Lookup.prototype.deactivate=function(evt,o){
if(this.blur||this.selectClicked){
this.selectClicked=false;
return;
}
this.blur=true;
var sc=this.selectControl;
var tc=this.textControl;
var text="",_69d="";
if(evt!=null&&evt!=false){
if(sc.selectedIndex>=0){
_69d=sc.options[sc.selectedIndex].value;
text=sc.options[sc.selectedIndex].text;
}else{
_69d=tc.value;
text=_69d;
}
}else{
_69d=this.cell.getValue();
var len=sc.options.length;
for(var i=0;i<len;i++){
if(sc.options[i].value==_69d){
text=sc.options[i].text;
}
}
}
nitobi.html.detachEvents(this.selectControl,this.events);
sc=null;
if(this.editCompleteHandler!=null){
var _6a0=new nitobi.grid.EditCompleteEventArgs(this,nitobi.html.encode(text),_69d,this.cell);
_6a0.status=true;
this.editCompleteHandler.call(this.owner,_6a0);
}
};
nitobi.form.Lookup.prototype.handleKey=function(evt,_6a2){
var k=evt.keyCode;
var tc=this.textControl;
var sc=this.selectControl;
if(k==27){
this.deactivate(false);
return;
}
if(evt.ctrlKey&&k==86){
return;
}
if(evt.ctrlKey){
return;
}
switch(k){
case 9:
this.deactivate(true);
break;
case 13:
evt.returnValue=false;
evt.cancelBubble=true;
if(nitobi.browser.IE){
evt.keyCode=32;
}else{
nitobi.html.cancelEvent(evt);
nitobi.html.createEvent("KeyEvents","keydown",evt,{keyCode:0,charCode:32});
}
this.deactivate(true);
break;
case 8:
default:
this.autocompleted=false;
if(!this.bVisible){
sc.style.display="inline";
}
}
};
nitobi.form.Lookup.prototype.search=function(_6a6){
_6a6=nitobi.xml.constructValidXpathQuery(_6a6,false);
this.searchXslProc.addParameter("searchValue",_6a6.toLowerCase(),"");
var _6a7=nitobi.xml.transformToString(this.listXmlLower,this.searchXslProc);
if(""==_6a7){
_6a7=0;
}else{
_6a7=parseInt(_6a7);
}
return _6a7;
};
nitobi.form.Lookup.prototype.filter=function(evt,o){
if(!this.firstKeyup){
this.firstKeyup=true;
return;
}
var k=evt.keyCode;
var tc=this.textControl;
var sc=this.selectControl;
switch(k){
case 38:
if(sc.selectedIndex==-1){
sc.selectedIndex=0;
}
if(sc.selectedIndex>0){
sc.selectedIndex--;
}
tc.value=sc.options[sc.selectedIndex].text;
nitobi.html.highlight(tc,tc.value.length);
tc.select();
break;
case 40:
if(sc.selectedIndex<(sc.length-1)){
sc.selectedIndex++;
}
tc.value=sc.options[sc.selectedIndex].text;
nitobi.html.highlight(tc,tc.value.length);
tc.select();
break;
default:
if(k<193&&k>46){
var _6ad=tc.value;
this.get(_6ad);
}
}
};
nitobi.form.Lookup.prototype.get=function(_6ae,_6af){
if(this.getHandler!=null&&this.getHandler!=""){
if(_6af||!this.delay){
this.doGet(_6ae);
}else{
if(this.timeoutId){
window.clearTimeout(this.timeoutId);
this.timeoutId=null;
}
this.timeoutId=window.setTimeout(nitobi.lang.close(this,this.doGet,[_6ae]),this.delay);
}
}
};
nitobi.form.Lookup.prototype.doGet=function(_6b0){
if(_6b0){
this.dataTable.setGetHandlerParameter("SearchString",_6b0);
}
this.dataTable.get(null,this.pageSize,this);
this.timeoutId=null;
this.bindComplete(_6b0);
};
nitobi.form.Lookup.prototype.dispose=function(){
this.placeholder=null;
nitobi.html.detachEvents(this.events,this);
this.textControl=null;
this.owner=null;
};
nitobi.form.Number=function(){
nitobi.form.Number.baseConstructor.call(this);
};
nitobi.lang.extend(nitobi.form.Number,nitobi.form.Text);
nitobi.form.Number.prototype.handleKey=function(evt){
nitobi.form.Number.base.handleKey.call(this,evt);
var k=evt.keyCode;
this.lastKeyCode=k;
if((k<48||k>57)&&(k<37||k>40)&&(k<96||k>105)&&k!=190&&k!=189&&k!=109&&k!=9&&k!=45&&k!=46&&k!=8){
nitobi.html.cancelEvent(evt);
return false;
}
};
nitobi.form.Number.defaultValue=0;
nitobi.form.Password=function(){
nitobi.form.Password.baseConstructor.call(this,true);
this.control.type="password";
};
nitobi.lang.extend(nitobi.form.Password,nitobi.form.Text);
nitobi.form.TextArea=function(){
var div=document.createElement("div");
div.innerHTML="<table border='0' cellpadding='0' cellspacing='0' class='ntbinputborder'><tr><td></td></table>";
this.placeholder=div.firstChild;
this.control=document.createElement("textarea");
this.control.style.border="0px";
this.control.className="ntbinput";
this.control.style.width="100%";
this.placeholder.style.position="absolute";
this.placeholder.style.top="-2000px";
this.placeholder.style.left="-2000px";
this.placeholder.style.zIndex=2000;
this.events=[{"type":"keydown","handler":this.handleKey},{"type":"blur","handler":this.deactivate}];
};
nitobi.lang.extend(nitobi.form.TextArea,nitobi.form.Text);
nitobi.form.TextArea.prototype.initialize=function(){
this.placeholder.rows[0].cells[0].appendChild(this.control);
document.body.appendChild(this.placeholder);
nitobi.html.attachEvents(this.control,this.events,this);
};
nitobi.form.TextArea.prototype.mimic=function(){
nitobi.form.TextArea.base.mimic.call(this);
this.placeholder.style.height=parseInt(this.placeholder.style.height)*2+"px";
this.placeholder.style.width=parseInt(this.placeholder.style.width)*1.5+"px";
this.control.style.height=this.placeholder.style.height;
this.control.style.width=this.placeholder.style.width;
};
nitobi.form.TextArea.prototype.handleKey=function(evt,o){
var k=evt.keyCode;
switch(k){
case 40:
break;
case 38:
break;
case 37:
break;
case 39:
break;
case 13:
evt.cancelBubble=true;
evt.returnValue=false;
if(nitobi.browser.IE){
evt.keyCode=32;
}
if(!evt.shiftKey){
if(nitobi.browser.MOZ){
nitobi.html.createEvent("KeyEvents","keydown",evt,{"keyCode":0,"charCode":32});
}
this.deactivate();
}else{
if(nitobi.browser.MOZ){
nitobi.html.createEvent("KeyEvents","keypress",evt,{"keyCode":13,"charCode":0});
}
if(this.control.createTextRange){
this.control.focus();
var _6b7=document.selection.createRange();
_6b7.text="\n";
_6b7.collapse(false);
_6b7.select();
}
}
break;
case 9:
break;
case 27:
nitobi.html.detachEvent(this.control,"blur",this.deactivate);
this.hide();
this.owner.focus();
break;
default:
}
};
nitobi.form.Calendar=function(){
nitobi.form.Calendar.baseConstructor.call(this);
var div=document.createElement("div");
div.innerHTML="<table border='0' cellpadding='0' cellspacing='0' style='table-layout:fixed;' class='ntb-dp-input'><tr><td></td><td>"+"<input type='text' style='width:100%;' />"+"</td><td class='ntb-dp-inputbutton'><a href='#' onclick='return false;'></a></td></tr><tr><td colspan='3'><div style='width:1px;height:1px;position:relative;'><!-- --></div></td></tr><colgroup><col style='width:4px;'></col><col></col><col style='width:20px;'></col></colgroup></table>";
this.control=div.getElementsByTagName("input")[0];
this.container=div.firstChild;
this.container.object=this;
this.container.style.position="absolute";
this.container.style.top="-3000px";
this.container.style.zIndex=2000;
this.container.style.left="-3000px";
this.control.setAttribute("maxlength",255);
this.pickerDiv=document.createElement("div");
this.pickerDiv.style.position="absolute";
this.pickerDiv.style.top="2px";
this.pickerDiv.style.left="-1px";
this.isPickerVisible=false;
nitobi.html.Css.addClass(this.pickerDiv,NTB_CSS_HIDE);
this.container.rows[1].cells[0].firstChild.appendChild(this.pickerDiv);
};
nitobi.lang.extend(nitobi.form.Calendar,nitobi.form.Control);
nitobi.form.Calendar.prototype.initialize=function(){
document.body.appendChild(this.container);
this.datePicker=new nitobi.calendar.DatePicker(nitobi.component.getUniqueId());
this.datePicker.setContainer(this.pickerDiv);
this.datePicker.onSetDate.subscribe(this.handlePick,this);
nitobi.html.attachEvent(this.control,"keydown",this.handleKey,this,false);
nitobi.html.attachEvent(this.control,"blur",this.deactivate,this,false);
nitobi.html.attachEvent(this.pickerDiv,"mousedown",function(){
this.dontBlur=true;
},this);
nitobi.html.attachEvent(this.pickerDiv,"mouseup",function(){
this.control.focus();
},this);
var a=this.container.getElementsByTagName("a")[0];
nitobi.html.attachEvent(a,"mousedown",this.handleClick,this);
nitobi.html.attachEvent(a,"mouseup",function(){
this.control.focus();
},this);
};
nitobi.form.Calendar.prototype.attachToParent=function(_6ba){
_6ba.appendChild(this.container);
};
nitobi.form.Calendar.prototype.bind=function(_6bb,cell,_6bd){
this.isPickerVisible=false;
nitobi.html.Css.addClass(this.pickerDiv,NTB_CSS_HIDE);
nitobi.form.Calendar.base.bind.apply(this,arguments);
if(_6bd!=null&&_6bd!=""){
this.control.value=_6bd;
}else{
this.control.value=cell.getValue();
}
this.column=this.cell.getColumnObject();
this.control.maxlength=this.column.ModelNode.getAttribute("MaxLength");
};
nitobi.form.Calendar.prototype.render=function(){
this.domNode.appendChild(this.container);
};
nitobi.form.Calendar.prototype.mimic=function(){
var oY=0;
var oX=0;
if(nitobi.browser.MOZ){
oY=this.owner.Scroller.scrollSurface.scrollTop-nitobi.form.EDITOR_OFFSETY;
oX=this.owner.Scroller.scrollSurface.scrollLeft-nitobi.form.EDITOR_OFFSETX;
}
nitobi.drawing.align(this.container,this.cell.getDomNode(),286265344,0,0,-oY,-oX);
this.control.focus();
if(this.control.createTextRange){
var _6c0=this.control.createTextRange();
_6c0.collapse(false);
_6c0.select();
}
};
nitobi.form.Calendar.prototype.hide=function(){
this.container.style.left="-2000px";
};
nitobi.form.Calendar.prototype.deactivate=function(){
if(this.dontBlur){
this.dontBlur=false;
this.control.focus();
return;
}
var node=this.container.rows[0].cells[2].firstChild;
if(this.lastKeyCode==27){
return;
}
if(nitobi.form.Calendar.base.deactivate.apply(this,arguments)==false){
return;
}
var _6c2=this.control.value;
if(this.editCompleteHandler!=null){
var _6c3=new nitobi.grid.EditCompleteEventArgs(this,_6c2,_6c2,this.cell);
var _6c4=this.editCompleteHandler.call(this.owner,_6c3);
if(!_6c4){
this.blur=false;
}
return _6c4;
}
};
nitobi.form.Calendar.prototype.handleClick=function(evt,_6c6){
if(!this.isPickerVisible){
this.datePicker.setDate(nitobi.base.DateMath.parseIso8601(this.control.value));
this.datePicker.render();
}
this.dontBlur=true;
var node=this.container.rows[0].cells[2].firstChild;
nitobi.ui.Effects.setVisible(this.pickerDiv,!this.isPickerVisible,"none",this.setVisibleComplete,this);
this.control.focus();
};
nitobi.form.Calendar.prototype.setVisibleComplete=function(){
this.isPickerVisible=!this.isPickerVisible;
};
nitobi.form.Calendar.prototype.handlePick=function(){
var date=this.datePicker.getDate();
var _6c9=nitobi.base.DateMath.toIso8601(date);
this.control.value=_6c9;
};
nitobi.form.Calendar.prototype.handleKey=function(evt){
var k=evt.keyCode;
this.lastKeyCode=k;
switch(k){
case 27:
this.control.onblur=null;
this.hide();
this.owner.focus();
break;
case 9:
var _6cc=this.deactivate();
if(!_6cc){
nitobi.html.cancelBubble(evt);
break;
}
if(nitobi.browser.IE){
evt.keyCode="";
}
var x=1;
if(evt.shiftKey){
x=-1;
}
this.owner.move(x,0);
nitobi.html.cancelBubble(evt);
break;
case 40:
case 38:
break;
case 13:
this.control.blur();
evt.returnValue=false;
break;
default:
}
};
nitobi.form.Calendar.prototype.dispose=function(){
this.container.object=null;
nitobi.html.detachEvent(this.control,"keydown",this.handleKey);
nitobi.html.detachEvent(this.control,"blur",this.deactivate);
var _6ce=this.container.parentNode;
_6ce.removeChild(this.container);
this.domNode=null;
this.control=null;
this.container=null;
this.owner=null;
this.cell=null;
};
nitobi.ui.UiElement=function(xml,xsl,id){
if(arguments.length>0){
this.initialize(xml,xsl,id);
}
};
nitobi.ui.UiElement.prototype.initialize=function(xml,xsl,id){
this.m_Xml=xml;
this.m_Xsl=xsl;
this.m_Id=id;
this.m_HtmlElementHandle=null;
};
nitobi.ui.UiElement.prototype.getHeight=function(){
return this.getHtmlElementHandle().style.height;
};
nitobi.ui.UiElement.prototype.setHeight=function(_6d5){
this.getHtmlElementHandle().style.height=_6d5+"px";
};
nitobi.ui.UiElement.prototype.getId=function(){
return this.m_Id;
};
nitobi.ui.UiElement.prototype.setId=function(id){
this.m_Id=id;
};
nitobi.ui.UiElement.prototype.getWidth=function(){
return this.getHtmlElementHandle().style.width;
};
nitobi.ui.UiElement.prototype.setWidth=function(_6d7){
this.getHtmlElementHandle().style.width=_6d7+"px";
};
nitobi.ui.UiElement.prototype.getXml=function(){
return this.m_Xml;
};
nitobi.ui.UiElement.prototype.setXml=function(xml){
this.m_Xml=xml;
};
nitobi.ui.UiElement.prototype.getXsl=function(){
return this.m_Xsl;
};
nitobi.ui.UiElement.prototype.setXsl=function(xsl){
this.m_Xsl=xsl;
};
nitobi.ui.UiElement.prototype.getHtmlElementHandle=function(){
if(!this.m_HtmlElementHandle){
this.m_HtmlElementHandle=document.getElementById(this.m_Id);
}
return this.m_HtmlElementHandle;
};
nitobi.ui.UiElement.prototype.setHtmlElementHandle=function(_6da){
this.m_HtmlElementHandle=_6da;
};
nitobi.ui.UiElement.prototype.hide=function(){
var tag=this.getHtmlElementHandle();
tag.style.visibility="hidden";
tag.style.position="absolute";
};
nitobi.ui.UiElement.prototype.show=function(){
var tag=this.getHtmlElementHandle();
tag.style.visibility="visible";
};
nitobi.ui.UiElement.prototype.isVisible=function(){
var tag=this.getHtmlElementHandle();
return tag.style.visibility=="visible";
};
nitobi.ui.UiElement.prototype.beginFloatMode=function(){
var tag=this.getHtmlElementHandle();
tag.style.position="absolute";
};
nitobi.ui.UiElement.prototype.isFloating=function(){
var tag=this.getHtmlElementHandle();
return tag.style.position=="absolute";
};
nitobi.ui.UiElement.prototype.setX=function(x){
var tag=this.getHtmlElementHandle();
tag.style.left=x+"px";
};
nitobi.ui.UiElement.prototype.getX=function(){
var tag=this.getHtmlElementHandle();
return tag.style.left;
};
nitobi.ui.UiElement.prototype.setY=function(y){
var tag=this.getHtmlElementHandle();
tag.style.top=y+"px";
};
nitobi.ui.UiElement.prototype.getY=function(){
var tag=this.getHtmlElementHandle();
return tag.style.top;
};
nitobi.ui.UiElement.prototype.render=function(_6e6,_6e7,_6e8){
var xsl=this.m_Xsl;
if(xsl!=null&&xsl.indexOf("xsl:stylesheet")==-1){
xsl="<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"><xsl:output method=\"html\" version=\"4.0\" />"+xsl+"</xsl:stylesheet>";
}
if(null==_6e7){
_6e7=nitobi.xml.createXslDoc(xsl);
}
if(null==_6e8){
_6e8=nitobi.xml.createXmlDoc(this.m_Xml);
}
Eba.Error.assert(nitobi.xml.isValidXml(_6e8),"Tried to render invalid XML according to Mozilla. The XML is "+_6e8.xml);
var html=nitobi.xml.transform(_6e8,_6e7);
if(html.xml){
html=html.xml;
}
if(null==_6e6){
document.body.insertAdjacentHTML("beforeEnd",html);
}else{
_6e6.innerHTML=html;
}
this.attachToTag();
};
nitobi.ui.UiElement.prototype.attachToTag=function(){
var _6eb=this.getHtmlElementHandle();
if(_6eb!=null){
_6eb.object=this;
_6eb.jsobject=this;
_6eb.javascriptObject=this;
}
};
nitobi.ui.UiElement.prototype.dispose=function(){
var _6ec=this.getHtmlElementHandle();
if(_6ec!=null){
_6ec.object=null;
}
this.m_Xml=null;
this.m_Xsl=null;
this.m_HtmlElementHandle=null;
};
nitobi.ui.InteractiveUiElement=function(_6ed){
this.enable();
};
nitobi.lang.extend(nitobi.ui.InteractiveUiElement,nitobi.ui.UiElement);
nitobi.ui.InteractiveUiElement.prototype.enable=function(){
this.m_Enabled=true;
};
nitobi.ui.InteractiveUiElement.prototype.disable=function(){
this.m_Enabled=false;
};
nitobi.ui.ButtonXsl="<xsl:template match=\"button\">"+"<div class=\"EbaButton\" onmousemove=\"return false;\" onmousedown=\"if (this.object.m_Enabled) this.className='EbaButtonDown';\" onmouseup=\"this.className='EbaButton';\" onmouseover=\"if (this.object.m_Enabled) this.className='EbaButtonHighlight';\" onmouseout=\"this.className='EbaButton';\" align=\"center\">"+"<xsl:attribute name=\"image_disabled\">"+"<xsl:choose>"+"<xsl:when test=\"../../@image_directory\">"+"<xsl:value-of select=\"concat(../../@image_directory,@image_disabled)\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"@image_disabled\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"<xsl:attribute name=\"image_enabled\">"+"<xsl:choose>"+"<xsl:when test=\"../../@image_directory\">"+"<xsl:value-of select=\"concat(../../@image_directory,@image)\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"@image\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"<xsl:attribute name=\"title\">"+"<xsl:value-of select=\"@tooltip_text\" />"+"</xsl:attribute>"+"<xsl:attribute name=\"onclick\">"+"<xsl:value-of select='concat(&quot;v&quot;,&quot;a&quot;,&quot;r&quot;,&quot; &quot;,&quot;e&quot;,&quot;=&quot;,&quot;&apos;&quot;,@onclick_event,&quot;&apos;&quot;,&quot;;&quot;,&quot;e&quot;,&quot;v&quot;,&quot;a&quot;,&quot;l&quot;,&quot;(&quot;,&quot;t&quot;,&quot;h&quot;,&quot;i&quot;,&quot;s&quot;,&quot;.&quot;,&quot;o&quot;,&quot;b&quot;,&quot;j&quot;,&quot;e&quot;,&quot;c&quot;,&quot;t&quot;,&quot;.&quot;,&quot;o&quot;,&quot;n&quot;,&quot;C&quot;,&quot;l&quot;,&quot;i&quot;,&quot;c&quot;,&quot;k&quot;,&quot;H&quot;,&quot;a&quot;,&quot;n&quot;,&quot;d&quot;,&quot;l&quot;,&quot;e&quot;,&quot;r&quot;,&quot;(&quot;,&quot;e&quot;,&quot;)&quot;,&quot;)&quot;,&quot;;&quot;,&apos;&apos;)' />"+"</xsl:attribute>"+"<xsl:attribute name=\"id\">"+"<xsl:value-of select=\"@id\" />"+"</xsl:attribute>"+"<xsl:attribute name=\"style\">"+"<xsl:choose>"+"<xsl:when test=\"../../@height\">"+"<xsl:value-of select=\"concat('float:left;width:',../../@height,'px;height:',../../@height - 1,'px')\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"concat('float:left;width:',@width,'px;height:',@height,'px')\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"<img border=\"0\">"+"<xsl:attribute name=\"src\">"+"<xsl:choose>"+"<xsl:when test=\"../../@image_directory\">"+"<xsl:value-of select=\"concat(../../@image_directory,@image)\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"@image\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"<xsl:attribute name=\"style\">"+"<xsl:variable name=\"top_offset\">"+"<xsl:choose>"+"<xsl:when test=\"@top_offset\">"+"<xsl:value-of select=\"@top_offset\" />"+"</xsl:when>"+"<xsl:otherwise>"+"0"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:variable>"+"<xsl:choose>"+"<xsl:when test=\"../../@height\">"+"<xsl:value-of select=\"concat('MARGIN-TOP:',((../../@height - @height) div 2) - 1 + number($top_offset),'px;MARGIN-BOTTOM:0px')\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"concat('MARGIN-TOP:',(@height - @image_height) div 2,'px;MARGIN-BOTTOM:0','px')\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"</img><![CDATA[ ]]>"+"</div>"+"</xsl:template>";
nitobi.ui.Button=function(xml,id){
this.initialize(xml,nitobi.ui.ButtonXsl,id);
this.enable();
};
nitobi.lang.extend(nitobi.ui.Button,nitobi.ui.InteractiveUiElement);
nitobi.ui.Button.prototype.onClickHandler=function(_6f0){
if(this.m_Enabled){
eval(_6f0);
}
};
nitobi.ui.Button.prototype.disable=function(){
nitobi.ui.Button.base.disable.call(this);
var _6f1=this.getHtmlElementHandle();
_6f1.childNodes[0].src=_6f1.getAttribute("image_disabled");
};
nitobi.ui.Button.prototype.enable=function(){
nitobi.ui.Button.base.enable.call(this);
var _6f2=this.getHtmlElementHandle();
_6f2.childNodes[0].src=_6f2.getAttribute("image_enabled");
};
nitobi.ui.Button.prototype.dispose=function(){
nitobi.ui.Button.base.dispose.call(this);
};
nitobi.ui.BinaryStateButtonXsl="<xsl:template match=\"binarystatebutton\">"+"<div class=\"EbaBinaryStateButton\" onmousemove=\"return false;\" onmousedown=\"if (this.object.m_Enabled) this.className='EbaButtonDown';\" onmouseup=\"(this.object.isChecked()?this.object.check():this.object.uncheck())\" onmouseover=\"if (this.object.m_Enabled) this.className='EbaButtonHighlight';\" onmouseout=\"(this.object.isChecked()?this.object.check():this.object.uncheck())\" align=\"center\">"+"<xsl:attribute name=\"image_disabled\">"+"<xsl:choose>"+"<xsl:when test=\"../../@image_directory\">"+"<xsl:value-of select=\"concat(../../@image_directory,@image_disabled)\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"@image_disabled\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"<xsl:attribute name=\"image_enabled\">"+"<xsl:choose>"+"<xsl:when test=\"../../@image_directory\">"+"<xsl:value-of select=\"concat(../../@image_directory,@image)\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"@image\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"<xsl:attribute name=\"title\">"+"<xsl:value-of select=\"@tooltip_text\" />"+"</xsl:attribute>"+"<xsl:attribute name=\"onclick\">"+"<xsl:value-of select='concat(\"this.object.toggle();\",&quot;v&quot;,&quot;a&quot;,&quot;r&quot;,&quot; &quot;,&quot;e&quot;,&quot;=&quot;,&quot;&apos;&quot;,@onclick_event,&quot;&apos;&quot;,&quot;;&quot;,&quot;e&quot;,&quot;v&quot;,&quot;a&quot;,&quot;l&quot;,&quot;(&quot;,&quot;t&quot;,&quot;h&quot;,&quot;i&quot;,&quot;s&quot;,&quot;.&quot;,&quot;o&quot;,&quot;b&quot;,&quot;j&quot;,&quot;e&quot;,&quot;c&quot;,&quot;t&quot;,&quot;.&quot;,&quot;o&quot;,&quot;n&quot;,&quot;C&quot;,&quot;l&quot;,&quot;i&quot;,&quot;c&quot;,&quot;k&quot;,&quot;H&quot;,&quot;a&quot;,&quot;n&quot;,&quot;d&quot;,&quot;l&quot;,&quot;e&quot;,&quot;r&quot;,&quot;(&quot;,&quot;e&quot;,&quot;)&quot;,&quot;)&quot;,&quot;;&quot;,&apos;&apos;)' />"+"</xsl:attribute>"+"<xsl:attribute name=\"id\">"+"<xsl:value-of select=\"@id\" />"+"</xsl:attribute>"+"<xsl:attribute name=\"style\">"+"<xsl:choose>"+"<xsl:when test=\"../../@height\">"+"<xsl:value-of select=\"concat('float:left;width:',../../@height,'px;height:',../../@height - 1,'px')\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"concat('float:left;width:',@width,'px;height:',@height,'px')\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"<img border=\"0\">"+"<xsl:attribute name=\"src\">"+"<xsl:choose>"+"<xsl:when test=\"../../@image_directory\">"+"<xsl:value-of select=\"concat(../../@image_directory,@image)\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"@image\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"<xsl:attribute name=\"style\">"+"<xsl:variable name=\"top_offset\">"+"<xsl:choose>"+"<xsl:when test=\"@top_offset\">"+"<xsl:value-of select=\"@top_offset\" />"+"</xsl:when>"+"<xsl:otherwise>"+"0"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:variable>"+"<xsl:choose>"+"<xsl:when test=\"../../@height\">"+"<xsl:value-of select=\"concat('MARGIN-TOP:',((../../@height - @height) div 2) - 1 + number($top_offset),'px;MARGIN-BOTTOM:0px')\" />"+"</xsl:when>"+"<xsl:otherwise>"+"<xsl:value-of select=\"concat('MARGIN-TOP:',(@height - @image_height) div 2,'px;MARGIN-BOTTOM:0','px')\" />"+"</xsl:otherwise>"+"</xsl:choose>"+"</xsl:attribute>"+"</img><![CDATA[ ]]>"+"</div>"+"</xsl:template>";
nitobi.ui.BinaryStateButton=function(xml,id){
this.initialize(xml,nitobi.ui.BinaryStateButtonXsl,id);
this.m_Checked=false;
};
nitobi.lang.extend(nitobi.ui.BinaryStateButton,nitobi.ui.Button);
nitobi.ui.BinaryStateButton.prototype.isChecked=function(){
return this.m_Checked;
};
nitobi.ui.BinaryStateButton.prototype.check=function(){
var _6f5=this.getHtmlElementHandle();
_6f5.className="EbaButtonChecked";
this.m_Checked=true;
};
nitobi.ui.BinaryStateButton.prototype.uncheck=function(){
var _6f6=this.getHtmlElementHandle();
_6f6.className="EbaButton";
this.m_Checked=false;
};
nitobi.ui.BinaryStateButton.prototype.toggle=function(){
var _6f7=this.getHtmlElementHandle();
if(_6f7.className=="EbaButtonChecked"){
this.uncheck();
}else{
this.check();
}
};
nitobi.ui.ToolbarXsl="<xsl:template match=\"//toolbar\">"+"<div class=\"EbaToolbar\" style=\"z-index:800\">"+"<xsl:attribute name=\"id\">"+"<xsl:value-of select=\"@id\" />"+"</xsl:attribute>"+"<xsl:attribute name=\"style\">float:left;position:relative;"+"<xsl:value-of select=\"concat('width:',@width,'px;height:',@height,'px')\" />"+"</xsl:attribute>"+"<div id=\"ToolbarTitle\" onmousedown=\"this.parentNode.jsobject.dragWindow(event)\" ondblclick=\"this.parentNode.jsobject.dock()\" style=\"width:100%;position:absolute;visibility:hidden\">"+"<div class=\"EbaToolbarTitle\" >"+"<div style=\"float:right;\" onclick=\"this.parentNode.parentNode.parentNode.jsobject.dock();\">^</div>"+"<xsl:value-of select=\"@title\"/>"+"</div>"+"</div> "+"<div onmousedown=\"this.parentNode.jsobject.startDrag(event)\" id=\"handle\" style=\"width:10px;height:100%;float:left;\" class=\"EbaToolbarHandle\"><span></span></div>"+"<xsl:apply-templates />"+"</div>"+"</xsl:template>"+nitobi.ui.ButtonXsl+nitobi.ui.BinaryStateButtonXsl+"<xsl:template match=\"separator\">"+"<div align='center'>"+"<xsl:attribute name=\"style\">"+"<xsl:value-of select=\"concat('float:left;width:',@width,';height:',@height)\" />"+"</xsl:attribute>"+"<xsl:attribute name=\"id\">"+"<xsl:value-of select=\"@id\" />"+"</xsl:attribute>"+"<img border='0'>"+"<xsl:attribute name=\"src\">"+"<xsl:value-of select=\"concat(//@image_directory,@image)\" />"+"</xsl:attribute>"+"<xsl:attribute name=\"style\">"+"<xsl:value-of select=\"concat('MARGIN-TOP:3','px;MARGIN-BOTTOM:0','px')\" />"+"</xsl:attribute>"+"</img>"+"</div>"+"</xsl:template>";
nitobi.ui.Toolbar=function(xml,id){
nitobi.ui.Toolbar.baseConstructor.call(this);
this.initialize(xml,nitobi.ui.ToolbarXsl,id);
this.m_isFloating=false;
};
nitobi.lang.extend(nitobi.ui.Toolbar,nitobi.ui.InteractiveUiElement);
nitobi.ui.Toolbar.prototype.getUiElements=function(){
return this.m_UiElements;
};
nitobi.ui.Toolbar.prototype.setUiElements=function(_6fa){
this.m_UiElements=_6fa;
};
nitobi.ui.Toolbar.prototype.attachButtonObjects=function(){
if(!this.m_UiElements){
this.m_UiElements=new Array();
var tag=this.getHtmlElementHandle();
var _6fc=tag.childNodes;
for(var i=0;i<_6fc.length;i++){
var _6fe=_6fc[i];
if(_6fe.nodeType!=3&&_6fe.className!="EbaToolbarTitle"&&_6fe.className!="EbaToolbarHandle"){
var _6ff;
switch(_6fe.className){
case ("EbaButton"):
_6ff=new nitobi.ui.Button(null,_6fe.id);
break;
case ("EbaBinaryStateButton"):
_6ff=new nitobi.ui.BinaryStateButton(null,_6fe.id);
break;
default:
_6ff=new nitobi.ui.UiElement(null,null,_6fe.id);
break;
}
_6ff.attachToTag();
this.m_UiElements[_6fe.id]=_6ff;
}
}
}
};
nitobi.ui.Toolbar.prototype.render=function(_700){
nitobi.ui.Toolbar.base.base.render.call(this,_700);
this.attachButtonObjects();
};
nitobi.ui.Toolbar.prototype.disableAllElements=function(){
for(var i in this.m_UiElements){
if(this.m_UiElements[i].disable){
this.m_UiElements[i].disable();
}
}
};
nitobi.ui.Toolbar.prototype.enableAllElements=function(){
for(var i in this.m_UiElements){
if(this.m_UiElements[i].enable){
this.m_UiElements[i].enable();
}
}
};
nitobi.ui.Toolbar.prototype.attachToTag=function(){
nitobi.ui.Toolbar.base.base.attachToTag.call(this);
this.attachButtonObjects();
};
nitobi.ui.Toolbar.prototype.getGrabbyElement=function(){
var tag=this.getHtmlElementHandle();
return tag.childNodes[1];
};
nitobi.ui.Toolbar.prototype.dragStart=function(){
var tag=this.getHtmlElementHandle();
return tag.childNodes[1];
};
nitobi.ui.Toolbar.prototype.startDrag=function(_705){
var evt;
if(nitobi.browser.IE){
evt=window.event;
}else{
evt=_705;
}
var tag=this.getHtmlElementHandle();
var _708=this.getGrabbyElement();
_708.style.visibility="hidden";
_708.style.position="absolute";
this.dragDiv=document.getElementById("toolbar_window"+tag.id);
if(null==this.dragDiv){
this.dragDiv=document.createElement("toolbar_window"+tag.id);
document.body.appendChild(this.dragDiv);
this.dragDiv.jsobject=this;
}
tag.swapNode(this.dragDiv);
tag.style.position="absolute";
var This=this;
if(nitobi.browser.IE){
x=window.event.clientX+document.documentElement.scrollLeft+document.body.scrollLeft;
y=window.event.clientY+document.documentElement.scrollTop+document.body.scrollTop;
}else{
x=_705.clientX+window.scrollX;
y=_705.clientY+window.scrollY;
}
tag.style.top=y-5;
tag.style.left=x-5;
var _70a=tag.childNodes[0].style;
_70a.visibility="visible";
_70a.position="";
tag.style.height="41px";
tag.className="EbaToolbarFloating";
nitobi.ui.startDragOperation(tag,_705);
if(!this.m_isFloating&&this.undockEvent){
this.m_isFloating=true;
this.undockEvent();
}else{
if(!this.m_isFloating){
this.m_isFloating=true;
}
}
};
nitobi.ui.Toolbar.prototype.dragWindow=function(_70b){
var evt;
if(nitobi.browser.IE){
evt=window.event;
}else{
evt=_70b;
}
nitobi.ui.startDragOperation(this.getHtmlElementHandle(),_70b);
};
nitobi.ui.Toolbar.prototype.dock=function(){
var tag=this.getHtmlElementHandle();
tag.style.position="";
tag.style.height="23px";
tag.className="EbaToolbar";
var _70e=tag.childNodes[0].style;
_70e.position="absolute";
_70e.visibility="hidden";
tag.swapNode(this.dragDiv);
var _70f=this.getGrabbyElement();
_70f.style.visibility="visible";
_70f.style.position="";
this.m_isFloating=false;
if(this.dockEvent){
this.dockEvent();
}
tag=null;
_70e=null;
};
nitobi.ui.Toolbar.prototype.dispose=function(){
if(typeof (this.m_UiElements)!="undefined"){
for(var _710 in this.m_UiElements){
this.m_UiElements[_710].dispose();
}
this.m_UiElements=null;
}
nitobi.ui.Toolbar.base.dispose.call(this);
};
nitobi.lang.defineNs("nitobi.calendar");
if(false){
nitobi.calendar=function(){
};
}
nitobi.calendar.DatePicker=function(_711){
nitobi.prepare();
nitobi.calendar.DatePicker.baseConstructor.call(this,_711);
this.renderer=new nitobi.calendar.Renderer();
this.onSetDate=new nitobi.base.Event();
this.eventMap["setdate"]=this.onSetDate;
if(!this.getStartDate()){
var date=nitobi.base.DateMath.getMonthStart(this.getDate()||new Date());
this.setStartDate(date);
}
this.subscribeDeclarationEvents();
};
nitobi.lang.extend(nitobi.calendar.DatePicker,nitobi.ui.Element);
nitobi.base.Registry.getInstance().register(new nitobi.base.Profile("nitobi.calendar.DatePicker",null,false,"ntb:datepicker"));
nitobi.calendar.DatePicker.prototype.getDate=function(){
return this.getDateAttribute("date");
};
nitobi.calendar.DatePicker.prototype.setDate=function(date){
if(arguments.length<1){
date=new Date();
}else{
if(arguments.length>1){
date=eval("new Date("+nitobi.lang.toArray(arguments).join(",")+")");
}else{
if(typeof date!="object"){
date=new Date(date);
}
}
}
if(nitobi.base.DateMath.invalid(date)){
date=null;
}
this.setDateAttribute("date",date);
var _714=this.getHtmlNode("value");
if(_714){
_714.value=this.getFormatter()(date);
}
this.onSetDate.notify(new nitobi.ui.ElementEventArgs(this,this.onSetDate));
};
nitobi.calendar.DatePicker.prototype.getStartDate=function(){
return this.getDateAttribute("startdate");
};
nitobi.calendar.DatePicker.prototype.setStartDate=function(date){
date=nitobi.base.DateMath.subtract(date,"d",date.getDay());
this.setDateAttribute("startdate",date);
};
nitobi.calendar.DatePicker.prototype.isTimePickerEnabled=function(){
return this.getBoolAttribute("timepickerenabled",false);
};
nitobi.calendar.DatePicker.prototype.setTimePickerEnabled=function(_716){
this.setBoolAttribute("timepickerenabled",_716);
};
nitobi.calendar.DatePicker.prototype.getWidth=function(){
return this.getIntAttribute("width",180);
};
nitobi.calendar.DatePicker.prototype.getHeight=function(){
return this.getIntAttribute("height",192);
};
nitobi.calendar.DatePicker.prototype.getCssClass=function(){
return this.getAttribute("cssclass","");
};
nitobi.calendar.DatePicker.prototype.getState=function(){
return this;
};
nitobi.calendar.DatePicker.prototype.getFormattedDate=function(){
return this.getFormatter().call(this,this.getDate());
};
nitobi.calendar.DatePicker.prototype.nextMonth=function(){
var date=this.getStartDate();
date=nitobi.base.DateMath.getMonthStart(nitobi.base.DateMath.add(date,"d",42));
this.setStartDate(date);
this.render();
};
nitobi.calendar.DatePicker.prototype.prevMonth=function(){
var date=this.getStartDate();
date=nitobi.base.DateMath.getMonthStart(nitobi.base.DateMath.add(date,"d",-12));
this.setStartDate(date);
this.render();
};
nitobi.calendar.DatePicker.prototype.getFormatter=function(){
if(this.formatter){
return this.formatter;
}
eval("var f = "+this.getAttribute("formatter","nitobi.base.DateMath.toIso8601"));
return this.formatter=f;
};
nitobi.calendar.DatePicker.prototype.setFormatter=function(_719){
this.formatter=_719;
};
nitobi.calendar.DatePicker.prototype.handleClick=function(evt,_71b){
var td=evt.srcElement;
if(td.nodeName!="TD"){
return;
}
var _71d=this.getDate();
if(_71d){
var days=nitobi.base.DateMath.getNumberOfDays(this.getStartDate(),_71d)-1;
if(days>=0&&days<42){
var row=2+Math.floor(days/7);
var col=days%7;
var _721=this.getHtmlNode("table");
nitobi.html.Css.removeClass(_721.rows[row].cells[col],"ntb-dp-currentday");
}
}
var tr=_71b;
nitobi.html.Css.addClass(td,"ntb-dp-currentday");
var date=nitobi.base.DateMath.add(nitobi.base.DateMath.clone(this.getStartDate()),"d",(tr.rowIndex-2)*7+td.cellIndex);
this.setDate(date);
};
nitobi.calendar.DatePicker.prototype.render=function(){
nitobi.calendar.DatePicker.base.render.call(this);
var rows=this.getHtmlNode().getElementsByTagName("tr");
for(var i=2;i<8;i++){
nitobi.html.attachEvent(rows[i],"click",this.handleClick,this);
}
nitobi.html.attachEvent(this.getHtmlNode("nextmonth"),"anyclick",this.nextMonth,this);
nitobi.html.attachEvent(this.getHtmlNode("prevmonth"),"anyclick",this.prevMonth,this);
};
nitobi.calendar.DatePicker.prototype.getMonthNames=function(){
return this.monthNames||(this.monthNames=nitobi.calendar.DatePicker.defaultMonthNames);
};
nitobi.calendar.DatePicker.prototype.setMonthNames=function(_726){
this.monthNames=_726;
};
nitobi.calendar.DatePicker.prototype.getDayNames=function(){
return this.dayNames||(this.dayNames=nitobi.calendar.DatePicker.defaultDayNames);
};
nitobi.calendar.DatePicker.prototype.setDayNames=function(_727){
this.dayNames=_727;
};
nitobi.calendar.DatePicker.defaultMonthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];
nitobi.calendar.DatePicker.defaultDayNames=["S","M","T","W","T","F","S"];
nitobi.lang.defineNs("nitobi.calendar");
nitobi.calendar.Renderer=function(){
nitobi.html.IRenderer.call(this);
};
nitobi.lang.implement(nitobi.calendar.Renderer,nitobi.html.IRenderer);
nitobi.calendar.Renderer.prototype.renderToString=function(_728){
var _729=nitobi.base.DateMath;
var _72a=_728.getDate();
var _72b=_728.getStartDate();
var date=_72b.getDate();
var _72d=_72a?_729.getNumberOfDays(_72b,_72a)-1:1000;
var _72e=_729.getMonthDays(_72b)-_72b.getDate()+1;
var _72f=_729.add(_729.clone(_72b),"d",_72e);
var _730=_729.getMonthDays(_72f);
_730=_730+_72e>42?42-_72e:_730;
var id=_728.getId();
var _732=_72e>_730;
var year=_732?_72b.getFullYear():_72f.getFullYear();
var _734=_728.getMonthNames();
var _735=_734[(_72b.getMonth()+!_732)%12];
var _736=_728.getDayNames();
var str=new nitobi.lang.StringBuilder();
var _738=true;
var _739=false;
var _73a=false;
str.append("<div onselectstart=\"return false;\" id=\""+id+"\" class=\"ntb-dp\" style=\"width:"+_728.getWidth()+"px;height:"+_728.getHeight()+"px;\"><div id=\""+id+".themer\" style=\"width:100%;height:100%;\" class=\""+_728.getCssClass()+"\">");
str.append("<table id=\""+id+".table\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"width:100%;height:100%;\" class=\"ntb-dp-table\">");
str.append("<thead><tr class=\"ntb-dp-monthheader\">");
str.append("<th><a id=\""+id+".prevmonth\" class=\"ntb-dp-prevmonth\" href=\"#\" onclick=\"return false;\">&#9650;</a></th>");
str.append("<th colspan=\"5\" style=\"width:70%;overflow-x:hidden;\">");
str.append("<a id=\""+id+".month\" class=\"ntb-dp-month\" href=\"#\" onclick=\"return false;\">"+_735+"</a> ");
str.append("<a id=\""+id+".year\" class=\"ntb-dp-year\" href=\"#\" onclick=\"return false;\">"+year+"</a>");
str.append("</th>");
str.append("<th><a id=\""+id+".nextmonth\" class=\"ntb-dp-nextmonth\" href=\"#\" onclick=\"return false;\">&#9660;</a></th>");
str.append("</tr><tr>");
for(var i=0;i<7;i++){
str.append("<th class=\"ntb-dp-dayheader\">"+_736[i]+"</th>");
}
str.append("</tr></thead><tbody>");
for(var i=0;i<6;i++){
str.append("<tr>");
for(var j=0;j<7;j++){
str.append("<td class=\"");
str.append(!_72d--?"ntb-dp-currentday ":"");
if(!_732&&_738){
str.append("ntb-dp-lastmonth ");
}else{
if((_732&&_738)||(!_732&&_739)){
str.append("ntb-dp-thismonth ");
}else{
str.append("ntb-dp-nextmonth");
}
}
str.append(" ntb-dp-day\">"+date+"</td>");
if(_72e){
if(!--_72e){
_738=false;
_739=true;
date=1;
}else{
date++;
}
}else{
if(date==_730){
_739=false;
_73a=true;
}
date=date==_730?1:date+1;
}
}
str.append("</tr>");
}
str.append("</tbody><colgroup span=\"7\" style=\"width:1/7%\"></colgroup></table><input id=\""+id+".value\" name=\""+id+"\" type=\"hidden\" value=\""+_728.getFormattedDate()+"\" /></div></div>");
return str.toString();
};


var temp_ntb_apiDoc='<?xml version="1.0" ?><interfaces>	<interface name="nitobi.grid.Cell" tagname="ntb:cell" 			remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaCellApiDocumentation" 			examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets" 			summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaCellApiDocumentation">		<summary>nitobi.grid.Cell represents a single data cell in a Grid.</summary>		<properties>			<property name="Row" type="int" access="public" persist="js" default=""				readwrite="read" impact="xsl row" testvalue="1">			</property>			<property name="Column" type="int" access="public" persist="js" default=""				readwrite="read" impact="xsl row" testvalue="1">			</property>			<property name="DomNode" type="xml" access="public" persist="js" default=""				readwrite="read" impact="xsl row" testvalue="1">			</property>			<property name="DataNode" type="xml" access="public" persist="js" default=""				readwrite="read" impact="xsl row" testvalue="1">			</property>		</properties>		<methods>                                   <method name="getCellElement" access="private"></method>            <method name="getRowNumber" access="private"></method>            <method name="getColumnNumber" access="private"></method>                                   <method name="Focus" access="public"></method>		</methods>	</interface>		<interface name="nitobi.grid.Columns" ></interface>		<interface name="nitobi.grid.Column" tagname="ntb:column" 		remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaColumnApiDocumentation" 		examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets" 		summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaColumnApiDocumentation">		<summary>nitobi.grid.Column represents a single column of data in a Grid.</summary>		<properties>			<property name="Align" type="string" access="private" persist="model" model="Align" default="&quot;left&quot;"				readwrite="readwrite" impact="xsl row " htmltag="align" testvalue="&quot;&quot;">							</property>			<property name="ClassName" type="string" access="private" persist="model" model="ClassName" default="&quot;&quot;"				readwrite="readwrite" impact="xsl row " htmltag="classname" testvalue="&quot;&quot;">							</property>			<property name="CssStyle" type="string" access="private" persist="model" model="CssStyle" default="&quot;&quot;"				readwrite="readwrite" impact="xsl row " htmltag="cssstyle" testvalue="&quot;&quot;">							</property>			<property name="ColumnName" type="string" access="private" persist="model" model="ColumnName" default="&quot;&quot;"				readwrite="readwrite" impact="xsl row" htmltag="columnname" testvalue="&quot;&quot;">			</property>			<property name="Type" type="string" access="private" persist="model" model="type" code="" default="&quot;text&quot;"				impact="row" readwrite="readwrite" htmltag="type" testvalue="&quot;pcm&quot;">			</property>			<property name="DataType" type="string" access="public" persist="model" model="DataType" default="text" 				readwrite="readwrite" impact="xsl row" code="" testvalue="&quot;text&quot;">			</property>			<property name="Editable" type="bool" access="public" persist="model" model="Editable" default="true" 				readwrite="readwrite" impact="model" htmltag="editable" testvalue="false">			</property>			<property name="Initial" type="string" access="public" default="&quot;&quot;" htmltag="initial"				readwrite="readwrite" persist="model" model="Initial" testvalue="&quot;test&quot;">			</property>			<property name="Label" model="Label" type="string" access="public" default="&quot;&quot;"				htmltag="label" readwrite="read" persist="model meta" impact="xsl row" testvalue="&quot;test&quot;">			</property>			<property name="GetHandler" type="string" access="private" default="&quot;&quot;"				persist="model" model="GetHandler" htmltag="gethandler" readwrite="readwrite" impact="xsl row" testvalue="&quot;test&quot;">			</property>						<property name="DataSource" type="string" access="private" default="&quot;&quot;"				persist="model" model="DataSource" htmltag="datasource" readwrite="readwrite" impact="xsl row" testvalue="&quot;test&quot;">			</property>			<property name="Template" type="string" access="private" default="&quot;&quot;"				persist="model" model="Template" htmltag="template" readwrite="readwrite" impact="xsl row" testvalue="&quot;test&quot;">			</property>			<property name="TemplateUrl" type="string" access="private" default="&quot;&quot;"				persist="model" model="TemplateUrl" htmltag="templateurl" readwrite="readwrite" impact="xsl row" testvalue="&quot;test&quot;">			</property>			<property name="MaxLength" type="int" access="public" default="255" htmltag="maxlength" readwrite="readwrite"				persist="model meta" impact="xsl row" model="maxlength" testvalue="200">			</property>			<property name="SortDirection" model="SortDirection" type="string" access="public"				default="&quot;Desc&quot;" htmltag="sortdirection" readwrite="readwrite" persist="model" impact="sort"				testvalue="&quot;Desc&quot;">			</property>			<property name="SortEnabled" model="SortEnabled" type="bool" access="public"				default="true" htmltag="sortenabled" readwrite="readwrite" persist="model" impact="sort"				testvalue="true">			</property>			<property name="Width" model="Width" type="int" access="public" default="100" htmltag="width"				readwrite="readwrite" persist="model" impact="size css row" testvalue="200">				<include path="//*[@id=\'widthsample\']" type="example"/>			</property>			<property name="Visible" model="Visible" type="bool" access="private" default="true" htmltag="visible"				readwrite="readwrite" persist="model" impact="size css row" testvalue="true">			</property>			<property name="xdatafld" type="string" access="public" default="&quot;&quot;" readwrite="read"				persist="meta model" model="xdatafld" htmltag="xdatafld">			</property>			<property name="Value" type="string" access="public" default="&quot;&quot;" readwrite="read"				persist="meta model" model="Value" htmltag="value">			</property>			<property name="xi" type="int" access="private" default="100" htmltag="xi" readwrite="read"				persist="meta model" model="xi" short="xi">			</property>			<property name="Editor" model="Editor" namespace="Eba.Grid" type="Editor" access="private" default="Eba.Grid.TextEditor" htmltag="editor"				readwrite="readwrite" persist="model" impact="" testvalue="true">			</property>		</properties>		<events>			<event name="OnCellClickEvent" model="OnCellClickEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncellclickevent"				persist="model"></event>			<event name="OnBeforeCellClickEvent" model="OnBeforeCellClickEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforecellclickevent"				persist="model"></event>			<event name="OnCellDblClickEvent" model="OnCellDblClickEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncelldblclickevent"				persist="model"></event>			<event name="OnHeaderDoubleClickEvent" model="OnHeaderDoubleClickEvent" type="string" access="private" default="&quot;&quot;"				readwrite="readwrite" htmltag="onheaderdoubleclickevent" persist="model"></event>			<event name="OnHeaderClickEvent" model="OnHeaderClickEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onheaderclickevent"				persist="model"></event>			<event name="OnBeforeResizeEvent" model="OnBeforeResizeEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforeresizeevent"				persist="model"></event>			<event name="OnAfterResizeEvent" model="OnAfterResizeEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onafterresizeevent"				persist="model"></event>						<event name="OnCellValidateEvent" model="OnCellValidateEvent" type="string" access="private" default="&quot;&quot;" readwrite="readwrite" htmltag="oncellvalidateevent"				persist="model"></event>			<event name="OnBeforeCellEditEvent" model="OnBeforeCellEditEvent" type="String" access="private" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforecelleditevent"				persist="model"></event>			<event name="OnAfterCellEditEvent" model="OnAfterCellEditEvent" type="String" access="private" default="&quot;&quot;" readwrite="readwrite" htmltag="onaftercelleditevent"				persist="model"></event>			<event name="OnCellBlurEvent" model="OnCellBlurEvent" type="String" access="private" default="&quot;&quot;" readwrite="readwrite" htmltag="oncellblurevent"				persist="model"></event>			<event name="OnCellFocusEvent" model="OnCellFocusEvent" type="String" access="private" default="&quot;&quot;" readwrite="readwrite" htmltag="oncellfocusevent"				persist="model"></event>			<event name="OnBeforeSortEvent" model="OnBeforeSortEvent" type="String" access="private" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforesortevent"				persist="model"></event>			<event name="OnAfterSortEvent" model="OnAfterSortEvent" type="String" access="private" default="&quot;&quot;" readwrite="readwrite" htmltag="onaftersortevent"				persist="model"></event>			<event name="OnCellUpdateEvent" model="OnCellUpdateEvent" type="String" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncellupdateevent"				persist="model"></event>		</events>	</interface>	<interface name="EBADateColumn" tagname="ntb:datecolumn" 		remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaDateColumnApiDocumentation" 		examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets" 		summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaDateColumnApiDocumentation">		<properties>			<property name="Mask" htmltag="mask" type="string" persist="model" model="Mask"				access="public" readwrite="readwrite" default="&quot;M/d/yyyy&quot;">							</property>			<property name="CalendarEnabled" htmltag="calendarenabled" type="bool" persist="model" model="CalendarEnabled"				access="public" readwrite="readwrite" default="true">						</property>		</properties>	</interface>	<interface name="EBANumberColumn" tagname="ntb:numbercolumn" 		remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaDateColumnApiDocumentation" 		examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets" 		summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaDateColumnApiDocumentation">		<properties>			<property name="Align" type="string" access="private" persist="model" model="Align" default="&quot;right&quot;"				readwrite="readwrite" impact="xsl row " htmltag="align" testvalue="&quot;&quot;">							</property>			<property name="Mask" htmltag="mask" type="string" persist="model" model="Mask"				access="public" readwrite="readwrite" default="&quot;#,###.00&quot;">							</property>			<property name="GroupingSeparator" htmltag="groupingseparator" type="string" persist="model" model="GroupingSeparator"				access="public" readwrite="readwrite" default="&quot;,&quot;">							</property>			<property name="DecimalSeparator" htmltag="decimalseparator" type="string" persist="model" model="DecimalSeparator"				access="public" readwrite="readwrite" default="&quot;.&quot;">							</property>		</properties>	</interface>	<interface name="EBATextColumn" tagname="ntb:textcolumn" 		remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaTextApiDocumentation" 		examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets" 		summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaTextApiDocumentation">	</interface>	<interface name="EBALookupEditor" tagname="ntb:lookupeditor" 		remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaLookupEditor" 		examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets" 		summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaLookupEditor">				<properties>			<property name="DatasourceId" htmltag="datasourceid" type="string" persist="model" model="DatasourceId" 				access="public" readwrite="readwrite" default="">			</property>			<property name="Datasource" htmltag="datasource" type="string" persist="model" model="Datasource" 				access="public" readwrite="readwrite" default="">			</property>						<property name="GetHandler" htmltag="gethandler" type="string" persist="model" model="GetHandler" 				access="public" readwrite="readwrite" default="">			</property>			<property name="DisplayFields" htmltag="displayfields" type="string" persist="model" model="DisplayFields"				access="public" readwrite="readwrite" default="">			</property>			<property name="ValueField" htmltag="valuefield" type="string" persist="model" model="ValueField"				access="public" readwrite="readwrite" default="">			</property>			<property name="Delay" htmltag="delay" type="string" persist="model" model="Delay"				access="public" readwrite="readwrite" default="">			</property>			<property name="Size" htmltag="size" type="string" persist="model" model="Size"				access="public" readwrite="readwrite" default="6">			</property>		</properties>	</interface>	<interface name="EBACheckboxEditor" tagname="ntb:checkboxeditor" 		remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaCheckboxEditor" 		examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets" 		summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaCheckboxEditor">		<properties>			<property name="DatasourceId" htmltag="datasourceid" type="string" persist="model" model="DatasourceId" 				access="public" readwrite="readwrite" default="">								<include path="//*[@id=\'staticdatacheckboxeditor\']" type="example" />							</property>			<property name="Datasource" htmltag="datasource" type="string" persist="model" model="Datasource" 				access="public" readwrite="readwrite" default="">							</property>			<property name="GetHandler" htmltag="gethandler" type="string" persist="model" model="GetHandler" 				access="public" readwrite="readwrite" default="">				<summary>Specifies the URL of the CheckboxEditor\'s gethandler.  The gethandler must return valid XML data in the EBA format.</summary>								<include path="//*[@id=\'staticdatacheckboxeditor\']" type="example" />							</property>			<property name="DisplayFields" htmltag="displayfields" type="string" persist="model" model="DisplayFields"				access="public" readwrite="readwrite" default="">				<summary>Specifies what fields from the datasource specified by DatasourceId or by the GetHandler will populate the CheckboxEditor\'s listbox.</summary>				<remarks>DisplayFields is a pipe-delimited list of data fields (eg. "field1|field2|field3").</remarks>								<include path="//*[@id=\'staticdatacheckboxeditor\']" type="example" />			</property>			<property name="ValueField" htmltag="valuefield" type="string" persist="model" model="ValueField"				access="public" readwrite="readwrite" default="">				<summary>Specifies the field of the CheckboxEditor\'s data source that will populate the cell.</summary>								<include path="//*[@id=\'staticdatacheckboxeditor\']" type="example" />			</property>			<property name="CheckedValue" htmltag="checkedvalue" type="string" persist="model" model="CheckedValue"				access="public" readwrite="readwrite" default="">							</property>			<property name="UnCheckedValue" htmltag="uncheckedvalue" type="string" persist="model" model="UnCheckedValue"				access="public" readwrite="readwrite" default="">							</property>		</properties>	</interface>	<interface name="EBAImageEditor" tagname="ntb:imageeditor" 		remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaImageEditor" 		examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets" 		summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaImageEditor">				<properties>			<property name="ImageUrl" htmltag="imageurl" type="string" persist="model" model="ImageUrl"				access="public" readwrite="readwrite" default="">			</property>		</properties>	</interface>	<interface name="EBALinkEditor" tagname="ntb:linkeditor" 		remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaLinkEditor" 		examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets" 		summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaLinkEditor">		<properties>		</properties>	</interface>		<interface name="EBATextEditor" tagname="ntb:texteditor" 	remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaTextEditor"     examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets"     summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaTextEditor">		<properties>			<property name="MaxLength" htmltag="maxlength" type="int" persist="model" model="MaxLength"				access="public" readwrite="readwrite" default="255">							</property>		</properties>	</interface>	<interface name="EBATextareaEditor" tagname="ntb:textareaeditor" namespace="Eba.Grid" type="Eba.Grid.TextareaEditor" inherits="Editor" jstype="object" 	remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaTextAreaEditor"     examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets"     summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaTextAreaEditor">				<properties>			<property name="MaxLength" htmltag="maxlength" type="int" persist="model" model="MaxLength"				access="public" readwrite="readwrite" default="255">							</property>		</properties>	</interface>	<interface name="EBALinkEditor" tagname="ntb:linkeditor" 	remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaLinkEditor"     examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets"     summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaLinkEditor">		<properties>			<property name="OpenWindow" htmltag="openwindow" type="bool" persist="model" model="OpenWindow"				access="public" readwrite="readwrite" default="true">							</property>		</properties>	</interface>	<interface name="EBADateEditor" tagname="ntb:dateeditor" namespace="Eba.Grid" type="Eba.Grid.DateEditor" inherits="Editor" jstype="object" 	remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaDateEditor"     examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets"     summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaDateEditor">		<properties>			<property name="Mask" htmltag="mask" type="string" persist="model" model="Mask"				access="public" readwrite="readwrite" default="&quot;M/d/yyyy&quot;">							</property>			<property name="CalendarEnabled" htmltag="calendarenabled" type="bool" persist="model" model="CalendarEnabled"				access="public" readwrite="readwrite" default="true">						</property>		</properties>	</interface>	<interface name="EBAListboxEditor" tagname="ntb:listboxeditor" 	remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaListboxEditor"     examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets"     summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaListboxEditor">			<properties>			<property name="DatasourceId" htmltag="datasourceid" type="string" persist="model" model="DatasourceId" 				access="public" readwrite="readwrite" default="">							</property>			<property name="Datasource" htmltag="datasource" type="string" persist="model" model="Datasource" 				access="public" readwrite="readwrite" default="">							</property>			<property name="GetHandler" htmltag="gethandler" type="string" persist="model" model="GetHandler" 				access="public" readwrite="readwrite" default="">							</property>			<property name="DisplayFields" htmltag="displayfields" type="string" persist="model" model="DisplayFields"				access="public" readwrite="readwrite" default="">							</property>			<property name="ValueField" htmltag="valuefield" type="string" persist="model" model="ValueField"				access="public" readwrite="readwrite" default="">							</property>		</properties>	</interface>	<interface name="nitobi.grid.Row" tagname="ntb:e" namespace="Eba.Grid" type="Eba.Grid.Row" jstype="object" 	remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaRowApiDocumentation"     examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets"     summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaRowApiDocumentation">		<elements>		</elements>		<properties>			<property name="ClassName" type="string" access="private" persist="meta" default="&quot;&quot;"				readwrite="readwrite" impact="xsl row " htmltag="ClassName" testvalue="&quot;&quot;">							</property>			<property name="Height" default="23" code="" type="int" persist="meta" impact="row"				access="public" readwrite="readwrite" htmltag="Height" testvalue="50">							</property>		</properties>	</interface>			<interface name="nitobi.grid.Grid" tagname="ntb:grid" namespace="Eba" type="Eba.Grid.Grid" jstype="object" 	remarkfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaGridApiDocumentation"     examplefile="http://portal:8090/cgi-bin/trac.cgi/wiki/SharedCodeSnippets"     summaryfile="http://portal:8090/cgi-bin/trac.cgi/wiki/EbaGridApiDocumentation">		<elements>			<element name="EBADatasources" minoccurs="0" maxoccurs="1" />			<element name="nitobi.grid.Columns" minoccurs="0" maxoccurs="1" />		</elements>                <methods>                        <method name="selectRowByIndex" access="private">                                <summary>Selects a grid cell by row index.</summary>                                <param name="index" type="int">the row index</param>                                <returns type="nitobi.grid.Row"></returns>                                <include path="//*[@id=\'work1\']" type="example"/>                        </method>                                        <method name="selectRowByKey" access="private">                                                         <summary>Selects a grid cell by key.</summary>                                                          <param name="key" type="string">the key of grid data</param>                                                                                            <returns type="nitobi.grid.Row"></returns>                                                       </method>                                                       <method name="selectCellByCoords" access="public">                                <summary>Activates a grid cell. The activated cell is highlighted.                                 Subsequent function calls such as deleteCurrentRow, insertAfterCurrentRow, getActiveColumnObject, getActiveRowObject depends on the new active cell.                                  The row and colum index starts at 0.                                </summary>                                <param name="column" type="int">column number</param>                                <param name="row" type="int">row number</param>                                <returns type=""></returns>                                     <include type="remark" />                                               </method>                                        <method name="save" access="public">                                <summary>Saves data in the grid.</summary>                                <returns type=""></returns>                        </method>                                                       <method name="insertAfterCurrentRow" access="public">                                <summary>Insert a new row after the row of the active cell.</summary>                                <returns type=""></returns>                        </method>                                        <method name="deleteCurrentRow" access="public">                                <summary>Deletes currently selected row.</summary>                                <returns type=""></returns>                        </method>                                                <method name="insertRow" access="public">                                <summary>Inserts a new row into the grid</summary>                                <returns type=""></returns>                        </method>                                                                       <method name="getCellObject" access="public">                                <summary>Returns the cell object of a grid.</summary>                                <param name="column" type="int">column number</param>                                <param name="row" type="int">row number</param>                                <returns type="nitobi.grid.Cell"></returns>                        </method>                        <method name="getRowObject" access="public">                                <summary>Returns a row object.</summary>                                <param></param>                                <returns type="nitobi.grid.Row"></returns>                        </method>                                                <method name="getRowCount" access="public">                                <summary>Returns the number of rows in the grid.</summary>                                <returns type="int"></returns>                        </method>                                                                       <method name="getSelectedLookupKey" access="public">                                <summary>Returns the selected lookup key</summary>                                <returns type="string"></returns>                        </method>                                                <method name="getSelectedColumnNumber" access="public">                                <summary>Returns the column index of the selected cell. </summary>                                <param name="rel" type="bool">Specifies whether to compensate for frozen columns.</param>                                <returns type="int">Column index of the selected cell.</returns>                        </method>                        <method name="getSelectedColumnObject" access="public">                                <summary>Returns the nitobi.grid.Column object that the selected cell is part of.</summary>                                <returns type="nitobi.grid.Column">nitobi.grid.Column object of the selected cell.</returns>                                                        </method>                        <method name="getSelectedRow" access="private">                                <summary>Returns the row index of the selected cell. </summary>                                <param name="rel" type="bool">Specifies whether to compensate for frozen rows.</param>                                <returns type="int">Row index of the selected cell.</returns>                                                        </method>                        <method name="getSelectedRowObject" access="public">                                <summary>Returns the nitobi.grid.Row object that the selected cell is part of.</summary>                                <returns type="nitobi.grid.Column">nitobi.grid.Row object of the selected cell.</returns>                                                        </method>                        <method name="getSelectedCellObject" access="public">                                <summary>Returns a reference to the nitobi.grid.Cell object representing the currently selected cell in the Grid. </summary>                                                                <returns type="nitobi.grid.Cell">selected nitobi.grid.Cell object.</returns>                                <include  path="//*[@id=\'ebaxml_fielddef_getvalue\']" type="remarks" />                        </method>                        <method name="GridSelection" access="private">                                <summary>The selection object is used during select operations by the user. Its members provide the functionality for displaying the selected(highlighted blocks</summary>                                <param name="oGrid" type="object">A reference to the grid containing the selection</param>                        </method>                        <method name="selectionhighlight" access="private">                                <summary>Highlights the selected area</summary>                        </method>                        <method name="deselect" access="private">                                <summary>Acts as the opposite of highlight</summary>                        </method>                        <method name="containsSelection" access="private">                                <summary>Returns true if the grid contains a valid selection</summary>                        </method>                        <method name="cellIsInSelection" access="private">                                <summary>Returns true if the given Cell is situated inside the active grid selection and the selection is bigger than just one cell.</summary>                        </method>                        <method name="copy" access="private">                                <summary>Copys the current selection into the clipboard. This method stores the data as text with a tab for every column. This is the same format MS Excel uses and therefore the paste method also works with data copied from a MSExcel spreadsheet.</summary>                        </method>                        <method name="paste" access="private">                                <summary>Pasts data from the clipboard into the grid if it contains tabular data. Also pasts data from MSExcel as Excel places data to the clipboard in the form of tabular data as well.</summary>                        </method>                        <method name="getPendingSortColumn" access="public">                                <summary>Retrieves the pending sort column number.</summary>                                <returns type="int">Pending sort column number of the Grid.</returns>                                                        </method>                        <method name="loadNextDataPage" access="public">                                <summary>Loads the next page of data from the database.</summary>                                <remarks>This method requests the data from a getHandler which is a server-side script designed to deliver the requested data.</remarks>                                                                <include path="//*[@id=\'pagingexample\']" type="example" />                        </method>                        <method name="loadPreviousDataPage" access="public">                                <summary>Loads the previous page of data from the database.</summary>                                <remarks>This method requests the data from a getHandler which is a server-side script designed to deliver the requested data.</remarks>                                                                <include path="//*[@id=\'pagingexample\']" type="example" />                        </method>                        <method name="loadDataPage" access="public">                                <summary>Loads the specified page of data from the database.</summary>                                <param name="nStart" type="int">Recordnumber of record which should be display on top of the page.</param>                                                                <include path="//*[@id=\'pagingexample\']" type="example" />                        </method>                        <method name="makeXSL" access="private">                                <summary>Makes the main XSL</summary>                                <remarks>The makeXSL() method is normally called automatically when the grid is first instantiated.</remarks>                        </method>                </methods>		<properties>			<property name="ID" htmltag="id" type="string" access="public" persist="js" readwrite="read"></property>			<property name="uid" type="string" access="public" persist="xml" readwrite="readwrite"></property>			<property name="ToolbarHeight" htmltag="toolbarHeight" type="int" access="public" persist="js" readwrite="readwrite" default="25"></property>						<property name="Selection" type="EBASelection" access="public" persist="js" readwrite="read" default="null"></property>			<property name="Bound" type="bool" access="public" persist="js" readwrite="readwrite" default="false"></property>			<property name="RegisteredTo" htmltag="registeredto" type="string" access="public" persist="js" default="true"				readwrite="read" testvalue="test"></property>			<property name="LicenseKey" htmltag="licensekey" type="string" access="public" persist="js" default="true"				readwrite="read" testvalue="test"></property>			<property name="ToolbarContainerEmpty" type="bool" access="private" persist="xml" default="false"				readwrite="readwrite" testvalue="test">			</property>			<property name="Columns" htmltag="columns" namespace="Eba.Grid" type="Column" access="public" persist="js" default="true"				readwrite="read" testvalue="test"></property>			<property name="ColumnsDefined" htmltag="columnsdefined" type="bool" access="public" persist="js" default="false"				readwrite="readwrite" testvalue="true"></property>			<property name="Declaration" htmltag="declaration" type="xml" access="private" persist="js" default="&quot;&quot;"				readwrite="readwrite" testvalue="&quot;&quot;"></property>			<property name="Datasource" htmltag="datasource" namespace="Eba.Data" type="DatasourceManager" access="public" persist="js" default="true"				readwrite="read" testvalue="test"></property>			<property name="DatasourceId" htmltag="datasourceid" type="string" access="public" persist="xml" default=""				readwrite="read" testvalue="testds"></property>			<property name="CurrentPageIndex" htmltag="currentpageindex" type="int" access="public" persist="xml" default="0"				readwrite="read" testvalue="0"></property>			<property name="ColumnIndicatorsEnabled" htmltag="columnindicatorsenabled" type="bool" access="public" persist="xml" default="true"				readwrite="readwrite" testvalue="false"></property>			<property name="RowIndicatorsEnabled" type="bool" access="private" persist="xml" default="false"				readwrite="readwrite" testvalue="false">			</property>			<property name="ToolbarEnabled" htmltag="toolbarenabled" type="bool" access="public" persist="xml" default="true" readwrite="readwrite"				testvalue="false"></property>			<property name="RowHighlightEnabled" htmltag="rowhighlightenabled" type="bool" access="public" persist="xml" default="false" readwrite="readwrite"				testvalue="false"></property>			<property name="RowSelectEnabled" htmltag="rowselectenabled" type="bool" access="public" persist="xml" default="false" readwrite="readwrite"				testvalue="false" >			</property>			<property name="GridResizeEnabled" htmltag="gridresizeenabled" type="bool" access="public" persist="xml" default="false" readwrite="readwrite"				testvalue="false"></property>			<property name="SingleClickEditEnabled" htmltag="singleclickeditenabled" type="bool" access="public" persist="xml" default="false" readwrite="readwrite"				testvalue="false"></property>			<property name="AutoKeyEnabled" htmltag="autokeyenabled" type="bool" access="public" persist="xml" default="false" readwrite="readwrite"				testvalue="false">			</property>			<property name="ToolTipsEnabled" type="bool" access="private" persist="xml" default="true" readwrite="readwrite"				testvalue="false">			</property>			<property name="EnterTab" type="string" access="public" persist="xml" default="down" readwrite="readwrite"				htmltag="entertab" testvalue="up">			</property>			<property name="HScrollbarEnabled" type="bool" access="private" persist="xml" default="true" readwrite="readwrite"				testvalue="false">			</property>			<property name="VScrollbarEnabled" type="bool" access="private" persist="xml" default="true" readwrite="readwrite"				testvalue="false">			</property>			<property name="RowHeight" type="int" access="private" persist="xml" default="23" readwrite="read"				htmltag="rowheight" testvalue="50">			</property>			<property name="HeaderHeight" type="int" persist="xml" access="private" default="23" readwrite="readwrite"				htmltag="headerheight" testvalue="50">			</property>			<property name="cellWidth" type="int" persist="xml" access="private" default="100" readwrite="read"				testvalue="200">			</property>			<property name="top" default="0" type="int" persist="xml" access="private" readwrite="readwrite"				impact="css xsl row" testvalue="200">			</property>			<property name="bottom" default="0" type="int" persist="xml" access="private" readwrite="readwrite"				impact="css xsl row" testvalue="200">			</property>			<property name="left" default="0" type="int" persist="xml" access="private" readwrite="readwrite"				impace="css xsl row" testvalue="200">			</property> 			<property name="right" default="0" type="int" persist="xml" access="private" readwrite="readwrite"				impact="css xsl row" testvalue="200">			</property>			<property name="indicatorWidth" default="0" type="int" persist="xml" access="private" readwrite="readwrite"				testvalue="50">			</property>			<property name="scrollbarWidth" type="int" persist="xml" access="private" readwrite="readwrite"				testvalue="22" default="22">			</property>			<property name="scrollbarHeight" type="int" persist="xml" access="private" readwrite="readwrite"				testvalue="22" default="22">			</property>			<property name="freezetop" default="0" type="int" persist="xml" access="private" readwrite="readwrite"				impact="size css xsl row" testvalue="2">			</property>			<property name="freezebottom" default="0" type="int" persist="xml" access="private" readwrite="readwrite"				testvalue="2">			</property>			<property name="FrozenLeftColumnCount" htmltag="frozenleftcolumncount" default="0" type="int" persist="xml" access="public" readwrite=""				testvalue="2">							</property>			<property name="freezeright" default="0" type="int" persist="xml" access="private" readwrite="readwrite"				testvalue="2">							</property>			<property name="active" type="string" access="private" default="&quot;&quot;">			</property>			<property name="activeCell" type="nitobi.grid.Cell" access="private" default="null" readwrite="readwrite">			</property>			<property name="activeRow" type="object" access="private" persist="xml" default="null">							</property>			<property name="RowInsertEnabled" type="bool" access="public" persist="xml" default="true" htmltag="rowinsertenabled"				readwrite="readwrite">							</property>			<property name="RowDeleteEnabled" type="bool" persist="xml" access="public" default="true" htmltag="rowdeleteenabled" readwrite="readwrite">							</property>			<property name="Asynchronous" type="bool" access="private" persist="xml" default="true" readwrite="readwrite"				htmltag="asynchronous" testvalue="false">							</property>			<property name="AutoAdd" type="bool" access="private" default="false" htmltag="autoadd">							</property>			<property name="AutoSaveEnabled" type="bool" access="public" persist="xml" default="false" readwrite="readwrite"				htmltag="autosaveenabled" testvalue="true">							</property>			<property name="contentHeight" default="1000" type="int" persist="xml" access="private" readwrite="readwrite"				testvalue="2000">							</property>			<property name="contentWidth" default="1000" type="int" persist="xml" access="private" readwrite="readwrite"				testvalue="2000">							</property>			<property name="ColumnCount" type="int" access="public" persist="xml" default="0" readwrite="read"				 testvalue="20">							</property>			<property name="RowsPerPage" type="int" access="public" persist="xml" default="20" readwrite="readwrite"				htmltag="rowsperpage" testvalue="20">								<include path="//*[@id=\'pagingexample\']" type="example" />			</property>			<property name="element" code="" type="Span" persist="dom" access="private" readwrite="read">							</property>			<property name="entertab" type="string" access="private" persist="xml" default="&quot;RT&quot;"				htmltag="entertab">			</property>			<property name="forceValidate" type="bool" access="private" persist="xml" default="false"				readwrite="readwrite">			</property>			<property name="gridColor" type="string" access="private" persist="xml" default="&quot;#F0F0F0&quot;"				htmltag="gridColor">			</property>			<property name="Height" code="" persist="xml" type="int" access="public" default="100" readwrite="read"				htmltag="height" testvalue="200">							</property>			<property name="hwrap" type="bool" access="private" persist="xml" default="true" htmltag="hwrap">			</property>			<property name="keymode" type="string" access="private" default="&quot;&quot;" htmltag="keymode">			</property>			<property name="KeyGenerator" type="string" access="public" default="&quot;&quot;"				readwrite="readwrite" htmltag="keygenerator" persist="js">				<include path="//*[@id=\'keygeneration\']" type="example" />							</property>			<property name="LastError" type="string" access="public" default="&quot;&quot;" readwrite="read"				persist="xml" testvalue="&quot;testError&quot;">							</property>			<property name="lastSaveHandlerResponse" type="string" access="private" default="&quot;&quot;">							</property>			<property name="MultiRowSelectEnabled" type="bool" access="public" persist="xml" default="false" readwrite="readwrite"				testvalue="false" htmltag="multirowselectenabled">			</property>			<property name="MultiRowSelectField" type="string" access="public" persist="xml" default="" readwrite="readwrite"			 	testvalue="" htmltag="multirowselectfield">			</property>			<property name="MultiRowSelectAttr" type="string" access="private" persist="xml" default="" readwrite="readwrite"			 	>			</property>			<property name="scrolling" type="bool" access="private" default="false">			</property>			<property name="GetHandler" type="string" access="public" persist="xml" default="&quot;&quot;" htmltag="gethandler">								<include path="//*[@id=\'saveget\']" type="example" />			</property>			<property name="SaveHandler" type="string" access="public" persist="xml" default="&quot;&quot;" htmltag="savehandler">								<include path="//*[@id=\'saveget\']" type="example" />			</property>			<property name="scrollX" type="string" access="private" persist="xml" code="" readwrite="readwrite"				htmltag="scrollX" testvalue="&quot;scroll&quot;">							</property>			<property name="scrollY" type="string" access="private" persist="xml" default="&quot;auto&quot;"				readwrite="readwrite" htmltag="scrollY" testvalue="&quot;visible&quot;">							</property>			<property name="showErrors" type="bool" access="private" default="false" readwrite="readwrite"				htmltag="showErrors">							</property>			<property name="uniqueID" default="&quot;&quot;" code="" type="object" access="public" readwrite="read">							</property>			<property name="Version" default="3.01" code="" type="string" persist="js" access="public"				readwrite="read" htmltag="version">							</property>			<property name="vwrap" type="bool" access="private" persist="xml" default="true" htmltag="vwrap">			</property>			<property name="Width" type="int" access="public" persist="xml" readwrite="read" htmltag="width"				testvalue="1000">							</property>			<property name="PagingMode" type="string" access="public" persist="xml" readwrite="read" htmltag="pagingmode" default="&quot;LiveScrolling&quot;">							</property>			<property name="DataMode" type="string" access="public" persist="xml" readwrite="read" htmltag="datamode" default="&quot;Caching&quot;">							</property>			<property name="RenderMode" type="string" access="public" persist="xml" readwrite="read" htmltag="rendermode" default="&quot;&quot;">							</property>			<property name="LiveScrollingMode" type="string" access="public" persist="xml" readwrite="read" htmltag="livescrollingmode" default="&quot;Leap&quot;">			</property>			<property name="CopyEnabled" type="bool" access="public" persist="xml" readwrite="readwrite" htmltag="copyenabled" default="true">			</property>			<property name="PasteEnabled" type="bool" access="public" persist="xml" readwrite="readwrite" htmltag="pasteenabled" default="true">			</property>			<property name="SortEnabled" model="SortEnabled" type="string" access="public"				default="true" htmltag="sortenabled" readwrite="readwrite" persist="xml" impact="sort"				testvalue="true"></property>			<property name="SortMode" model="SortMode" type="string" access="public"				default="default" htmltag="sortmode" readwrite="readwrite" persist="xml" impact="sort"				testvalue="default"></property>		</properties>		<events>			<event name="OnCellClickEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncellclickevent" persist="event"></event>			<event name="OnBeforeCellClickEvent" model="OnBeforeCellClickEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforecellclickevent"				persist="event"></event>			<event name="OnCellDblClickEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncelldblclickevent" persist="event"></event>			<event name="OnDataReadyEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="ondatareadyevent" persist="event"></event>			<event name="OnHtmlReadyEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onhtmlreadyevent" persist="event"></event>			<event name="OnDataRenderedEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="ondatarenderevent" persist="event"></event>			<event name="OnCellDoubleClickEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncelldoubleclickevent"				persist="event">			</event>			<event name="OnAfterLoadDataPageEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onafterloaddatapageevent"				persist="event">			</event>			<event name="OnBeforeLoadDataPageEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforeloaddatapageevent"				persist="event">			</event>			<event name="OnAfterLoadPreviousPageEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onafterloadpreviouspageevent"				persist="event">			</event>			<event name="OnBeforeLoadPreviousPageEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforeloadpreviouspageevent"				persist="event">			</event>			<event name="OnAfterLoadNextPageEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onafterloadnextpageevent"				persist="event">			</event>			<event name="OnBeforeLoadNextPageEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforeloadnextpageevent"				persist="event">			</event>			<event name="OnBeforeCellEditEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforecelleditevent"				persist="event">							</event>			<event name="OnAfterCellEditEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onaftercelleditevent"				persist="event">							</event>			<event name="OnBeforeRowInsertEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforerowinsertevent"				persist="event">							</event>			<event name="OnAfterRowInsertEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onafterrowinsertevent"				persist="event">							</event>			<event name="OnBeforeSortEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforesortevent"				persist="event">			</event>			<event name="OnAfterSortEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onaftersortevent"				persist="event">			</event>			<event name="OnBeforeRefreshEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforerefreshevent"				persist="event">			</event>			<event name="OnAfterRefreshEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onafterrefreshevent"				persist="event">			</event>						<event name="OnBeforeSaveEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforesaveevent"				persist="event">							</event>			<event name="OnAfterSaveEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onaftersaveevent"				persist="event">							</event>			<event name="OnHandlerErrorEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onhandlererrorevent"				persist="event">							</event>						<event name="OnRowBlurEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onrowblurevent"				persist="event">							</event>			<event name="OnCellFocusEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncellfocusevent"				persist="event">			</event>			<event name="OnCellBlurEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncellblurevent"				persist="event">							</event>			<event name="OnAfterRowDeleteEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onafterrowdeleteevent"				persist="event">							</event>			<event name="OnBeforeRowDeleteEvent" type="string" access="public" default="&quot;true&quot;" readwrite="readwrite" htmltag="onbeforerowdeleteevent"				persist="event">							</event>			<event name="OnCellUpdateEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncellupdateevent"				persist="event">			</event>			<event name="OnRowFocusEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onrowfocusevent"				persist="event">							</event>			<event name="OnBeforeCopyEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforecopyevent"				persist="event">							</event>			<event name="OnAfterCopyEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onaftercopyevent"				persist="event">							</event>			<event name="OnBeforePasteEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onbeforepasteevent"				persist="event">							</event>			<event name="OnAfterPasteEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onafterpasteevent"				persist="event">							</event>			<event name="OnErrorEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onerrorevent"				persist="event">							</event>			<event name="OnContextMenuEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="oncontextmenuevent"				persist="event">			</event>			<event name="OnFocusEvent" type="string" access="public" default="&quot;&quot;" readwrite="readwrite" htmltag="onfocusvent"				persist="event">							</event>			<event name="OnCellValidateEvent" type="string" access="private" default="&quot;&quot;"				readwrite="readwrite" persist="event" htmltag="oncellvalidateevent">				<include path="//*[@id=\'datavalidation\']" type="example" />							</event>		</events>	</interface></interfaces>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.apiDoc = nitobi.xml.createXmlDoc(temp_ntb_apiDoc);

var temp_ntb_modelDoc='<state	 xmlns:ntb="http://www.nitobi.com"	ID="mySheet"	Version="3.01" 	element="grid" 		uniqueID="_hkj342">    <nitobi.grid.Grid		Height="300"		Width="700"		skin="default"		cellWidth="100"			RowHeight="23"					indicatorHeight="23"		HeaderHeight="23"		indicatorWidth="30"		scrollX="0"		scrollY="0"		scrollbarWidth="26"		scrollbarHeight="26"		toolbarHeight="22"				top="23"		bottom="23"		left="100"		right="100"				minHeight="60"		minWidth="250"		PrimaryDatasourceSize="0" 		contentHeight="1000"		contentWidth="1500"				containerHeight=""		containerWidth=""		columnsdefined="0"		renderframe="0"		renderindicators="0"		renderheader="0"		renderfooter="0"		renderleft="0"		renderright="0"		rendercenter="0"		active="1"		selected="1"		activeRow=""		activeCell=""		activeView=""		activeBlock=""		highlightCell=""		scrolling="0"		prevCell=""		prevText=""		prevData=""		FrozenLeftColumnCount="0"		DatasourceSizeEstimate="0"    	DatasourceId=""  		freezeright="0"		freezetop="0"		freezebottom="0"		ToolbarEnabled="1"			GridResizeEnabled="0"		RowHighlightEnabled="0"		RowSelectEnabled="0"		MultiRowSelectEnabled="0"		AutoKeyEnabled="0"			ToolbarContainerEmpty="false"			ToolTipsEnabled="1"		RowIndicatorsEnabled="0"		ColumnIndicatorsEnabled="1"		HScrollbarEnabled="1"		VScrollbarEnabled="1"		rowselect="0"		AutoSaveEnabled="0"		autoAdd="0"		remoteSort="0"		forceValidate="0"		showErrors="0"		columnGraying="0"		hwrap="0"		vwrap="0"		keymode=""				entertab="RT"		keyboardPaging="0"		RowInsertEnabled="1"		RowDeleteEnabled="1"		allowEdit="1"		allowFormula="1"		PasteEnabled="1"		CopyEnabled="1"				expandRowsOnPaste="1"		expandColumnsOnPast="1"		datalog="myXMLLog"		xselect="//root"		xorder="@a"		asynchronous="1"		fieldMap=""    	GetHandler="" 		getHandler=""		SaveHandler=""		lastSaveHandlerResponse=""		sortColumn="0"		curSortColumn="0"		descending="0"		curSortColumnDesc="0"		RowCount="0"		ColumnCount="0"		nextXK="32"		CurrentPageIndex="0"		PagingMode="standard"		DataMode="caching"		RenderMode=""    	LiveScrollingMode="Leap"		RowsPerPage="20"		pageStart="0"		normalColor="#FFFFFF"		normalColor2="#FFFFFF"		activeColor="#FFFFFF"		selectionColor="#FFFFFF"		highlightColor="#FFFFFF"		columnGrayingColor="#FFFFFF"		gridColor="#FFFFFF"		SingleClickEditEnabled="0"		LastError=""		SortEnabled="1"    	SortMode="default"    	EnterTab="down"	>    </nitobi.grid.Grid>    <nitobi.grid.Columns>    </nitobi.grid.Columns>    <Defaults>    	<nitobi.grid.Grid></nitobi.grid.Grid>		<nitobi.grid.Column 			Width="100"			type="TEXT"			Visible="1"			SortEnabled="1"			/>		<nitobi.grid.Row></nitobi.grid.Row>		<nitobi.grid.Cell></nitobi.grid.Cell>		<ntb:e />    </Defaults>    	<declaration>	</declaration>	<columnDefinitions>	</columnDefinitions></state>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.modelDoc = nitobi.xml.createXmlDoc(temp_ntb_modelDoc);

var temp_ntb_toolbarDoc='<?xml version="1.0" encoding="utf-8"?><toolbar id="toolbarthis.uid" title="Grid" height="23" width="110" image_directory="http://localhost/vss/EBALib/v13/Common/Toolbar/Styles/default">	<items>		<button id="save" onclick_event="this.onClick()" height="14" width="14" image="save.gif"			image_disabled="save_disabled.gif" tooltip_text="Save Changes" />		<!-- <button id="discardChanges" onclick_event="testclick(this);" height="17" width="16" top_offset="-2"			image="cancelsave.gif" image_disabled="cancelsave_disabled.gif" tooltip_text="Discard Changes" /> -->		<separator id="toolbar1_separator1" height="20" width="5" image="separator.jpg" />		<button id="newRecord" onclick_event="this.onClick()" height="11" width="14" image="newrecord.gif"			image_disabled="newrecord_disabled.gif" tooltip_text="New Record" />		<button id="deleteRecord" onclick_event="this.onClick()" height="11" width="14" image="deleterecord.gif"			image_disabled="deleterecord_disabled.gif" tooltip_text="Delete Record" />		<separator id="toolbar1_separator2" height="20" width="5" image="separator.jpg" />		<button id="refresh" onclick_event="this.onClick()" height="14" width="16" image="refresh.gif"			image_disabled="refresh_disabled.gif" tooltip_text="Refresh" />		<!--<separator id="toolbar1_separator3" height="20" width="5" image="separator.jpg" />		<button id="toolbar1_button4" onclick_event="testclick(this);" height="11" width="10" image="left.gif"			image_disabled="left_disabled.gif" tooltip_text="Previous Page" />		<button id="toolbar1_button5" onclick_event="testclick(this);" height="11" width="10" image="right.gif"			image_disabled="right_disabled.gif" tooltip_text="Next Page" />		-->	</items></toolbar>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.toolbarDoc = nitobi.xml.createXmlDoc(temp_ntb_toolbarDoc);

var temp_ntb_pagingToolbarDoc='<?xml version="1.0" encoding="utf-8"?><toolbar id="toolbarpagingthis.uid" title="Paging" height="23" width="60" image_directory="http://localhost/vss/EBALib/v13/Common/Toolbar/Styles/default">	<items>		<button id="previousPage" onclick_event="this.onClick()" height="14" width="14" image="left.gif"			image_disabled="left_disabled.gif" tooltip_text="Previous Page" />		<button id="nextPage" onclick_event="this.onClick()" height="14" width="16" image="right.gif"			image_disabled="right_disabled.gif" tooltip_text="Next Page" />	</items></toolbar>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.pagingToolbarDoc = nitobi.xml.createXmlDoc(temp_ntb_pagingToolbarDoc);


var temp_ntb_accessorGeneratorXslProc='<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" encoding="utf-8" omit-xml-declaration="yes"/> <x:t- match="interface"> <x:ct-x:n-initJSDefaults"/> <x:at-/> </x:t-> <x:t-x:n-initJSDefaults"> </x:t-> <x:t- match="interface/properties"> <x:va-x:n-object"><x:v-x:s-ancestor::interface/@name" /></x:va-> <xsl:for-eachx:s-property"> <x:ct-x:n-generate-accessors"> <x:w-x:n-object"x:s-$object"></x:w-> </x:ct-> </xsl:for-each> </x:t-> <x:t- match="interface/methods"> <xsl:for-eachx:s-method"> <xsl:if test="@code"> this.<x:v-x:s-@name"/>= function(<xsl:for-eachx:s-parameters/parameter"><x:v-x:s-@name" /><xsl:if test="not(last())">,</xsl:if></xsl:for-each>) {<x:v-x:s-@code"/>}; </xsl:if> </xsl:for-each> </x:t-> <x:t- match="interface/events"> <x:va-x:n-object"><x:v-x:s-ancestor::interface/@name" /></x:va-> <xsl:for-eachx:s-event"> <x:ct-x:n-generate-accessors"> <x:w-x:n-object"x:s-$object"></x:w-> </x:ct-> </xsl:for-each> </x:t-> <x:t-x:n-generate-accessors"> <x:p-x:n-object"></x:p-> <x:va-x:n-name"> <xsl:if test="@xml"><x:v-x:s-$object"/>/<x:v-x:s-@xml" /></xsl:if> <xsl:if test="not(@xml)"><x:v-x:s-$object"/>/@<x:v-x:s-@name" /></xsl:if> </x:va-> <xsl:if test="\'a\'=\'a\'"> this.set<x:v-x:s-@name"/> = function() { <x:v-x:s-@precode"/> <xsl:if test="contains(@persist,\'event\')">this.eSET("<x:v-x:s-@name"/>",arguments);</xsl:if> <xsl:if test="contains(@persist,\'js\')">this.jSET("<x:v-x:s-@name"/>",arguments);</xsl:if> <xsl:if test="contains(@persist,\'xml\')">this.xSET("<x:v-x:s-$name"/>",arguments);</xsl:if> <xsl:if test="contains(@persist,\'data\')">this.SETDATA("<x:v-x:s-$name"/>",arguments);</xsl:if> <!-- <xsl:if test="contains(@persist,\'meta\')">this.xSETMETA("<x:v-x:s-@short"/>",arguments);</xsl:if> --> <xsl:if test="contains(@persist,\'model\')">this.xSETMODEL("<x:v-x:s-@model"/>",arguments);</xsl:if> <xsl:if test="contains(@persist,\'css\')">this.xSETCSS("<x:v-x:s-@htmltag"/>",arguments);</xsl:if> <xsl:if test="contains(@persist,\'dom\')">this.SETDOM("<x:v-x:s-@name"/>",arguments);</xsl:if> <xsl:if test="contains(@persist,\'tag\')">this.SETTAG("<x:v-x:s-@name"/>",arguments);</xsl:if> <x:v-x:s-@code"/> if (EBAAutoRender) { <xsl:if test="not($object=\'nitobi.grid.Grid\')"> <xsl:if test="contains(@impact,\'config\')">this.grid.initializeModelFromDeclaration();</xsl:if> <xsl:if test="contains(@impact,\'bind\')">this.grid.bind();</xsl:if> <xsl:if test="contains(@impact,\'css\')">this.grid.generateCss();</xsl:if> <xsl:if test="contains(@impact,\'frame\')">this.grid.renderFrame();</xsl:if> <xsl:if test="contains(@impact,\'align\')">this.grid.Scroller.alignSurfaces();</xsl:if> <xsl:if test="contains(@impact,\'size\')">this.grid.resize();</xsl:if> <xsl:if test="contains(@impact,\'xsl\')">this.grid.makeXSL();</xsl:if> <xsl:if test="contains(@impact,\'row\')">this.grid.refilter();</xsl:if> </xsl:if> <xsl:if test="$object=\'nitobi.grid.Grid\'"> <xsl:if test="contains(@impact,\'config\')">this.initializeModelFromDeclaration();</xsl:if> <xsl:if test="contains(@impact,\'bind\')">this.bind();</xsl:if> <xsl:if test="contains(@impact,\'css\')">this.generateCss();</xsl:if> <xsl:if test="contains(@impact,\'frame\')">this.renderFrame();</xsl:if> <xsl:if test="contains(@impact,\'xsl\')">this.makeXSL();</xsl:if> <xsl:if test="contains(@impact,\'row\')">this.refilter();</xsl:if> </xsl:if> }; }; </xsl:if> <x:va-x:n-accessor-prefix"> <x:c-> <x:wh- test="@type=\'bool\'"> <x:v-x:s-\'is\'"/> </x:wh-> <x:o-> <x:v-x:s-\'get\'"/> </x:o-> </x:c-> </x:va-> <xsl:if test="contains(@persist,\'js\') or contains(@persist,\'event\')">this.<x:v-x:s-$accessor-prefix"/><x:v-x:s-@name"/> = function() {return this.<x:v-x:s-@name"/>;};</xsl:if> <xsl:if test="contains(@persist,\'xml\')">this.<x:v-x:s-$accessor-prefix"/><x:v-x:s-@name"/> = function() {return <x:ct-x:n-cast-type"><x:w-x:n-type"x:s-@type"/><x:w-x:n-expression">this.xGET("<x:v-x:s-$name"/>",arguments)</x:w-><x:w-x:n-default"x:s-@default" /></x:ct->;};</xsl:if> <xsl:if test="contains(@persist,\'data\')">this.<x:v-x:s-$accessor-prefix"/><x:v-x:s-@name"/> = function() {return <x:ct-x:n-cast-type"><x:w-x:n-type"x:s-@type"/><x:w-x:n-expression">this.GETDATA("<x:v-x:s-$name"/>",arguments)</x:w-><x:w-x:n-default"x:s-@default" /></x:ct->;};</xsl:if> <xsl:if test="contains(@persist,\'meta\')">this.<x:v-x:s-$accessor-prefix"/><x:v-x:s-@name"/> = function() {return <x:ct-x:n-cast-type"><x:w-x:n-type"x:s-@type"/><x:w-x:n-expression">this.xGETMETA("<x:v-x:s-@short"/>",arguments)</x:w-><x:w-x:n-default"x:s-@default" /></x:ct->;};</xsl:if> <xsl:if test="contains(@persist,\'model\')">this.<x:v-x:s-$accessor-prefix"/><x:v-x:s-@name"/> = function() {return <x:ct-x:n-cast-type"><x:w-x:n-type"x:s-@type"/><x:w-x:n-expression">this.xGETMODEL("<x:v-x:s-@model"/>",arguments)</x:w-><x:w-x:n-default"x:s-@default" /></x:ct->;};</xsl:if> <xsl:if test="contains(@persist,\'dom\')">this.<x:v-x:s-$accessor-prefix"/><x:v-x:s-@name"/> = function() {return this.dGET("<x:v-x:s-@name"/>",arguments);};</xsl:if> <xsl:if test="contains(@persist,\'tag\')">this.<x:v-x:s-$accessor-prefix"/><x:v-x:s-@name"/> = function() {return this.GETTAG("<x:v-x:s-@name"/>",arguments);};</xsl:if> </x:t-> <x:t-x:n-cast-type"> <x:p-x:n-type"/> <x:p-x:n-expression"/> <x:p-x:n-default"x:s-\'true\'"/> <x:c-> <x:wh- test="$type=\'int\'">Number(<x:v-x:s-$expression"/>)</x:wh-> <x:wh- test="$type=\'bool\'">nitobi.lang.toBool(<x:v-x:s-$expression"/>, <x:v-x:s-$default"/>)</x:wh-> <x:o-><x:v-x:s-$expression"/></x:o-> </x:c-> </x:t-> <x:t- match="text()"/></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.accessorGeneratorXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_accessorGeneratorXslProc));

var temp_ntb_addXidXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <x:p-x:n-guid"x:s-0"/><x:t- match="/"> <x:at-/></x:t-><x:t- match="node()|@*"> <xsl:copy> <xsl:if test="not(@xid)"> <x:a-x:n-xid" ><x:v-x:s-generate-id(.)"/><x:v-x:s-position()"/><x:v-x:s-$guid"/></x:a-> </xsl:if> <x:at-x:s-./* | text() | @*"> </x:at-> </xsl:copy></x:t-> <x:t- match="text()"> <x:v-x:s-."/></x:t-></xsl:stylesheet> ';
nitobi.lang.defineNs("nitobi.data");
nitobi.data.addXidXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_addXidXslProc));

var temp_ntb_adjustXiXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <xsl:output method="xml" omit-xml-declaration="yes" /> <x:p-x:n-startingIndex"x:s-5"></x:p-> <x:p-x:n-startingGroup"x:s-5"></x:p-> <x:p-x:n-adjustment"x:s--1"></x:p-> <x:t- match="*|@*"> <xsl:copy> <x:at-x:s-@*|node()" /> </xsl:copy> </x:t-> <!--[@id=\'_default\']--> <x:t- match="//ntb:data/ntb:e|@*"> <x:c-> <x:wh- test="number(@xi) &gt;= number($startingIndex)"> <xsl:copy> <x:at-x:s-@*|node()" /> <x:ct-x:n-increment-xi" /> </xsl:copy> </x:wh-> <x:o-> <xsl:copy> <x:at-x:s-@*|node()" /> </xsl:copy> </x:o-> </x:c-> </x:t-> <x:t-x:n-increment-xi"> <x:a-x:n-xi"> <x:v-x:s-number(@xi) + number($adjustment)" /> </x:a-> </x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.data");
nitobi.data.adjustXiXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_adjustXiXslProc));

var temp_ntb_dataTranslatorXslProc='<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <xsl:output method="xml" omit-xml-declaration="yes" /> <x:p-x:n-start"x:s-0"></x:p-> <x:p-x:n-id"x:s-\'_default\'"></x:p-> <x:p-x:n-xkField"x:s-\'a\'"></x:p-> <x:t- match="//root"> <ntb:grid xmlns:ntb="http://www.nitobi.com"> <ntb:datasources> <ntb:datasource id="{$id}"> <xsl:if test="@error"> <x:a-x:n-error"><x:v-x:s-@error" /></x:a-> </xsl:if> <ntb:datasourcestructure id="{$id}"> <x:a-x:n-FieldNames"><x:v-x:s-@fields" />|_xk</x:a-> <x:a-x:n-Keys">_xk</x:a-> </ntb:datasourcestructure> <ntb:data id="{$id}"> <xsl:for-eachx:s-//e"> <x:at-x:s-."> <x:w-x:n-xi"x:s-position()-1"></x:w-> </x:at-> </xsl:for-each> </ntb:data> </ntb:datasource> </ntb:datasources> </ntb:grid> </x:t-> <x:t- match="e"> <x:p-x:n-xi"x:s-0"></x:p-> <ntb:e> <xsl:copy-ofx:s-@*[not(name() = \'xk\')]"></xsl:copy-of> <xsl:if test="not(@xi)"><x:a-x:n-xi"><x:v-x:s-$start + $xi" /></x:a-></xsl:if> <x:a-x:n-{$xkField}"><x:v-x:s-@xk" /></x:a-> </ntb:e> </x:t-> <x:t- match="lookups"></x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.data");
nitobi.data.dataTranslatorXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_dataTranslatorXslProc));

var temp_ntb_dateFormatTemplatesXslProc='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com" xmlns:d="http://exslt.org/dates-and-times" xmlns:n="http://www.nitobi.com/exslt/numbers" extension-element-prefixes="d n"> <!-- http://java.sun.com/j2se/1.3/docs/api/java/text/SimpleDateFormat.html --><d:ms> <d:m l="31" a="Jan">January</d:m> <d:m l="28" a="Feb">February</d:m> <d:m l="31" a="Mar">March</d:m> <d:m l="30" a="Apr">April</d:m> <d:m l="31" a="May">May</d:m> <d:m l="30" a="Jun">June</d:m> <d:m l="31" a="Jul">July</d:m> <d:m l="31" a="Aug">August</d:m> <d:m l="30" a="Sep">September</d:m> <d:m l="31" a="Oct">October</d:m> <d:m l="30" a="Nov">November</d:m> <d:m l="31" a="Dec">December</d:m></d:ms><d:ds> <d:d a="Sun">Sunday</d:d> <d:d a="Mon">Monday</d:d> <d:d a="Tue">Tuesday</d:d> <d:d a="Wed">Wednesday</d:d> <d:d a="Thu">Thursday</d:d> <d:d a="Fri">Friday</d:d> <d:d a="Sat">Saturday</d:d></d:ds><x:t-x:n-d:format-date"> <x:p-x:n-date-time" /> <x:p-x:n-mask"x:s-\'MMM d, yy\'"/> <x:va-x:n-formatted"> <x:va-x:n-date-time-length"x:s-string-length($date-time)" /> <x:va-x:n-timezone"x:s-\'\'" /> <x:va-x:n-dt"x:s-substring($date-time, 1, $date-time-length - string-length($timezone))" /> <x:va-x:n-dt-length"x:s-string-length($dt)" /> <x:c-> <x:wh- test="substring($dt, 3, 1) = \':\' and substring($dt, 6, 1) = \':\'"> <!--that means we just have a time--> <x:va-x:n-hour"x:s-substring($dt, 1, 2)" /> <x:va-x:n-min"x:s-substring($dt, 4, 2)" /> <x:va-x:n-sec"x:s-substring($dt, 7)" /> <xsl:if test="$hour &lt;= 23 and $min &lt;= 59 and $sec &lt;= 60"> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-\'NaN\'" /> <x:w-x:n-month"x:s-\'NaN\'" /> <x:w-x:n-day"x:s-\'NaN\'" /> <x:w-x:n-hour"x:s-$hour" /> <x:w-x:n-minute"x:s-$min" /> <x:w-x:n-second"x:s-$sec" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-$mask" /> </x:ct-> </xsl:if> </x:wh-> <x:o-> <!--($neg * -2)--> <x:va-x:n-year"x:s-substring($dt, 1, 4) * (0 + 1)" /> <x:va-x:n-month"x:s-substring($dt, 6, 2)" /> <x:va-x:n-day"x:s-substring($dt, 9, 2)" /> <x:c-> <x:wh- test="$dt-length = 10"> <!--that means we just have a date--> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-$year" /> <x:w-x:n-month"x:s-$month" /> <x:w-x:n-day"x:s-$day" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-$mask" /> </x:ct-> </x:wh-> <x:wh- test="substring($dt, 14, 1) = \':\' and substring($dt, 17, 1) = \':\'"> <!--that means we have a date + time--> <x:va-x:n-hour"x:s-substring($dt, 12, 2)" /> <x:va-x:n-min"x:s-substring($dt, 15, 2)" /> <x:va-x:n-sec"x:s-substring($dt, 18)" /> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-$year" /> <x:w-x:n-month"x:s-$month" /> <x:w-x:n-day"x:s-$day" /> <x:w-x:n-hour"x:s-$hour" /> <x:w-x:n-minute"x:s-$min" /> <x:w-x:n-second"x:s-$sec" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-$mask" /> </x:ct-> </x:wh-> </x:c-> </x:o-> </x:c-> </x:va-> <x:v-x:s-$formatted" /> </x:t-><x:t-x:n-d:_format-date"> <x:p-x:n-year" /> <x:p-x:n-month"x:s-1" /> <x:p-x:n-day"x:s-1" /> <x:p-x:n-hour"x:s-0" /> <x:p-x:n-minute"x:s-0" /> <x:p-x:n-second"x:s-0" /> <x:p-x:n-timezone"x:s-\'Z\'" /> <x:p-x:n-mask"x:s-\'\'" /> <x:va-x:n-char"x:s-substring($mask, 1, 1)" /> <x:c-> <x:wh- test="not($mask)" /> <!--replaced escaping with \' here/--> <x:wh- test="not(contains(\'GyMdhHmsSEDFwWakKz\', $char))"> <x:v-x:s-$char" /> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-$year" /> <x:w-x:n-month"x:s-$month" /> <x:w-x:n-day"x:s-$day" /> <x:w-x:n-hour"x:s-$hour" /> <x:w-x:n-minute"x:s-$minute" /> <x:w-x:n-second"x:s-$second" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-substring($mask, 2)" /> </x:ct-> </x:wh-> <x:o-> <x:va-x:n-next-different-char"x:s-substring(translate($mask, $char, \'\'), 1, 1)" /> <x:va-x:n-mask-length"> <x:c-> <x:wh- test="$next-different-char"> <x:v-x:s-string-length(substring-before($mask, $next-different-char))" /> </x:wh-> <x:o-> <x:v-x:s-string-length($mask)" /> </x:o-> </x:c-> </x:va-> <x:c-> <!--took our the era designator--> <x:wh- test="$char = \'M\'"> <x:c-> <x:wh- test="$mask-length >= 3"> <x:va-x:n-month-node"x:s-document(\'\')/*/d:ms/d:m[number($month)]" /> <x:c-> <x:wh- test="$mask-length >= 4"> <x:v-x:s-$month-node" /> </x:wh-> <x:o-> <x:v-x:s-$month-node/@a" /> </x:o-> </x:c-> </x:wh-> <x:wh- test="$mask-length = 2"> <x:v-x:s-format-number($month, \'00\')" /> </x:wh-> <x:o-> <x:v-x:s-$month" /> </x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'E\'"> <x:va-x:n-month-days"x:s-sum(document(\'\')/*/d:ms/d:m[position() &lt; $month]/@l)" /> <x:va-x:n-days"x:s-$month-days + $day + boolean(((not($year mod 4) and $year mod 100) or not($year mod 400)) and $month &gt; 2)" /> <x:va-x:n-y-1"x:s-$year - 1" /> <x:va-x:n-dow"x:s-(($y-1 + floor($y-1 div 4) - floor($y-1 div 100) + floor($y-1 div 400) + $days) mod 7) + 1" /> <x:va-x:n-day-node"x:s-document(\'\')/*/d:ds/d:d[number($dow)]" /> <x:c-> <x:wh- test="$mask-length >= 4"> <x:v-x:s-$day-node" /> </x:wh-> <x:o-> <x:v-x:s-$day-node/@a" /> </x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'a\'"> <x:c-> <x:wh- test="$hour >= 12">PM</x:wh-> <x:o->AM</x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'z\'"> <x:c-> <x:wh- test="$timezone = \'Z\'">UTC</x:wh-> <x:o->UTC<x:v-x:s-$timezone" /></x:o-> </x:c-> </x:wh-> <x:o-> <x:va-x:n-padding"x:s-\'00\'" /> <!--removed padding--> <x:c-> <x:wh- test="$char = \'y\'"> <x:c-> <x:wh- test="$mask-length &gt; 2"><x:v-x:s-format-number($year, $padding)" /></x:wh-> <x:o-><x:v-x:s-format-number(substring($year, string-length($year) - 1), $padding)" /></x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'d\'"> <x:v-x:s-format-number($day, $padding)" /> </x:wh-> <x:wh- test="$char = \'h\'"> <x:va-x:n-h"x:s-$hour mod 12" /> <x:c-> <x:wh- test="$h"><x:v-x:s-format-number($h, $padding)" /></x:wh-> <x:o-><x:v-x:s-format-number(12, $padding)" /></x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'H\'"> <x:v-x:s-format-number($hour, $padding)" /> </x:wh-> <x:wh- test="$char = \'k\'"> <x:c-> <x:wh- test="$hour"><x:v-x:s-format-number($hour, $padding)" /></x:wh-> <x:o-><x:v-x:s-format-number(24, $padding)" /></x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'K\'"> <x:v-x:s-format-number($hour mod 12, $padding)" /> </x:wh-> <x:wh- test="$char = \'m\'"> <x:v-x:s-format-number($minute, $padding)" /> </x:wh-> <x:wh- test="$char = \'s\'"> <x:v-x:s-format-number($second, $padding)" /> </x:wh-> <x:wh- test="$char = \'S\'"> <x:v-x:s-format-number(substring-after($second, \'.\'), $padding)" /> </x:wh-> <x:wh- test="$char = \'F\'"> <x:v-x:s-floor($day div 7) + 1" /> </x:wh-> <x:o-> <x:va-x:n-month-days"x:s-sum(document(\'\')/*/d:ms/d:m[position() &lt; $month]/@l)" /> <x:va-x:n-days"x:s-$month-days + $day + boolean(((not($year mod 4) and $year mod 100) or not($year mod 400)) and $month &gt; 2)" /> <x:v-x:s-format-number($days, $padding)" /> <!--removed week in year--> <!--removed week in month--> </x:o-> </x:c-> </x:o-> </x:c-> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-$year" /> <x:w-x:n-month"x:s-$month" /> <x:w-x:n-day"x:s-$day" /> <x:w-x:n-hour"x:s-$hour" /> <x:w-x:n-minute"x:s-$minute" /> <x:w-x:n-second"x:s-$second" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-substring($mask, $mask-length + 1)" /> </x:ct-> </x:o-> </x:c-></x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.dateFormatTemplatesXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_dateFormatTemplatesXslProc));

var temp_ntb_dateXslProc='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com" xmlns:d="http://exslt.org/dates-and-times" extension-element-prefixes="d"> <xsl:output method="text" version="4.0" omit-xml-declaration="yes" /> <!-- http://java.sun.com/j2se/1.3/docs/api/java/text/SimpleDateFormat.html --><d:ms> <d:m l="31" a="Jan">January</d:m> <d:m l="28" a="Feb">February</d:m> <d:m l="31" a="Mar">March</d:m> <d:m l="30" a="Apr">April</d:m> <d:m l="31" a="May">May</d:m> <d:m l="30" a="Jun">June</d:m> <d:m l="31" a="Jul">July</d:m> <d:m l="31" a="Aug">August</d:m> <d:m l="30" a="Sep">September</d:m> <d:m l="31" a="Oct">October</d:m> <d:m l="30" a="Nov">November</d:m> <d:m l="31" a="Dec">December</d:m></d:ms><d:ds> <d:d a="Sun">Sunday</d:d> <d:d a="Mon">Monday</d:d> <d:d a="Tue">Tuesday</d:d> <d:d a="Wed">Wednesday</d:d> <d:d a="Thu">Thursday</d:d> <d:d a="Fri">Friday</d:d> <d:d a="Sat">Saturday</d:d></d:ds><x:t-x:n-d:format-date"> <x:p-x:n-date-time" /> <x:p-x:n-mask"x:s-\'MMM d, yy\'"/> <x:va-x:n-formatted"> <x:va-x:n-date-time-length"x:s-string-length($date-time)" /> <x:va-x:n-timezone"x:s-\'\'" /> <x:va-x:n-dt"x:s-substring($date-time, 1, $date-time-length - string-length($timezone))" /> <x:va-x:n-dt-length"x:s-string-length($dt)" /> <x:c-> <x:wh- test="substring($dt, 3, 1) = \':\' and substring($dt, 6, 1) = \':\'"> <!--that means we just have a time--> <x:va-x:n-hour"x:s-substring($dt, 1, 2)" /> <x:va-x:n-min"x:s-substring($dt, 4, 2)" /> <x:va-x:n-sec"x:s-substring($dt, 7)" /> <xsl:if test="$hour &lt;= 23 and $min &lt;= 59 and $sec &lt;= 60"> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-\'NaN\'" /> <x:w-x:n-month"x:s-\'NaN\'" /> <x:w-x:n-day"x:s-\'NaN\'" /> <x:w-x:n-hour"x:s-$hour" /> <x:w-x:n-minute"x:s-$min" /> <x:w-x:n-second"x:s-$sec" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-$mask" /> </x:ct-> </xsl:if> </x:wh-> <x:o-> <!--($neg * -2)--> <x:va-x:n-year"x:s-substring($dt, 1, 4) * (0 + 1)" /> <x:va-x:n-month"x:s-substring($dt, 6, 2)" /> <x:va-x:n-day"x:s-substring($dt, 9, 2)" /> <x:c-> <x:wh- test="$dt-length = 10"> <!--that means we just have a date--> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-$year" /> <x:w-x:n-month"x:s-$month" /> <x:w-x:n-day"x:s-$day" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-$mask" /> </x:ct-> </x:wh-> <x:wh- test="substring($dt, 14, 1) = \':\' and substring($dt, 17, 1) = \':\'"> <!--that means we have a date + time--> <x:va-x:n-hour"x:s-substring($dt, 12, 2)" /> <x:va-x:n-min"x:s-substring($dt, 15, 2)" /> <x:va-x:n-sec"x:s-substring($dt, 18)" /> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-$year" /> <x:w-x:n-month"x:s-$month" /> <x:w-x:n-day"x:s-$day" /> <x:w-x:n-hour"x:s-$hour" /> <x:w-x:n-minute"x:s-$min" /> <x:w-x:n-second"x:s-$sec" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-$mask" /> </x:ct-> </x:wh-> </x:c-> </x:o-> </x:c-> </x:va-> <x:v-x:s-$formatted" /> </x:t-><x:t-x:n-d:_format-date"> <x:p-x:n-year" /> <x:p-x:n-month"x:s-1" /> <x:p-x:n-day"x:s-1" /> <x:p-x:n-hour"x:s-0" /> <x:p-x:n-minute"x:s-0" /> <x:p-x:n-second"x:s-0" /> <x:p-x:n-timezone"x:s-\'Z\'" /> <x:p-x:n-mask"x:s-\'\'" /> <x:va-x:n-char"x:s-substring($mask, 1, 1)" /> <x:c-> <x:wh- test="not($mask)" /> <!--replaced escaping with \' here/--> <x:wh- test="not(contains(\'GyMdhHmsSEDFwWakKz\', $char))"> <x:v-x:s-$char" /> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-$year" /> <x:w-x:n-month"x:s-$month" /> <x:w-x:n-day"x:s-$day" /> <x:w-x:n-hour"x:s-$hour" /> <x:w-x:n-minute"x:s-$minute" /> <x:w-x:n-second"x:s-$second" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-substring($mask, 2)" /> </x:ct-> </x:wh-> <x:o-> <x:va-x:n-next-different-char"x:s-substring(translate($mask, $char, \'\'), 1, 1)" /> <x:va-x:n-mask-length"> <x:c-> <x:wh- test="$next-different-char"> <x:v-x:s-string-length(substring-before($mask, $next-different-char))" /> </x:wh-> <x:o-> <x:v-x:s-string-length($mask)" /> </x:o-> </x:c-> </x:va-> <x:c-> <!--took our the era designator--> <x:wh- test="$char = \'M\'"> <x:c-> <x:wh- test="$mask-length >= 3"> <x:va-x:n-month-node"x:s-document(\'\')/*/d:ms/d:m[number($month)]" /> <x:c-> <x:wh- test="$mask-length >= 4"> <x:v-x:s-$month-node" /> </x:wh-> <x:o-> <x:v-x:s-$month-node/@a" /> </x:o-> </x:c-> </x:wh-> <x:wh- test="$mask-length = 2"> <x:v-x:s-format-number($month, \'00\')" /> </x:wh-> <x:o-> <x:v-x:s-$month" /> </x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'E\'"> <x:va-x:n-month-days"x:s-sum(document(\'\')/*/d:ms/d:m[position() &lt; $month]/@l)" /> <x:va-x:n-days"x:s-$month-days + $day + boolean(((not($year mod 4) and $year mod 100) or not($year mod 400)) and $month &gt; 2)" /> <x:va-x:n-y-1"x:s-$year - 1" /> <x:va-x:n-dow"x:s-(($y-1 + floor($y-1 div 4) - floor($y-1 div 100) + floor($y-1 div 400) + $days) mod 7) + 1" /> <x:va-x:n-day-node"x:s-document(\'\')/*/d:ds/d:d[number($dow)]" /> <x:c-> <x:wh- test="$mask-length >= 4"> <x:v-x:s-$day-node" /> </x:wh-> <x:o-> <x:v-x:s-$day-node/@a" /> </x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'a\'"> <x:c-> <x:wh- test="$hour >= 12">PM</x:wh-> <x:o->AM</x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'z\'"> <x:c-> <x:wh- test="$timezone = \'Z\'">UTC</x:wh-> <x:o->UTC<x:v-x:s-$timezone" /></x:o-> </x:c-> </x:wh-> <x:o-> <x:va-x:n-padding"x:s-\'00\'" /> <!--removed padding--> <x:c-> <x:wh- test="$char = \'y\'"> <x:c-> <x:wh- test="$mask-length &gt; 2"><x:v-x:s-format-number($year, $padding)" /></x:wh-> <x:o-><x:v-x:s-format-number(substring($year, string-length($year) - 1), $padding)" /></x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'d\'"> <x:v-x:s-format-number($day, $padding)" /> </x:wh-> <x:wh- test="$char = \'h\'"> <x:va-x:n-h"x:s-$hour mod 12" /> <x:c-> <x:wh- test="$h"><x:v-x:s-format-number($h, $padding)" /></x:wh-> <x:o-><x:v-x:s-format-number(12, $padding)" /></x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'H\'"> <x:v-x:s-format-number($hour, $padding)" /> </x:wh-> <x:wh- test="$char = \'k\'"> <x:c-> <x:wh- test="$hour"><x:v-x:s-format-number($hour, $padding)" /></x:wh-> <x:o-><x:v-x:s-format-number(24, $padding)" /></x:o-> </x:c-> </x:wh-> <x:wh- test="$char = \'K\'"> <x:v-x:s-format-number($hour mod 12, $padding)" /> </x:wh-> <x:wh- test="$char = \'m\'"> <x:v-x:s-format-number($minute, $padding)" /> </x:wh-> <x:wh- test="$char = \'s\'"> <x:v-x:s-format-number($second, $padding)" /> </x:wh-> <x:wh- test="$char = \'S\'"> <x:v-x:s-format-number(substring-after($second, \'.\'), $padding)" /> </x:wh-> <x:wh- test="$char = \'F\'"> <x:v-x:s-floor($day div 7) + 1" /> </x:wh-> <x:o-> <x:va-x:n-month-days"x:s-sum(document(\'\')/*/d:ms/d:m[position() &lt; $month]/@l)" /> <x:va-x:n-days"x:s-$month-days + $day + boolean(((not($year mod 4) and $year mod 100) or not($year mod 400)) and $month &gt; 2)" /> <x:v-x:s-format-number($days, $padding)" /> <!--removed week in year--> <!--removed week in month--> </x:o-> </x:c-> </x:o-> </x:c-> <x:ct-x:n-d:_format-date"> <x:w-x:n-year"x:s-$year" /> <x:w-x:n-month"x:s-$month" /> <x:w-x:n-day"x:s-$day" /> <x:w-x:n-hour"x:s-$hour" /> <x:w-x:n-minute"x:s-$minute" /> <x:w-x:n-second"x:s-$second" /> <x:w-x:n-timezone"x:s-$timezone" /> <x:w-x:n-mask"x:s-substring($mask, $mask-length + 1)" /> </x:ct-> </x:o-> </x:c-></x:t-> <x:t- match="/"> <x:ct-x:n-d:format-date"> <x:w-x:n-date-time"x:s-//date" /> <x:w-x:n-mask"x:s-//mask" /> </x:ct-></x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.form");
nitobi.form.dateXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_dateXslProc));

var temp_ntb_declarationConverterXslProc='<?xml version="1.0" encoding="utf-8" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <xsl:output method="xml" omit-xml-declaration="yes" /> <x:t- match="/"> <ntb:grid xmlns:ntb="http://www.nitobi.com"> <ntb:columns> <x:at-x:s-//ntb:columndefinition" mode="columndef" /> </ntb:columns> <ntb:datasources> <x:at-x:s-//ntb:columndefinition" mode="datasources" /> </ntb:datasources> </ntb:grid> </x:t-> <x:t- match="ntb:columndefinition" mode="columndef"> <x:c-> <x:wh- test="@type=\'TEXT\' or @type=\'TEXTAREA\' or @type=\'LISTBOX\' or @type=\'LOOKUP\' or @type=\'CHECKBOX\' or @type=\'LINK\' or @type=\'IMAGE\' or @type=\'\' or not(@type)"> <ntb:textcolumn> <xsl:copy-ofx:s-@*" /> <x:c-> <x:wh- test="@type=\'TEXT\'"> <ntb:texteditor><xsl:copy-ofx:s-@*" /></ntb:texteditor> </x:wh-> <x:wh- test="@type=\'TEXTAREA\'"> <ntb:textareaeditor><xsl:copy-ofx:s-@*" /></ntb:textareaeditor> </x:wh-> <x:wh- test="@type=\'LISTBOX\'"> <ntb:listboxeditor> <xsl:copy-ofx:s-@*" /> <x:a-x:n-DatasourceId">id_<x:v-x:s-position()"/></x:a-> <x:a-x:n-DisplayFields"> <x:c-> <x:wh- test="@show=\'value\'">b</x:wh-> <x:wh- test="@show=\'key\'">a</x:wh-> <x:o-></x:o-> </x:c-> </x:a-> <x:a-x:n-ValueField"> <x:c-> <x:wh- test="@show">a</x:wh-> <x:o-></x:o-> </x:c-> </x:a-> </ntb:listboxeditor> </x:wh-> <x:wh- test="@type=\'CHECKBOX\'"> <ntb:checkboxeditor> <xsl:copy-ofx:s-@*" /> <x:a-x:n-DatasourceId">id_<x:v-x:s-position()"/></x:a-> <x:a-x:n-DisplayFields"> <x:c-> <x:wh- test="@show=\'value\'">b</x:wh-> <x:wh- test="@show=\'key\'">a</x:wh-> <x:o-></x:o-> </x:c-></x:a-> <x:a-x:n-ValueField">a</x:a-> </ntb:checkboxeditor> </x:wh-> <x:wh- test="@type=\'LOOKUP\'"> <ntb:lookupeditor> <xsl:copy-ofx:s-@*" /> <x:a-x:n-DatasourceId">id_<x:v-x:s-position()"/></x:a-> <x:a-x:n-DisplayFields"> <x:c-> <x:wh- test="@show=\'key\'">a</x:wh-> <x:wh- test="@show=\'value\'">b</x:wh-> <x:o-></x:o-> </x:c-></x:a-> <x:a-x:n-ValueField"> <x:c-> <x:wh- test="@show">a</x:wh-> <x:o-></x:o-> </x:c-> </x:a-> </ntb:lookupeditor> </x:wh-> <x:wh- test="@type=\'LINK\'"> <ntb:linkeditor><xsl:copy-ofx:s-@*" /></ntb:linkeditor> </x:wh-> <x:wh- test="@type=\'IMAGE\'"> <ntb:imageeditor><xsl:copy-ofx:s-@*" /></ntb:imageeditor> </x:wh-> </x:c-> </ntb:textcolumn> </x:wh-> <x:wh- test="@type=\'NUMBER\'"> <ntb:numbercolumn><xsl:copy-ofx:s-@*" /></ntb:numbercolumn> </x:wh-> <x:wh- test="@type=\'DATE\' or @type=\'CALENDAR\'"> <ntb:datecolumn> <xsl:copy-ofx:s-@*" /> <x:c-> <x:wh- test="@type=\'DATE\'"> <ntb:dateeditor><xsl:copy-ofx:s-@*" /></ntb:dateeditor> </x:wh-> <x:wh- test="@type=\'CALENDAR\'"> <ntb:calendareditor><xsl:copy-ofx:s-@*" /></ntb:calendareditor> </x:wh-> </x:c-> </ntb:datecolumn> </x:wh-> </x:c-> </x:t-> <x:t- match="ntb:columndefinition" mode="datasources"> <xsl:if test="@values and @values!=\'\'"> <ntb:datasource> <x:a-x:n-id">id_<x:v-x:s-position()" /></x:a-> <ntb:datasourcestructure> <x:a-x:n-id">id_<x:v-x:s-position()" /></x:a-> <x:a-x:n-FieldNames">a|b</x:a-> <x:a-x:n-Keys">a</x:a-> </ntb:datasourcestructure> <ntb:data> <x:a-x:n-id">id_<x:v-x:s-position()" /></x:a-> <x:ct-x:n-values"> <x:w-x:n-valuestring"x:s-@values" /> </x:ct-> </ntb:data> </ntb:datasource> </xsl:if> </x:t-> <x:t-x:n-values"> <x:p-x:n-valuestring" /> <x:va-x:n-bstring"> <x:c-> <x:wh- test="contains($valuestring,\',\')"><x:v-x:s-substring-after(substring-before($valuestring,\',\'),\':\')" /></x:wh-> <x:o-><x:v-x:s-substring-after($valuestring,\':\')" /></x:o-> </x:c-> </x:va-> <ntb:e> <x:a-x:n-a"><x:v-x:s-substring-before($valuestring,\':\')" /></x:a-> <x:a-x:n-b"><x:v-x:s-$bstring" /></x:a-> </ntb:e> <xsl:if test="contains($valuestring,\',\')"> <x:ct-x:n-values"> <x:w-x:n-valuestring"x:s-substring-after($valuestring,\',\')" /> </x:ct-> </xsl:if> </x:t-> </xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.declarationConverterXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_declarationConverterXslProc));

var temp_ntb_frameCssXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:user="http://mycompany.com/mynamespace" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="text" omit-xml-declaration="yes"/><x:p-x:n-IE"x:s-\'false\'"/><xsl:keyx:n-style" match="//s" use="@k" /><x:t- match = "/"> <x:va-x:n-g"x:s-//state/nitobi.grid.Grid"></x:va-> <x:va-x:n-u"x:s-//state/@uniqueID"></x:va-> <x:va-x:n-showvscroll"><x:c-><x:wh- test="($g/@VScrollbarEnabled=\'true\' or $g/@VScrollbarEnabled=1)">1</x:wh-><x:o->0</x:o-></x:c-></x:va-> <x:va-x:n-showhscroll"><x:c-><x:wh- test="($g/@HScrollbarEnabled=\'true\' or $g/@HScrollbarEnabled=1)">1</x:wh-><x:o->0</x:o-></x:c-></x:va-> <x:va-x:n-showtoolbar"><x:c-><x:wh- test="($g/@ToolbarEnabled=\'true\' or $g/@ToolbarEnabled=1)">1</x:wh-><x:o->0</x:o-></x:c-></x:va-> <x:va-x:n-frozen-columns-width"> <x:ct-x:n-get-pane-width"> <x:w-x:n-start-column"x:s-number(1)"/> <x:w-x:n-end-column"x:s-number($g/@FrozenLeftColumnCount)"/> <x:w-x:n-current-width"x:s-number(0)"/> </x:ct-> </x:va-> <x:va-x:n-unfrozen-columns-width"> <x:ct-x:n-get-pane-width"> <x:w-x:n-start-column"x:s-number($g/@FrozenLeftColumnCount)+1"/> <x:w-x:n-end-column"x:s-number($g/@ColumnCount)"/> <x:w-x:n-current-width"x:s-number(0)"/> </x:ct-> </x:va-> <x:va-x:n-total-columns-width"> <x:v-x:s-number($frozen-columns-width) + number($unfrozen-columns-width)"/> </x:va-> <x:va-x:n-scrollerHeight"x:s-number($g/@Height)-(number($g/@scrollbarHeight)*$showhscroll)-(number($g/@toolbarHeight)*$showtoolbar)" /> <x:va-x:n-scrollerWidth"x:s-number($g/@Width)-(number($g/@scrollbarWidth)*number($g/@VScrollbarEnabled))" /> <x:va-x:n-midHeight"x:s-number($g/@Height)-(number($g/@scrollbarHeight)*$showhscroll)-(number($g/@toolbarHeight)*$showtoolbar)-number($g/@top)"/> #grid<x:v-x:s-$u" /> { height:<x:v-x:s-$g/@Height" />px; width:<x:v-x:s-$g/@Width" />px; overflow:hidden;text-align:left; <xsl:if test="$IE=\'true\'"> position:relative; </xsl:if> -moz-user-select: none; -khtml-user-select: none; user-select: none; } .hScrollbarRange<x:v-x:s-$u" /> { width:<x:v-x:s-$total-columns-width"/>px; } .vScrollbarRange<x:v-x:s-$u" /> {} .ntb-grid-datablock, .ntb-grid-headerblock { table-layout:fixed; width:0px; } .ntbrowindicator {overflow:hidden;height:<x:v-x:s-$g/@RowHeight" />px;width:<x:v-x:s-$g/@indicatorWidth" />px;float:left;} .ntbcellborder<x:v-x:s-$u" /> {overflow:hidden;text-decoration:none;margin:0px;border-right:1px solid #c0c0c0;border-bottom:1px solid #c0c0c0;white-space:nowrap;} .ntb-grid-headershow<x:v-x:s-$u" /> {padding:0px;spacing:0px;<xsl:if test="not($g/@ColumnIndicatorsEnabled=1)">display:none;</xsl:if>} .ntb-grid-vscrollshow<x:v-x:s-$u" /> {padding:0px;spacing:0px;<xsl:if test="not($g/@VScrollbarEnabled=1)">display:none;</xsl:if>} .ntb-grid-hscrollshow<x:v-x:s-$u" /> {padding:0px;spacing:0px;<xsl:if test="not($g/@HScrollbarEnabled=1)">display:none;</xsl:if>} .ntb-grid-toolbarshow<x:v-x:s-$u" /> {<xsl:if test="not($g/@ToolbarEnabled=1) and not($g/@ToolbarEnabled=\'true\')">display:none;</xsl:if>} .ntb-grid-height<x:v-x:s-$u" /> {height:<x:v-x:s-$g/@Height" />px;overflow:hidden;} .ntb-grid-width<x:v-x:s-$u" /> {width:<x:v-x:s-$g/@Width" />px;overflow:hidden;} .ntb-grid-overlay<x:v-x:s-$u" /> {position:relative;z-index:1000;top:0px;left:0px;} .ntb-grid-scroller<x:v-x:s-$u" /> {overflow:hidden;text-align:left;} .ntb-grid-scrollerheight<x:v-x:s-$u" /> {height: <x:c-><x:wh- test="($total-columns-width &gt; $g/@Width)"><x:v-x:s-$scrollerHeight"/></x:wh-><x:o-><x:v-x:s-number($scrollerHeight) + number($g/@scrollbarHeight)"/></x:o-></x:c->px;} .ntb-grid-scrollerwidth<x:v-x:s-$u" /> {width:<x:v-x:s-$scrollerWidth"/>px;} .ntb-grid-topheight<x:v-x:s-$u" /> {height:<x:v-x:s-$g/@top" />px;overflow:hidden;<xsl:if test="$g/@top=0">display:none;</xsl:if>} .ntb-grid-midheight<x:v-x:s-$u" /> {overflow:hidden;height:<x:c-><x:wh- test="($total-columns-width &gt; $g/@Width)"><x:v-x:s-$midHeight"/></x:wh-><x:o-><x:v-x:s-number($midHeight) + number($g/@scrollbarHeight)"/></x:o-></x:c->px;} .ntb-grid-bottomheight<x:v-x:s-$u" /> {height:<x:v-x:s-$g/@bottom" />px;overflow:hidden;} .ntb-grid-leftwidth<x:v-x:s-$u" /> { width:<x:v-x:s-$g/@left" />px;overflow:hidden;text-align:left; } .ntb-grid-centerwidth<x:v-x:s-$u" /> {width:<x:v-x:s-number($g/@Width)-number($g/@left)-(number($g/@scrollbarWidth)*$showvscroll)" />px;} .ntb-grid-rightwidth<x:v-x:s-$u" /> {width:<x:v-x:s-$g/@right" />px;} .ntb-grid-scrollbarheight<x:v-x:s-$u" /> {height:<x:v-x:s-$g/@scrollbarHeight" />px;} .ntb-grid-scrollbarwidth<x:v-x:s-$u" /> {width:<x:v-x:s-$g/@scrollbarWidth" />px;} .ntb-grid-toolbarheight<x:v-x:s-$u" /> {height:<x:v-x:s-$g/@toolbarHeight" />px;} .ntb-grid-surfacewidth<x:v-x:s-$u" /> {width:<x:v-x:s-number($unfrozen-columns-width)"/>px;} .ntb-grid-surfaceheight<x:v-x:s-$u" /> {height:100px;} .ntb-grid {padding:0px;margin:0px;border:1px solid #cccccc} .ntb-scroller {padding:0px;spacing:0px;} .ntb-scrollcorner {padding:0px;spacing:0px;} .ntb-hscrollbar {<x:c-><x:wh- test="($total-columns-width &gt; $g/@Width)">display:block;</x:wh-><x:o->display:none;</x:o-></x:c->} .ntbinputborder { table-layout:fixed; overflow:hidden; } .ntbcolumnresizesurface { filter:alpha(opacity=1); background-color:white; position:absolute; visibility:hidden; top:0; left:0; width:100; height:100; z-index:800; } .ntbcolumnindicatorborder { padding-right: 1px; } .ntbcolumnindicator { overflow:hidden; white-space: nowrap; } .ntbrow<x:v-x:s-$u" /> {height:<x:v-x:s-$g/@RowHeight" />px;margin:0px;} .ntbheaderrow<x:v-x:s-$u" /> {height:<x:v-x:s-$g/@HeaderHeight" />px;} <x:at-x:s-state/nitobi.grid.Columns" /></x:t-><x:t-x:n-get-pane-width"> <x:p-x:n-start-column"/> <x:p-x:n-end-column"/> <x:p-x:n-current-width"/> <x:c-> <x:wh- test="$start-column &lt;= $end-column"> <x:ct-x:n-get-pane-width"> <x:w-x:n-start-column"x:s-$start-column+1"/> <x:w-x:n-end-column"x:s-$end-column"/> <x:w-x:n-current-width"x:s-number($current-width) + number(//state/nitobi.grid.Columns/nitobi.grid.Column[$start-column]/@Width)"/> </x:ct-> </x:wh-> <x:o-> <x:v-x:s-$current-width"/> </x:o-> </x:c-> </x:t-><x:t- match="nitobi.grid.Columns"> <xsl:for-eachx:s-*"> <x:va-x:n-p"><x:v-x:s-position()"/></x:va-> <x:va-x:n-w"><x:v-x:s-@Width"/></x:va-> .ntbcolumn<x:v-x:s-/state/@uniqueID" />_<xsl:number value="$p" /> {width:<x:v-x:s-$w" />px;} .ntbcolumndata<x:v-x:s-/state/@uniqueID" />_<xsl:number value="$p" /> {text-align:<x:v-x:s-@Align"/>;} </xsl:for-each></x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.frameCssXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_frameCssXslProc));

var temp_ntb_frameXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:ntb="http://www.nitobi.com" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="text" omit-xml-declaration="yes"/><x:p-x:n-IE"x:s-\'false\'"/><x:p-x:n-scrollbarWidth"x:s-17" /><x:t- match = "/"><x:va-x:n-uniqueId"x:s-state/@uniqueID" /><x:va-x:n-Id"x:s-state/@ID" /><x:va-x:n-resizeEnabled"x:s-state/nitobi.grid.Grid/@GridResizeEnabled" /><x:va-x:n-offset"> <x:c-> <x:wh- test="$IE=\'true\'">1</x:wh-> <x:o->0</x:o-> </x:c-></x:va-> &lt;table <xsl:if test="$IE=\'true\'">tabindex="1"</xsl:if> cellpadding="0" cellspacing="0" id="grid<x:v-x:s-$uniqueId" />" class="ntb-grid <x:v-x:s-@theme" />" &gt; &lt;tr&gt; &lt;td colspan="2"&gt; &lt;div id="ntb-grid-overlay<x:v-x:s-$uniqueId" />" class="ntb-grid-overlay<x:v-x:s-$uniqueId" />"&gt;&lt;/div&gt; <xsl:if test="$IE=\'false\'">&lt;div id="ntb-grid-keynav<x:v-x:s-$uniqueId" />" tabindex="1" style="position:absolute;width:0px;height:0px;"&gt;&lt;/div&gt;</xsl:if> &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td id="ntb-grid-scroller<x:v-x:s-$uniqueId" />" class="ntb-grid-scrollerheight<x:v-x:s-$uniqueId" /> ntb-grid-scrollerwidth<x:v-x:s-$uniqueId" />" &gt; &lt;div id="ntb-grid-scrollerarea<x:v-x:s-$uniqueId" />" class="ntb-grid-scrollerheight<x:v-x:s-$uniqueId" />" style="overflow:hidden;" &gt; &lt;div tabindex="2" id="ntb-grid-scroller<x:v-x:s-$uniqueId" />" class="ntb-grid-scroller<x:v-x:s-$uniqueId" /> ntb-grid-scrollerheight<x:v-x:s-$uniqueId" />" &gt; &lt;table class="ntb-grid-scroller" cellpadding="0" cellspacing="0" border="0" &gt; &lt;tr class="ntb-grid-topheight<x:v-x:s-$uniqueId" /> " &gt; &lt;td class="ntb-scroller ntb-grid-topheight<x:v-x:s-$uniqueId" />" &gt; &lt;div id="gridvp_0_<x:v-x:s-$uniqueId" />" class="ntb-grid-topheight<x:v-x:s-$uniqueId" /> ntb-grid-leftwidth<x:v-x:s-$uniqueId" />"&gt; &lt;div id="gridvpsurface_0_<x:v-x:s-$uniqueId" />" &gt; &lt;div id="gridvpcontainer_0_<x:v-x:s-$uniqueId" />" &gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="ntb-scroller" &gt; &lt;div id="gridvp_1_<x:v-x:s-$uniqueId" />" class="ntb-grid-topheight<x:v-x:s-$uniqueId" /> ntb-grid-centerwidth<x:v-x:s-$uniqueId" /> ntbgridheader"&gt; &lt;div id="gridvpsurface_1_<x:v-x:s-$uniqueId" />" class="ntb-grid-surfacewidth<x:v-x:s-$uniqueId" />" &gt; &lt;div id="gridvpcontainer_1_<x:v-x:s-$uniqueId" />" &gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr class="ntb-grid-scroller" &gt; &lt;td class="ntb-scroller" &gt; &lt;div style="position:relative;"&gt; <!--&lt;div id="ntb-frozenshadow<x:v-x:s-$uniqueId" />" class="ntb-frozenshadow"&gt;&lt;/div&gt;--> &lt;div id="gridvp_2_<x:v-x:s-$uniqueId" />" class="ntb-grid-midheight<x:v-x:s-$uniqueId" /> ntb-grid-leftwidth<x:v-x:s-$uniqueId" />" style="position:relative;"&gt; &lt;div id="gridvpsurface_2_<x:v-x:s-$uniqueId" />" &gt; &lt;div id="gridvpcontainer_2_<x:v-x:s-$uniqueId" />" &gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="ntb-scroller" &gt; &lt;div id="gridvp_3_<x:v-x:s-$uniqueId" />" class="ntb-grid-midheight<x:v-x:s-$uniqueId"/> ntb-grid-centerwidth<x:v-x:s-$uniqueId" />" style="position:relative;"&gt; &lt;div id="gridvpsurface_3_<x:v-x:s-$uniqueId" />" class="ntb-grid-surfacewidth<x:v-x:s-$uniqueId" />" &gt; &lt;div id="gridvpcontainer_3_<x:v-x:s-$uniqueId" />" &gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/div&gt; &lt;/div&gt; &lt;/td&gt; &lt;td id="ntb-grid-vscrollshow<x:v-x:s-$uniqueId" />" class="ntb-grid-scrollerheight<x:v-x:s-$uniqueId" />"&gt;&lt;div id="vscrollclip<x:v-x:s-$uniqueId" />" class="ntb-grid-scrollerheight<x:v-x:s-$uniqueId" /> ntb-grid-scrollbarwidth<x:v-x:s-$uniqueId"/> ntb-scrollbar" style="overflow:hidden;" &gt;&lt;div id="vscroll<x:v-x:s-$uniqueId" />" class="ntb-scrollbar" style="height:100%;width:<x:v-x:s-number($offset)+number(state/nitobi.grid.Grid/@scrollbarWidth)"/>px;position:relative;top:0px;left:-<x:v-x:s-$offset"/>px;overflow-x:hidden;overflow-y:scroll;" &gt;&lt;div class="vScrollbarRange<x:v-x:s-$uniqueId" />" style="WIDTH:1px;overflow:hidden;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr id="ntb-grid-hscrollshow<x:v-x:s-$uniqueId" />" &gt; &lt;td &gt;&lt;div id="hscrollclip<x:v-x:s-$uniqueId" />" class="ntb-grid-scrollbarheight<x:v-x:s-$uniqueId" /> ntb-grid-scrollerwidth<x:v-x:s-$uniqueId" /> ntb-hscrollbar" style="overflow:hidden;" &gt; &lt;div id="hscroll<x:v-x:s-$uniqueId" />" class="ntb-grid-scrollbarheight<x:v-x:s-$uniqueId" /> ntb-grid-scrollerwidth<x:v-x:s-$uniqueId" /> ntb-scrollbar" style="overflow-x:scroll;overflow-y:hidden;height:30px;position:relative;top:-<x:v-x:s-30-number(state/nitobi.grid.Grid/@scrollbarWidth)"/>px;left:0px;" &gt; &lt;div class="hScrollbarRange<x:v-x:s-$uniqueId" />" style="HEIGHT:1px;overflow:hidden;"&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="ntb-grid-vscrollshow<x:v-x:s-$uniqueId" /> ntb-scrollcorner" &gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr id="ntb-grid-toolbarshow<x:v-x:s-$uniqueId" />" &gt;&lt;td colspan="2" class="ntbtoolbarcontainer" &gt;&lt;div id="toolbarContainer<x:v-x:s-$uniqueId" />" style="overflow:hidden;" class="ntb-grid-toolbarshow<x:v-x:s-$uniqueId" /> ntb-grid-toolbarheight<x:v-x:s-$uniqueId" /> ntb-grid-width<x:v-x:s-$uniqueId" />"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr id="ntb-resize-container<x:v-x:s-$uniqueId" />" &gt; &lt;td colspan="2"&gt; <xsl:if test="$resizeEnabled = \'true\'"> &lt;div style="position:relative;"&gt; &lt;div id="resizecornercontainer<x:v-x:s-$uniqueId" />" style="visibility:visible;position:absolute;right:0px;width:20px;height:20px;border:0px;bottom:0px;" onmouseover="nitobi.html.Css.setStyle($(\'resizecorner<x:v-x:s-$uniqueId" />\'), \'visibility\', \'visible\')" onmouseout="nitobi.html.Css.setStyle($(\'resizecorner<x:v-x:s-$uniqueId" />\'), \'visibility\', \'hidden\')"&gt; &lt;div id="resizecorner<x:v-x:s-$uniqueId" />" style="visibility:hidden;"&gt; &lt;div class="ntbresizeindicatorright"&gt; &lt;/div&gt; &lt;div class="ntbresizeindicatorbottom"&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; </xsl:if> &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;</x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.frameXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_frameXslProc));

var temp_ntb_listboxXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <xsl:output method="xml" omit-xml-declaration="yes"/> <x:p-x:n-DisplayFields"x:s-\'\'"></x:p-> <x:p-x:n-ValueField"x:s-\'\'"></x:p-> <x:p-x:n-val"x:s-\'\'"></x:p-> <x:t- match="/"> <!--<x:va-x:n-cell"x:s-/root/metadata/r[@xi=$row]/*[@xi=$col]"></x:va->--> <select> <!--<x:c-> <x:wh- test="$DatasourceId">--> <xsl:for-eachx:s-/ntb:datasource/ntb:data/*"> <xsl:sortx:s-@*[name(.)=substring-before($DisplayFields,\'|\')]" data-type="text" order="ascending" /> <option> <x:a-x:n-value"> <x:v-x:s-@*[name(.)=$ValueField]"></x:v-> </x:a-> <x:a-x:n-rn"> <x:v-x:s-position()"></x:v-> </x:a-> <xsl:if test="@*[name(.)=$ValueField and .=$val]"> <x:a-x:n-selected">true</x:a-> </xsl:if> <x:ct-x:n-print-displayfields"> <x:w-x:n-field"x:s-$DisplayFields" /> </x:ct-> </option> </xsl:for-each> <!--</x:wh-> <x:o-> </x:o-> </x:c->--> </select> </x:t-> <x:t-x:n-print-displayfields"> <x:p-x:n-field" /> <x:c-> <x:wh- test="contains($field,\'|\')" > <!-- Here we hardcode a spacer \', \' - this should probably be moved elsewhere. --> <x:v-x:s-concat(@*[name(.)=substring-before($field,\'|\')],\', \')"></x:v-> <x:ct-x:n-print-displayfields"> <x:w-x:n-field"x:s-substring-after($field,\'|\')" /> </x:ct-> </x:wh-> <x:o-> <x:v-x:s-@*[name(.)=$field]"></x:v-> </x:o-> </x:c-> </x:t-> </xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.form");
nitobi.form.listboxXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_listboxXslProc));

var temp_ntb_mergeEbaXmlToLogXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <xsl:output method="xml" omit-xml-declaration="yes"/> <x:p-x:n-defaultAction"></x:p-> <x:p-x:n-startXid"x:s-100" ></x:p-> <xsl:keyx:n-newData" match="/ntb:grid/ntb:newdata/ntb:data/ntb:e" use="@xid" /> <xsl:keyx:n-oldData" match="/ntb:grid/ntb:datasources/ntb:datasource/ntb:data/ntb:e" use="@xid" /> <x:t- match="@* | node()" > <xsl:copy> <x:at-x:s-@*|node()" /> </xsl:copy> </x:t-> <x:t- match="/ntb:grid/ntb:datasources/ntb:datasource/ntb:data/ntb:e"> <xsl:if test="not(key(\'newData\',@xid))"> <xsl:copy> <xsl:copy-ofx:s-@*" /> </xsl:copy> </xsl:if> </x:t-> <x:t- match="/ntb:grid/ntb:datasources/ntb:datasource/ntb:data"> <xsl:copy> <x:at-x:s-@*|node()" /> <xsl:for-eachx:s-/ntb:grid/ntb:newdata/ntb:data/ntb:e"> <xsl:copy> <xsl:copy-ofx:s-@*" /> <xsl:if test="$defaultAction"> <x:va-x:n-oldNode"x:s-key(\'oldData\',@xid)" /> <x:c-> <x:wh- test="$oldNode"> <x:va- name=\'xid\'x:s-@xid" /> <x:a-x:n-xac"><x:v-x:s-$oldNode/@xac" /></x:a-> </x:wh-> <x:o-> <x:a-x:n-xac"><x:v-x:s-$defaultAction" /></x:a-> </x:o-> </x:c-> </xsl:if> </xsl:copy> </xsl:for-each> </xsl:copy> </x:t-></xsl:stylesheet> ';
nitobi.lang.defineNs("nitobi.data");
nitobi.data.mergeEbaXmlToLogXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_mergeEbaXmlToLogXslProc));

var temp_ntb_mergeEbaXmlXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <xsl:output method="xml" omit-xml-declaration="no" /> <x:p-x:n-startRowIndex"x:s-100" ></x:p-> <x:p-x:n-endRowIndex"x:s-200" ></x:p-> <x:p-x:n-guid"x:s-1"></x:p-> <xsl:keyx:n-newData" match="/ntb:grid/ntb:newdata/ntb:data/ntb:e" use="@xi" /> <xsl:keyx:n-oldData" match="/ntb:grid/ntb:datasources/ntb:datasource/ntb:data/ntb:e" use="@xi" /> <x:t- match="@* | node()" > <xsl:copy> <x:at-x:s-@*|node()" /> </xsl:copy> </x:t-> <x:t- match="/ntb:grid/ntb:datasources/ntb:datasource/ntb:data/ntb:e"> <x:c-> <x:wh- test="(number(@xi) &gt;= $startRowIndex) and (number(@xi) &lt;= $endRowIndex)"> <xsl:copy> <xsl:copy-ofx:s-@*" /> <xsl:copy-ofx:s-key(\'newData\',@xi)/@*" /> </xsl:copy> </x:wh-> <x:o-> <xsl:copy> <x:at-x:s-@*|node()" /> </xsl:copy> </x:o-> </x:c-> </x:t-> <x:t- match="/ntb:grid/ntb:datasources/ntb:datasource/ntb:data"> <xsl:copy> <x:at-x:s-@*|node()" /> <xsl:for-eachx:s-/ntb:grid/ntb:newdata/ntb:data/ntb:e"> <xsl:if test="not(key(\'oldData\',@xi))"> <xsl:elementx:n-ntb:e" namespace="http://www.nitobi.com"> <xsl:copy-ofx:s-@*" /> <x:a-x:n-xid"><x:v-x:s-generate-id(.)"/><x:v-x:s-position()"/><x:v-x:s-$guid"/></x:a-> </xsl:element> </xsl:if> </xsl:for-each> </xsl:copy> </x:t-> <x:t- match="/ntb:grid/ntb:newdata/ntb:data/ntb:e"> <xsl:copy> <xsl:copy-ofx:s-@*" /> <x:va-x:n-oldData"x:s-key(\'oldData\',@xi)"/> <x:c-> <x:wh- test="$oldData"> <xsl:copy-ofx:s-$oldData/@*" /> <xsl:copy-ofx:s-@*" /> <x:a-x:n-xac">u</x:a-> <xsl:if test="$oldData/@xac=\'i\'"> <x:a-x:n-xac">i</x:a-> </xsl:if> </x:wh-> <x:o-> <x:a-x:n-xid"><x:v-x:s-generate-id(.)"/><x:v-x:s-position()"/><x:v-x:s-$guid"/></x:a-> <x:a-x:n-xac">i</x:a-> </x:o-> </x:c-> </xsl:copy> </x:t-> </xsl:stylesheet> ';
nitobi.lang.defineNs("nitobi.data");
nitobi.data.mergeEbaXmlXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_mergeEbaXmlXslProc));

var temp_ntb_mergeUpdateAttributesXslProc='<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <x:t-x:n-xmlUpdate"> <update></update> </x:t-> <x:t- match="@*|node()"> <xsl:copy> <x:at-x:s-@*|node()"/> </xsl:copy> </x:t-> <x:t- match="//update//@*"> <xsl:copy> <x:at-x:s-node()|@*"/> </xsl:copy> </x:t-> <!-- update the number of rows does not account for inserts! --> <x:t- match="//metadata/@numrows"> <x:a-x:n-{name(.)}"><x:v-x:s-. - count((document(\'\')//data[@id=\'_default\']/e[@xac=\'d\']))" /></x:a-> </x:t-> <!-- merge the updated attributes for each row --> <x:t- match="@*"> <x:va-x:n-currentXI"x:s-../@xi"/> <x:va-x:n-parentID"x:s-../../@id"/> <x:va-x:n-parentXI"x:s-../../@xi"/> <x:va-x:n-targetNode"x:s-(document(\'\')//*[@id=$parentID or @xi=$parentXI]/*[@xi=$currentXI and @xac=\'u\'])" /> <x:c-> <x:wh- test="($targetNode) and (name($targetNode)=name(..)) and (../@xi = $targetNode/@xi) and (name(../..) = name($targetNode/..))"> <xsl:copy> <x:at-x:s-node()|@*"/> </xsl:copy> <x:at-x:s-$targetNode/@*" /> </x:wh-> <x:o-> <xsl:copy> <x:at-x:s-node()|@*"/> </xsl:copy> </x:o-> </x:c-> </x:t-> <!-- delete rows --> <x:t- match="//root/*//node()"> <x:va-x:n-currentXI"x:s-@xi"/> <x:va-x:n-parentID"x:s-../@id"/> <x:va-x:n-parentXI"x:s-../@xi"/> <x:va-x:n-targetNode"x:s-(document(\'\')//*[@id=$parentID or @xi=$parentXI]/*[@xi=$currentXI and @xac=\'d\'])" /> <x:c-> <x:wh- test="($targetNode) and (name($targetNode/..)=name(..)) and (name() = name($targetNode))"> </x:wh-> <x:o-> <xsl:copy> <x:at-x:s-node()|@*"/> </xsl:copy> </x:o-> </x:c-> </x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.data");
nitobi.data.mergeUpdateAttributesXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_mergeUpdateAttributesXslProc));

var temp_ntb_modelFromDeclarationInitializerXslProc='<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" encoding="utf-8" omit-xml-declaration="yes"/> <x:t- match="interface"> <x:ct-x:n-initJSDefaults"/> <x:at-/> </x:t-> <x:t-x:n-initJSDefaults"> var elem = this.Declaration.grid.documentElement; var valueFromHtml; </x:t-> <x:t- match="properties | events"> <xsl:for-eachx:s-*"> valueFromHtml = <x:c-><x:wh- test="@htmltag">elem.getAttribute("<x:v-x:s-@htmltag"/>")</x:wh-><x:o->elem.getAttribute("<x:v-x:s-@name"/>")</x:o-></x:c->; if (valueFromHtml) { this.set<x:v-x:s-@name"/>(valueFromHtml); } </xsl:for-each> </x:t-> <x:t- match="text()"/></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.modelFromDeclarationInitializerXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_modelFromDeclarationInitializerXslProc));

var temp_ntb_numberFormatTemplatesXslProc='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com" xmlns:d="http://exslt.org/dates-and-times" xmlns:n="http://www.nitobi.com/exslt/numbers" extension-element-prefixes="d n"> <!--http://www.w3schools.com/xsl/func_formatnumber.asp--><xsl:decimal-formatx:n-ebaNumber" decimal-separator="." grouping-separator="," /><x:t-x:n-n:format"> <x:p-x:n-number"x:s-0" /> <x:p-x:n-mask"x:s-\'#.00\'" /> <x:p-x:n-group"x:s-\',\'" /> <x:p-x:n-decimal"x:s-\'.\'" /> <x:va-x:n-formattedNumber"> <x:v-x:s-format-number($number, $mask, \'ebaNumber\')" /> </x:va-> <xsl:if test="not(string($formattedNumber) = \'NaN\')"> <x:v-x:s-$formattedNumber" /> </xsl:if></x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.numberFormatTemplatesXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_numberFormatTemplatesXslProc));

var temp_ntb_numberXslProc='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com" xmlns:d="http://exslt.org/dates-and-times" xmlns:n="http://www.nitobi.com/exslt/numbers" extension-element-prefixes="d n"><xsl:output method="text" version="4.0" omit-xml-declaration="yes" />  <!--http://www.w3schools.com/xsl/func_formatnumber.asp--><xsl:decimal-formatx:n-ebaNumber" decimal-separator="." grouping-separator="," /><x:t-x:n-n:format"> <x:p-x:n-number"x:s-0" /> <x:p-x:n-mask"x:s-\'#.00\'" /> <x:p-x:n-group"x:s-\',\'" /> <x:p-x:n-decimal"x:s-\'.\'" /> <x:va-x:n-formattedNumber"> <x:v-x:s-format-number($number, $mask, \'ebaNumber\')" /> </x:va-> <xsl:if test="not(string($formattedNumber) = \'NaN\')"> <x:v-x:s-$formattedNumber" /> </xsl:if></x:t-><x:t- match="/"> <x:ct-x:n-n:format"> <x:w-x:n-number"x:s-//number" /> <x:w-x:n-mask"x:s-//mask" /> <x:w-x:n-group"x:s-//group" /> <x:w-x:n-decimal"x:s-//decimal" /> </x:ct-></x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.form");
nitobi.form.numberXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_numberXslProc));

var temp_ntb_rowGeneratorXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com" xmlns:d="http://exslt.org/dates-and-times" xmlns:n="http://www.nitobi.com/exslt/numbers" extension-element-prefixes="d n"><xsl:output method="text" omit-xml-declaration="yes"/><x:p-x:n-showIndicators"x:s-\'0\'" /><x:p-x:n-showHeaders"x:s-\'0\'" /><x:p-x:n-firstColumn"x:s-\'0\'" /><x:p-x:n-lastColumn"x:s-\'0\'" /><x:p-x:n-uniqueId"x:s-\'0\'" /><x:p-x:n-rowHover"x:s-\'0\'" /><x:p-x:n-frozenColumnId"x:s-\'\'" /><x:t- match = "/">&lt;xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com" xmlns:d="http://exslt.org/dates-and-times" xmlns:n="http://www.nitobi.com/exslt/numbers" extension-element-prefixes="d n"&gt; &lt;!-- http://java.sun.com/j2se/1.3/docs/api/java/text/SimpleDateFormat.html --&gt;&lt;d:ms&gt; &lt;d:m l="31" a="Jan"&gt;January&lt;/d:m&gt; &lt;d:m l="28" a="Feb"&gt;February&lt;/d:m&gt; &lt;d:m l="31" a="Mar"&gt;March&lt;/d:m&gt; &lt;d:m l="30" a="Apr"&gt;April&lt;/d:m&gt; &lt;d:m l="31" a="May"&gt;May&lt;/d:m&gt; &lt;d:m l="30" a="Jun"&gt;June&lt;/d:m&gt; &lt;d:m l="31" a="Jul"&gt;July&lt;/d:m&gt; &lt;d:m l="31" a="Aug"&gt;August&lt;/d:m&gt; &lt;d:m l="30" a="Sep"&gt;September&lt;/d:m&gt; &lt;d:m l="31" a="Oct"&gt;October&lt;/d:m&gt; &lt;d:m l="30" a="Nov"&gt;November&lt;/d:m&gt; &lt;d:m l="31" a="Dec"&gt;December&lt;/d:m&gt;&lt;/d:ms&gt;&lt;d:ds&gt; &lt;d:d a="Sun"&gt;Sunday&lt;/d:d&gt; &lt;d:d a="Mon"&gt;Monday&lt;/d:d&gt; &lt;d:d a="Tue"&gt;Tuesday&lt;/d:d&gt; &lt;d:d a="Wed"&gt;Wednesday&lt;/d:d&gt; &lt;d:d a="Thu"&gt;Thursday&lt;/d:d&gt; &lt;d:d a="Fri"&gt;Friday&lt;/d:d&gt; &lt;d:d a="Sat"&gt;Saturday&lt;/d:d&gt;&lt;/d:ds&gt;&lt;x:t-x:n-d:format-date"&gt; &lt;x:p-x:n-date-time" /&gt; &lt;x:p-x:n-mask"x:s-\'MMM d, yy\'"/&gt; &lt;x:va-x:n-formatted"&gt; &lt;x:va-x:n-date-time-length"x:s-string-length($date-time)" /&gt; &lt;x:va-x:n-timezone"x:s-\'\'" /&gt; &lt;x:va-x:n-dt"x:s-substring($date-time, 1, $date-time-length - string-length($timezone))" /&gt; &lt;x:va-x:n-dt-length"x:s-string-length($dt)" /&gt; &lt;x:c-&gt; &lt;x:wh- test="substring($dt, 3, 1) = \':\' and substring($dt, 6, 1) = \':\'"&gt; &lt;!--that means we just have a time--&gt; &lt;x:va-x:n-hour"x:s-substring($dt, 1, 2)" /&gt; &lt;x:va-x:n-min"x:s-substring($dt, 4, 2)" /&gt; &lt;x:va-x:n-sec"x:s-substring($dt, 7)" /&gt; &lt;xsl:if test="$hour &amp;lt;= 23 and $min &amp;lt;= 59 and $sec &amp;lt;= 60"&gt; &lt;x:ct-x:n-d:_format-date"&gt; &lt;x:w-x:n-year"x:s-\'NaN\'" /&gt; &lt;x:w-x:n-month"x:s-\'NaN\'" /&gt; &lt;x:w-x:n-day"x:s-\'NaN\'" /&gt; &lt;x:w-x:n-hour"x:s-$hour" /&gt; &lt;x:w-x:n-minute"x:s-$min" /&gt; &lt;x:w-x:n-second"x:s-$sec" /&gt; &lt;x:w-x:n-timezone"x:s-$timezone" /&gt; &lt;x:w-x:n-mask"x:s-$mask" /&gt; &lt;/x:ct-&gt; &lt;/xsl:if&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;!--($neg * -2)--&gt; &lt;x:va-x:n-year"x:s-substring($dt, 1, 4) * (0 + 1)" /&gt; &lt;x:va-x:n-month"x:s-substring($dt, 6, 2)" /&gt; &lt;x:va-x:n-day"x:s-substring($dt, 9, 2)" /&gt; &lt;x:c-&gt; &lt;x:wh- test="$dt-length = 10"&gt; &lt;!--that means we just have a date--&gt; &lt;x:ct-x:n-d:_format-date"&gt; &lt;x:w-x:n-year"x:s-$year" /&gt; &lt;x:w-x:n-month"x:s-$month" /&gt; &lt;x:w-x:n-day"x:s-$day" /&gt; &lt;x:w-x:n-timezone"x:s-$timezone" /&gt; &lt;x:w-x:n-mask"x:s-$mask" /&gt; &lt;/x:ct-&gt; &lt;/x:wh-&gt; &lt;x:wh- test="substring($dt, 14, 1) = \':\' and substring($dt, 17, 1) = \':\'"&gt; &lt;!--that means we have a date + time--&gt; &lt;x:va-x:n-hour"x:s-substring($dt, 12, 2)" /&gt; &lt;x:va-x:n-min"x:s-substring($dt, 15, 2)" /&gt; &lt;x:va-x:n-sec"x:s-substring($dt, 18)" /&gt; &lt;x:ct-x:n-d:_format-date"&gt; &lt;x:w-x:n-year"x:s-$year" /&gt; &lt;x:w-x:n-month"x:s-$month" /&gt; &lt;x:w-x:n-day"x:s-$day" /&gt; &lt;x:w-x:n-hour"x:s-$hour" /&gt; &lt;x:w-x:n-minute"x:s-$min" /&gt; &lt;x:w-x:n-second"x:s-$sec" /&gt; &lt;x:w-x:n-timezone"x:s-$timezone" /&gt; &lt;x:w-x:n-mask"x:s-$mask" /&gt; &lt;/x:ct-&gt; &lt;/x:wh-&gt; &lt;/x:c-&gt; &lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:va-&gt; &lt;x:v-x:s-$formatted" /&gt; &lt;/x:t-&gt;&lt;x:t-x:n-d:_format-date"&gt; &lt;x:p-x:n-year" /&gt; &lt;x:p-x:n-month"x:s-1" /&gt; &lt;x:p-x:n-day"x:s-1" /&gt; &lt;x:p-x:n-hour"x:s-0" /&gt; &lt;x:p-x:n-minute"x:s-0" /&gt; &lt;x:p-x:n-second"x:s-0" /&gt; &lt;x:p-x:n-timezone"x:s-\'Z\'" /&gt; &lt;x:p-x:n-mask"x:s-\'\'" /&gt; &lt;x:va-x:n-char"x:s-substring($mask, 1, 1)" /&gt; &lt;x:c-&gt; &lt;x:wh- test="not($mask)" /&gt; &lt;!--replaced escaping with \' here/--&gt; &lt;x:wh- test="not(contains(\'GyMdhHmsSEDFwWakKz\', $char))"&gt; &lt;x:v-x:s-$char" /&gt; &lt;x:ct-x:n-d:_format-date"&gt; &lt;x:w-x:n-year"x:s-$year" /&gt; &lt;x:w-x:n-month"x:s-$month" /&gt; &lt;x:w-x:n-day"x:s-$day" /&gt; &lt;x:w-x:n-hour"x:s-$hour" /&gt; &lt;x:w-x:n-minute"x:s-$minute" /&gt; &lt;x:w-x:n-second"x:s-$second" /&gt; &lt;x:w-x:n-timezone"x:s-$timezone" /&gt; &lt;x:w-x:n-mask"x:s-substring($mask, 2)" /&gt; &lt;/x:ct-&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:va-x:n-next-different-char"x:s-substring(translate($mask, $char, \'\'), 1, 1)" /&gt; &lt;x:va-x:n-mask-length"&gt; &lt;x:c-&gt; &lt;x:wh- test="$next-different-char"&gt; &lt;x:v-x:s-string-length(substring-before($mask, $next-different-char))" /&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:v-x:s-string-length($mask)" /&gt; &lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:va-&gt; &lt;x:c-&gt; &lt;!--took our the era designator--&gt; &lt;x:wh- test="$char = \'M\'"&gt; &lt;x:c-&gt; &lt;x:wh- test="$mask-length &gt;= 3"&gt; &lt;x:va-x:n-month-node"x:s-document(\'\')/*/d:ms/d:m[number($month)]" /&gt; &lt;x:c-&gt; &lt;x:wh- test="$mask-length &gt;= 4"&gt; &lt;x:v-x:s-$month-node" /&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:v-x:s-$month-node/@a" /&gt; &lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$mask-length = 2"&gt; &lt;x:v-x:s-format-number($month, \'00\')" /&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:v-x:s-$month" /&gt; &lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'E\'"&gt; &lt;x:va-x:n-month-days"x:s-sum(document(\'\')/*/d:ms/d:m[position() &amp;lt; $month]/@l)" /&gt; &lt;x:va-x:n-days"x:s-$month-days + $day + boolean(((not($year mod 4) and $year mod 100) or not($year mod 400)) and $month &amp;gt; 2)" /&gt; &lt;x:va-x:n-y-1"x:s-$year - 1" /&gt; &lt;x:va-x:n-dow"x:s-(($y-1 + floor($y-1 div 4) - floor($y-1 div 100) + floor($y-1 div 400) + $days) mod 7) + 1" /&gt; &lt;x:va-x:n-day-node"x:s-document(\'\')/*/d:ds/d:d[number($dow)]" /&gt; &lt;x:c-&gt; &lt;x:wh- test="$mask-length &gt;= 4"&gt; &lt;x:v-x:s-$day-node" /&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:v-x:s-$day-node/@a" /&gt; &lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'a\'"&gt; &lt;x:c-&gt; &lt;x:wh- test="$hour &gt;= 12"&gt;PM&lt;/x:wh-&gt; &lt;x:o-&gt;AM&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'z\'"&gt; &lt;x:c-&gt; &lt;x:wh- test="$timezone = \'Z\'"&gt;UTC&lt;/x:wh-&gt; &lt;x:o-&gt;UTC&lt;x:v-x:s-$timezone" /&gt;&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:va-x:n-padding"x:s-\'00\'" /&gt; &lt;!--removed padding--&gt; &lt;x:c-&gt; &lt;x:wh- test="$char = \'y\'"&gt; &lt;x:c-&gt; &lt;x:wh- test="$mask-length &amp;gt; 2"&gt;&lt;x:v-x:s-format-number($year, $padding)" /&gt;&lt;/x:wh-&gt; &lt;x:o-&gt;&lt;x:v-x:s-format-number(substring($year, string-length($year) - 1), $padding)" /&gt;&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'d\'"&gt; &lt;x:v-x:s-format-number($day, $padding)" /&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'h\'"&gt; &lt;x:va-x:n-h"x:s-$hour mod 12" /&gt; &lt;x:c-&gt; &lt;x:wh- test="$h"&gt;&lt;x:v-x:s-format-number($h, $padding)" /&gt;&lt;/x:wh-&gt; &lt;x:o-&gt;&lt;x:v-x:s-format-number(12, $padding)" /&gt;&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'H\'"&gt; &lt;x:v-x:s-format-number($hour, $padding)" /&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'k\'"&gt; &lt;x:c-&gt; &lt;x:wh- test="$hour"&gt;&lt;x:v-x:s-format-number($hour, $padding)" /&gt;&lt;/x:wh-&gt; &lt;x:o-&gt;&lt;x:v-x:s-format-number(24, $padding)" /&gt;&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'K\'"&gt; &lt;x:v-x:s-format-number($hour mod 12, $padding)" /&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'m\'"&gt; &lt;x:v-x:s-format-number($minute, $padding)" /&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'s\'"&gt; &lt;x:v-x:s-format-number($second, $padding)" /&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'S\'"&gt; &lt;x:v-x:s-format-number(substring-after($second, \'.\'), $padding)" /&gt; &lt;/x:wh-&gt; &lt;x:wh- test="$char = \'F\'"&gt; &lt;x:v-x:s-floor($day div 7) + 1" /&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:va-x:n-month-days"x:s-sum(document(\'\')/*/d:ms/d:m[position() &amp;lt; $month]/@l)" /&gt; &lt;x:va-x:n-days"x:s-$month-days + $day + boolean(((not($year mod 4) and $year mod 100) or not($year mod 400)) and $month &amp;gt; 2)" /&gt; &lt;x:v-x:s-format-number($days, $padding)" /&gt; &lt;!--removed week in year--&gt; &lt;!--removed week in month--&gt; &lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:o-&gt; &lt;/x:c-&gt; &lt;x:ct-x:n-d:_format-date"&gt; &lt;x:w-x:n-year"x:s-$year" /&gt; &lt;x:w-x:n-month"x:s-$month" /&gt; &lt;x:w-x:n-day"x:s-$day" /&gt; &lt;x:w-x:n-hour"x:s-$hour" /&gt; &lt;x:w-x:n-minute"x:s-$minute" /&gt; &lt;x:w-x:n-second"x:s-$second" /&gt; &lt;x:w-x:n-timezone"x:s-$timezone" /&gt; &lt;x:w-x:n-mask"x:s-substring($mask, $mask-length + 1)" /&gt; &lt;/x:ct-&gt; &lt;/x:o-&gt; &lt;/x:c-&gt;&lt;/x:t-&gt; &lt;!--http://www.w3schools.com/xsl/func_formatnumber.asp--&gt;&lt;xsl:decimal-formatx:n-ebaNumber" decimal-separator="." grouping-separator="," /&gt;&lt;x:t-x:n-n:format"&gt; &lt;x:p-x:n-number"x:s-0" /&gt; &lt;x:p-x:n-mask"x:s-\'#.00\'" /&gt; &lt;x:p-x:n-group"x:s-\',\'" /&gt; &lt;x:p-x:n-decimal"x:s-\'.\'" /&gt; &lt;x:va-x:n-formattedNumber"&gt; &lt;x:v-x:s-format-number($number, $mask, \'ebaNumber\')" /&gt; &lt;/x:va-&gt; &lt;xsl:if test="not(string($formattedNumber) = \'NaN\')"&gt; &lt;x:v-x:s-$formattedNumber" /&gt; &lt;/xsl:if&gt;&lt;/x:t-&gt;&lt;xsl:output method="xml" omit-xml-declaration="yes"/&gt;&lt;x:p-x:n-start" /&gt;&lt;x:p-x:n-end" /&gt;&lt;x:p-x:n-activeColumn"x:s-\'0\'" /&gt;&lt;x:p-x:n-activeRow"x:s-\'0\'" /&gt;&lt;x:p-x:n-sortColumn"x:s-\'0\'" /&gt;&lt;x:p-x:n-sortDirection"x:s-\'Asc\'" /&gt;&lt;x:p-x:n-dataTableId"x:s-\'_default\'" /&gt;&lt;xsl:keyx:n-data-source" match="//ntb:datasources/ntb:datasource" use="@id" /&gt;&lt;x:t- match = "/"&gt; &lt;div&gt; <xsl:if test="$showHeaders"> &lt;table cellpadding="0" cellspacing="0" border="0" class="ntb-grid-headerblock" &gt; &lt;tr class="ntbheaderrow<x:v-x:s-$uniqueId" />"&gt; <xsl:if test="$showIndicators"> &lt;td ebatype="columnheader" xi="<x:v-x:s-position()-1"/>" class="ntbcolumn"&gt; &lt;a href="#" class="ntbrowindicator" onclick="return false;" style=";float:left;"&gt; &lt;x:v-x:s-@xi"/&gt; &lt;/a&gt; &lt;/td&gt; </xsl:if> <xsl:for-eachx:s-*/*"> <xsl:if test="@Visible = \'1\' and (position() &gt; $firstColumn and position() &lt;= $lastColumn)"> &lt;td id="columnheader_<x:v-x:s-position()-1"/>_<x:v-x:s-$uniqueId" />" ebatype="columnheader" xi="<x:v-x:s-position()-1"/>" col="<x:v-x:s-position()-1"/>" onmouseover="$(\'grid<x:v-x:s-$uniqueId" />\').jsObject.handleHeaderMouseOver(this);" onmouseout="$(\'grid<x:v-x:s-$uniqueId" />\').jsObject.handleHeaderMouseOut(this);"&gt; &lt;x:va-x:n-sortString<x:v-x:s-position()-1"/>"&gt; &lt;x:c-&gt; &lt;x:wh- test="$sortColumn=<x:v-x:s-position()-1"/> and $sortDirection=\'Asc\'"&gt;ascending&lt;/x:wh-&gt; &lt;x:wh- test="$sortColumn=<x:v-x:s-position()-1"/> and $sortDirection=\'Desc\'"&gt;descending&lt;/x:wh-&gt; &lt;x:o-&gt;&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:va-&gt; &lt;x:a-x:n-class"&gt;ntbcolumnindicatorborder&lt;x:v-x:s-$sortString<x:v-x:s-position()-1"/>" /&gt;&lt;/x:a-&gt; &lt;div class="ntbcolumnindicator"&gt; <x:c-> <x:wh- test="@Label and not(@Label = \'\') and not(@Label = \' \')"><x:v-x:s-@Label" /></x:wh-> <x:wh- test="ntb:label and not(ntb:label = \'\') and not(ntb:label = \' \')"><x:v-x:s-ntb:label" /></x:wh-> <x:o->ATOKENTOREPLACE</x:o-> </x:c-> &lt;/div&gt; &lt;/td&gt; </xsl:if> </xsl:for-each> &lt;/tr&gt; &lt;colgroup&gt; <xsl:for-eachx:s-*/*"> <xsl:if test="@Visible = \'1\' and (position() &gt; $firstColumn and position() &lt;= $lastColumn)"> &lt;col class="ntbcolumn<x:v-x:s-$uniqueId" />_<x:v-x:s-position()" />"&gt;&lt;/col&gt; </xsl:if> </xsl:for-each> &lt;/colgroup&gt; &lt;/table&gt; </xsl:if> &lt;table cellpadding="0" cellspacing="0" border="0" class="ntb-grid-datablock"&gt; &lt;x:at-x:s-key(\'data-source\', $dataTableId)/ntb:data/ntb:e[@xi&amp;gt;=$start and @xi&amp;lt; $end]" &gt; &lt;xsl:sortx:s-@xi" data-type="number" /&gt; &lt;/x:at-&gt; &lt;colgroup&gt; <xsl:for-eachx:s-*/*"> <xsl:if test="@Visible = \'1\' and (position() &gt; $firstColumn and position() &lt;= $lastColumn)"> &lt;col class="ntbcolumn<x:v-x:s-$uniqueId"/>_<x:v-x:s-position()" />"&gt;&lt;/col&gt; </xsl:if> </xsl:for-each> &lt;/colgroup&gt; &lt;/table&gt; &lt;/div&gt;&lt;/x:t-&gt;&lt;x:t- match="ntb:e"&gt; &lt;x:va-x:n-xi"x:s-@xi" /&gt; &lt;x:va-x:n-rowClass"&gt; &lt;xsl:if test="@xi mod 2 = 0"&gt;ntbalternaterow&lt;/xsl:if&gt; &lt;xsl:if test="<x:v-x:s-@rowselectattr=1"/>"&gt;ebarowselected&lt;/xsl:if&gt; &lt;/x:va-&gt; &lt;tr class="ntbrow {$rowClass} ntbrow<x:v-x:s-$uniqueId"/>" xi="{$xi}"&gt; &lt;x:a-x:n-id"&gt;row_&lt;x:v-x:s-$xi" /&gt;<x:v-x:s-$frozenColumnId"/>_<x:v-x:s-$uniqueId" />&lt;/x:a-&gt; <xsl:for-eachx:s-*/*"> <xsl:if test="@Visible = \'1\' and (position() &gt; $firstColumn and position() &lt;= $lastColumn)"> &lt;x:va-x:n-sortString<x:v-x:s-position()-1"/>"&gt; &lt;x:c-&gt; &lt;x:wh- test="$sortColumn=<x:v-x:s-position()-1"/> and $sortDirection=\'Asc\'"&gt;ascending&lt;/x:wh-&gt; &lt;x:wh- test="$sortColumn=<x:v-x:s-position()-1"/> and $sortDirection=\'Desc\'"&gt;descending&lt;/x:wh-&gt; &lt;x:o-&gt;&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:va-&gt; &lt;x:va-x:n-value<x:v-x:s-position()"/>" &gt; <x:c-> <x:wh- test="not(@xdatafld = \'\')">&lt;x:v-x:s-<x:v-x:s-@xdatafld" />" /&gt;</x:wh-> <!-- @Value will actuall have some escaped XSLT in it like any other bound property --> <x:o-><x:v-x:s-@Value" /></x:o-> </x:c-> &lt;/x:va-&gt; &lt;td ebatype="cell" xi="{$xi}" col="<x:v-x:s-position()-1"/>" value="{$value<x:v-x:s-position()"/>}" &gt; &lt;x:a-x:n-style"&gt;<x:v-x:s-@CssStyle"/>;&lt;/x:a-&gt; &lt;x:a-x:n-id"&gt;cell_&lt;x:v-x:s-$xi" /&gt;_<x:v-x:s-position()-1" />_<x:v-x:s-$uniqueId" />&lt;/x:a-&gt; &lt;x:a-x:n-class"&gt;ntbcellborder<x:v-x:s-$uniqueId"/> ntbcolumndata<x:v-x:s-$uniqueId"/>_<x:v-x:s-position()" /> ntbcolumn&lt;x:v-x:s-$sortString<x:v-x:s-position()-1"/>" /&gt;<xsl:text> </xsl:text><x:v-x:s-@ClassName"/>&lt;/x:a-&gt; &lt;div style="overflow:hidden;white-space:nowrap;"&gt; &lt;x:a-x:n-class"&gt;ntbcell&lt;/x:a-&gt; &lt;x:ct-x:n-<x:c-><x:wh- test="@type and not(@type=\'\')"><x:v-x:s-@type" /></x:wh-><x:o->TEXT</x:o-></x:c->"&gt;&lt;x:w-x:n-value"x:s-$value<x:v-x:s-position()"/>" /&gt;&lt;x:w-x:n-mask" &gt;<x:v-x:s-@Mask"/>&lt;/x:w-&gt;&lt;x:w-x:n-datasource" &gt;<x:v-x:s-@DatasourceId"/>&lt;/x:w-&gt;&lt;x:w-x:n-valuefield" &gt;<x:v-x:s-@ValueField"/>&lt;/x:w-&gt;&lt;x:w-x:n-displayfields" &gt;<x:v-x:s-@DisplayFields"/>&lt;/x:w-&gt;&lt;x:w-x:n-checkedvalue" &gt;<x:v-x:s-@CheckedValue"/>&lt;/x:w-&gt;&lt;x:w-x:n-imageurl" &gt;<x:v-x:s-@ImageUrl"/>&lt;/x:w-&gt; &lt;/x:ct-&gt; &lt;/div&gt; &lt;/td&gt; </xsl:if> </xsl:for-each> &lt;/tr&gt;&lt;/x:t-&gt;&lt;x:t-x:n-replaceblank"&gt; &lt;x:p-x:n-value" /&gt; &lt;x:c-&gt; &lt;x:wh- test="not($value) or $value = \'\' or $value = \' \'"&gt;ATOKENTOREPLACE&lt;/x:wh-&gt; &lt;x:o-&gt;&lt;x:v-x:s-$value" /&gt;&lt;/x:o-&gt; &lt;/x:c-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-replace"&gt; &lt;x:p-x:n-text"/&gt; &lt;x:p-x:n-search"/&gt; &lt;x:p-x:n-replacement"/&gt; &lt;x:c-&gt; &lt;x:wh- test="contains($text, $search)"&gt; &lt;x:v-x:s-substring-before($text, $search)"/&gt; &lt;x:v-x:s-$replacement"/&gt; &lt;x:ct-x:n-replace"&gt; &lt;x:w-x:n-text"x:s-substring-after($text,$search)"/&gt; &lt;x:w-x:n-search"x:s-$search"/&gt; &lt;x:w-x:n-replacement"x:s-$replacement"/&gt; &lt;/x:ct-&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:v-x:s-$text"/&gt; &lt;/x:o-&gt; &lt;/x:c-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-print-displayfields"&gt; &lt;x:p-x:n-field" /&gt; &lt;x:c-&gt; &lt;x:wh- test="contains($field,\'|\')" &gt; &lt;!-- Here we hardcode a spacer \', \' - this should probably be moved elsewhere. --&gt; &lt;x:v-x:s-concat(@*[name(.)=substring-before($field,\'|\')],\', \')" /&gt; &lt;x:ct-x:n-print-displayfields"&gt; &lt;x:w-x:n-field"x:s-substring-after($field,\'|\')" /&gt; &lt;/x:ct-&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:v-x:s-@*[name(.)=$field]" /&gt; &lt;/x:o-&gt; &lt;/x:c-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-replace-break"&gt; &lt;x:p-x:n-text"/&gt; &lt;x:ct-x:n-replace"&gt; &lt;x:w-x:n-text"x:s-$text"/&gt; &lt;x:w-x:n-search"x:s-\'&amp;amp;#xa;\'"/&gt; &lt;x:w-x:n-replacement"x:s-\'&amp;lt;br/&amp;gt;\'"/&gt; &lt;/x:ct-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-TEXT"&gt; &lt;x:p-x:n-value" /&gt; &lt;x:ct-x:n-replaceblank"&gt; &lt;x:w-x:n-value"x:s-$value" /&gt; &lt;/x:ct-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-PASSWORD"&gt; &lt;x:p-x:n-value" /&gt; *********&lt;/x:t-&gt;&lt;x:t-x:n-TEXTAREA"&gt; &lt;x:p-x:n-value" /&gt; &lt;x:ct-x:n-replace-break"&gt; &lt;x:w-x:n-text"&gt; &lt;x:ct-x:n-replaceblank"&gt; &lt;x:w-x:n-value"x:s-$value" /&gt; &lt;/x:ct-&gt; &lt;/x:w-&gt; &lt;/x:ct-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-NUMBER"&gt; &lt;x:p-x:n-value" /&gt; &lt;x:p-x:n-mask" /&gt; &lt;x:va-x:n-number-mask"&gt; &lt;x:c-&gt; &lt;x:wh- test="$mask"&gt;&lt;x:v-x:s-$mask" /&gt;&lt;/x:wh-&gt; &lt;x:o-&gt;#,###.00&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:va-&gt; &lt;x:va-x:n-number"&gt; &lt;x:ct-x:n-n:format"&gt; &lt;x:w-x:n-number"x:s-$value" /&gt; &lt;x:w-x:n-mask"x:s-$number-mask" /&gt; &lt;/x:ct-&gt; &lt;/x:va-&gt; &lt;x:ct-x:n-replaceblank"&gt; &lt;x:w-x:n-value"x:s-$number" /&gt; &lt;/x:ct-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-IMAGE"&gt; &lt;x:p-x:n-value" /&gt; &lt;x:p-x:n-imageurl" /&gt; &lt;x:va-x:n-url"&gt; &lt;x:c-&gt; &lt;x:wh- test="$imageurl"&gt;&lt;x:v-x:s-$imageurl" /&gt;&lt;/x:wh-&gt; &lt;x:o-&gt;&lt;x:v-x:s-$value" /&gt;&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:va-&gt; <!-- image editor --> &lt;img border="0" src="{$url}" /&gt;&lt;/x:t-&gt;&lt;x:t-x:n-DATE"&gt; &lt;x:p-x:n-value" /&gt; &lt;x:p-x:n-mask" /&gt; &lt;x:va-x:n-date-mask"&gt; &lt;x:c-&gt; &lt;x:wh- test="$mask"&gt;&lt;x:v-x:s-$mask" /&gt;&lt;/x:wh-&gt; &lt;x:o-&gt;MMM d, yy&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:va-&gt; &lt;x:va-x:n-date"&gt; &lt;x:ct-x:n-d:format-date"&gt; &lt;x:w-x:n-date-time"x:s-$value" /&gt; &lt;x:w-x:n-mask"x:s-$date-mask" /&gt; &lt;/x:ct-&gt; &lt;/x:va-&gt; &lt;x:ct-x:n-replaceblank"&gt; &lt;x:w-x:n-value"x:s-$date" /&gt; &lt;/x:ct-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-LISTBOX"&gt; &lt;x:p-x:n-value" /&gt; &lt;x:p-x:n-datasource" /&gt; &lt;x:p-x:n-valuefield" /&gt; &lt;x:p-x:n-displayfields" /&gt; &lt;x:c-&gt; &lt;x:wh- test="$datasource"&gt; &lt;xsl:for-eachx:s-key(\'data-source\',$datasource)//*"&gt; &lt;xsl:if test="@*[name(.)=$valuefield and .=$value]"&gt; &lt;x:ct-x:n-replaceblank"&gt; &lt;x:w-x:n-value"&gt; &lt;x:ct-x:n-print-displayfields"&gt; &lt;x:w-x:n-field"x:s-$displayfields" /&gt; &lt;/x:ct-&gt; &lt;/x:w-&gt; &lt;/x:ct-&gt; &lt;/xsl:if&gt; &lt;/xsl:for-each&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:ct-x:n-replaceblank"&gt; &lt;x:w-x:n-value"x:s-$value" /&gt; &lt;/x:ct-&gt; &lt;/x:o-&gt; &lt;/x:c-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-LOOKUP"&gt; &lt;x:p-x:n-value" /&gt; &lt;x:p-x:n-datasource" /&gt; &lt;x:p-x:n-valuefield" /&gt; &lt;x:p-x:n-displayfields" /&gt; &lt;x:c-&gt; &lt;x:wh- test="$valuefield = $displayfields"&gt; &lt;x:ct-x:n-TEXT"&gt; &lt;x:w-x:n-value"x:s-$value" /&gt; &lt;/x:ct-&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:ct-x:n-replaceblank"&gt; &lt;x:w-x:n-value"&gt; &lt;x:c-&gt; &lt;x:wh- test="$datasource"&gt; &lt;x:va-x:n-preset-value" &gt; &lt;xsl:for-eachx:s-key(\'data-source\',$datasource)//*"&gt; &lt;xsl:if test="@*[name(.)=$valuefield and .=$value]"&gt; &lt;x:ct-x:n-print-displayfields"&gt; &lt;x:w-x:n-field"x:s-$displayfields" /&gt; &lt;/x:ct-&gt; &lt;/xsl:if&gt; &lt;/xsl:for-each&gt; &lt;/x:va-&gt; &lt;x:c-&gt; &lt;x:wh- test="$preset-value=\'\'"&gt; &lt;x:v-x:s-$value"/&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:v-x:s-$preset-value"/&gt; &lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:wh-&gt; &lt;x:o-&gt; &lt;x:v-x:s-$value"/&gt; &lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:w-&gt; &lt;/x:ct-&gt; &lt;/x:o-&gt; &lt;/x:c-&gt;&lt;/x:t-&gt;&lt;x:t-x:n-CHECKBOX"&gt; &lt;x:p-x:n-value" /&gt; &lt;x:p-x:n-datasource" /&gt; &lt;x:p-x:n-valuefield" /&gt; &lt;x:p-x:n-displayfields" /&gt; &lt;x:p-x:n-checkedvalue" /&gt; &lt;xsl:for-eachx:s-key(\'data-source\',$datasource)//*"&gt; &lt;xsl:if test="@*[name(.)=$valuefield and .=$value]"&gt; &lt;x:va-x:n-checkString"&gt; &lt;x:c-&gt; &lt;x:wh- test="$value=$checkedvalue"&gt;checked&lt;/x:wh-&gt; &lt;x:o-&gt;unchecked&lt;/x:o-&gt; &lt;/x:c-&gt; &lt;/x:va-&gt; &lt;div style="overflow:hidden;"&gt; &lt;div style="float:left;" class="ntbcheckbox ntbcheckbox{$checkString} checkbox{$checkString}" checked="{$value}" width="10" &gt;ATOKENTOREPLACE&lt;/div&gt;&lt;span&gt;&lt;x:v-x:s-@*[name(.)=$displayfields]" /&gt;&lt;/span&gt; &lt;/div&gt; &lt;/xsl:if&gt; &lt;/xsl:for-each&gt;&lt;/x:t-&gt;&lt;x:t-x:n-LINK"&gt; &lt;x:p-x:n-value" /&gt; &lt;span class="ntbhyperlinkeditor"&gt; &lt;x:ct-x:n-replaceblank"&gt; &lt;x:w-x:n-value"x:s-$value" /&gt; &lt;/x:ct-&gt; &lt;/span&gt;&lt;/x:t-&gt;<!--This can be used as an insertion point for column templates--> &lt;!--COLUMN-TYPE-TEMPLATES--&gt;&lt;/xsl:stylesheet&gt;</x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.rowGeneratorXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_rowGeneratorXslProc));

var temp_ntb_sortXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <xsl:output method="xml" omit-xml-declaration="yes" /> <x:p-x:n-column"x:s-@xi"> </x:p-> <x:p-x:n-dir"x:s-\'ascending\'"> </x:p-> <x:p-x:n-type"x:s-\'text\'"> </x:p-> <x:t- match="*|@*"> <xsl:copy> <x:at-x:s-@*|node()" /> </xsl:copy> </x:t-> <x:t- match="ntb:data"> <xsl:copy> <x:at-x:s-@*"/> <xsl:for-eachx:s-ntb:e"> <xsl:sortx:s-@*[name() =$column]" order="{$dir}" data-type="{$type}"/> <xsl:copy> <x:a-x:n-xi"> <x:v-x:s-position()-1" /> </x:a-> <x:at-x:s-@*" /> </xsl:copy> </xsl:for-each> </xsl:copy> </x:t-><x:t- match="@xi" /></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.data");
nitobi.data.sortXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_sortXslProc));

var temp_ntb_fillColumnXslProc='<?xml version="1.0" encoding="utf-8"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <xsl:output method="xml" omit-xml-declaration="no" /> <x:p-x:n-startRowIndex"x:s-0" ></x:p-> <x:p-x:n-endRowIndex"x:s-10000" ></x:p-> <x:p-x:n-value"x:s-test"></x:p-> <x:p-x:n-column"x:s-a"></x:p-> <x:t- match="@* | node()" > <xsl:copy> <x:at-x:s-@*|node()" /> </xsl:copy> </x:t-> <x:t- match="/ntb:grid/ntb:datasources/ntb:datasource/ntb:data/ntb:e"> <x:c-> <x:wh- test="(number(@xi) &gt;= $startRowIndex) and (number(@xi) &lt;= $endRowIndex)"> <xsl:copy> <xsl:copy-ofx:s-@*" /> <x:a-x:n-{$column}"><x:v-x:s-$value" /></x:a-> </xsl:copy> </x:wh-> <x:o-> <xsl:copy> <x:at-x:s-@*|node()" /> </xsl:copy> </x:o-> </x:c-> </x:t-></xsl:stylesheet> ';
nitobi.lang.defineNs("nitobi.data");
nitobi.data.fillColumnXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_fillColumnXslProc));

var temp_ntb_updategramTranslatorXslProc='<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ntb="http://www.nitobi.com"> <xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes"/> <x:p-x:n-datasource-id"x:s-\'_default\'"></x:p-> <x:p-x:n-xkField" ></x:p-> <x:t- match="/"> <root> <x:at-x:s-//ntb:datasource[@id=$datasource-id]/ntb:data/ntb:e" /> </root> </x:t-> <x:t- match="ntb:e"> <x:c-> <x:wh- test="@xac=\'d\'"> <delete xi="{@xi}" xk="{@*[name() = $xkField]}"></delete> </x:wh-> <x:wh- test="@xac=\'i\'"> <insert><xsl:copy-ofx:s-@*[not(name() = $xkField) and not(name() = \'xac\')]" /><x:a-x:n-xk"><x:v-x:s-@*[name() = $xkField]" /></x:a-></insert> </x:wh-> <x:wh- test="@xac=\'u\'"> <update><xsl:copy-ofx:s-@*[not(name() = $xkField) and not(name() = \'xac\')]" /><x:a-x:n-xk"><x:v-x:s-@*[name() = $xkField]" /></x:a-></update> </x:wh-> </x:c-> </x:t-></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.data");
nitobi.data.updategramTranslatorXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_updategramTranslatorXslProc));



