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="6573";
nitobi.grid.version="3.5.6573";
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.getModel().setAttribute("GetHandler",_12);
this.getHandler=_12;
};
nitobi.ui.IDataBoundList.prototype.getDataSourceId=function(){
return this.datasourceId;
};
nitobi.ui.IDataBoundList.prototype.setDataSourceId=function(_13){
this.column.getModel().setAttribute("DatasourceId",_13);
this.datasourceId=_13;
};
nitobi.ui.IDataBoundList.prototype.getDisplayFields=function(){
return this.displayFields;
};
nitobi.ui.IDataBoundList.prototype.setDisplayFields=function(_14){
this.column.getModel().setAttribute("DisplayFields",_14);
this.displayFields=_14;
};
nitobi.ui.IDataBoundList.prototype.getValueField=function(){
return this.valueField;
};
nitobi.ui.IDataBoundList.prototype.setValueField=function(_15){
this.column.getModel().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.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.flush=function(){
var _32=this.head;
while(Boolean(_32)){
var _33=_32.next;
delete (_32);
_32=_33;
}
this.head=null;
this.tail=null;
};
nitobi.collections.CacheMap.prototype.insertIntoRange=function(_34){
var n=this.head;
var inc=0;
while(n!=null){
if(_34>=n.low&&_34<=n.high){
inc=1;
n.high+=inc;
}else{
n.low+=inc;
n.high+=inc;
}
n=n.next;
}
if(inc==0){
this.insert(_34,_34);
}
};
nitobi.collections.CacheMap.prototype.removeFromRange=function(_37){
var n=this.head;
var inc=0;
while(n!=null){
if(_37>=n.low&&_37<=n.high){
inc=-1;
if(n.low==n.high){
this.remove(_37,_37);
}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,_3b){
low=Number(low);
_3b=Number(_3b);
this.debug.push("insert("+low+","+_3b+")");
if(this.head==null){
var _3c=new nitobi.collections.CacheNode(low,_3b);
this.debug.push("empty cache, adding first node");
this.head=_3c;
this.tail=_3c;
}else{
var n=this.head;
while(n!=null&&low>n.high){
n=n.next;
}
if(n==null){
var _3c=new nitobi.collections.CacheNode(low,_3b);
this.debug.push("appending node to end");
this.tail.next=_3c;
_3c.prev=this.tail;
this.tail=_3c;
}else{
this.debug.push("inserting new node into or before "+n.toString());
if(low<n.low||_3b>n.high){
if(low<n.low){
var _3c=new nitobi.collections.CacheNode(low,_3b);
_3c.prev=n.prev;
_3c.next=n;
if(n.prev!=null){
n.prev.next=_3c;
}
n.prev=_3c;
_3c.high=Math.min(_3c.high,n.low-1);
}else{
var _3c=new nitobi.collections.CacheNode(n.high+1,_3b);
_3c.prev=n;
_3c.next=n.next;
if(n.next!=null){
n.next.prev=_3c;
_3c.high=Math.min(_3b,_3c.next.low-1);
}
n.next=_3c;
}
if(_3c.prev==null){
this.head=_3c;
}
if(_3c.next==null){
this.tail=_3c;
}
}
}
}
};
nitobi.collections.BlockMap.prototype.blocks=function(low,_3f){
var g=new Array();
var n=this.head;
if(n==null||n.low>_3f||this.tail.high<low){
g.push(new nitobi.collections.Range(low,_3f));
return g;
}
var _42=0;
while(n!=null&&n.high<low){
_42=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,_42),Math.min(n.low-1,_3f)));
}
}
if(_3f>n.high){
if(n.next==null||n.next.low>_3f){
g.push(new nitobi.collections.Range(n.high+1,_3f));
}else{
g.push(new nitobi.collections.Range(n.high+1,n.next.low-1));
}
}
n=n.next;
}while(n!=null&&n.high<_3f);
}else{
g.push(new nitobi.collections.Range(this.tail.high+1,_3f));
}
return g;
};
nitobi.lang.defineNs("nitobi.collections");
nitobi.collections.CellSet=function(_43,_44,_45,_46,_47){
this.owner=_43;
if(_44!=null&&_45!=null&&_46!=null&&_47!=null){
this.setRange(_44,_45,_46,_47);
}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(_4b,_4c,_4d,_4e){
this._startRow=_4b;
this._startColumn=_4c;
this._endRow=_4d;
this._endColumn=_4e;
this._leftColumn=Math.min(_4c,_4e);
this._rightColumn=Math.max(_4c,_4e);
this._topRow=Math.min(_4b,_4d);
this._bottomRow=Math.max(_4b,_4d);
};
nitobi.collections.CellSet.prototype.changeStartCell=function(_4f,_50){
this._startRow=_4f;
this._startColumn=_50;
this._leftColumn=Math.min(_50,this._endColumn);
this._rightColumn=Math.max(_50,this._endColumn);
this._topRow=Math.min(_4f,this._endRow);
this._bottomRow=Math.max(_4f,this._endRow);
};
nitobi.collections.CellSet.prototype.changeEndCell=function(_51,_52){
this._endRow=_51;
this._endColumn=_52;
this._leftColumn=Math.min(_52,this._startColumn);
this._rightColumn=Math.max(_52,this._startColumn);
this._topRow=Math.min(_51,this._startRow);
this._bottomRow=Math.max(_51,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(_53,_54){
return this.owner.getCellObject(this._topRow+_53,this._leftColumn+_54);
};
if(typeof (nitobi.collections)=="undefined"){
nitobi.collections={};
}
nitobi.collections.CacheNode=function(low,_56){
this.low=low;
this.high=_56;
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 _58=this.next;
if(_58!=null&&_58.low<=this.high+1){
this.high=Math.max(this.high,_58.high);
this.low=Math.min(this.low,_58.low);
var _59=_58.next;
this.next=_59;
if(_59!=null){
_59.prev=this;
}
_58.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,_5b){
this.low=low;
this.high=_5b;
};
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(){
ebagdl=0;
ebagd1=9999999999999;
s="var d = new Date().getTime();if ((d<"+ebagdl+") || (d>"+ebagd1+")) {alert('Evaluation period has expired.\\n\\nPlease notify your system administrator.\\n\\nPurchase Information:\\n       NITOBI SOFTWARE\\n\\n       www.nitobi.com\\n       sales@nitobi.com         \\n       Telephone: (604) 685-9287\\n       Fax: (604) 648-9090\\n       Toll-Free: 1-866-6EB-APPS\\n                      (1-866-632-2777)');}";
eval(s);
};
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();
this.modelNodes={};
this.cachedCells={};
this.configureDefaults();
if(nitobi.browser.IE6){
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.subscribe("AfterPaste",this.focus);
this.subscribeOnce("HtmlReady",this.adjustHorizontalScrollBars);
this.subscribe("AfterGridResize",this.adjustHorizontalScrollBars);
this.events=[];
this.scrollerEvents=[];
this.cellEvents=[];
this.headerEvents=[];
this.keyEvents=[];
};
nitobi.lang.implement(nitobi.grid.Grid,nitobi.Object);
var ntb_gridp=nitobi.grid.Grid.prototype;
ntb_gridp.properties={id:{n:"ID",t:"",d:"",p:"j"},toolbarheight:{n:"ToolbarHeight",t:"",d:25,p:"j"},selection:{n:"Selection",t:"",d:null,p:"j"},bound:{n:"Bound",t:"",d:false,p:"j"},registeredto:{n:"RegisteredTo",t:"",d:true,p:"j"},licensekey:{n:"LicenseKey",t:"",d:true,p:"j"},columns:{n:"Columns",t:"",d:true,p:"j"},columnsdefined:{n:"ColumnsDefined",t:"",d:false,p:"j"},declaration:{n:"Declaration",t:"",d:"",p:"j"},datasource:{n:"Datasource",t:"",d:true,p:"j"},keygenerator:{n:"KeyGenerator",t:"",d:"",p:"j"},version:{n:"Version",t:"",d:3.01,p:"j"},cellclicked:{n:"CellClicked",t:"",d:false,p:"j"},uid:{n:"uid",t:"s",d:"",p:"x"},datasourceid:{n:"DatasourceId",t:"s",d:"",p:"x"},currentpageindex:{n:"CurrentPageIndex",t:"i",d:0,p:"x"},columnindicatorsenabled:{n:"ColumnIndicatorsEnabled",t:"b",d:true,p:"x"},rowindicatorsenabled:{n:"RowIndicatorsEnabled",t:"b",d:false,p:"x"},toolbarenabled:{n:"ToolbarEnabled",t:"b",d:true,p:"x"},rowhighlightenabled:{n:"RowHighlightEnabled",t:"b",d:false,p:"x"},rowselectenabled:{n:"RowSelectEnabled",t:"b",d:false,p:"x"},gridresizeenabled:{n:"GridResizeEnabled",t:"b",d:false,p:"x"},widthfixed:{n:"WidthFixed",t:"b",d:false,p:"x"},heightfixed:{n:"HeightFixed",t:"b",d:false,p:"x"},minwidth:{n:"MinWidth",t:"i",d:20,p:"x"},minheight:{n:"MinHeight",t:"i",d:0,p:"x"},singleclickeditenabled:{n:"SingleClickEditEnabled",t:"b",d:false,p:"x"},autokeyenabled:{n:"AutoKeyEnabled",t:"b",d:false,p:"x"},tooltipsenabled:{n:"TooltipsEnabled",t:"b",d:false,p:"x"},entertab:{n:"EnterTab",t:"s",d:"down",p:"x"},hscrollbarenabled:{n:"HScrollbarEnabled",t:"b",d:true,p:"x"},vscrollbarenabled:{n:"VScrollbarEnabled",t:"b",d:true,p:"x"},rowheight:{n:"RowHeight",t:"i",d:23,p:"x"},headerheight:{n:"HeaderHeight",t:"i",d:23,p:"x"},top:{n:"top",t:"i",d:0,p:"x"},left:{n:"left",t:"i",d:0,p:"x"},scrollbarwidth:{n:"scrollbarWidth",t:"i",d:22,p:"x"},scrollbarheight:{n:"scrollbarHeight",t:"i",d:22,p:"x"},freezetop:{n:"freezetop",t:"i",d:0,p:"x"},frozenleftcolumncount:{n:"FrozenLeftColumnCount",t:"i",d:0,p:"x"},rowinsertenabled:{n:"RowInsertEnabled",t:"b",d:true,p:"x"},rowdeleteenabled:{n:"RowDeleteEnabled",t:"b",d:true,p:"x"},asynchronous:{n:"Asynchronous",t:"b",d:true,p:"x"},autosaveenabled:{n:"AutoSaveEnabled",t:"b",d:false,p:"x"},columncount:{n:"ColumnCount",t:"i",d:0,p:"x"},rowsperpage:{n:"RowsPerPage",t:"i",d:20,p:"x"},forcevalidate:{n:"ForceValidate",t:"b",d:false,p:"x"},height:{n:"Height",t:"i",d:100,p:"x"},lasterror:{n:"LastError",t:"s",d:"",p:"x"},multirowselectenabled:{n:"MultiRowSelectEnabled",t:"b",d:false,p:"x"},multirowselectfield:{n:"MultiRowSelectField",t:"s",d:"",p:"x"},multirowselectattr:{n:"MultiRowSelectAttr",t:"s",d:"",p:"x"},gethandler:{n:"GetHandler",t:"s",d:"",p:"x"},savehandler:{n:"SaveHandler",t:"s",d:"",p:"x"},width:{n:"Width",t:"i",d:"",p:"x"},pagingmode:{n:"PagingMode",t:"s",d:"LiveScrolling",p:"x"},datamode:{n:"DataMode",t:"s",d:"Caching",p:"x"},rendermode:{n:"RenderMode",t:"s",d:"",p:"x"},copyenabled:{n:"CopyEnabled",t:"b",d:true,p:"x"},pasteenabled:{n:"PasteEnabled",t:"b",d:true,p:"x"},sortenabled:{n:"SortEnabled",t:"b",d:true,p:"x"},sortmode:{n:"SortMode",t:"s",d:"default",p:"x"},editmode:{n:"EditMode",t:"b",d:false,p:"x"},expanding:{n:"Expanding",t:"b",d:false,p:"x"},theme:{n:"Theme",t:"s",d:"nitobi",p:"x"},cellborder:{n:"CellBorder",t:"i",d:0,p:"x"},oncellclickevent:{n:"OnCellClickEvent",t:"",p:"e"},onbeforecellclickevent:{n:"OnBeforeCellClickEvent",t:"",p:"e"},oncelldblclickevent:{n:"OnCellDblClickEvent",t:"",p:"e"},ondatareadyevent:{n:"OnDataReadyEvent",t:"",p:"e"},onhtmlreadyevent:{n:"OnHtmlReadyEvent",t:"",p:"e"},ondatarenderedevent:{n:"OnDataRenderedEvent",t:"",p:"e"},oncelldoubleclickevent:{n:"OnCellDoubleClickEvent",t:"",p:"e"},onafterloaddatapageevent:{n:"OnAfterLoadDataPageEvent",t:"",p:"e"},onbeforeloaddatapageevent:{n:"OnBeforeLoadDataPageEvent",t:"",p:"e"},onafterloadpreviouspageevent:{n:"OnAfterLoadPreviousPageEvent",t:"",p:"e"},onbeforeloadpreviouspageevent:{n:"OnBeforeLoadPreviousPageEvent",t:"",p:"e"},onafterloadnextpageevent:{n:"OnAfterLoadNextPageEvent",t:"",p:"e"},onbeforeloadnextpageevent:{n:"OnBeforeLoadNextPageEvent",t:"",p:"e"},onbeforecelleditevent:{n:"OnBeforeCellEditEvent",t:"",p:"e"},onaftercelleditevent:{n:"OnAfterCellEditEvent",t:"",p:"e"},onbeforerowinsertevent:{n:"OnBeforeRowInsertEvent",t:"",p:"e"},onafterrowinsertevent:{n:"OnAfterRowInsertEvent",t:"",p:"e"},onbeforesortevent:{n:"OnBeforeSortEvent",t:"",p:"e"},onaftersortevent:{n:"OnAfterSortEvent",t:"",p:"e"},onbeforerefreshevent:{n:"OnBeforeRefreshEvent",t:"",p:"e"},onafterrefreshevent:{n:"OnAfterRefreshEvent",t:"",p:"e"},onbeforesaveevent:{n:"OnBeforeSaveEvent",t:"",p:"e"},onaftersaveevent:{n:"OnAfterSaveEvent",t:"",p:"e"},onhandlererrorevent:{n:"OnHandlerErrorEvent",t:"",p:"e"},onrowblurevent:{n:"OnRowBlurEvent",t:"",p:"e"},oncellfocusevent:{n:"OnCellFocusEvent",t:"",p:"e"},onfocusevent:{n:"OnFocusEvent",t:"",p:"e"},oncellblurevent:{n:"OnCellBlurEvent",t:"",p:"e"},onafterrowdeleteevent:{n:"OnAfterRowDeleteEvent",t:"",p:"e"},onbeforerowdeleteevent:{n:"OnBeforeRowDeleteEvent",t:"",p:"e"},oncellupdateevent:{n:"OnCellUpdateEvent",t:"",p:"e"},onrowfocusevent:{n:"OnRowFocusEvent",t:"",p:"e"},onbeforecopyevent:{n:"OnBeforeCopyEvent",t:"",p:"e"},onaftercopyevent:{n:"OnAfterCopyEvent",t:"",p:"e"},onbeforepasteevent:{n:"OnBeforePasteEvent",t:"",p:"e"},onafterpasteevent:{n:"OnAfterPasteEvent",t:"",p:"e"},onerrorevent:{n:"OnErrorEvent",t:"",p:"e"},oncontextmenuevent:{n:"OnContextMenuEvent",t:"",p:"e"},oncellvalidateevent:{n:"OnCellValidateEvent",t:"",p:"e"},onkeydownevent:{n:"OnKeyDownEvent",t:"",p:"e"},onkeyupevent:{n:"OnKeyUpEvent",t:"",p:"e"},onkeypressevent:{n:"OnKeyPressEvent",t:"",p:"e"},onmouseoverevent:{n:"OnMouseOverEvent",t:"",p:"e"},onmouseoutevent:{n:"OnMouseOutEvent",t:"",p:"e"},onmousemoveevent:{n:"OnMouseMoveEvent",t:"",p:"e"},onhitrowendevent:{n:"OnHitRowEndEvent",t:"",p:"e"},onhitrowstartevent:{n:"OnHitRowStartEvent",t:"",p:"e"},onafterdragfillevent:{n:"OnAfterDragFillEvent",t:"",p:"e"},onbeforedragfillevent:{n:"OnBeforeDragFillEvent",t:"",p:"e"}};
ntb_gridp.xColumnProperties={column:{align:{n:"Align",t:"s",d:"left"},classname:{n:"ClassName",t:"s",d:""},cssstyle:{n:"CssStyle",t:"s",d:""},columnname:{n:"ColumnName",t:"s",d:""},type:{n:"Type",t:"s",d:"text"},datatype:{n:"DataType",t:"s",d:"text"},editable:{n:"Editable",t:"b",d:true},initial:{n:"Initial",t:"s",d:""},label:{n:"Label",t:"s",d:""},gethandler:{n:"GetHandler",t:"s",d:""},datasource:{n:"DataSource",t:"s",d:""},template:{n:"Template",t:"s",d:""},templateurl:{n:"TemplateUrl",t:"s",d:""},maxlength:{n:"MaxLength",t:"i",d:255},sortdirection:{n:"SortDirection",t:"s",d:"Desc"},sortenabled:{n:"SortEnabled",t:"b",d:true},width:{n:"Width",t:"i",d:100},visible:{n:"Visible",t:"b",d:true},xdatafld:{n:"xdatafld",t:"s",d:""},value:{n:"Value",t:"s",d:""},xi:{n:"xi",t:"i",d:100},oncellclickevent:{n:"OnCellClickEvent"},onbeforecellclickevent:{n:"OnBeforeCellClickEvent"},oncelldblclickevent:{n:"OnCellDblClickEvent"},onheaderdoubleclickevent:{n:"OnHeaderDoubleClickEvent"},onheaderclickevent:{n:"OnHeaderClickEvent"},onbeforeresizeevent:{n:"OnBeforeResizeEvent"},onafterresizeevent:{n:"OnAfterResizeEvent"},oncellvalidateevent:{n:"OnCellValidateEvent"},onbeforecelleditevent:{n:"OnBeforeCellEditEvent"},onaftercelleditevent:{n:"OnAfterCellEditEvent"},oncellblurevent:{n:"OnCellBlurEvent"},oncellfocusevent:{n:"OnCellFocusEvent"},onbeforesortevent:{n:"OnBeforeSortEvent"},onaftersortevent:{n:"OnAfterSortEvent"},oncellupdateevent:{n:"OnCellUpdateEvent"},onkeydownevent:{n:"OnKeyDownEvent"},onkeyupevent:{n:"OnKeyUpEvent"},onkeypressevent:{n:"OnKeyPressEvent"},onchangeevent:{n:"OnChangeEvent"}},textcolumn:{},numbercolumn:{align:{n:"Align",t:"s",d:"right"},mask:{n:"Mask",t:"s",d:"#,###.00"},negativemask:{n:"NegativeMask",t:"s",d:""},groupingseparator:{n:"GroupingSeparator",t:"s",d:","},decimalseparator:{n:"DecimalSeparator",t:"s",d:"."},onkeydownevent:{n:"OnKeyDownEvent"},onkeyupevent:{n:"OnKeyUpEvent"},onkeypressevent:{n:"OnKeyPressEvent"},onchangeevent:{n:"OnChangeEvent"}},datecolumn:{mask:{n:"Mask",t:"s",d:"M/d/yyyy"},calendarenabled:{n:"CalendarEnabled",t:"b",d:true}},listboxeditor:{datasourceid:{n:"DatasourceId",t:"s",d:""},datasource:{n:"Datasource",t:"s",d:""},gethandler:{n:"GetHandler",t:"s",d:""},displayfields:{n:"DisplayFields",t:"s",d:""},valuefield:{n:"ValueField",t:"s",d:""},onkeydownevent:{n:"OnKeyDownEvent"},onkeyupevent:{n:"OnKeyUpEvent"},onkeypressevent:{n:"OnKeyPressEvent"},onchangeevent:{n:"OnChangeEvent"}},lookupeditor:{datasourceid:{n:"DatasourceId",t:"s",d:""},datasource:{n:"Datasource",t:"s",d:""},gethandler:{n:"GetHandler",t:"s",d:""},displayfields:{n:"DisplayFields",t:"s",d:""},valuefield:{n:"ValueField",t:"s",d:""},delay:{n:"Delay",t:"s",d:""},size:{n:"Size",t:"s",d:6},onkeydownevent:{n:"OnKeyDownEvent"},onkeyupevent:{n:"OnKeyUpEvent"},onkeypressevent:{n:"OnKeyPressEvent"},onchangeevent:{n:"OnChangeEvent"}},checkboxeditor:{datasourceid:{n:"DatasourceId",t:"s",d:""},datasource:{n:"Datasource",t:"s",d:""},gethandler:{n:"GetHandler",t:"s",d:""},displayfields:{n:"DisplayFields",t:"s",d:""},valuefield:{n:"ValueField",t:"s",d:""},checkedvalue:{n:"CheckedValue",t:"s",d:""},uncheckedvalue:{n:"UnCheckedValue",t:"s",d:""}},linkeditor:{openwindow:{n:"OpenWindow",t:"b",d:true}},texteditor:{maxlength:{n:"MaxLength",t:"i",d:255},onkeydownevent:{n:"OnKeyDownEvent"},onkeyupevent:{n:"OnKeyUpEvent"},onkeypressevent:{n:"OnKeyPressEvent"},onchangeevent:{n:"OnChangeEvent"}},numbereditor:{onkeydownevent:{n:"OnKeyDownEvent"},onkeyupevent:{n:"OnKeyUpEvent"},onkeypressevent:{n:"OnKeyPressEvent"},onchangeevent:{n:"OnChangeEvent"}},textareaeditor:{maxlength:{n:"MaxLength",t:"i",d:255},onkeydownevent:{n:"OnKeyDownEvent"},onkeyupevent:{n:"OnKeyUpEvent"},onkeypressevent:{n:"OnKeyPressEvent"},onchangeevent:{n:"OnChangeEvent"}},dateeditor:{mask:{n:"Mask",t:"s",d:"M/d/yyyy"},calendarenabled:{n:"CalendarEnabled",t:"b",d:true},onkeydownevent:{n:"OnKeyDownEvent"},onkeyupevent:{n:"OnKeyUpEvent"},onkeypressevent:{n:"OnKeyPressEvent"},onchangeevent:{n:"OnChangeEvent"}},imageeditor:{imageurl:{n:"ImageUrl",t:"s",d:""}},passwordeditor:{}};
ntb_gridp.typeAccessorCreators={s:function(){
},b:function(){
},i:function(){
},n:function(){
}};
ntb_gridp.createAccessors=function(_5e){
var _5f=ntb_gridp.properties[_5e];
ntb_gridp["set"+_5f.n]=function(){
this[_5f.p+_5f.t+"SET"](_5f.n,arguments);
};
ntb_gridp["get"+_5f.n]=function(){
return this[_5f.p+_5f.t+"GET"](_5f.n,arguments);
};
ntb_gridp["is"+_5f.n]=function(){
return this[_5f.p+_5f.t+"GET"](_5f.n,arguments);
};
ntb_gridp[_5f.n]=_5f.d;
};
for(var name in ntb_gridp.properties){
ntb_gridp.createAccessors(name);
}
ntb_gridp.initialize=function(){
this.fire("Preinitialize");
this.initializeFromCss();
this.createChildren();
this.fire("AfterInitialize");
this.fire("CreationComplete");
};
ntb_gridp.initializeFromCss=function(){
try{
var _60=nitobi.html.getClass("ntb-row");
if(_60!=null&&_60.height!=null&&_60.height!=""){
this.setRowHeight(parseInt(_60.height));
}
var _61=nitobi.html.getClass("ntb-header-row");
if(_61!=null&&_61.height!=null&&_61.height!=""){
this.setHeaderHeight(parseInt(_61.height));
}
if(nitobi.browser.IE&&document.compatMode=="CSS1Compat"){
var _62=nitobi.html.Css.getRule("."+this.getTheme()+" .ntb-cell-border").style;
this.setCellBorder(parseInt(_62.borderLeftWidth+0)+parseInt(_62.borderRightWidth+0)+parseInt(_62.paddingLeft+0)+parseInt(_62.paddingRight+0));
}
}
catch(e){
}
};
ntb_gridp.connectRenderersToDataSet=function(_63){
this.TopLeftRenderer.xmlDataSource=_63;
this.TopCenterRenderer.xmlDataSource=_63;
this.MidLeftRenderer.xmlDataSource=_63;
this.MidCenterRenderer.xmlDataSource=_63;
};
ntb_gridp.connectToDataSet=function(_64,_65){
this.data=_64;
if(this.TopLeftRenderer){
this.connectRenderersToDataSet(_64);
}
this.connectToTable(_65);
};
ntb_gridp.connectToTable=function(_66){
if(typeof (_66)=="string"){
this.datatable=this.data.getTable(_66);
}else{
if(typeof (_66)=="object"){
this.datatable=_66;
}else{
if(this.data.getTable("_default")+""!="undefined"){
this.datatable=this.data.getTable("_default");
}else{
return false;
}
}
}
this.connected=true;
this.updateStructure();
var dt=this.datatable;
var L=nitobi.lang;
dt.subscribe("DataReady",L.close(this,this.handleHandlerError));
dt.subscribe("DataReady",L.close(this,this.syncWithData));
dt.subscribe("DataSorted",L.close(this,this.syncWithData));
dt.subscribe("RowInserted",L.close(this,this.syncWithData));
dt.subscribe("RowDeleted",L.close(this,this.syncWithData));
dt.subscribe("RowCountChanged",L.close(this,this.setRowCount));
dt.subscribe("PastEndOfData",L.close(this,this.adjustRowCount));
dt.subscribe("RowCountKnown",L.close(this,this.finalizeRowCount));
dt.subscribe("StructureChanged",L.close(this,this.updateStructure));
dt.subscribe("ColumnsInitialized",L.close(this,this.updateStructure));
this.dataTableId=this.datatable.id;
this.datatable.setOnGenerateKey(this.getKeyGenerator());
this.fire("TableConnected",this.datatable);
return true;
};
ntb_gridp.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;
};
ntb_gridp.updateStructure=function(){
if(this.inferredColumns){
this.defineColumns(this.datatable);
}
this.mapColumns();
if(this.TopLeftRenderer){
this.defineColumnBindings();
this.defineColumnsFinalize();
}
};
ntb_gridp.mapColumns=function(){
this.fieldMap=this.datatable.fieldMap;
};
ntb_gridp.configureDefaults=function(){
this.initializeModel();
this.displayedFirstRow=0;
this.displayedRowCount=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.grid.frameCssXslProc;
this.frameXslProc=nitobi.grid.frameXslProc;
var C=nitobi.html.Css;
this.CellHoverColor=C.getClassStyle("ntb-cell-hover","backgroundColor")||"#C0C0FF";
this.RowHoverColor=C.getClassStyle("ntb-row-hover","backgroundColor")||"#FFFFC0";
this.CellActiveColor=C.getClassStyle("ntb-cell-active","backgroundColor")||"#F0C0FF";
this.RowActiveColor=C.getClassStyle("ntb-row-active","backgroundColor")||"#FFC0FF";
var _6a=0;
var _6b=0;
var _6c=nitobi.html.getClass("ntb-grid");
if(_6c!=null){
if(_6c.borderTopWidth!=null){
_6b+=nitobi.lang.parseNumber(_6c.borderTopWidth);
}
if(_6c.borderLeftWidth!=null){
_6a+=nitobi.lang.parseNumber(_6c.borderLeftWidth);
}
}
nitobi.form.EDITOR_OFFSETX=_6a;
nitobi.form.EDITOR_OFFSETY=_6b;
};
ntb_gridp.attachDomEvents=function(){
var _6d=this.getGridContainer();
var he=this.headerEvents;
he.push({type:"mousedown",handler:this.handleHeaderMouseDown});
he.push({type:"mouseup",handler:this.handleHeaderMouseUp});
he.push({type:"mousemove",handler:this.handleHeaderMouseMove});
nitobi.html.attachEvents(this.getHeaderContainer(),he,this);
var ce=this.cellEvents;
ce.push({type:"mousedown",handler:this.handleCellMouseDown});
ce.push({type:"mousemove",handler:this.handleCellMouseMove});
nitobi.html.attachEvents(this.getDataContainer(),ce,this);
var ge=this.events;
ge.push({type:"contextmenu",handler:this.handleContextMenu});
ge.push({type:"mousedown",handler:this.handleMouseDown});
ge.push({type:"mouseup",handler:this.handleMouseUp});
ge.push({type:"mousemove",handler:this.handleMouseMove});
ge.push({type:"mouseout",handler:this.handleMouseOut});
ge.push({type:"mouseover",handler:this.handleMouseOver});
if(nitobi.browser.MOZ){
nitobi.html.attachEvent($("vscrollclip"+this.uid),"mousedown",this.focus,this);
nitobi.html.attachEvent($("hscrollclip"+this.uid),"mousedown",this.focus,this);
ge.push({type:"DOMMouseScroll",handler:this.handleMouseWheel});
}else{
if(nitobi.browser.IE){
ge.push({type:"mousewheel",handler:this.handleMouseWheel});
}
}
nitobi.html.attachEvents(_6d,ge,this,false);
if(nitobi.browser.IE){
_6d.onselectstart=function(){
var id=window.event.srcElement.id;
if(id.indexOf("selectbox")==0||id.indexOf("cell")==0){
return false;
}
};
}
if(nitobi.browser.IE){
this.keyNav=this.getScrollerContainer();
}else{
this.keyNav=$("ntb-grid-keynav"+this.uid);
}
this.keyEvents=[{type:"keydown",handler:this.handleKey},{type:"keyup",handler:this.handleKeyUp},{type:"keypress",handler:this.handleKeyPress}];
nitobi.html.attachEvents(this.keyNav,this.keyEvents,this);
};
ntb_gridp.hoverCell=function(_72){
var h=this.hovered;
if(h){
var hs=h.style;
if(hs.backgroundColor==this.CellHoverColor){
hs.backgroundColor=this.hoveredbg;
}
}
if(_72==null||_72==this.activeCell){
return;
}
var cs=_72.style;
this.hoveredbg=cs.backgroundColor;
this.hovered=_72;
cs.backgroundColor=this.CellHoverColor;
};
ntb_gridp.hoverView=function(row){
this.rowhoveredbg=row.style.backgroundColor;
this.rowhovered=row;
row.style.backgroundColor=this.RowHoverColor;
};
ntb_gridp.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 _78=-1;
var _79=nitobi.html.getFirstChild(row);
var _7a=nitobi.grid.Row.getRowNumber(row);
var _7b=nitobi.grid.Row.getRowElements(this,_7a);
if(_7b.left!=null&&_7b.left!=this.leftActiveRow){
this.leftrowhoveredbg=_7b.left.style.backgroundColor;
this.leftrowhovered=_7b.left;
_7b.left.style.backgroundColor=this.RowHoverColor;
}
if(_7b.mid!=null&&_7b.mid!=this.midActiveRow){
this.midrowhoveredbg=_7b.mid.style.backgroundColor;
this.midrowhovered=_7b.mid;
_7b.mid.style.backgroundColor=this.RowHoverColor;
}
};
ntb_gridp.clearHover=function(){
this.hoverCell();
this.hoverRow();
};
ntb_gridp.handleMouseOver=function(evt){
this.fire("MouseOver",evt);
};
ntb_gridp.handleMouseOut=function(evt){
this.clearHover();
this.fire("MouseOut",evt);
};
ntb_gridp.handleMouseDown=function(evt){
if(this.overResizeGrabby(evt)){
this.gridResizer.startResize(this,evt);
}
};
ntb_gridp.handleHeaderMouseDown=function(evt){
var _80=this.findActiveCell(evt.srcElement);
if(_80==null){
return;
}
var x=evt.clientX;
var _82=0;
if(nitobi.browser.MOZ){
_82=this.Scroller.scrollLeft;
}
var _83=_80.getBoundingClientRect().right-_82;
var _84=nitobi.grid.Cell.getColumnNumber(_80);
if((x<_83&&x>_83-10)){
this.columnResizer.startResize(this,this.getColumnObject(_84),_80,evt);
return false;
}else{
this.headerClicked(_84);
this.fire("HeaderDown",_84);
}
};
ntb_gridp.handleCellMouseDown=function(evt){
var _86=this.findActiveCell(evt.srcElement);
if(_86==null){
return;
}
if(!evt.shiftKey){
var _87=this.getSelectedColumnObject();
var _88=new nitobi.grid.OnCellClickEventArgs(this,this.getSelectedCellObject());
if(!this.fire("BeforeCellClick",_88)||(!!_87&&!nitobi.event.evaluate(_87.getOnBeforeCellClickEvent(),_88))){
return;
}
this.setCellClicked(true);
this.setActiveCell(_86,evt.ctrlKey);
this.selection.selecting=true;
var _87=this.getSelectedColumnObject();
var _88=new nitobi.grid.OnCellClickEventArgs(this,this.getSelectedCellObject());
this.fire("CellClick",_88);
if(!!_87){
nitobi.event.evaluate(_87.getOnCellClickEvent(),_88);
}
}
};
ntb_gridp.handleMouseUp=function(_89){
this.getSelection().handleGrabbyMouseUp(_89);
};
ntb_gridp.handleHeaderMouseUp=function(evt){
var _8b=this.findActiveCell(evt.srcElement);
if(!_8b){
this.focus();
return;
}
var _8c=parseInt(_8b.getAttribute("xi"));
this.fire("HeaderUp",_8c);
};
ntb_gridp.handleMouseMove=function(evt){
var _8e=this.getGridContainer();
if(this.overResizeGrabby(evt)){
_8e.style.cursor="nw-resize";
}else{
_8e.style.cursor="auto";
}
this.fire("MouseMove",evt);
};
ntb_gridp.overResizeGrabby=function(evt){
if(this.isGridResizeEnabled()){
var _90=this.getGridContainer();
var _91=nitobi.html.getEventCoords(evt);
var x=_91.x;
var y=_91.y;
if(nitobi.browser.IE){
x=evt.clientX,y=evt.clientY;
}
var _94=nitobi.html.getBox(_90);
if((x<(_94.right)&&x>(_94.right)-20)&&(y<(_94.bottom)&&y>(_94.bottom)-20)){
return true;
}
}
return false;
};
ntb_gridp.handleHeaderMouseMove=function(evt){
var _96=this.findActiveCell(evt.srcElement);
if(_96==null){
return;
}
var x=evt.clientX;
var _98=_96.getBoundingClientRect(0,(nitobi.grid.Cell.getColumnNumber(_96)>this.getFrozenLeftColumnCount()?this.Scroller.scrollLeft:0));
if((x<_98.right&&x>_98.right-10)){
_96.style.cursor="w-resize";
}else{
(nitobi.browser.IE?_96.style.cursor="hand":_96.style.cursor="pointer");
}
};
ntb_gridp.handleHeaderMouseOver=function(_99){
var _9a=nitobi.grid.Cell.getColumnNumber(_99);
var col=this.getColumnObject(_9a);
var _9c=col.getSortDirection();
nitobi.html.Css.addClass(_99,_99.className.split(" ")[0]+"hover");
};
ntb_gridp.handleHeaderMouseOut=function(_9d){
var _9e=nitobi.grid.Cell.getColumnNumber(_9d);
var col=this.getColumnObject(_9e);
var _a0=col.getSortDirection();
_9d.className=_9d.className.split(" ")[0];
};
ntb_gridp.handleCellMouseMove=function(evt){
this.setCellClicked(false);
var _a2=this.findActiveCell(evt.srcElement);
if(_a2==null){
return;
}
var sel=this.selection;
var _a4=evt.button;
var _a5=nitobi.html.getEventCoords(evt);
var x=_a5.x,y=_a5.y;
if(nitobi.browser.IE){
x=evt.clientX,y=evt.clientY;
}
if(sel.selecting){
if(_a4==1||(_a4==0&&!nitobi.browser.IE)){
if(!sel.expanding){
sel.redraw(_a2);
}else{
var _a8=sel.expandStartCoords;
var _a9=0;
if(x>_a8.right){
_a9=Math.abs(x-_a8.right);
}else{
if(x<_a8.left){
_a9=Math.abs(x-_a8.left);
}
}
var _aa=0;
if(y>_a8.bottom){
_aa=Math.abs(y-_a8.bottom);
}else{
if(y<_a8.top){
_aa=Math.abs(y-_a8.top);
}
}
if(_aa>_a9){
expandDir="vert";
}else{
expandDir="horiz";
}
sel.expand(_a2,expandDir);
}
this.ensureCellInView(_a2);
}else{
this.selection.selecting=false;
}
}else{
this.hoverCell(_a2);
this.hoverRow(_a2.parentNode);
}
};
ntb_gridp.handleMouseWheel=function(_ab){
this.focus();
var _ac=0;
if(_ab.wheelDelta){
_ac=_ab.wheelDelta/120;
}else{
if(_ab.detail){
_ac=-_ab.detail/3;
}
}
this.scrollVerticalRelative(-20*_ac);
nitobi.html.cancelEvent(_ab);
};
ntb_gridp.setActiveCell=function(_ad,_ae){
if(!_ad){
return;
}
this.blurActiveCell(this.activeCell);
this.focus();
this.activateCell(_ad);
var _af=this.activeColumnObject;
this.selection.collapse(this.activeCell);
if(!this.isCellClicked()){
this.ensureCellInView(this.activeCell);
this.setCellClicked(false);
}
var row=_ad.parentNode;
this.setActiveRow(row,_ae);
var _b1=new nitobi.grid.OnCellFocusEventArgs(this,this.getSelectedCellObject());
this.fire("CellFocus",_b1);
if(!!_af){
nitobi.event.evaluate(_af.getOnCellFocusEvent(),_b1);
}
};
ntb_gridp.activateCell=function(_b2){
this.activeCell=_b2;
this.activeCellObject=new nitobi.grid.Cell(this,_b2);
this.activeColumnObject=this.getSelectedColumnObject();
};
ntb_gridp.blurActiveCell=function(_b3){
this.oldCell=_b3;
var _b4=this.activeColumnObject;
var _b5=new nitobi.grid.OnCellBlurEventArgs(this,this.getSelectedCellObject());
if(!!_b4){
if(!this.fire("CellBlur",_b5)||!nitobi.event.evaluate(_b4.getOnCellBlurEvent(),_b5)){
return;
}
}
};
ntb_gridp.getRowNodes=function(row){
return nitobi.grid.Row.getRowElements(this,nitobi.grid.Row.getRowNumber(row));
};
ntb_gridp.setActiveRow=function(row,_b8){
var Row=nitobi.grid.Row;
var _ba=Row.getRowNumber(row);
var _bb=-1;
if(this.oldCell!=null){
_bb=Row.getRowNumber(this.oldCell);
}
if(this.selectedRows[0]!=null){
_bb=Row.getRowNumber(this.selectedRows[0]);
}
if(!_b8||!this.isMultiRowSelectEnabled()){
if(_ba!=_bb&&_bb!=-1){
var _bc=new nitobi.grid.OnRowBlurEventArgs(this,this.getRowObject(_bb));
if(!this.fire("RowBlur",_bc)||!nitobi.event.evaluate(this.getOnRowBlurEvent(),_bc)){
return;
}
}
this.clearActiveRows();
}
if(this.isRowSelectEnabled()){
var _bd=Row.getRowElements(this,_ba);
this.midActiveRow=_bd.mid;
this.leftActiveRow=_bd.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(_ba!=_bb){
var _be=new nitobi.grid.OnRowFocusEventArgs(this,this.getRowObject(_ba));
this.fire("RowFocus",_be);
nitobi.event.evaluate(this.getOnRowFocusEvent(),_be);
}
};
ntb_gridp.getSelectedRows=function(){
return this.selectedRows;
};
ntb_gridp.clearActiveRows=function(){
for(var i=0;i<this.selectedRows.length;i++){
var row=this.selectedRows[i];
this.clearActiveRow(row);
}
this.selectedRows=[];
};
ntb_gridp.selectAllRows=function(){
this.clearActiveRows();
for(var i=0;i<this.getDisplayedRowCount();i++){
var _c2=this.getCellElement(i,0);
if(_c2!=null){
var row=_c2.parentNode;
this.setActiveRow(row,true);
}
}
return this.selectedRows;
};
ntb_gridp.clearActiveRow=function(row){
var _c5=nitobi.grid.Row.getRowNumber(row);
var _c6=nitobi.grid.Row.getRowElements(this,_c5);
if(_c6.left!=null){
_c6.left.removeAttribute("select");
this.removeRowStyle(_c6.left);
}
if(_c6.mid!=null){
_c6.mid.removeAttribute("select");
this.removeRowStyle(_c6.mid);
}
};
ntb_gridp.applyCellStyle=function(_c7){
if(_c7==null){
return;
}
_c7.style.background=this.CellActiveColor;
};
ntb_gridp.removeCellStyle=function(_c8){
if(_c8==null){
return;
}
_c8.style.background="";
};
ntb_gridp.applyRowStyle=function(row){
if(row==null){
return;
}
row.style.background=this.RowActiveColor;
};
ntb_gridp.removeRowStyle=function(row){
if(row==null){
return;
}
row.style.background="";
};
ntb_gridp.findActiveCell=function(_cb){
var _cc=5;
_cb==null;
for(var i=0;i<_cc&&_cb.getAttribute;i++){
var t=_cb.getAttribute("ebatype");
if(t=="cell"||t=="columnheader"){
return _cb;
}
_cb=_cb.parentNode;
}
return null;
};
ntb_gridp.attachToParentDomElement=function(_cf){
this.UiContainer=_cf;
this.fire("AttachToParent");
};
ntb_gridp.getToolbars=function(){
return this.toolbars;
};
ntb_gridp.adjustHorizontalScrollBars=function(){
var _d0=this.calculateWidth();
if((_d0<=parseInt(this.getWidth()))){
var _d1=this.hScrollbar.element.parentNode;
_d1.style.display="none";
}else{
var _d1=this.hScrollbar.element.parentNode;
_d1.style.display="block";
this.resizeScroller();
var _d2=this.getWidth()/this.calculateWidth();
this.hScrollbar.setRange(_d2);
}
};
ntb_gridp.createChildren=function(){
if(this.UiContainer!=null&&this.getGridContainer()==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);
var gr=new nitobi.grid.GridResizer(this);
gr.widthFixed=this.isWidthFixed();
gr.heightFixed=this.isHeightFixed();
gr.minWidth=this.getMinWidth();
gr.minHeight=Math.max(this.getMinHeight(),(this.getHeaderHeight()+this.getscrollbarHeight()));
gr.onAfterResize.subscribe(nitobi.lang.close(this,this.afterResize));
this.gridResizer=gr;
var _d4=new nitobi.grid.Scroller3x3(this,this.getHeight(),this.getDisplayedRowCount(),this.getColumnCount(),this.getfreezetop(),this.getFrozenLeftColumnCount());
_d4.setRowHeight(this.getRowHeight());
_d4.setHeaderHeight(this.getHeaderHeight());
this.Scroller=this.scroller=_d4;
this.Scroller.onHtmlReady.subscribe(this.handleHtmlReady,this);
this.subscribe("TableConnected",nitobi.lang.close(this.Scroller,this.Scroller.setDataTable));
this.Scroller.setDataTable(this.datatable);
this.initializeSelection();
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());
};
ntb_gridp.createToolbars=function(_d8){
var tb=this.toolbars=new nitobi.ui.Toolbars((this.isToolbarEnabled()?_d8:0));
var _da=document.getElementById("toolbarContainer"+this.uid);
tb.setWidth(this.getWidth());
tb.setRowInsertEnabled(this.isRowInsertEnabled());
tb.setRowDeleteEnabled(this.isRowDeleteEnabled());
tb.attachToParent(_da);
tb.subscribe("InsertRow",nitobi.lang.close(this,this.insertAfterCurrentRow));
tb.subscribe("DeleteRow",nitobi.lang.close(this,this.deleteCurrentRow));
tb.subscribe("Save",nitobi.lang.close(this,this.save));
tb.subscribe("Refresh",nitobi.lang.close(this,this.refresh));
this.subscribe("AfterGridResize",nitobi.lang.close(this,this.resizeToolbars));
};
ntb_gridp.resizeToolbars=function(){
this.toolbars.setWidth(this.getWidth());
this.toolbars.resize();
};
ntb_gridp.scrollVerticalRelative=function(_db){
var _dc=this.getScrollSurface();
var st=_dc.scrollTop+_db;
var MC=this.Scroller.view.midcenter;
percent=st/(MC.container.offsetHeight-MC.element.offsetHeight);
this.scrollVertical(percent);
};
ntb_gridp.scrollVertical=function(_df){
this.clearHover();
var _e0=this.Scroller.scrollTopPercent;
this.Scroller.setScrollTopPercent(_df);
this.fire("ScrollVertical",_df);
if(_df>0.99&&_e0<0.99){
this.fire("ScrollHitBottom",_df);
}
if(_df<0.01){
this.fire("ScrollHitTop",_df);
}
};
ntb_gridp.scrollHorizontalRelative=function(_e1){
var _e2=this.getScrollSurface();
var sl=_e2.scrollLeft+_e1;
var MC=this.Scroller.view.midcenter;
percent=sl/(MC.container.offsetWidth-MC.element.offsetWidth);
this.scrollHorizontal(percent);
};
ntb_gridp.scrollHorizontal=function(_e5){
this.clearHover();
this.Scroller.setScrollLeftPercent(_e5);
this.fire("ScrollHorizontal",_e5);
if(_e5>0.99){
this.fire("ScrollHitRight",_e5);
}
if(_e5<0.01){
this.fire("ScrollHitLeft",_e5);
}
};
ntb_gridp.getScrollSurface=function(){
if(this.Scroller!=null){
return this.Scroller.view.midcenter.element;
}
};
ntb_gridp.getActiveView=function(){
return this.Scroller.getViewportByCoords(nitobi.grid.Cell.getRowNumber(this.activeCell),nitobi.grid.Cell.getColumnNumber(this.activeCell));
};
ntb_gridp.ensureCellInView=function(_e6){
var SS=this.getScrollSurface();
var AC=_e6||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.getBoundingClientRect();
var R2=SS.getBoundingClientRect();
var B=EBA_SELECTION_BUFFER||0;
var up=R1.top-R2.top-B-sct;
var _ef=R1.bottom-R2.bottom+B-sct;
var _f0=R1.left-R2.left-B-scl;
var _f1=R1.right-R2.right+B-scl;
if(up<0){
this.scrollVerticalRelative(up);
}
if(_ef>0){
this.scrollVerticalRelative(_ef);
}
if(nitobi.grid.Cell.getColumnNumber(AC)>this.getFrozenLeftColumnCount()-1){
if(_f0<0){
this.scrollHorizontalRelative(_f0);
}
if(_f1>0){
this.scrollHorizontalRelative(_f1);
}
}
this.fire("CellCoordsChanged",R1);
};
ntb_gridp.updateCellRanges=function(){
if(this.frameRendered){
var _f2=this.getRowCount();
this.Scroller.updateCellRanges(this.getColumnCount(),_f2,this.getFrozenLeftColumnCount(),this.getfreezetop());
var h=this.calculateHeight();
var w=this.calculateWidth();
this.measure();
this.resizeScroller();
var _f5=this.getHeight()/h;
var _f6=this.getWidth()/w;
this.fire("PercentHeightChanged",_f5);
this.fire("PercentWidthChanged",_f6);
}
};
ntb_gridp.measure=function(){
this.measureViews();
this.sizeValid=true;
};
ntb_gridp.measureViews=function(){
this.measureRows();
this.measureColumns();
};
ntb_gridp.measureColumns=function(){
var fL=this.getFrozenLeftColumnCount();
var wL=0;
var wT=0;
var _fa=this.getColumnDefinitions();
var _fb=_fa.length;
for(var i=0;i<_fb;i++){
if(_fa[i].getAttribute("Visible")=="1"||_fa[i].getAttribute("visible")=="1"){
var w=Number(_fa[i].getAttribute("Width"));
wT+=w;
if(i<fL){
wL+=w;
}
}
}
this.setleft(wL);
};
ntb_gridp.measureRows=function(){
var _fe=this.isColumnIndicatorsEnabled()?this.getHeaderHeight():0;
this.settop(this.calculateHeight(0,this.getfreezetop()-1)+_fe);
};
ntb_gridp.resizeScroller=function(){
var _ff=(this.getToolbars()!=null?25:0);
var hdrH=this.isColumnIndicatorsEnabled()?this.getHeaderHeight():0;
this.Scroller.resize(this.getHeight()-_ff-hdrH);
};
ntb_gridp.resize=function(_101,_102){
this.setWidth(_101);
this.setHeight(_102);
this.generateCss();
this.fire("AfterGridResize",{source:this,width:_101,height:_102});
};
ntb_gridp.afterResize=function(_103){
this.resize(_103.newWidth,_103.newHeight);
this.syncWithData();
};
ntb_gridp.initializeModel=function(){
this.model=nitobi.xml.createXmlDoc(nitobi.xml.serialize(nitobi.grid.modelDoc));
this.modelNode=this.model.documentElement.selectSingleNode("//nitobi.grid.Grid");
var _104=nitobi.html.getScrollBarWidth();
if(_104){
this.setscrollbarWidth(_104);
this.setscrollbarHeight(_104);
}
var xDec=this.model.selectSingleNode("state/nitobi.grid.Columns");
if(xDec==null){
var xDec=this.model.createElement("nitobi.grid.Columns");
this.model.documentElement.appendChild(xDec);
}
var cols=this.getColumnCount();
if(cols>0){
this.defineColumns(cols);
}else{
this.columnsDefined=false;
this.inferredColumns=true;
}
this.model.documentElement.setAttribute("ID",this.uid);
this.model.documentElement.setAttribute("uniqueID",this.uid);
};
ntb_gridp.clearDefaultData=function(rows){
for(var i=0;i<rows;i++){
var e=this.model.createElement("e");
e.setAttribute("xi",i+1);
xDec.appendChild(e);
}
};
ntb_gridp.createRenderers=function(){
var _10a=this.uid;
var _10b=this.getRowHeight();
var _10c=["TopLeftRenderer","TopCenterRenderer","MidLeftRenderer","MidCenterRenderer"];
for(var i=0;i<4;i++){
this[_10c[i]]=new nitobi.grid.RowRenderer(this.data,null,_10b,null,null,_10a);
}
};
ntb_gridp.bind=function(){
if(this.isBound()){
this.clear();
this.datatable.descriptor.reset();
}
};
ntb_gridp.dataBind=function(){
this.bind();
};
ntb_gridp.getDataSource=function(_10e){
var _10f=this.dataTableId||"_default";
if(_10e){
_10f=_10e;
}
return this.data.getTable(_10f);
};
ntb_gridp.getChangeLogXmlDoc=function(_110){
return this.getDataSource(_110).getChangeLogXmlDoc();
};
ntb_gridp.getComplete=function(_111){
if(null==_111.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 _112=_111.dataSource.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+_111.dataSource.id+"']");
};
ntb_gridp.bindComplete=function(){
if(this.inferredColumns&&!this.columnsDefined){
this.defineColumns(this.datatable);
}
this.setRowCount(this.datatable.remoteRowCount);
this.setBound(true);
this.syncWithData();
};
ntb_gridp.syncWithData=function(_113){
if(this.isBound()){
this.Scroller.render(true);
this.fire("DataReady",{"source":this});
}
};
ntb_gridp.finalizeRowCount=function(rows){
this.rowCountKnown=true;
this.setRowCount(rows);
};
ntb_gridp.adjustRowCount=function(pct){
this.scrollVertical(pct);
};
ntb_gridp.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();
};
ntb_gridp.getRowCount=function(){
return this.rowCount;
};
ntb_gridp.layout=function(_117){
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;
}
};
ntb_gridp.layoutFrame=function(_118){
this.minHeight=this.getMinHeight();
this.minWidth=this.getMinWidth();
var _119=false;
var _11a=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.isToolbarEnabled()?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(_119){
var _125=this.Scroller.minSurfaceWidth;
var _126=this.Scroller.maxSurfaceWidth;
}else{
var _125=this.Scroller.SurfaceWidth;
var _126=_125;
}
if(_11a){
var _127=this.Scroller.minSurfaceHeight;
var _128=this.Scroller.maxSurfaceHeight;
}else{
var _127=this.Scroller.SurfaceHeight;
var _128=_127;
}
var _129=_127+(tbH)+(hdrH);
var _12a=_125;
var _12b=(_129>maxH);
var _12c=(_12a>maxW);
var _12b=(_12c&&((_129+20)>maxH))||_12b;
var _12c=(_12b&&((_12a+20)>maxW))||_12c;
sbH=_12c?sbH:0;
sbV=_12b?sbV:0;
var vpH=_129-hdrH-tbH-sbH;
var vpW=_12a-sbW;
this.resize();
};
ntb_gridp.defineColumns=function(_12f){
this.fire("BeforeColumnsDefined");
this.resetColumns();
var _130=null;
var _131=nitobi.lang.typeOf(_12f);
this.inferredColumns=false;
if(_131=="string"){
_130=this.defineColumnsFromString(_12f);
}
if(_131==nitobi.lang.type.XMLNODE||_131==nitobi.lang.type.XMLDOC){
_130=this.defineColumnsFromXml(_12f);
}
if(_131==nitobi.lang.type.ARRAY){
_130=this.defineColumnsFromArray(_12f);
}
if(_131=="object"){
this.inferredColumns=true;
_130=this.defineColumnsFromData(_12f);
}
if(_131=="number"){
_130=this.defineColumnsCollection(_12f);
}
this.fire("AfterColumnsDefined");
this.defineColumnsFinalize();
return _130;
};
ntb_gridp.defineColumnsFromXml=function(_132){
if(_132==null||_132.childNodes.length==0){
return this.defineColumnsCollection(0);
}
if(_132.childNodes[0].nodeName==nitobi.xml.nsPrefix+"columndefinition"){
var _133=nitobi.xml.createXslDoc(nitobi.grid.declarationConverterXslProc.stylesheet);
_132=nitobi.xml.transformToXml(_132,_133);
}
var wL=0,wT=0,wR=0;
var _137=this.model.selectSingleNode("/state/Defaults/nitobi.grid.Column");
var _138=this.getColumnDefinitions().length;
var cols=_132.childNodes.length;
var xDec=this.model.selectSingleNode("state/nitobi.grid.Columns");
var _13b=_132.childNodes;
var fL=this.getFrozenLeftColumnCount();
if(_138==0){
var cols=_13b.length;
for(var i=0;i<cols;i++){
var col=_13b[i];
var _13f="";
var _140=col.nodeName;
var _141=col.selectSingleNode("ntb:texteditor|ntb:numbereditor|ntb:textareaeditor|ntb:imageeditor|ntb:linkeditor|ntb:dateeditor|ntb:lookupeditor|ntb:listboxeditor|ntb:checkboxeditor|ntb:passwordeditor");
var _142="TEXT";
var _143={"ntb:textcolumn":"EBATextColumn","ntb:numbercolumn":"EBANumberColumn","ntb:datecolumn":"EBADateColumn"};
var _13f=_143[_140].replace("EBA","").replace("Column","").toLowerCase();
var _144={"ntb:numbereditor":"EBANumberEditor","ntb:textareaeditor":"EBATextareaEditor","ntb:imageeditor":"EBAImageEditor","ntb:linkeditor":"EBALinkEditor","ntb:dateeditor":"EBADateEditor","ntb:lookupeditor":"EBALookupEditor","ntb:listboxeditor":"EBAListboxEditor","ntb:passwordeditor":"EBAPasswordEditor","ntb:checkboxeditor":"EBACheckboxEditor"};
if(_141!=null){
_142=_144[_141.nodeName]||_142;
}else{
_142=_143[_140]||_142;
}
_142=_142.replace("EBA","").replace("Editor","").replace("Column","").toUpperCase();
var e=this.model.selectSingleNode("/state/Defaults/nitobi.grid.Column[@DataType='"+(_13f)+"' and @type='"+_142+"' and @editor='"+_142+"']").cloneNode(true);
this.setModelValues(e,col);
var _146=_143[col.nodeName]||"EBATextColumn";
this.defineColumnDatasource(e);
this.defineColumnBinding(e);
xDec.appendChild(e);
var _147=e.getAttribute("GetHandler");
if(_147){
var _148=e.getAttribute("DatasourceId");
if(!_148||_148==""){
_148="columnDatasource_"+i+"_"+this.uid;
e.setAttribute("DatasourceId",_148);
}
var dt=new nitobi.data.DataTable("local",this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());
dt.initialize(_148,_147,null);
dt.async=false;
this.data.add(dt);
var _14a=[];
_14a[0]=e;
var _14b=e.getAttribute("editor");
var _14c=null;
var _14d=null;
if(e.getAttribute("editor")=="LOOKUP"){
_14c=0;
_14d=1;
dt.async=true;
}
dt.get(_14c,_14d,this,nitobi.lang.close(this,this.editorDataReady,[e]),function(){
});
}
}
this.measureColumns();
this.setColumnCount(cols);
}
var _14e;
_14e=_132.selectSingleNode("/"+nitobi.xml.nsPrefix+"grid/"+nitobi.xml.nsPrefix+"datasources");
if(_14e){
this.Declaration.datasources=nitobi.xml.createXmlDoc(_14e.xml);
}
return xDec;
};
ntb_gridp.defineColumnsFinalize=function(){
this.setColumnsDefined(true);
if(this.connected){
if(this.frameRendered){
this.makeXSL();
this.generateColumnCss();
this.renderColumns();
}
}
};
ntb_gridp.defineColumnDatasource=function(_14f){
var val=_14f.getAttribute("Datasource");
if(val!=null){
var ds=new Array();
try{
ds=eval(val);
}
catch(e){
var _152=val.split(",");
if(_152.length>0){
for(var i=0;i<_152.length;i++){
var item=_152[i];
ds[i]={text:item.split(":")[0],display:item.split(":")[1]};
}
}
return;
}
if(typeof (ds)=="object"&&ds.length>0){
var _155=new nitobi.data.DataTable("unbound",this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());
var _156="columnDatasource"+new Date().getTime();
_155.initialize(_156);
_14f.setAttribute("DatasourceId",_156);
var _157="";
for(var item in ds[0]){
_157+=item+"|";
}
_157=_157.substring(0,_157.length-1);
_155.initializeColumns(_157);
for(var i=0;i<ds.length;i++){
_155.createRecord(null,i);
for(var item in ds[i]){
_155.updateRecord(i,item,ds[i][item]);
}
}
this.data.add(_155);
this.editorDataReady(_14f);
}
}
};
ntb_gridp.defineColumnsFromData=function(_158){
if(_158==null){
_158=this.datatable;
}
var _159=_158.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure");
if(_159==null){
return this.defineColumnsCollection(0);
}
var _15a=_159.getAttribute("FieldNames");
if(_15a.length==0){
return this.defineColumnsCollection(0);
}
var _15b=_159.getAttribute("defaults");
var _15c=this.defineColumnsFromString(_15a);
for(var i=0;i<_15c.length;i++){
if(_15b&&i<_15b.length){
_15c[i].setAttribute("initial",_15b[i]||"");
}
_15c[i].setAttribute("width",100);
}
this.inferredColumns=true;
return _15c;
};
ntb_gridp.defineColumnsFromString=function(_15e){
return this.defineColumnsFromArray(_15e.split("|"));
};
ntb_gridp.defineColumnsFromArray=function(_15f){
var cols=_15f.length;
var _161=this.defineColumnsCollection(cols);
for(var i=0;i<cols;i++){
var col=_161[i];
if(typeof (_15f[i])=="string"){
col.setAttribute("ColumnName",_15f[i]);
col.setAttribute("xdatafld_orig",_15f[i]);
col.setAttribute("DataField_orig",_15f[i]);
col.setAttribute("Label",_15f[i]);
if(typeof (this.fieldMap[_15f[i]])!="undefined"){
col.setAttribute("xdatafld",this.fieldMap[_15f[i]]);
col.setAttribute("DataField",this.fieldMap[_15f[i]]);
}else{
col.setAttribute("xdatafld","unbound");
col.setAttribute("DataField","unbound");
}
}else{
if(_15f[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[_15f[i].name]);
col.setAttribute("DataField",this.fieldMap[_15f[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 _161;
};
ntb_gridp.defineColumnBindings=function(){
var xslt=nitobi.grid.rowXslProc.stylesheet;
var cols=this.getColumnDefinitions();
for(var i=0;i<cols.length;i++){
var e=cols[i];
this.defineColumnBinding(e,xslt);
e.setAttribute("xi",i);
}
nitobi.grid.rowXslProc=nitobi.xml.createXslProcessor(xslt);
};
ntb_gridp.defineColumnBinding=function(_168,xslt){
if(this.fieldMap==null){
return;
}
var _16a=_168.getAttribute("xdatafld");
var _16b=_168.getAttribute("xdatafld_orig");
if(_16b==null||_16b==""){
_168.setAttribute("xdatafld_orig",_16a);
_168.setAttribute("DataField_orig",_16a);
}else{
_16a=_168.getAttribute("xdatafld_orig");
}
_168.setAttribute("ColumnName",_16a);
var _16c=this.fieldMap[_16a];
if(typeof (_16c)!="undefined"){
_168.setAttribute("xdatafld",_16c);
_168.setAttribute("DataField",_16c);
}
this.formatBinding(_168,"CssStyle",xslt);
this.formatBinding(_168,"ClassName",xslt);
this.formatBinding(_168,"Value",xslt);
};
ntb_gridp.formatBinding=function(_16d,_16e,xslt){
var _170=_16d.getAttribute(_16e);
var _171=_16d.getAttribute(_16e+"_orig");
if(_170==null||_170==""){
return;
}
if(_171==null||_171==""){
_16d.setAttribute(_16e+"_orig",_170);
}
_170=_16d.getAttribute(_16e+"_orig");
var re=new RegExp("\\{.[^}]*}","gi");
var _173=_170.match(re);
if(_173==null){
return;
}
for(var i=0;i<_173.length;i++){
var _175=_173[i];
var _176=_175;
var _177=new RegExp("\\$.*?[^0-9a-zA-Z_]","gi");
var _178=_176.match(_177);
for(var j=0;j<_178.length;j++){
var _17a=_178[j];
var _17b=_17a.substring(0,_17a.length-1);
var _17c=_17b.substring(1);
var _17d=this.fieldMap[_17c]+"";
_176=_176.replace(_17b,_17d.substring(1)||"");
}
_176=_176.substring(1,_176.length-1);
_170=_170.replace(_175,_176).replace(/\{\}/g,"");
}
_16d.setAttribute(_16e,_170);
};
ntb_gridp.defineColumnsCollection=function(cols){
var xDec=this.model.selectSingleNode("state/nitobi.grid.Columns");
var _180=xDec.childNodes;
var _181=this.model.selectSingleNode("/state/Defaults/nitobi.grid.Column");
for(var i=0;i<cols;i++){
var e=_181.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 _180=xDec.selectNodes("*");
return _180;
};
ntb_gridp.resetColumns=function(){
this.fire("BeforeClearColumns");
this.inferredColumns=true;
this.columnsDefined=false;
var _184=this.model.selectSingleNode("state/nitobi.grid.Columns");
var xDec=this.model.createElement("nitobi.grid.Columns");
if(_184==null){
this.model.documentElement.appendChild(xDec);
}else{
this.model.documentElement.replaceChild(xDec,_184);
}
this.setColumnCount(0);
this.fire("AfterClearColumns");
};
ntb_gridp.renderColumns=function(){
if(this.getColumnDefinitions().length>0){
this.clearHeader();
this.renderHeader();
}
};
ntb_gridp.initializeSelection=function(){
var sel=new nitobi.grid.Selection(this);
sel.setRowHeight(this.getRowHeight());
sel.onAfterExpand.subscribe(this.afterExpandSelection,this);
sel.onBeforeExpand.subscribe(this.beforeExpandSelection,this);
sel.onMouseUp.subscribe(this.handleSelectionMouseUp,this);
this.selection=this.Selection=sel;
};
ntb_gridp.beforeExpandSelection=function(evt){
this.setExpanding(true);
this.fire("BeforeDragFill",new nitobi.base.EventArgs(this,evt));
};
ntb_gridp.afterExpandSelection=function(evt){
var sel=this.selection;
var _18a=sel.getCoords();
var _18b=_18a.top.y;
var _18c=_18a.bottom.y;
var _18d=_18a.top.x;
var _18e=_18a.bottom.x;
var _18f=this.getTableForSelection({top:{x:sel.expandStartLeftColumn,y:sel.expandStartTopRow},bottom:{x:sel.expandStartRightColumn,y:sel.expandStartBottomRow}});
var data="",_191=this.getClipboard();
if(sel.expandingVertical){
if(sel.expandStartBottomRow>_18c&&_18b>=sel.expandStartTopRow){
for(var i=sel.expandStartLeftColumn;i<=sel.expandStartRightColumn;i++){
for(var j=_18c+1;j<sel.expandStartBottomRow+1;j++){
this.getCellObject(j,i).setValue("");
}
}
}else{
var _194=(sel.expandStartBottomRow<_18c);
var _195=(sel.expandStartTopRow>_18b);
var _196=(_194||_195);
if(_196){
if(_18f.lastIndexOf("\n")==_18f.length-1){
_18f=_18f.substring(0,_18f.length-1);
}
var rep=(Math.floor((sel.getHeight()-!_196)/sel.expandStartHeight));
for(var i=0;i<rep;i++){
data+=_18f+(nitobi.browser.MOZ?"\n":"");
}
_198=_18f.split("\n");
var mod=(sel.getHeight()-!_196)%sel.expandStartHeight;
var val="";
if(_194){
_198.splice(mod,_198.length-mod);
val=data+_198.join("\n")+(_198.length>0?"\n":"");
}else{
_198.splice(0,_198.length-mod);
val=_198.join("\n")+(_198.length>0?"\n":"")+data;
}
_191.value=val;
this.pasteDataReady(_191);
}
}
}else{
if(sel.expandStartRightColumn>_18e&&_18d>=sel.expandStartLeftColumn){
for(var i=_18d+1;i<=sel.expandStartRightColumn+1;i++){
for(var j=sel.expandStartTopRow;j<sel.expandStartBottomRow;j++){
this.getCellObject(j,i).setValue("");
}
}
}else{
var _19b=sel.expandStartRightColumn<_18e;
var _19c=sel.expandStartLeftColumn>_18d;
var _196=(_19b||_19c);
if(_196){
var mod=(sel.getWidth()-!_196)%sel.expandStartWidth;
var _19d=(nitobi.browser.MOZ?"\n":"\r\n");
if(_18f.lastIndexOf(_19d)==_18f.length-_19d.length){
_18f=_18f.substring(0,_18f.length-_19d.length);
}
var _198=_18f.replace(/\r/g,"").split("\n");
var data=new Array(_198.length);
var rep=(Math.floor((sel.getWidth()-!_196)/sel.expandStartWidth));
for(var i=0;i<_198.length;i++){
var _19e=_198[i].split("\t");
for(var j=0;j<rep;j++){
data[i]=(data[i]==null?[]:data[i]).concat(_19e);
}
if(mod!=0){
if(_19b){
data[i]=data[i].concat(_19e.splice(0,mod));
}else{
data[i]=_19e.splice(mod,_19e.length-mod).concat(data[i]);
}
}
data[i]=data[i].join("\t");
}
_191.value=data.join("\n")+"\n";
this.pasteDataReady(_191);
}
}
}
this.setExpanding(false);
this.fire("AfterDragFill",new nitobi.base.EventArgs(this,evt));
};
ntb_gridp.calculateHeight=function(_19f,end){
_19f=(_19f!=null)?_19f:0;
var _1a1=this.getDisplayedRowCount();
end=(end!=null)?end:_1a1-1;
return (end-_19f+1)*(this.getRowHeight()||23);
};
ntb_gridp.calculateWidth=function(_1a2,end){
var _1a4=this.getColumnDefinitions();
var cols=_1a4.length;
_1a2=_1a2||0;
end=(end!=null)?Math.min(end,cols):cols;
var wT=0;
for(var i=_1a2;i<end;i++){
if(_1a4[i].getAttribute("Visible")=="1"||_1a4[i].getAttribute("visible")=="1"){
wT+=Number(_1a4[i].getAttribute("Width"));
}
}
return (wT);
};
ntb_gridp.editorDataReady=function(_1a8){
var _1a9=_1a8.getAttribute("DisplayFields").split("|");
var _1aa=_1a8.getAttribute("ValueField");
var _1ab=this.data.getTable(_1a8.getAttribute("DatasourceId"));
var _1ac=_1a8.getAttribute("Initial");
if(_1ac==""){
var _1ad=_1a8.getAttribute("type").toLowerCase();
switch(_1ad){
case "checkbox":
case "listbox":
var _1ae=_1ab.fieldMap[_1aa].substring(1);
var data=_1ab.getDataXmlDoc();
if(data!=null){
var val=data.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+_1ae+"='"+_1ac+"']");
if(val==null){
var _1b1=data.selectSingleNode("//"+nitobi.xml.nsPrefix+"e");
if(_1b1!=null){
_1ac=_1b1.getAttribute(_1ae);
}
}
}
break;
}
_1a8.setAttribute("Initial",_1ac);
}
if((_1a9.length==1&&_1a9[0]=="")&&(_1aa==null||_1aa=="")){
for(var item in _1ab.fieldMap){
_1a9[0]=_1ab.fieldMap[item].substring(1);
break;
}
}else{
for(var i=0;i<_1a9.length;i++){
_1a9[i]=_1ab.fieldMap[_1a9[i]].substring(1);
}
}
var _1b4=_1a9.join("|");
if(_1aa==null||_1aa==""){
_1aa=_1a9[0];
}else{
_1aa=_1ab.fieldMap[_1aa].substring(1);
}
_1a8.setAttribute("DisplayFields",_1b4);
_1a8.setAttribute("ValueField",_1aa);
};
ntb_gridp.headerClicked=function(_1b5){
var _1b6=this.getColumnObject(_1b5);
var _1b7=new nitobi.grid.OnHeaderClickEventArgs(this,_1b6);
if(!this.fire("HeaderClick",_1b7)||!nitobi.event.evaluate(_1b6.getOnHeaderClickEvent(),_1b7)){
return;
}
this.sort(_1b5);
};
ntb_gridp.addFilter=function(){
this.dataTable.addFilter(arguments);
};
ntb_gridp.clearFilter=function(){
this.dataTable.clearFilter();
};
ntb_gridp.setSortStyle=function(_1b8,_1b9,_1ba){
var _1bb=this.getColumnObject(_1b8);
if(_1ba){
this.sortColumn=null;
this.sortColumnCell=null;
this.Scroller.setSort(_1b8,"");
this.setColumnHeaderSortOrder(_1b8,"");
}else{
_1bb.setSortDirection(_1b9);
this.setColumnHeaderSortOrder(_1b8,_1b9);
this.sortColumn=_1bb;
this.sortColumnCell=_1bb.getHeaderElement();
this.Scroller.setSort(_1b8,_1b9);
}
};
ntb_gridp.sort=function(_1bc,_1bd){
var _1be=this.getColumnObject(_1bc);
if(_1be==null||!_1be.isSortEnabled()||(!this.isSortEnabled())){
return;
}
var _1bf=new nitobi.grid.OnBeforeSortEventArgs(this,_1be);
if(!this.fire("BeforeSort",_1bf)||!nitobi.event.evaluate(_1be.getOnBeforeSortEvent(),_1bf)){
return;
}
if(_1bd==null||typeof (_1bd)=="undefined"){
_1bd=(_1be.getSortDirection()=="Asc")?"Desc":"Asc";
}
this.setSortStyle(_1bc,_1bd);
var _1c0=_1be.getColumnName();
var _1c1=_1be.getDataType();
var _1c2=this.getSortMode()=="local"||(this.getDataMode()=="local"&&this.getSortMode()!="remote");
this.datatable.sort(_1c0,_1bd,_1c1,_1c2);
if(!_1c2){
this.datatable.flush();
}
this.clearSurfaces();
this.scrollVertical(0);
if(!_1c2){
this.loadDataPage(0);
}
this.subscribeOnce("HtmlReady",this.handleAfterSort,this,[_1be]);
};
ntb_gridp.handleAfterSort=function(_1c3){
var _1c4=new nitobi.grid.OnAfterSortEventArgs(this,_1c3);
this.fire("AfterSort",_1c4);
nitobi.event.evaluate(_1c3.getOnAfterSortEvent(),_1c4);
};
ntb_gridp.handleDblClick=function(evt){
var cell=this.activeCellObject;
var col=this.activeColumnObject;
var _1c8=new nitobi.grid.OnCellDblClickEventArgs(this,cell);
return this.fire("CellDblClick",_1c8)&&nitobi.event.evaluate(col.getOnCellDblClickEvent(),_1c8);
};
ntb_gridp.clearData=function(){
if(this.getDataMode()!="local"){
this.datatable.flush();
}
};
ntb_gridp.clearColumnHeaderSortOrder=function(){
if(this.sortColumn){
var _1c9=this.sortColumn;
var _1ca=_1c9.getHeaderElement();
var css=_1ca.className;
css=css.replace(/ascending/gi,"").replace(/descending/gi,"");
_1ca.className=css;
this.sortColumn=null;
}
};
ntb_gridp.setColumnHeaderSortOrder=function(_1cc,_1cd){
this.clearColumnHeaderSortOrder();
var _1ce=this.getColumnObject(_1cc);
var _1cf=_1ce.getHeaderElement();
var CSS=nitobi.html.Css;
var css=_1cf.className;
if(_1cd==""){
_1cf.className="ntb-column-indicator-border";
_1cd="Desc";
}else{
var _1d2=(_1cd=="Desc"?"descending":"ascending");
nitobi.html.Css.swapClass(_1cf,"ntb-column-indicator-border","ntb-column-indicator-border"+_1d2);
nitobi.html.Css.removeClass(_1cf,"ntb-column-indicator-border-hover");
}
_1ce.setSortDirection(_1cd);
this.sortColumn=_1ce;
this.sortColumnCell=_1cf;
};
ntb_gridp.initializeState=function(){
};
ntb_gridp.mapToHtml=function(_1d3){
if(_1d3==null){
_1d3=this.UiContainer;
}
this.Scroller.mapToHtml(_1d3);
this.element=document.getElementById("grid"+this.uid);
this.element.jsObject=this;
};
ntb_gridp.generateCss=function(){
this.generateFrameCss();
};
ntb_gridp.generateColumnCss=function(){
this.generateCss();
};
ntb_gridp.generateFrameCss=function(){
var _1d4=nitobi.xml.serialize(this.model);
if(this.oldModel==_1d4){
return;
}
this.oldModel=nitobi.xml.serialize(this.model);
if(this.stylesheet==null){
this.stylesheet=document.createStyleSheet();
}
if(nitobi.browser.IE&&document.compatMode=="CSS1Compat"){
this.frameCssXslProc.addParameter("IE","true","");
}
var _1d5=nitobi.xml.transformToString(this.model,this.frameCssXslProc);
var vp=this.getScrollSurface();
var _1d7=0;
var _1d8=0;
if(vp!=null){
_1d7=vp.scrollTop;
_1d8=vp.scrollLeft;
}
if(this.oldFrameCss!=_1d5){
this.oldFrameCss=_1d5;
try{
this.stylesheet.cssText=_1d5;
}
catch(e){
}
if(vp!=null){
if(nitobi.browser.MOZ){
this.scrollVerticalRelative(_1d7);
this.scrollHorizontalRelative(_1d8);
}
vp.style.top="0px";
vp.style.left="0px";
}
}
if(nitobi.grid.RowHoverColor==null){
var _1d9=nitobi.html.getClass("ntb-row-hover");
if(_1d9!=null){
var _1da=_1d9.backgroundColor.toString();
if(_1da.indexOf("rgb")>-1){
_1da=eval("nitobi.drawing."+_1da);
}
nitobi.grid.RowHoverColor=_1da;
}
}
if(nitobi.grid.CellHoverColor==null){
var _1d9=nitobi.html.getClass("ntb-cell-hover");
if(_1d9!=null){
var _1da=_1d9.backgroundColor.toString();
if(_1da.indexOf("rgb")>-1){
_1da=eval("nitobi.drawing."+_1da);
}
nitobi.grid.CellHoverColor=_1da;
}
}
};
ntb_gridp.clearSurfaces=function(){
this.selection.clearBoxes();
this.Scroller.clearSurfaces();
this.updateCellRanges();
this.cachedCells={};
};
ntb_gridp.clearHeader=function(){
this.Scroller.clearSurfaces(false,true);
};
ntb_gridp.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 _1db=nitobi.html.getCoords($("grid"+this.uid));
this.keyNav.style.left=_1db.x+"px";
this.keyNav.style.top=_1db.y+"px";
}
this.frameRendered=true;
this.fire("AfterFrameRender");
};
ntb_gridp.renderHeader=function(){
var _1dc=0;
endRow=this.getfreezetop()-1;
var tl=this.Scroller.view.topleft;
tl.top=this.getHeaderHeight();
tl.left=0;
tl.rowRenderer=this.TopLeftRenderer;
tl.renderGap(_1dc,endRow,false,"*");
var tc=this.Scroller.view.topcenter;
tc.top=this.getHeaderHeight();
tc.left=0;
tc.rowRenderer=this.TopCenterRenderer;
tc.renderGap(_1dc,endRow,false);
};
ntb_gridp.renderMiddle=function(){
this.Scroller.view.midleft.flushCache();
this.Scroller.view.midcenter.flushCache();
};
ntb_gridp.refresh=function(){
var _1df=null;
if(!this.fire("BeforeRefresh",_1df)){
return;
}
this.selectedRows=[];
this.clearSurfaces();
if(this.getDataMode()!="local"){
this.datatable.clearData();
}
this.syncWithData();
this.subscribeOnce("HtmlReady",this.handleAfterRefresh,this);
};
ntb_gridp.handleAfterRefresh=function(){
var _1e0=null;
this.fire("AfterRefresh",_1e0);
};
ntb_gridp.clear=function(){
this.selectedRows=[];
this.clearData();
this.clearSurfaces();
};
ntb_gridp.handleContextMenu=function(evt,obj){
var _1e3=this.getOnContextMenuEvent();
if(_1e3==null){
return true;
}else{
if(this.fire("ContextMenu")){
return true;
}else{
evt.cancelBubble=true;
evt.returnValue=false;
return false;
}
}
};
ntb_gridp.handleKeyPress=function(evt){
if(this.activeCell==null){
return;
}
var col=this.activeColumnObject;
this.fire("KeyPress",new nitobi.base.EventArgs(this,evt));
nitobi.event.evaluate(col.getOnKeyPressEvent(),evt);
nitobi.html.cancelEvent(evt);
return false;
};
ntb_gridp.handleKeyUp=function(evt){
if(this.activeCell==null){
return;
}
var col=this.activeColumnObject;
this.fire("KeyUp",new nitobi.base.EventArgs(this,evt));
nitobi.event.evaluate(col.getOnKeyUpEvent(),evt);
};
ntb_gridp.handleKey=function(evt,obj){
if(this.activeCell!=null){
var col=this.activeColumnObject;
var _1eb=new nitobi.base.EventArgs(this,evt);
if(!this.fire("KeyDown",_1eb)||!nitobi.event.evaluate(col.getOnKeyDownEvent(),_1eb)){
return;
}
}
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;
case 67:
if(evt.metaKey){
this.copy(evt);
return true;
}
break;
case 600:
case 302:
break;
case 598:
case 301:
this.paste(evt);
return true;
break;
case 86:
if(evt.metaKey){
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 _1ee=0;
var vert=1;
if(et=="left"){
_1ee=-1;
vert=0;
}else{
if(et=="right"){
_1ee=1;
vert=0;
}else{
if(et=="down"){
_1ee=0;
vert=1;
}else{
if(et=="up"){
_1ee=0;
vert=-1;
}
}
}
}
this.move(_1ee,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);
}
};
ntb_gridp.reselect=function(x,y){
var S=this.selection;
var row=nitobi.grid.Cell.getRowNumber(S.endCell)+y;
var _1f4=nitobi.grid.Cell.getColumnNumber(S.endCell)+x;
if(_1f4>=0&&_1f4<this.columnCount()&&row>=0){
var _1f5=this.getCellElement(row,_1f4);
if(!_1f5){
return;
}
S.changeEndCellWithDomNode(_1f5);
S.alignBoxes();
this.ensureCellInView(_1f5);
}
};
ntb_gridp.pageSelect=function(dir){
};
ntb_gridp.selectHome=function(){
var S=this.selection;
var row=nitobi.grid.Cell.getRowNumber(S.endCell);
this.reselect(0,-row);
};
ntb_gridp.edit=function(evt){
if(this.activeCell==null){
return;
}
var cell=this.activeCellObject;
var col=this.activeColumnObject;
var _1fc=new nitobi.grid.OnBeforeCellEditEventArgs(this,cell);
if(!this.fire("BeforeCellEdit",_1fc)||!nitobi.event.evaluate(col.getOnBeforeCellEditEvent(),_1fc)){
return;
}
var _1fd=null;
var _1fe=null;
var ctrl=null;
if(evt){
_1fd=evt.keyCode||null;
_1fe=evt.shiftKey||null;
ctrl=evt.ctrlKey||null;
}
var _200="";
var _201=null;
if((_1fe&&(_1fd>64)&&(_1fd<91))||(!_1fe&&((_1fd>47)&&(_1fd<58)))){
_201=0;
}
if(!_1fe){
if((_1fd>64)&&(_1fd<91)){
_201=32;
}else{
if(_1fd>95&&_1fd<106){
_201=-48;
}else{
if((_1fd==189)||(_1fd==109)){
_200="-";
}else{
if((_1fd>186)&&(_1fd<188)){
_201=-126;
}
}
}
}
}else{
}
if(_201!=null){
_200=String.fromCharCode(_1fd+_201);
}
if((!ctrl)&&(""!=_200)||(_1fd==113)||(_1fd==0)||(_1fd==null)||(_1fd==32)){
if(col.isEditable()){
this.cellEditor=nitobi.form.ControlFactory.instance.getEditor(this,col);
if(this.cellEditor==null){
return;
}
this.cellEditor.setEditCompleteHandler(this.editComplete);
this.cellEditor.attachToParent(this.getToolsContainer());
this.cellEditor.bind(this,cell,_200);
this.cellEditor.mimic();
this.setEditMode(true);
nitobi.html.cancelEvent(evt);
return false;
}
}else{
return;
}
};
ntb_gridp.editComplete=function(_202){
var cell=_202.cell;
var _204=cell.getColumnObject();
var _205=_202.databaseValue;
var _206=_202.displayValue;
var _207=new nitobi.grid.OnCellValidateEventArgs(this,cell,_205,cell.getValue());
if(!this.fire("CellValidate",_207)||!nitobi.event.evaluate(_204.getOnCellValidateEvent(),_207)){
return false;
}
cell.setValue(_205,_206);
_202.editor.hide();
this.setEditMode(false);
var _208=new nitobi.grid.OnAfterCellEditEventArgs(this,cell);
this.fire("AfterCellEdit",_208);
nitobi.event.evaluate(_204.getOnAfterCellEditEvent(),_208);
try{
}
catch(e){
}
};
ntb_gridp.autoSave=function(){
if(this.isAutoSaveEnabled()){
return this.save();
}
return false;
};
ntb_gridp.selectCellByCoords=function(row,_20a){
this.setPosition(row,_20a);
};
ntb_gridp.setPosition=function(row,_20c){
if(row>=0&&_20c>=0){
this.setActiveCell(this.getCellElement(row,_20c));
}
};
ntb_gridp.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());
};
ntb_gridp.saveCompleteHandler=function(_20d){
if(this.getDataSource().getHandlerError()){
this.fire("HandlerError",_20d);
}
this.fire("AfterSave",_20d);
};
ntb_gridp.focus=function(){
try{
this.keyNav.focus();
this.fire("Focus",new nitobi.base.EventArgs(this));
nitobi.html.cancelEvent(nitobi.html.Event);
return false;
}
catch(e){
}
};
ntb_gridp.blur=function(){
this.clearActiveRows();
this.selection.clear();
this.blurActiveCell(null);
this.activateCell(null);
this.fire("Blur",new nitobi.base.EventArgs(this));
};
ntb_gridp.getRendererForColumn=function(col){
var _20f=this.getColumnCount();
if(col>=_20f){
col=_20f-1;
}
var _210=this.getFrozenLeftColumnCount();
if(col<frozenLeft){
return this.MidLeftRenderer;
}else{
return this.MidCenterRenderer;
}
};
ntb_gridp.getColumnOuterTemplate=function(col){
return this.getRendererForColumn(col).xmlTemplate.selectSingleNode("//*[@match='ntb:e']/div/div["+col+"]");
};
ntb_gridp.getColumnInnerTemplate=function(col){
return this.getColumnOuterXslTemplate(col).selectSingleNode("*[2]");
};
ntb_gridp.makeXSL=function(){
var fL=this.getFrozenLeftColumnCount();
var cs=this.getColumnCount();
var rh=this.isRowHighlightEnabled();
var _216="_default";
if(this.datatable!=null){
_216=this.datatable.id;
}
var _217=0;
var _218=fL;
var _219=this.model.selectSingleNode("state/nitobi.grid.Columns");
this.TopLeftRenderer.generateXslTemplate(_219,null,_217,_218,this.isColumnIndicatorsEnabled(),this.isRowIndicatorsEnabled(),rh);
this.TopLeftRenderer.dataTableId=_216;
_217=fL;
_218=cs-fL;
this.TopCenterRenderer.generateXslTemplate(_219,null,_217,_218,this.isColumnIndicatorsEnabled(),this.isRowIndicatorsEnabled(),rh);
this.TopCenterRenderer.dataTableId=_216;
this.MidLeftRenderer.generateXslTemplate(_219,null,0,fL,0,this.isRowIndicatorsEnabled(),rh,"left");
this.MidLeftRenderer.dataTableId=_216;
this.MidCenterRenderer.generateXslTemplate(_219,null,fL,cs-fL,0,0,rh);
this.MidCenterRenderer.dataTableId=_216;
this.fire("AfterMakeXsl");
};
ntb_gridp.render=function(){
this.generateCss();
this.updateCellRanges();
};
ntb_gridp.refilter=ntb_gridp.render;
ntb_gridp.getColumnDefinitions=function(){
return this.model.selectNodes("state/nitobi.grid.Columns/*");
};
ntb_gridp.getVisibleColumnDefinitions=function(){
return this.model.selectNodes("state/nitobi.grid.Columns/*[@Visible='1']");
};
ntb_gridp.initializeModelFromDeclaration=function(){
var _21a=this.Declaration.grid.documentElement.attributes;
var len=_21a.length;
for(var i=0;i<len;i++){
var _21d=_21a[i];
var _21e=this.properties[_21d.nodeName];
if(_21e!=null){
this["set"+_21e.n](_21d.nodeValue);
}
}
this.model.documentElement.setAttribute("ID",this.uid);
this.model.documentElement.setAttribute("uniqueID",this.uid);
};
ntb_gridp.setModelValues=function(_21f,_220){
var _221=_21f.getAttribute("DataType");
var _222=_21f.getAttribute("type").toLowerCase();
var _223=_220.attributes;
for(var j=0;j<_223.length;j++){
var _225=_223[j];
var _226=_225.nodeName;
var _227=this.xColumnProperties[_221+"column"][_226]||this.xColumnProperties["column"][_226];
var _228=_225.nodeValue;
if(_227.t=="bool"){
_228=nitobi.lang.boolToStr(nitobi.lang.toBool(_228));
}
_21f.setAttribute(_227.n,_228);
}
var _229=_220.selectSingleNode("./ntb:"+_222+"editor");
if(_229==null){
return;
}
var _22a=_229.attributes;
for(var j=0;j<_22a.length;j++){
var _225=_22a[j];
var _226=_225.nodeName;
var _227=this.xColumnProperties[_222+"editor"][_226];
var _228=_225.nodeValue;
if(_227.t=="bool"){
_228=nitobi.lang.boolToStr(nitobi.lang.toBool(_228));
}
_21f.setAttribute(_227.n,_228);
}
};
ntb_gridp.getNewRecordKey=function(){
var _22b;
var key;
var _22d;
do{
_22b=new Date();
key=(_22b.getTime()+"."+Math.round(Math.random()*99));
_22d=this.datatable.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@xk = '"+key+"']");
}while(_22d!=null);
return key;
};
ntb_gridp.insertAfterCurrentRow=function(){
if(this.activeCell){
var _22e=nitobi.grid.Cell.getRowNumber(this.activeCell);
this.insertRow(_22e+1);
}else{
this.insertRow();
}
};
ntb_gridp.insertRow=function(_22f){
var rows=parseInt(this.getDisplayedRowCount());
var xi=0;
if(_22f!=null){
xi=parseInt((_22f==null?rows:parseInt(_22f)));
xi--;
}
var _232=new nitobi.grid.OnBeforeRowInsertEventArgs(this,this.getRowObject(xi));
if(!this.isRowInsertEnabled()||!this.fire("BeforeRowInsert",_232)){
return;
}
var _233=this.datatable.getTemplateNode();
for(var i=0;i<this.columnCount();i++){
var _235=this.getColumnObject(i);
var _236=_235.getInitial();
if(_236==null||_236==""){
var _237=_235.getDataType();
if(_237==null||_237==""){
_237="text";
}
switch(_237){
case "text":
_236="";
break;
case "number":
_236=0;
break;
case "date":
_236="1900-01-01";
break;
}
}
var att=_235.getxdatafld().substr(1);
if(att!=null&&att!=""){
_233.setAttribute(att,_236);
}
}
this.clearSurfaces();
this.datatable.createRecord(_233,xi);
this.subscribeOnce("HtmlReady",this.handleAfterRowInsert,this,[xi]);
};
ntb_gridp.handleAfterRowInsert=function(xi){
this.fire("AfterRowInsert",new nitobi.grid.OnAfterRowInsertEventArgs(this,this.getRowObject(xi)));
this.setActiveCell(this.getCellElement(xi,0));
};
ntb_gridp.deleteCurrentRow=function(){
if(this.activeCell){
this.deleteRow(nitobi.grid.Cell.getRowNumber(this.activeCell));
}else{
alert("First select a record to delete.");
}
};
ntb_gridp.deleteRow=function(_23a){
var _23b=new nitobi.grid.OnBeforeRowDeleteEventArgs(this,this.getRowObject(_23a));
if(!this.isRowDeleteEnabled()||!this.fire("BeforeRowDelete",_23b)){
return;
}
this.clearSurfaces();
var rows=this.getDisplayedRowCount();
var xi=rows-1;
try{
this.datatable.deleteRecord(_23a);
rows--;
if(rows<=0){
this.activeCell=null;
}
this.subscribeOnce("HtmlReady",this.handleAfterRowDelete,this,[_23a]);
}
catch(err){
this.dataBind();
}
};
ntb_gridp.handleAfterRowDelete=function(xi){
this.fire("AfterRowDelete",new nitobi.grid.OnBeforeRowDeleteEventArgs(this,this.getRowObject(xi)));
this.setActiveCell(this.getCellElement(xi,0));
};
ntb_gridp.page=function(dir){
};
ntb_gridp.move=function(h,v){
if(this.activeCell!=null){
var hs=1;
var vs=1;
h=(h*hs);
v=(v*vs);
var cell=nitobi.grid.Cell;
var _245=cell.getColumnNumber(this.activeCell);
var _246=cell.getRowNumber(this.activeCell);
this.selectCellByCoords(_246+v,_245+h);
var _247=new nitobi.grid.CellEventArgs(this,this.activeCell);
if(_245+1==this.getVisibleColumnDefinitions().length&&h==1){
this.fire("HitRowEnd",_247);
}else{
if(_245==0&&h==-1){
this.fire("HitRowStart",_247);
}
}
}
};
ntb_gridp.handleSelectionMouseUp=function(evt){
if(this.isCellClicked()){
this.ensureCellInView(this.activeCell);
}
this.setCellClicked(false);
if(this.isSingleClickEditEnabled()){
this.edit(evt);
}else{
if(nitobi.browser.SAFARI){
this.focus();
}
}
};
ntb_gridp.loadNextDataPage=function(){
this.loadDataPage(this.getCurrentPageIndex()+1);
};
ntb_gridp.loadPreviousDataPage=function(){
this.loadDataPage(this.getCurrentPageIndex()-1);
};
ntb_gridp.GetPage=function(_249){
ebaErrorReport("GetPage is deprecated please use loadDataPage instead","",EBA_DEBUG);
this.loadDataPage(_249);
};
ntb_gridp.loadDataPage=function(_24a){
};
ntb_gridp.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);
}
};
ntb_gridp.handleHandlerError=function(){
var _24e=this.getDataSource().getHandlerError();
if(_24e){
this.fire("HandlerError");
}
};
ntb_gridp.getRowObject=function(_24f,_250){
var _251=_250;
if(_250==null&&_24f!=null){
_251=_24f;
}
return new nitobi.grid.Row(this,_251);
};
ntb_gridp.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);
}
};
ntb_gridp.getSelectedColumnObject=function(){
return this.getColumnObject(this.getSelectedColumn());
};
ntb_gridp.columnCount=function(){
try{
var _255=this.getColumnDefinitions();
return _255.length;
}
catch(err){
_ntbAssert(false,err.message);
}
};
ntb_gridp.getCellObject=function(row,col){
var _258=col;
var cell=this.cachedCells[row+"_"+col];
if(cell==null){
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"));
}
}
if(typeof (col)=="number"){
cell=new nitobi.grid.Cell(this,row,col);
}else{
cell=null;
}
this.cachedCells[row+"_"+col]=this.cachedCells[row+"_"+_258]=cell||"";
}else{
if(cell==""){
cell=null;
}
}
return cell;
};
ntb_gridp.getCellText=function(row,col){
return this.getCellObject(row,col).getHtml();
};
ntb_gridp.getCellValue=function(row,col){
return this.getCellObject(row,col).getValue();
};
ntb_gridp.getCellElement=function(row,_260){
return document.getElementById("cell_"+row+"_"+_260+"_"+this.uid);
};
ntb_gridp.getSelectedRowObject=function(xi){
var obj=null;
var r=nitobi.grid.Cell.getRowNumber(this.activeCell);
obj=new nitobi.grid.Row(this,r);
return obj;
};
ntb_gridp.getColumnObject=function(_264){
var _265=null;
if(_264>=0){
_265=this.columns[_264];
if(_265==null){
var _266=this.getColumnDefinitions()[_264].getAttribute("DataType");
switch(_266){
case "number":
_265=new nitobi.grid.NumberColumn(this,_264);
break;
case "date":
_265=new nitobi.grid.DateColumn(this,_264);
break;
default:
_265=new nitobi.grid.TextColumn(this,_264);
break;
}
this.columns[_264]=_265;
}
}
if(_265==null||_265.getModel()==null){
return null;
}else{
return _265;
}
};
ntb_gridp.getSelectedCellObject=function(){
var obj=this.activeCellObject;
if(obj==null){
obj=this.activeCell;
if(obj!=null){
var Cell=nitobi.grid.Cell;
var r=Cell.getRowNumber(obj);
var c=Cell.getColumnNumber(obj);
obj=this.getCellObject(r,c);
}
}
return obj;
};
ntb_gridp.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();
}
};
ntb_gridp.setDisplayedRowCount=function(_26b){
if(this.Scroller){
this.Scroller.view.midcenter.rows=_26b;
this.Scroller.view.midleft.rows=_26b;
}
this.displayedRowCount=_26b;
};
ntb_gridp.getDisplayedRowCount=function(){
return this.displayedRowCount;
};
ntb_gridp.getToolsContainer=function(){
this.toolsContainer=this.toolsContainer||document.getElementById("ntb-grid-toolscontainer"+this.uid);
return this.toolsContainer;
};
ntb_gridp.getHeaderContainer=function(){
return document.getElementById("ntb-grid-header"+this.uid);
};
ntb_gridp.getDataContainer=function(){
return document.getElementById("ntb-grid-data"+this.uid);
};
ntb_gridp.getScrollerContainer=function(){
return document.getElementById("ntb-grid-scroller"+this.uid);
};
ntb_gridp.getGridContainer=function(){
return nitobi.html.getFirstChild(this.UiContainer);
};
ntb_gridp.copy=function(){
var _26c=this.selection.getCoords();
var data=this.getTableForSelection(_26c);
var _26e=new nitobi.grid.OnCopyEventArgs(this,data,_26c);
if(!this.isCopyEnabled()||!this.fire("BeforeCopy",_26e)){
return;
}
if(!nitobi.browser.IE){
var _26f=this.getClipboard();
_26f.onkeyup=nitobi.lang.close(this,this.focus);
_26f.value=data;
_26f.focus();
_26f.setSelectionRange(0,_26f.value.length);
}
if(nitobi.browser.IE){
window.clipboardData.setData("Text",data);
}
this.fire("AfterCopy",_26e);
};
ntb_gridp.getTableForSelection=function(_270){
var _271=this.getColumnMap(_270.top.x,_270.bottom.x);
var _272=nitobi.data.FormatConverter.convertEbaXmlToTsv(this.getDataSource().getDataXmlDoc(),_271,_270.top.y,_270.bottom.y);
return _272;
};
ntb_gridp.getColumnMap=function(_273,_274){
var _275=this.getColumnDefinitions();
_273=(_273==null)?0:_273;
_274=(_274==null)?_275.length-1:_274;
var map=new Array();
for(var i=_273;i<=_274&&(null!=_275[i]);i++){
map.push(_275[i].getAttribute("xdatafld").substr(1));
}
return map;
};
ntb_gridp.paste=function(){
if(!this.isPasteEnabled()){
return;
}
var _278=this.getClipboard();
_278.onkeyup=nitobi.lang.close(this,this.pasteDataReady,[_278]);
_278.focus();
return _278;
};
ntb_gridp.pasteDataReady=function(_279){
_279.onkeyup=null;
var _27a=this.selection;
var _27b=_27a.getCoords();
var _27c=_27b.top.x;
var _27d=_27c+nitobi.data.FormatConverter.getDataColumns(_279.value)-1;
var _27e=true;
for(var i=_27c;i<=_27d;i++){
var _280=this.getColumnObject(i);
if(_280){
if(!_280.isEditable()){
_27e=false;
break;
}
}
}
if(!_27e){
this.fire("PasteFailed",new nitobi.base.EventArgs(this));
this.handleAfterPaste();
return;
}else{
var _281=this.getColumnMap(_27c,_27d);
var _282=_27b.top.y;
var _283=Math.max(_282+nitobi.data.FormatConverter.getDataRows(_279.value)-1,0);
this.getSelection().selectWithCoords(_282,_27c,_283,_27c+_281.length-1);
var _284=new nitobi.grid.OnPasteEventArgs(this,_279.value,_27b);
if(!this.fire("BeforePaste",_284)){
return;
}
var _285=_279.value;
var _286=null;
if(_285.substr(0,1)=="<"){
_286=nitobi.data.FormatConverter.convertHtmlTableToEbaXml(_285,_281,_282);
}else{
_286=nitobi.data.FormatConverter.convertTsvToEbaXml(_285,_281,_282);
}
if(_286.documentElement!=null){
this.datatable.mergeFromXml(_286,nitobi.lang.close(this,this.pasteComplete,[_286,_282,_283,_284]));
}
}
};
ntb_gridp.pasteComplete=function(_287,_288,_289,_28a){
this.Scroller.reRender(_288,_289);
this.subscribeOnce("HtmlReady",this.handleAfterPaste,this,[_28a]);
};
ntb_gridp.handleAfterPaste=function(_28b){
this.fire("AfterPaste",_28b);
};
ntb_gridp.getClipboard=function(){
var _28c=document.getElementById("ntb-clipboard"+this.uid);
_28c.onkeyup=null;
_28c.value="";
return _28c;
};
ntb_gridp.handleHtmlReady=function(_28d){
this.fire("HtmlReady",new nitobi.base.EventArgs(this));
};
ntb_gridp.fire=function(evt,args){
return nitobi.event.notify(evt+this.uid,args);
};
ntb_gridp.subscribe=function(evt,func,_292){
if(this.subscribedEvents==null){
this.subscribedEvents={};
}
if(typeof (_292)=="undefined"){
_292=this;
}
var guid=nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_292,func));
this.subscribedEvents[guid]=evt+this.uid;
return guid;
};
ntb_gridp.subscribeOnce=function(evt,func,_296,_297){
var guid=null;
var _299=this;
var _29a=function(){
func.apply(_296||this,_297||arguments);
_299.unsubscribe(evt,guid);
};
guid=this.subscribe(evt,_29a);
};
ntb_gridp.unsubscribe=function(evt,guid){
return nitobi.event.unsubscribe(evt+this.uid,guid);
};
ntb_gridp.dispose=function(){
try{
this.element.jsObject=null;
editorXslProc=null;
var H=nitobi.html;
H.detachEvents(this.getGridContainer(),this.events);
H.detachEvents(this.getHeaderContainer(),this.headerEvents);
H.detachEvents(this.getDataContainer(),this.cellEvents);
H.detachEvents(this.getScrollerContainer(),this.scrollerEvents);
H.detachEvents(this.keyNav,this.keyEvents);
for(var item in this.subscribedEvents){
var _29f=this.subscribedEvents[item];
this.unsubscribe(_29f.substring(0,_29f.length-this.uid.length),item);
}
this.UiContainer.parentNode.removeChild(this.UiContainer);
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,_2a2){
if(row==null||grid==null){
return null;
}
this.grid=grid;
var _2a3=null;
if(typeof (row)=="object"){
var cell=row;
row=Number(cell.getAttribute("xi"));
_2a2=cell.getAttribute("col");
_2a3=cell;
}else{
_2a3=this.grid.getCellElement(row,_2a2);
}
this.DomNode=_2a3;
this.row=Number(row);
this.Row=this.row;
this.column=Number(_2a2);
this.Column=this.column;
this.dataIndex=this.Row;
};
nitobi.grid.Cell.prototype.getData=function(){
if(this.DataNode==null){
this.DataNode=this.grid.datatable.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@xi="+this.dataIndex+"]/"+this.grid.datatable.fieldMap[this.getColumnObject().getColumnName()]);
}
return this.DataNode;
};
nitobi.grid.Cell.prototype.getModel=function(){
if(this.ModelNode==null){
this.ModelNode=this.grid.model.selectSingleNode("//nitobi.grid.Columns/nitobi.grid.Column[@xi='"+this.column+"']");
}
return this.ModelNode;
};
nitobi.grid.Cell.prototype.setRow=function(){
this.jSET("Row",arguments);
};
nitobi.grid.Cell.prototype.getRow=function(){
return this.Row;
};
nitobi.grid.Cell.prototype.setColumn=function(){
this.jSET("Column",arguments);
};
nitobi.grid.Cell.prototype.getColumn=function(){
return this.Column;
};
nitobi.grid.Cell.prototype.setDomNode=function(){
this.jSET("DomNode",arguments);
};
nitobi.grid.Cell.prototype.getDomNode=function(){
return this.DomNode;
};
nitobi.grid.Cell.prototype.setDataNode=function(){
this.jSET("DataNode",arguments);
};
nitobi.grid.Cell.prototype.setValue=function(_2a5,_2a6){
if(_2a5==this.getValue()){
return;
}
var _2a7=this.getColumnObject();
var _2a8="";
switch(_2a7.getType()){
case "PASSWORD":
for(var i=0;i<_2a5.length;i++){
_2a8+="*";
}
break;
case "NUMBER":
if(this.numberXsl==null){
this.numberXsl=nitobi.form.numberXslProc;
}
if(_2a5==""){
_2a5=nitobi.form.Number.defaultValue;
}
if(this.DomNode!=null){
if(_2a5<0){
nitobi.html.Css.addClass(this.DomNode,"ntb-cell-negativenumber");
}else{
nitobi.html.Css.removeClass(this.DomNode,"ntb-cell-negativenumber");
}
}
var mask=_2a7.getMask();
var _2ab=_2a7.getNegativeMask();
var _2ac=_2a5;
if(_2a5<0&&_2ab!=""){
mask=_2ab;
_2ac=(_2a5+"").replace("-","");
}
this.numberXsl.addParameter("number",_2ac,"");
this.numberXsl.addParameter("mask",mask,"");
this.numberXsl.addParameter("group",_2a7.getGroupingSeparator(),"");
this.numberXsl.addParameter("decimal",_2a7.getDecimalSeparator(),"");
_2a8=nitobi.xml.transformToString(nitobi.xml.Empty,this.numberXsl);
if(""==_2a8&&_2a5!=""){
_2a8=nitobi.html.getFirstChild(this.DomNode).innerHTML;
_2a5=this.getValue();
}
break;
case "DATE":
if(this.dateXsl==null){
this.dateXsl=nitobi.form.dateXslProc.stylesheet;
}
var _2ad=nitobi.xml.createXmlDoc("<root><date>"+_2a5+"</date><mask>"+_2a7.getMask()+"</mask></root>");
_2a8=nitobi.xml.transformToString(_2ad,this.dateXsl);
if(""==_2a8){
_2a8=nitobi.html.getFirstChild(this.DomNode).innerHTML;
_2a5=this.getValue();
}
break;
case "TEXTAREA":
_2a8=nitobi.html.encode(_2a5);
break;
case "LOOKUP":
var _2ae=_2a7.getModel();
var _2af=_2ae.getAttribute("DatasourceId");
var _2b0=this.grid.data.getTable(_2af);
var _2b1=_2ae.getAttribute("DisplayFields");
var _2b2=_2ae.getAttribute("ValueField");
var _2b3=_2b0.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+_2b2+"='"+_2a5+"']/@"+_2b1);
if(_2b3!=null){
_2a8=_2b3.nodeValue;
}else{
_2a8=_2a5;
}
break;
case "CHECKBOX":
var _2ae=_2a7.getModel();
var _2af=_2ae.getAttribute("DatasourceId");
var _2b0=this.grid.data.getTable(_2af);
var _2b1=_2ae.getAttribute("DisplayFields");
var _2b2=_2ae.getAttribute("ValueField");
var _2b4=_2ae.getAttribute("CheckedValue");
if(_2b4==""||_2b4==null){
_2b4=0;
}
var _2b5=_2b0.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+_2b2+"='"+_2a5+"']/@"+_2b1).nodeValue;
var _2b6=(_2a5==_2b4)?"checked":"unchecked";
_2a8="<div style=\"overflow:hidden;\"><div style=\"float:left;\" class=\"ntb-checkbox ntb-checkbox-"+_2b6+"\" checked=\""+_2a5+"\">&nbsp;</div><span>"+nitobi.html.encode(_2b5)+"</span></div>";
break;
case "LISTBOX":
var _2ae=_2a7.getModel();
var _2af=_2ae.getAttribute("DatasourceId");
var _2b0=this.grid.data.getTable(_2af);
var _2b1=_2ae.getAttribute("DisplayFields");
var _2b2=_2ae.getAttribute("ValueField");
_2a8=_2b0.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+_2b2+"='"+_2a5+"']/@"+_2b1).nodeValue;
break;
case "IMAGE":
_2a8=nitobi.html.getFirstChild(this.DomNode).innerHTML;
if(nitobi.lang.typeOf(_2a5)==nitobi.lang.type.HTMLNODE){
_2a8="<img border=\"0\" src=\""+_2a5.getAttribute("src")+"\" />";
}else{
if(typeof (_2a5)=="string"){
_2a8="<img border=\"0\" src=\""+_2a5+"\" />";
}
}
break;
default:
_2a8=_2a5;
}
if(this.DomNode!=null){
var elem=nitobi.html.getFirstChild(this.DomNode);
elem.innerHTML=_2a8;
elem.setAttribute("title",_2a5);
this.DomNode.setAttribute("value",_2a5);
}
this.grid.datatable.updateRecord(this.dataIndex,_2a7.getColumnName(),_2a5);
};
nitobi.grid.Cell.prototype.getValue=function(){
var _2b8=this.getColumnObject();
var val=this.GETDATA();
switch(_2b8.getType()){
case "NUMBER":
val=parseFloat(val);
break;
default:
}
return val;
};
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.getData();
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.getModel();
node=node.selectSingleNode(arguments[0]);
if(node!=null){
return node.value;
}
};
nitobi.grid.Cell.prototype.xSET=function(){
var node=this.getModel();
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,_2c2){
return $("cell_"+row+"_"+_2c2+"_"+grid.uid);
};
nitobi.grid.Cell.getRowNumber=function(_2c3){
return parseInt(_2c3.getAttribute("xi"));
};
nitobi.grid.Cell.getColumnNumber=function(_2c4){
return parseInt(_2c4.getAttribute("col"));
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.CellEventArgs=function(_2c5,cell){
nitobi.grid.CellEventArgs.baseConstructor.call(this,_2c5);
this.cell=cell;
};
nitobi.lang.extend(nitobi.grid.CellEventArgs,nitobi.base.EventArgs);
nitobi.grid.CellEventArgs.prototype.getCell=function(){
return this.cell;
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.RowEventArgs=function(_2c7,row){
this.grid=_2c7;
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(_2c9,data,_2cb){
this.source=_2c9;
this.coords=_2cb;
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,_2cd){
this.grid=grid;
this.column=_2cd;
this.uid=nitobi.base.getUid();
this.modelNodes={};
};
nitobi.grid.Column.prototype={setAlign:function(){
this.xSETMODEL("Align",arguments);
},getAlign:function(){
return this.xGETMODEL("Align",arguments);
},setClassName:function(){
this.xSETMODEL("ClassName",arguments);
},getClassName:function(){
return this.xGETMODEL("ClassName",arguments);
},setCssStyle:function(){
this.xSETMODEL("CssStyle",arguments);
},getCssStyle:function(){
return this.xGETMODEL("CssStyle",arguments);
},setColumnName:function(){
this.xSETMODEL("ColumnName",arguments);
},getColumnName:function(){
return this.xGETMODEL("ColumnName",arguments);
},setType:function(){
this.xSETMODEL("type",arguments);
},getType:function(){
return this.xGETMODEL("type",arguments);
},setDataType:function(){
this.xSETMODEL("DataType",arguments);
},getDataType:function(){
return this.xGETMODEL("DataType",arguments);
},setEditable:function(){
this.xSETMODEL("Editable",arguments);
},isEditable:function(){
return nitobi.lang.toBool(this.xGETMODEL("Editable",arguments),true);
},setInitial:function(){
this.xSETMODEL("Initial",arguments);
},getInitial:function(){
return this.xGETMODEL("Initial",arguments);
},setLabel:function(){
this.xSETMODEL("Label",arguments);
},getLabel:function(){
return this.xGETMODEL("Label",arguments);
},setGetHandler:function(){
this.xSETMODEL("GetHandler",arguments);
},getGetHandler:function(){
return this.xGETMODEL("GetHandler",arguments);
},setDataSource:function(){
this.xSETMODEL("DataSource",arguments);
},getDataSource:function(){
return this.xGETMODEL("DataSource",arguments);
},setTemplate:function(){
this.xSETMODEL("Template",arguments);
},getTemplate:function(){
return this.xGETMODEL("Template",arguments);
},setTemplateUrl:function(){
this.xSETMODEL("TemplateUrl",arguments);
},getTemplateUrl:function(){
return this.xGETMODEL("TemplateUrl",arguments);
},setMaxLength:function(){
this.xSETMODEL("maxlength",arguments);
},getMaxLength:function(){
return Number(this.xGETMODEL("maxlength",arguments));
},setSortDirection:function(){
this.xSETMODEL("SortDirection",arguments);
},getSortDirection:function(){
return this.xGETMODEL("SortDirection",arguments);
},setSortEnabled:function(){
this.xSETMODEL("SortEnabled",arguments);
},isSortEnabled:function(){
return nitobi.lang.toBool(this.xGETMODEL("SortEnabled",arguments),true);
},setWidth:function(){
this.xSETMODEL("Width",arguments);
},getWidth:function(){
return Number(this.xGETMODEL("Width",arguments));
},setVisible:function(){
this.xSETMODEL("Visible",arguments);
},isVisible:function(){
return nitobi.lang.toBool(this.xGETMODEL("Visible",arguments),true);
},setxdatafld:function(){
this.xSETMODEL("xdatafld",arguments);
},getxdatafld:function(){
return this.xGETMODEL("xdatafld",arguments);
},setValue:function(){
this.xSETMODEL("Value",arguments);
},getValue:function(){
return this.xGETMODEL("Value",arguments);
},setxi:function(){
this.xSETMODEL("xi",arguments);
},getxi:function(){
return Number(this.xGETMODEL("xi",arguments));
},setEditor:function(){
this.xSETMODEL("Editor",arguments);
},getEditor:function(){
return this.xGETMODEL("Editor",arguments);
},setOnCellClickEvent:function(){
this.xSETMODEL("OnCellClickEvent",arguments);
},getOnCellClickEvent:function(){
return this.xGETMODEL("OnCellClickEvent",arguments);
},setOnBeforeCellClickEvent:function(){
this.xSETMODEL("OnBeforeCellClickEvent",arguments);
},getOnBeforeCellClickEvent:function(){
return this.xGETMODEL("OnBeforeCellClickEvent",arguments);
},setOnCellDblClickEvent:function(){
this.xSETMODEL("OnCellDblClickEvent",arguments);
},getOnCellDblClickEvent:function(){
return this.xGETMODEL("OnCellDblClickEvent",arguments);
},setOnHeaderDoubleClickEvent:function(){
this.xSETMODEL("OnHeaderDoubleClickEvent",arguments);
},getOnHeaderDoubleClickEvent:function(){
return this.xGETMODEL("OnHeaderDoubleClickEvent",arguments);
},setOnHeaderClickEvent:function(){
this.xSETMODEL("OnHeaderClickEvent",arguments);
},getOnHeaderClickEvent:function(){
return this.xGETMODEL("OnHeaderClickEvent",arguments);
},setOnBeforeResizeEvent:function(){
this.xSETMODEL("OnBeforeResizeEvent",arguments);
},getOnBeforeResizeEvent:function(){
return this.xGETMODEL("OnBeforeResizeEvent",arguments);
},setOnAfterResizeEvent:function(){
this.xSETMODEL("OnAfterResizeEvent",arguments);
},getOnAfterResizeEvent:function(){
return this.xGETMODEL("OnAfterResizeEvent",arguments);
},setOnCellValidateEvent:function(){
this.xSETMODEL("OnCellValidateEvent",arguments);
},getOnCellValidateEvent:function(){
return this.xGETMODEL("OnCellValidateEvent",arguments);
},setOnBeforeCellEditEvent:function(){
this.xSETMODEL("OnBeforeCellEditEvent",arguments);
},getOnBeforeCellEditEvent:function(){
return this.xGETMODEL("OnBeforeCellEditEvent",arguments);
},setOnAfterCellEditEvent:function(){
this.xSETMODEL("OnAfterCellEditEvent",arguments);
},getOnAfterCellEditEvent:function(){
return this.xGETMODEL("OnAfterCellEditEvent",arguments);
},setOnCellBlurEvent:function(){
this.xSETMODEL("OnCellBlurEvent",arguments);
},getOnCellBlurEvent:function(){
return this.xGETMODEL("OnCellBlurEvent",arguments);
},setOnCellFocusEvent:function(){
this.xSETMODEL("OnCellFocusEvent",arguments);
},getOnCellFocusEvent:function(){
return this.xGETMODEL("OnCellFocusEvent",arguments);
},setOnBeforeSortEvent:function(){
this.xSETMODEL("OnBeforeSortEvent",arguments);
},getOnBeforeSortEvent:function(){
return this.xGETMODEL("OnBeforeSortEvent",arguments);
},setOnAfterSortEvent:function(){
this.xSETMODEL("OnAfterSortEvent",arguments);
},getOnAfterSortEvent:function(){
return this.xGETMODEL("OnAfterSortEvent",arguments);
},setOnCellUpdateEvent:function(){
this.xSETMODEL("OnCellUpdateEvent",arguments);
},getOnCellUpdateEvent:function(){
return this.xGETMODEL("OnCellUpdateEvent",arguments);
},setOnKeyDownEvent:function(){
this.xSETMODEL("OnKeyDownEvent",arguments);
},getOnKeyDownEvent:function(){
return this.xGETMODEL("OnKeyDownEvent",arguments);
},setOnKeyUpEvent:function(){
this.xSETMODEL("OnKeyUpEvent",arguments);
},getOnKeyUpEvent:function(){
return this.xGETMODEL("OnKeyUpEvent",arguments);
},setOnKeyPressEvent:function(){
this.xSETMODEL("OnKeyPressEvent",arguments);
},getOnKeyPressEvent:function(){
return this.xGETMODEL("OnKeyPressEvent",arguments);
},setOnChangeEvent:function(){
this.xSETMODEL("OnChangeEvent",arguments);
},getOnChangeEvent:function(){
return this.xGETMODEL("OnChangeEvent",arguments);
}};
nitobi.grid.Column.prototype.getModel=function(){
if(this.ModelNode==null){
if(nitobi.browser.MOZ){
this.ModelNode=this.grid.model.selectSingleNode("//state/nitobi.grid.Columns/nitobi.grid.Column["+(parseInt(this.column)+1)+"]");
}else{
this.ModelNode=this.grid.model.selectSingleNode("//state/nitobi.grid.Columns/nitobi.grid.Column["+(this.column)+"]");
}
}
return this.ModelNode;
};
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 _2ce=this.getClassName();
return nitobi.html.getClass(_2ce);
};
nitobi.grid.Column.prototype.getHeaderStyle=function(){
var _2cf="acolumnheader"+this.grid.uid+"_"+this.column;
return nitobi.html.getClass(_2cf);
};
nitobi.grid.Column.prototype.getDataStyle=function(){
var _2d0="ntb-column-data"+this.grid.uid+"_"+this.column;
return nitobi.html.getClass(_2d0);
};
nitobi.grid.Column.prototype.getEditor=function(){
return nitobi.form.ControlFactory.instance.getEditor(this.grid,this);
};
nitobi.grid.Column.prototype.xGETMODEL=function(){
var node=null,_2d2="@"+arguments[0],val="";
var _2d4=this.modelNodes[_2d2];
if(_2d4!=null){
node=_2d4;
}else{
node=this.modelNodes[_2d2]=this.getModel().selectSingleNode(_2d2);
}
if(node!=null){
val=node.nodeValue;
}
return val;
};
nitobi.grid.Column.prototype.xSETMODEL=function(){
var node=this.getModel();
if(node!=null){
node.setAttribute(arguments[0],arguments[1][0]);
}
};
nitobi.grid.Column.prototype.eSET=function(name,_2d7){
var _2d8=_2d7[0];
var _2d9=_2d8;
var _2da=name.substr(2);
_2da=_2da.substr(0,_2da.length-5);
if(typeof (_2d8)=="string"){
_2d9=function(_2db){
return eval(_2d8);
};
}
if(typeof (this[name])!="undefined"){
alert("unsubscribe");
this.unsubscribe(_2da,this[name]);
}
var guid=this.subscribe(_2da,_2d9);
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,_2e3){
if(typeof (_2e3)=="undefined"){
_2e3=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_2e3,func));
};
nitobi.grid.Column.prototype.unsubscribe=function(evt,func){
return nitobi.event.unsubscribe(evt+this.uid,func);
};
nitobi.grid.Column.getColumnHeaderElement=function(grid,_2e7){
return $("columnheader_"+_2e7+"_"+grid.uid);
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.ColumnEventArgs=function(_2e8,_2e9){
this.grid=_2e8;
this.column=_2e9;
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.grid_id=this.grid.UiContainer.parentid;
this.line=document.getElementById("ntb-column-resizeline"+this.grid.uid);
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="ntb-column-resize-surface";
this.grid.UiContainer.appendChild(this.surface);
}
}
};
nitobi.grid.ColumnResizer.prototype.startResize=function(grid,_2ec,_2ed,_2ee){
this.grid=grid;
this.column=_2ec;
var _2ef=new nitobi.grid.OnBeforeColumnResizeEventArgs(this.grid,this.column);
if(!nitobi.event.evaluate(_2ec.getOnBeforeResizeEvent(),_2ef)){
return;
}
var x=nitobi.html.getEventCoords(_2ee).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,_2ed,nitobi.drawing.align.ALIGNTOP,0,0,nitobi.html.getHeight(_2ed)+1);
var _2f1=(nitobi.browser.IE?this.grid.UiContainer.getBoundingClientRect().left:0);
this.lineStyle.left=x-_2f1+"px";
this.lineStyle.height=this.grid.Scroller.scrollSurface.offsetHeight+"px";
this.lineStyle.visibility="visible";
nitobi.ui.startDragOperation(this.line,_2ee,false,true,this,this.endResize);
};
nitobi.grid.ColumnResizer.prototype.endResize=function(_2f2){
var x=_2f2.x;
var Y=_2f2.y;
if(nitobi.browser.IE){
this.surface.style.visibility="hidden";
}
this.lineStyle.visibility="hidden";
this.lineStyle.top="0px";
this.lineStyle.left="0px";
var _2f5=this.column.getWidth();
var _2f6=parseInt(_2f5)+x-this.x;
if(isNaN(_2f6)){
return;
}
if(_2f6>10){
var _2f7=this.column.getWidth();
this.column.setWidth(_2f6);
this.grid.updateCellRanges();
this.grid.generateCss();
this.grid.adjustHorizontalScrollBars();
}
this.grid.Selection.collapse(this.grid.activeCell);
var _2f8=new nitobi.grid.OnAfterColumnResizeEventArgs(this.grid,this.column);
nitobi.event.evaluate(this.column.getOnAfterResizeEvent(),_2f8);
};
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.widthFixed=false;
this.heightFixed=false;
this.minHeight=0;
this.minWidth=0;
this.box=document.getElementById("ntb-grid-resizebox_");
if(this.box==null){
this.box=document.createElement("div");
this.box.id="ntb-grid-resizebox_";
grid.getToolsContainer().appendChild(this.box);
this.box.className="ntb-column-resizeline";
}
this.onAfterResize=new nitobi.base.Event();
};
nitobi.grid.GridResizer.prototype.startResize=function(grid,_2fb){
this.grid=grid;
var _2fc=null;
var x,y;
var _2ff=nitobi.html.getEventCoords(_2fb);
x=_2ff.x;
y=_2ff.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.widthFixed;
this.resizeH=((Math.abs((y-T)-h)<3)||((Math.abs((y-T)-h)<16)&&(Math.abs((x-L)-w)<16)))&&!this.heightFixed;
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";
var _304=nitobi.drawing.align.SAMEWIDTH|nitobi.drawing.align.SAMEHEIGHT|nitobi.drawing.align.ALIGNTOP|nitobi.drawing.align.ALIGNLEFT;
nitobi.drawing.align(this.box,this.grid.element,_304,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(_2fb);
}
};
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&&(x-L)>this.minWidth){
this.box.style.width=(x-L)+"px";
}
if(this.resizeH&&(y-T)>this.minHeight){
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 _30b=this.grid.getWidth();
var _30c=this.grid.getHeight();
this.newWidth=Math.max(parseInt(_30b)+((this.resizeW)?x-this.x:0),this.minWidth);
this.newHeight=Math.max(parseInt(_30c)+((this.resizeH)?y-this.y:0),this.minHeight);
if(isNaN(this.newWidth)||isNaN(this.newHeight)){
return;
}
this.onAfterResize.notify(this);
};
nitobi.grid.GridResizer.prototype.dispose=function(){
this.grid=null;
};
nitobi.data.FormatConverter={};
nitobi.data.FormatConverter.convertHtmlTableToEbaXml=function(_30d,_30e,_30f){
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(_30f)+"\"/></xsl:attribute>";
for(var _311=0;_311<_30e.length;_311++){
s+="<xsl:attribute name=\""+_30e[_311]+"\" ><xsl:value-of select=\"TD["+parseInt(_311+1)+"]\"/></xsl:attribute>";
}
s+="</xsl:element></xsl:template>";
s+="</xsl:stylesheet>";
var _312=nitobi.xml.createXmlDoc(_30d);
var _313=nitobi.xml.createXslProcessor(s);
var _314=nitobi.xml.transformToXml(_312,_313);
return _314;
};
nitobi.data.FormatConverter.convertTsvToEbaXml=function(tsv,_316,_317){
var _318="<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(_318.indexOf("<TBODY><TR>")==-1){
_318=_318.replace(/TBODY\>(.*)\<\/TBODY/,"TBODY><TR><TD>$1</TD></TR></TBODY");
}
return nitobi.data.FormatConverter.convertHtmlTableToEbaXml(_318,_316,_317);
};
nitobi.data.FormatConverter.convertTsvToJs=function(tsv){
var _31a="["+tsv.replace(/[\&\r]/g,"").replace(/([^\t\n]*)[\t]/g,"$1\",\"").replace(/([^\n]*?)\n/g,"[\"$1\"],")+"]";
return _31a;
};
nitobi.data.FormatConverter.convertEbaXmlToHtmlTable=function(_31b,_31c,_31d,_31e){
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(_31d-1)+" and @xi &lt; "+parseInt(_31e+1)+"]\" ><TR>";
for(var _320=0;_320<_31c.length;_320++){
s+="<TD><xsl:value-of select=\"@"+_31c[_320]+"\" /></TD>";
}
s+="</TR></xsl:for-each></TBODY></TABLE></xsl:template></xsl:stylesheet>";
var _321=nitobi.xml.createXslProcessor(s);
return nitobi.xml.transformToXml(_31b,_321).xml.replace(/xmlns:ntb="http:\/\/www.nitobi.com"/,"");
};
nitobi.data.FormatConverter.convertEbaXmlToTsv=function(_322,_323,_324,_325){
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(_324-1)+" and @xi &lt; "+parseInt(_325+1)+"]\" >\n";
for(var _327=0;_327<_323.length;_327++){
s+="<xsl:value-of select=\"@"+_323[_327]+"\" />";
if(_327<_323.length-1){
s+="<xsl:text>&#x09;</xsl:text>";
}
}
s+="<xsl:text>&#xa;</xsl:text></xsl:for-each></xsl:template></xsl:stylesheet>";
var _328=nitobi.xml.createXslProcessor(s);
return nitobi.xml.transformToString(_322,_328).replace(/xmlns:ntb="http:\/\/www.nitobi.com"/,"");
};
nitobi.data.FormatConverter.getDataColumns=function(data){
var _32a=0;
if(data!=null&&data!=""){
if(data.substr(0,1)=="<"){
_32a=data.toLowerCase().substr(0,data.toLowerCase().indexOf("</tr>")).split("</td>").length-1;
}else{
_32a=data.substr(0,data.indexOf("\n")).split("\t").length;
}
}else{
_32a=0;
}
return _32a;
};
nitobi.data.FormatConverter.getDataRows=function(data){
var _32c=0;
if(data!=null&&data!=""){
if(data.substr(0,1)=="<"){
_32c=data.toLowerCase().split("</tr>").length-1;
}else{
retValArray=data.split("\n");
_32c=retValArray.length;
if(retValArray[retValArray.length-1]==""){
_32c--;
}
}
}else{
_32c=0;
}
return _32c;
};
nitobi.grid.DateColumn=function(grid,_32e){
nitobi.grid.DateColumn.baseConstructor.call(this,grid,_32e);
};
nitobi.lang.extend(nitobi.grid.DateColumn,nitobi.grid.Column);
var ntb_datep=nitobi.grid.DateColumn.prototype;
ntb_datep.setMask=function(){
this.xSETMODEL("Mask",arguments);
};
ntb_datep.getMask=function(){
return this.xGETMODEL("Mask",arguments);
};
ntb_datep.setCalendarEnabled=function(){
this.xSETMODEL("CalendarEnabled",arguments);
};
ntb_datep.isCalendarEnabled=function(){
return nitobi.lang.toBool(this.xGETMODEL("CalendarEnabled",arguments),false);
};
nitobi.lang.defineNs("nitobi.grid.Declaration");
nitobi.grid.Declaration.parse=function(_32f){
var _330={};
_330.grid=nitobi.xml.parseHtml(_32f);
var _331=_32f.firstChild;
while(_331!=null){
if(typeof (_331.tagName)!="undefined"){
var tag=_331.tagName.replace(/ntb\:/gi,"").toLowerCase();
if(tag=="inlinehtml"){
_330[tag]=_331;
}else{
var _333="http://www.nitobi.com";
if(tag=="columndefinition"){
var sXml;
if(nitobi.browser.IE){
sXml=("<"+nitobi.xml.nsPrefix+"grid xmlns:ntb=\""+_333+"\"><"+nitobi.xml.nsPrefix+"columns>"+_331.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=\""+_333+"\"><"+nitobi.xml.nsPrefix+"columns>"+_331.parentNode.innerHTML.replace(/\=\s*([^\"^\s^\>]+)/g,"=\"$1\" ")+"</"+nitobi.xml.nsPrefix+"columns></"+nitobi.xml.nsPrefix+"grid>";
}
sXml=sXml.replace(/\&nbsp\;/gi," ");
_330["columndefinitions"]=nitobi.xml.createXmlDoc();
_330["columndefinitions"].validateOnParse=false;
_330["columndefinitions"]=nitobi.xml.loadXml(_330["columndefinitions"],sXml);
break;
}else{
_330[tag]=nitobi.xml.parseHtml(_331);
}
}
}
_331=_331.nextSibling;
}
return _330;
};
nitobi.grid.Declaration.loadDataSources=function(_335,grid){
var _337=new Array();
if(_335["datasources"]){
_337=_335.datasources.selectNodes("//"+nitobi.xml.nsPrefix+"datasources/*");
}
if(_337.length>0){
for(var i=0;i<_337.length;i++){
var id=_337[i].getAttribute("id");
if(id!="_default"){
var _33a=_337[i].xml.replace(/fieldnames=/g,"FieldNames=").replace(/keys=/g,"Keys=");
_33a="<ntb:grid xmlns:ntb=\"http://www.nitobi.com\"><ntb:datasources>"+_33a+"</ntb:datasources></ntb:grid>";
var _33b=new nitobi.data.DataTable("local",grid.getPagingMode()!=nitobi.grid.PAGINGMODE_NONE,{GridId:grid.getID()},{GridId:grid.getID()},grid.isAutoKeyEnabled());
_33b.initialize(id,_33a);
_33b.initializeXml(_33a);
grid.data.add(_33b);
var _33c=grid.model.selectNodes("//nitobi.grid.Column[@DatasourceId='"+id+"']");
for(var j=0;j<_33c.length;j++){
grid.editorDataReady(_33c[j]);
}
}
}
}
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.EditCompleteEventArgs=function(obj,_33f,_340,cell){
this.editor=obj;
this.cell=cell;
this.databaseValue=_340;
this.displayValue=_33f;
};
nitobi.grid.EditCompleteEventArgs.prototype.dispose=function(){
this.editor=null;
this.cell=null;
this.metadata=null;
};
nitobi.data.GetCompleteEventArgs=function(_342,_343,_344,_345,_346,_347,obj,_349,_34a){
this.firstRow=_342;
this.lastRow=_343;
this.callback=_349;
this.dataSource=_347;
this.context=obj;
this.ajaxCallback=_346;
this.startXi=_344;
this.pageSize=_345;
this.lastPage=false;
this.numRowsReturned=_34a;
this.lastRowReturned=_343;
};
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(_34b,_34c,_34d){
var _34e="";
var _34f="";
var _350="";
_34d=nitobi.html.getElement(_34d);
if(_34d!=null){
xDeclaration=nitobi.grid.Declaration.parse(_34d);
_34b=xDeclaration.grid.documentElement.getAttribute("mode");
var _351=nitobi.GridFactory.isGetHandler(xDeclaration);
var _352=nitobi.GridFactory.isDatasourceId(xDeclaration);
var _353=false;
if(_34b==nitobi.grid.MODE_LOCALLIVESCROLLING){
_34e=nitobi.grid.PAGINGMODE_LIVESCROLLING;
_34f=nitobi.data.DATAMODE_LOCAL;
}else{
if(_34b==nitobi.grid.MODE_LIVESCROLLING){
_34e=nitobi.grid.PAGINGMODE_LIVESCROLLING;
_34f=nitobi.data.DATAMODE_CACHING;
}else{
if(_34b==nitobi.grid.MODE_NONPAGING){
_353=true;
_34e=nitobi.grid.PAGINGMODE_NONE;
_34f=nitobi.data.DATAMODE_LOCAL;
}else{
if(_34b==nitobi.grid.MODE_LOCALNONPAGING){
_34e=nitobi.grid.PAGINGMODE_NONE;
_34f=nitobi.data.DATAMODE_LOCAL;
}else{
if(_34b==nitobi.grid.MODE_LOCALSTANDARDPAGING){
_34e=nitobi.grid.PAGINGMODE_STANDARD;
_34f=nitobi.data.DATAMODE_LOCAL;
}else{
if(_34b==nitobi.grid.MODE_STANDARDPAGING){
_34e=nitobi.grid.PAGINGMODE_STANDARD;
_34f=nitobi.data.DATAMODE_PAGING;
}else{
if(_34b==nitobi.grid.MODE_PAGEDLIVESCROLLING){
_34e=nitobi.grid.PAGINGMODE_STANDARD;
_34f=nitobi.data.DATAMODE_PAGING;
_350=nitobi.grid.RENDERMODE_ONDEMAND;
}else{
}
}
}
}
}
}
}
}
var id=_34d.getAttribute("id");
_34b=(_34b||nitobi.grid.MODE_STANDARDPAGING).toLowerCase();
var grid=null;
if(_34b==nitobi.grid.MODE_LOCALSTANDARDPAGING){
grid=new nitobi.grid.GridLocalPage(id);
}else{
if(_34b==nitobi.grid.MODE_LIVESCROLLING){
grid=new nitobi.grid.GridLiveScrolling(id);
}else{
if(_34b==nitobi.grid.MODE_LOCALLIVESCROLLING){
grid=new nitobi.grid.GridLiveScrolling(id);
}else{
if(_34b==nitobi.grid.MODE_NONPAGING||_34b==nitobi.grid.MODE_LOCALNONPAGING){
grid=new nitobi.grid.GridNonpaging(id);
}else{
if(_34b==nitobi.grid.MODE_STANDARDPAGING||_34b==nitobi.grid.MODE_PAGEDLIVESCROLLING){
grid=new nitobi.grid.GridStandard(id);
}
}
}
}
}
grid.setPagingMode(_34e);
grid.setDataMode(_34f);
grid.setRenderMode(_350);
nitobi.GridFactory.processDeclaration(grid,_34d,xDeclaration);
_34d.jsObject=grid;
return grid;
};
nitobi.GridFactory.processDeclaration=function(grid,_357,_358){
if(_358!=null){
grid.setDeclaration(_358);
if(typeof (_358.inlinehtml)=="undefined"){
var _359=document.createElement("ntb:inlinehtml");
_359.setAttribute("parentid","grid"+grid.uid);
_357.insertAdjacentElement("beforeEnd",_359);
grid.Declaration.inlinehtml=_359;
}
if(this.data==null||this.data.tables==null||this.data.tables.length==0){
var _35a=new nitobi.data.DataSet();
_35a.initialize();
grid.connectToDataSet(_35a);
}
grid.initializeModelFromDeclaration();
var _35b=grid.Declaration.columndefinitions||grid.Declaration.columns;
if(typeof (_35b)!="undefined"&&_35b!=null&&_35b.childNodes.length!=0&&_35b.childNodes[0].childNodes.length!=0){
grid.defineColumns(_35b.documentElement);
}
nitobi.grid.Declaration.loadDataSources(_358,grid);
grid.attachToParentDomElement(grid.Declaration.inlinehtml);
var _35c=grid.getDataMode();
var _35d=grid.getDatasourceId();
var _35e=grid.getGetHandler();
if(_35d!=null&&_35d!=""){
grid.connectToTable(grid.data.getTable(_35d));
}else{
grid.ensureConnected();
if(grid.mode.toLowerCase()==nitobi.grid.MODE_LIVESCROLLING&&_358!=null&&_358.datasources!=null){
var _35f=_358.datasources.selectNodes("//ntb:datasource[@id='_default']/ntb:data/ntb:e").length;
if(_35f>0){
var _360=grid.data.getTable("_default");
_360.initializeXmlData(_358.grid.xml);
_360.initializeXml(_358.grid.xml);
_360.descriptor.leap(0,_35f*2);
_360.syncRowCount();
}
}
}
window.setTimeout(function(){
grid.bind();
},50);
}
};
nitobi.GridFactory.isLocal=function(_361){
var _362=_361.grid.documentElement.getAttribute("datasourceid");
var _363=_361.grid.documentElement.getAttribute("gethandler");
if(_363!=null&&_363!=""){
return false;
}else{
if(_362!=null&&_362!=""){
return true;
}else{
throw ("Non-paging grid requires either a gethandler or a local datasourceid to be specified.");
}
}
};
nitobi.GridFactory.isGetHandler=function(_364){
var _365=_364.grid.documentElement.getAttribute("gethandler");
if(_365!=null&&_365!=""){
return true;
}
return false;
};
nitobi.GridFactory.isDatasourceId=function(_366){
var _367=_366.grid.documentElement.getAttribute("datasourceid");
if(_367!=null&&_367!=""){
return true;
}
return false;
};
nitobi.grid.hover=function(_368,_369,_36a){
if(!_36a){
return;
}
var id=_368.getAttribute("id");
var _36c=id.replace(/__/g,"||");
var _36d=_36c.split("_");
var row=_36d[3];
var uid=_36d[5].replace(/\|\|/g,"__");
var _370=document.getElementById("cell_"+row+"_0_"+uid);
var _371=_370.parentNode;
var _372=_371.childNodes[_371.childNodes.length-1];
var id=_372.getAttribute("id");
var _36d=id.split("_");
var _373=document.getElementById("cell_"+row+"_"+(Number(_36d[4])+1)+"_"+uid);
var _374=null;
if(_373!=null){
_374=_373.parentNode;
}
if(_369){
var _375=nitobi.grid.RowHoverColor||"white";
_371.style.backgroundColor=_375;
if(_374){
_374.style.backgroundColor=_375;
}
}else{
_371.style.backgroundColor="";
if(_374){
_374.style.backgroundColor="";
}
}
if(_369){
nitobi.html.addClass(_368,"ntb-cell-hover");
}else{
nitobi.html.removeClass(_368,"ntb-cell-hover");
}
};
initEBAGrids=function(){
nitobi.initComponents();
};
nitobi.initGrids=function(){
var _376=[];
var _377=window.document.getElementsByTagName(nitobi.browser.MOZ?"ntb:grid":"grid");
for(var i=0;i<_377.length;i++){
if(_377[i].jsObject==null){
_377[i].jsObject=nitobi.GridFactory.createGrid(null,null,_377[i]);
_376.push(_377[i].jsObject);
}
}
return _376;
};
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(_37b){
return document.getElementById(_37b).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(_37f){
nitobi.grid.GridLiveScrolling.base.getComplete.call(this,_37f);
if(!this.columnsDefined){
this.defineColumnsFinalize();
}
this.bindComplete();
};
nitobi.grid.GridLiveScrolling.prototype.pageSelect=function(dir){
var _381=this.Scroller.getUnrenderedBlocks();
var rows=_381.last-_381.first;
this.reselect(0,rows*dir);
};
nitobi.grid.GridLiveScrolling.prototype.page=function(dir){
var _384=this.Scroller.getUnrenderedBlocks();
var rows=_384.last-_384.first;
this.move(0,rows*dir);
};
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 _387=this.findCssUrl();
var msg="";
if(_387==null){
msg="Loading...";
}else{
msg="<img src='"+_387+"loading.gif'  class='ntb-loading-Icon' 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="ntb-loading";
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(_38a){
_38a.appendChild(this.loadingScreen);
};
nitobi.grid.LoadingScreen.prototype.findCssUrl=function(){
var _38b=nitobi.html.findParentStylesheet(".ntb-loading-Icon");
if(_38b==null){
return null;
}
var _38c=nitobi.html.normalizeUrl(_38b.href);
if(nitobi.browser.IE){
while(_38b.parentStyleSheet){
_38b=_38b.parentStyleSheet;
_38c=nitobi.html.normalizeUrl(_38b.href)+_38c;
}
}
return _38c;
};
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(_393){
this.fire("BeforeLoadDataPage");
if(_393>-1){
this.setCurrentPageIndex(_393);
this.setDisplayedRowCount(this.getRowsPerPage());
var _394=this.getCurrentPageIndex()*this.getRowsPerPage();
var rows=this.getRowsPerPage()-this.getfreezetop();
this.setDisplayedRowCount(rows);
var _396=_394+rows;
if(_396>=this.getRowCount()){
this.fire("EndOfData");
}else{
this.fire("NotEndOfData");
}
if(_394==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.GridLocalPage.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 _398=this.getfreezetop();
endRow=this.getRowsPerPage()-1;
this.Scroller.view.midcenter.renderGap(_398,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(_39b){
nitobi.grid.GridNonpaging.base.getComplete.call(this,_39b);
this.finalizeRowCount(_39b.numRowsReturned);
this.defineColumnsFinalize();
this.bindComplete();
};
nitobi.grid.GridNonpaging.prototype.renderMiddle=function(){
nitobi.grid.GridNonpaging.base.renderMiddle.call(this,arguments);
var _39c=this.getfreezetop();
endRow=this.getRowCount();
this.Scroller.view.midcenter.renderGap(_39c,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.GridStandard.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.connectToTable=function(_39f){
if(nitobi.grid.GridStandard.base.connectToTable.call(this,_39f)!=false){
this.datatable.subscribe("RowInserted",nitobi.lang.close(this,this.incrementDisplayedRowCount));
this.datatable.subscribe("RowDeleted",nitobi.lang.close(this,this.decrementDisplayedRowCount));
}
};
nitobi.grid.GridStandard.prototype.incrementDisplayedRowCount=function(_3a0){
this.setDisplayedRowCount(this.getDisplayedRowCount()+(_3a0||1));
this.updateCellRanges();
};
nitobi.grid.GridStandard.prototype.decrementDisplayedRowCount=function(_3a1){
this.setDisplayedRowCount(this.getDisplayedRowCount()-(_3a1||1));
this.updateCellRanges();
};
nitobi.grid.GridStandard.prototype.subscribeToRowCountReady=function(){
};
nitobi.grid.GridStandard.prototype.updateDisplayedRowCount=function(_3a2){
this.setDisplayedRowCount(_3a2.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(_3a3){
var t=this.getToolbars().pagingToolbar;
if(t!=null){
t.getUiElements()[_3a3+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(_3a5){
var t=this.getToolbars().pagingToolbar;
if(t!=null){
t.getUiElements()[_3a5+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(_3a7){
this.fire("BeforeLoadDataPage");
if(_3a7>-1){
if(this.sortColumn){
if(this.datatable.sortColumn){
for(var i=0;i<this.getColumnCount();i++){
var _3a9=this.getColumnObject(i);
if(_3a9.getColumnName()==this.datatable.sortColumn){
this.setSortStyle(i,this.datatable.sortDir);
break;
}
}
}else{
this.setSortStyle(this.sortColumn.column,"",true);
}
}
this.setCurrentPageIndex(_3a7);
var _3aa=this.getCurrentPageIndex()*this.getRowsPerPage();
var rows=this.getRowsPerPage()-this.getfreezetop();
this.datatable.flush();
this.datatable.get(_3aa,rows,this,this.afterLoadDataPage);
}
this.fire("AfterLoadDataPage");
};
nitobi.grid.GridStandard.prototype.afterLoadDataPage=function(_3ac){
this.setDisplayedRowCount(_3ac.numRowsReturned);
this.setRowCount(_3ac.numRowsReturned);
if(_3ac.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(_3ad){
this.afterLoadDataPage(_3ad);
nitobi.grid.GridStandard.base.getComplete.call(this,_3ad);
this.defineColumnsFinalize();
this.bindComplete();
};
nitobi.grid.GridStandard.prototype.renderMiddle=function(){
nitobi.grid.GridStandard.base.renderMiddle.call(this,arguments);
var _3ae=this.getfreezetop();
endRow=this.getRowsPerPage()-1;
this.Scroller.view.midcenter.renderGap(_3ae,endRow,false);
};
nitobi.grid.NumberColumn=function(grid,_3b0){
nitobi.grid.NumberColumn.baseConstructor.call(this,grid,_3b0);
};
nitobi.lang.extend(nitobi.grid.NumberColumn,nitobi.grid.Column);
var ntb_numberp=nitobi.grid.NumberColumn.prototype;
ntb_numberp.setAlign=function(){
this.xSETMODEL("Align",arguments);
};
ntb_numberp.getAlign=function(){
return this.xGETMODEL("Align",arguments);
};
ntb_numberp.setMask=function(){
this.xSETMODEL("Mask",arguments);
};
ntb_numberp.getMask=function(){
return this.xGETMODEL("Mask",arguments);
};
ntb_numberp.setNegativeMask=function(){
this.xSETMODEL("NegativeMask",arguments);
};
ntb_numberp.getNegativeMask=function(){
return this.xGETMODEL("NegativeMask",arguments);
};
ntb_numberp.setGroupingSeparator=function(){
this.xSETMODEL("GroupingSeparator",arguments);
};
ntb_numberp.getGroupingSeparator=function(){
return this.xGETMODEL("GroupingSeparator",arguments);
};
ntb_numberp.setDecimalSeparator=function(){
this.xSETMODEL("DecimalSeparator",arguments);
};
ntb_numberp.getDecimalSeparator=function(){
return this.xGETMODEL("DecimalSeparator",arguments);
};
ntb_numberp.setOnKeyDownEvent=function(){
this.xSETMODEL("OnKeyDownEvent",arguments);
};
ntb_numberp.getOnKeyDownEvent=function(){
return this.xGETMODEL("OnKeyDownEvent",arguments);
};
ntb_numberp.setOnKeyUpEvent=function(){
this.xSETMODEL("OnKeyUpEvent",arguments);
};
ntb_numberp.getOnKeyUpEvent=function(){
return this.xGETMODEL("OnKeyUpEvent",arguments);
};
ntb_numberp.setOnKeyPressEvent=function(){
this.xSETMODEL("OnKeyPressEvent",arguments);
};
ntb_numberp.getOnKeyPressEvent=function(){
return this.xGETMODEL("OnKeyPressEvent",arguments);
};
ntb_numberp.setOnChangeEvent=function(){
this.xSETMODEL("OnChangeEvent",arguments);
};
ntb_numberp.getOnChangeEvent=function(){
return this.xGETMODEL("OnChangeEvent",arguments);
};
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCopyEventArgs=function(_3b1,data,_3b3){
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(_3b4,data,_3b6){
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(_3b7,cell){
nitobi.grid.OnAfterCellEditEventArgs.baseConstructor.call(this,_3b7,cell);
};
nitobi.lang.extend(nitobi.grid.OnAfterCellEditEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnAfterColumnResizeEventArgs=function(_3b9,_3ba){
nitobi.grid.OnAfterColumnResizeEventArgs.baseConstructor.call(this,_3b9,_3ba);
};
nitobi.lang.extend(nitobi.grid.OnAfterColumnResizeEventArgs,nitobi.grid.ColumnEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnAfterRowDeleteEventArgs=function(_3bb,row){
nitobi.grid.OnAfterRowDeleteEventArgs.baseConstructor.call(this,_3bb,row);
};
nitobi.lang.extend(nitobi.grid.OnAfterRowDeleteEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnAfterRowInsertEventArgs=function(_3bd,row){
nitobi.grid.OnAfterRowInsertEventArgs.baseConstructor.call(this,_3bd,row);
};
nitobi.lang.extend(nitobi.grid.OnAfterRowInsertEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnAfterSortEventArgs=function(_3bf,_3c0,_3c1){
nitobi.grid.OnAfterSortEventArgs.baseConstructor.call(this,_3bf,_3c0);
this.direction=_3c1;
};
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(_3c2,cell){
nitobi.grid.OnBeforeCellEditEventArgs.baseConstructor.call(this,_3c2,cell);
};
nitobi.lang.extend(nitobi.grid.OnBeforeCellEditEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeColumnResizeEventArgs=function(_3c4,_3c5){
nitobi.grid.OnBeforeColumnResizeEventArgs.baseConstructor.call(this,_3c4,_3c5);
};
nitobi.lang.extend(nitobi.grid.OnBeforeColumnResizeEventArgs,nitobi.grid.ColumnEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeRowDeleteEventArgs=function(_3c6,row){
nitobi.grid.OnBeforeRowDeleteEventArgs.baseConstructor.call(this,_3c6,row);
};
nitobi.lang.extend(nitobi.grid.OnBeforeRowDeleteEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeRowInsertEventArgs=function(_3c8,row){
nitobi.grid.OnBeforeRowInsertEventArgs.baseConstructor.call(this,_3c8,row);
};
nitobi.lang.extend(nitobi.grid.OnBeforeRowInsertEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnBeforeSortEventArgs=function(_3ca,_3cb,_3cc){
nitobi.grid.OnBeforeSortEventArgs.baseConstructor.call(this,_3ca,_3cb);
this.direction=_3cc;
};
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(_3cd,cell){
nitobi.grid.OnBeforeCellClickEventArgs.baseConstructor.call(this,_3cd,cell);
};
nitobi.lang.extend(nitobi.grid.OnBeforeCellClickEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellBlurEventArgs=function(_3cf,cell){
nitobi.grid.OnCellBlurEventArgs.baseConstructor.call(this,_3cf,cell);
};
nitobi.lang.extend(nitobi.grid.OnCellBlurEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellClickEventArgs=function(_3d1,cell){
nitobi.grid.OnCellClickEventArgs.baseConstructor.call(this,_3d1,cell);
};
nitobi.lang.extend(nitobi.grid.OnCellClickEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellDblClickEventArgs=function(_3d3,cell){
nitobi.grid.OnCellDblClickEventArgs.baseConstructor.call(this,_3d3,cell);
};
nitobi.lang.extend(nitobi.grid.OnCellDblClickEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellFocusEventArgs=function(_3d5,cell){
nitobi.grid.OnCellFocusEventArgs.baseConstructor.call(this,_3d5,cell);
};
nitobi.lang.extend(nitobi.grid.OnCellFocusEventArgs,nitobi.grid.CellEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnCellValidateEventArgs=function(_3d7,cell,_3d9,_3da){
nitobi.grid.OnCellValidateEventArgs.baseConstructor.call(this,_3d7,cell);
this.oldValue=_3da;
this.newValue=_3d9;
};
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(_3db,_3dc){
nitobi.grid.OnHeaderClickEventArgs.baseConstructor.call(this,_3db,_3dc);
};
nitobi.lang.extend(nitobi.grid.OnHeaderClickEventArgs,nitobi.grid.ColumnEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnRowBlurEventArgs=function(_3dd,row){
nitobi.grid.OnRowBlurEventArgs.baseConstructor.call(this,_3dd,row);
};
nitobi.lang.extend(nitobi.grid.OnRowBlurEventArgs,nitobi.grid.RowEventArgs);
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.OnRowFocusEventArgs=function(_3df,row){
nitobi.grid.OnRowFocusEventArgs.baseConstructor.call(this,_3df,row);
};
nitobi.lang.extend(nitobi.grid.OnRowFocusEventArgs,nitobi.grid.RowEventArgs);
nitobi.grid.Row=function(grid,row){
this.grid=grid;
this.row=row;
this.Row=row;
this.DomNode=nitobi.grid.Row.getRowElement(grid,row);
};
nitobi.grid.Row.prototype.getData=function(){
if(this.DataNode==null){
this.DataNode=this.grid.datatable.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xi="+this.Row+"]");
}
return this.DataNode;
};
nitobi.grid.Row.prototype.getStyle=function(){
return this.DomNode.style;
};
nitobi.grid.Row.prototype.getCell=function(_3e3){
return this.grid.getCellObject(this.row,_3e3);
};
nitobi.grid.Row.prototype.getKey=function(_3e4){
return this.grid.getCellObject(this.row,_3e4);
};
nitobi.grid.Row.getRowElement=function(grid,row){
return nitobi.grid.Row.getRowElements(grid,row).mid;
};
nitobi.grid.Row.getRowElements=function(grid,row){
var _3e9=grid.getFrozenLeftColumnCount();
if(!_3e9){
return {left:null,mid:$("row_"+row+"_"+grid.uid)};
}
var C=nitobi.grid.Cell;
var rows={};
rows.left=C.getCellElement(grid,row,0).parentNode;
var cell=C.getCellElement(grid,row,_3e9);
rows.mid=cell?cell.parentNode:null;
return rows;
};
nitobi.grid.Row.getRowNumber=function(_3ed){
return parseInt(_3ed.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 _3f1=this.MetaNode=this.grid.data.createNode(1,"r","");
_3f1.setAttribute("xi",this.row);
meta.appendChild(_3f1);
node=this.MetaNode=_3f1;
}
if(node!=null){
node.setAttribute(arguments[0],arguments[1][0]);
}else{
alert("Cannot set property: "+arguments[0]);
}
};
nitobi.grid.RowRenderer=function(_3f2,_3f3,_3f4,_3f5,_3f6,_3f7){
this.rowHeight=_3f4||23;
this.xmlDataSource=_3f2;
this.dataTableId="";
this.firstColumn=_3f5;
this.columns=_3f6;
this.firstColumn=_3f5;
this.uniqueId=_3f7;
this.mergeDoc=nitobi.xml.createXmlDoc("<ntb:root xmlns:ntb=\"http://www.nitobi.com\"><ntb:columns><ntb:stub/></ntb:columns><ntb:data><ntb:stub/></ntb:data></ntb:root>");
this.mergeDocCols=this.mergeDoc.selectSingleNode("//ntb:columns");
this.mergeDocData=this.mergeDoc.selectSingleNode("//ntb:data");
};
nitobi.grid.RowRenderer.prototype.render=function(_3f8,rows,_3fa,_3fb,_3fc,_3fd){
var _3f8=Number(_3f8)||0;
var rows=Number(rows)||0;
var xt=nitobi.grid.rowXslProc;
xt.addParameter("start",_3f8,"");
xt.addParameter("end",_3f8+rows,"");
xt.addParameter("sortColumn",_3fc,"");
xt.addParameter("sortDirection",_3fd,"");
xt.addParameter("dataTableId",this.dataTableId,"");
xt.addParameter("showHeaders",this.showHeaders,"");
xt.addParameter("firstColumn",this.firstColumn,"");
xt.addParameter("lastColumn",this.lastColumn,"");
xt.addParameter("uniqueId",this.uniqueId,"");
xt.addParameter("rowHover",this.rowHover,"");
xt.addParameter("frozenColumnId",this.frozenColumnId,"");
var data=this.xmlDataSource.xmlDoc();
if(data.documentElement.firstChild==null){
return "";
}
var root=this.mergeDoc;
this.mergeDocCols.replaceChild((nitobi.browser.MOZ?root.importNode(this.definitions,true):this.definitions.cloneNode(true)),this.mergeDocCols.firstChild);
this.mergeDocData.replaceChild((nitobi.browser.MOZ?root.importNode(data.documentElement,true):data.documentElement.cloneNode(true)),this.mergeDocData.firstChild);
s2=nitobi.xml.transformToString(root,xt,"xml");
s2=s2.replace(/ATOKENTOREPLACE/g,"&nbsp;");
s2=s2.replace(/\#\&lt\;\#/g,"<").replace(/\#\&gt\;\#/g,">").replace(/\#\&eq\;\#/g,"=").replace(/\#\&quot\;\#/g,"\"").replace(/\#\&amp\;\#/g,"&");
return s2;
};
nitobi.grid.RowRenderer.prototype.generateXslTemplate=function(_401,_402,_403,_404,_405,_406,_407,id){
this.definitions=_401;
this.showIndicators=_406;
this.showHeaders=_405;
this.firstColumn=_403;
this.lastColumn=_403+_404;
this.rowHover=_407;
this.frozenColumnId=(id?id:"");
return;
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){
}
};
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(_40c,_40d,rows,_40f,_410,_411){
this.disposal=[];
this.scrollTop=0;
this.scrollLeft=0;
this.height=_40d;
this.rows=rows;
this.columns=_40f;
this.freezetop=_410;
this.freezeleft=_411;
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.owner=_40c;
var VP=nitobi.grid.Viewport;
this.view={topleft:new VP(this.owner,0),topcenter:new VP(this.owner,1),midleft:new VP(this.owner,3),midcenter:new VP(this.owner,4)};
this.view.midleft.onHtmlReady.subscribe(this.handleHtmlReady,this);
this.setCellRanges();
this.scrollSurface=null;
this.startRow=_410;
this.headerHeight=23;
this.rowHeight=23;
this.lastTimeoutId=0;
this.scrollTopPercent=0;
this.dataTable=null;
this.cacheMap=new nitobi.collections.CacheMap(-1,-1);
};
nitobi.grid.Scroller3x3.prototype.updateCellRanges=function(cols,rows,frzL,frzT){
this.columns=cols;
this.rows=rows;
this.freezetop=frzT;
this.freezeleft=frzL;
this.setCellRanges();
};
nitobi.grid.Scroller3x3.prototype.setCellRanges=function(){
var _417=null;
if(this.implementsStandardPaging()){
_417=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.view.midleft.setCellRanges(this.freezetop,(_417?_417:this.rows)-this.freezetop,0,this.freezeleft);
this.view.midcenter.setCellRanges(this.freezetop,(_417?_417:this.rows)-this.freezetop,this.freezeleft,this.columns-this.freezeleft);
};
nitobi.grid.Scroller3x3.prototype.resize=function(_418){
this.height=_418;
};
nitobi.grid.Scroller3x3.prototype.setScrollLeftRelative=function(_419){
this.setScrollLeft(this.scrollLeft+_419);
};
nitobi.grid.Scroller3x3.prototype.setScrollLeftPercent=function(_41a){
this.setScrollLeft(Math.round((this.view.midcenter.element.scrollWidth-this.view.midcenter.element.clientWidth)*_41a));
};
nitobi.grid.Scroller3x3.prototype.setScrollLeft=function(_41b){
this.scrollLeft=_41b;
this.view.midcenter.element.scrollLeft=_41b;
this.view.topcenter.element.scrollLeft=_41b;
};
nitobi.grid.Scroller3x3.prototype.setScrollTopRelative=function(_41c){
this.setScrollTop(this.scrollTop+_41c);
};
nitobi.grid.Scroller3x3.prototype.setScrollTopPercent=function(_41d){
this.scrollTopPercent=_41d;
this.setScrollTop(Math.round((this.view.midcenter.element.scrollHeight-this.view.midcenter.element.clientHeight)*_41d));
};
nitobi.grid.Scroller3x3.prototype.setScrollTop=function(_41e){
this.scrollTop=_41e;
this.view.midcenter.element.scrollTop=_41e;
this.view.midleft.element.scrollTop=_41e;
this.render();
};
nitobi.grid.Scroller3x3.prototype.clearSurfaces=function(_41f,_420,_421,_422){
this.flushCache();
_421=true;
if(_41f){
_420=true;
_421=true;
_422=true;
}
if(_420){
this.view.topleft.clear(true);
this.view.topcenter.clear(true);
}
if(_421){
this.view.midleft.clear(true,true,false,false);
this.view.midcenter.clear(false,false,true);
}
if(_422){
}
};
nitobi.grid.Scroller3x3.prototype.mapToHtml=function(_423){
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);
};
nitobi.grid.Scroller3x3.prototype.getUnrenderedBlocks=function(){
var pair={first:this.freezetop,last:this.rows-1-this.freezetop};
if(!this.implementsShowAll()){
var _428=this.scrollSurface.scrollTop+this.getTop()-this.headerHeight;
var MC=this.view.midcenter;
var b0=MC.findBlockAtCoord(_428);
var b1=MC.findBlockAtCoord(_428+this.height);
var _42c=null;
var _42d=null;
if(b0==null){
return;
}
_42c=b0.top+Math.floor((_428-b0.offsetTop)/this.rowHeight);
if(b1){
_42d=b1.top+Math.floor((_428+this.height-b1.offsetTop)/this.rowHeight);
}else{
_42d=_42c+Math.floor(this.height/this.rowHeight);
}
_42d=Math.min(_42d,this.rows);
if(this.implementsStandardPaging()){
var _42e=0;
if(this.owner.getRenderMode()==nitobi.grid.RENDERMODE_ONDEMAND){
var _42f=_42c+_42e;
var last=Math.min(_42d+_42e,_42e+this.getDisplayedRowCount()-1);
pair={first:_42f,last:last};
}else{
var _42f=_42e;
var last=_42f+this.getDisplayedRowCount()-1;
pair={first:_42f,last:last};
}
}else{
pair={first:_42c,last:_42d};
}
this.onRangeUpdate.notify(pair);
}
return pair;
};
nitobi.grid.Scroller3x3.prototype.render=function(_431){
if(this.owner.isBound()&&(this.scrollSurface.scrollTop!=this.lastScrollTop||_431||this.scrollTopPercent>0.9)){
var _432=nitobi.lang.close(this,this.performRender,[]);
window.clearTimeout(this.lastTimeoutId);
this.lastTimeoutId=window.setTimeout(_432,EBAScroller_RENDERTIMEOUT);
}
};
nitobi.grid.Scroller3x3.prototype.performRender=function(){
var _433=this.getUnrenderedBlocks();
if(_433==null){
return;
}
var _434=this.scrollSurface.scrollTop;
var mc=this.view.midcenter;
var ml=this.view.midleft;
var _437=this.getDataTable();
var _438=_433.first;
var last=_433.last;
if(last>=_437.remoteRowCount-1&&!_437.rowCountKnown){
last+=2;
}
var gaps=this.cacheMap.gaps(_438,last);
var _43b=(this.owner.mode=="livescrolling"?(_438+last<=0):(_438+last<=-1));
if(_43b){
this.onHtmlReady.notify();
}else{
if(gaps[0]!=null){
var low=gaps[0].low;
var high=gaps[0].high;
var rows=high-low+1;
if(!_437.inCache(low,rows)){
if(low==null||rows==null){
alert("low or rows =null");
}
if(this.implementsStandardPaging()){
var _43f=this.getCurrentPageIndex()*this.getRowsPerPage();
var _440=_43f+this.getRowsPerPage();
_437.get(_43f,_440);
}else{
_437.get(low,rows);
}
var _441=_437.cachedRanges(low,high);
for(var i=0;i<_441.length;i++){
var _443=this.cacheMap.gaps(_441[i].low,_441[i].high);
for(var j=0;j<_443.length;j++){
_433.first=_443[j].low;
_433.last=_443[j].high;
this.renderGap(_443[j].low,_443[j].high);
}
}
return false;
}else{
this.renderGap(low,high);
}
}
}
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.reRender=function(_44b,_44c){
var _44d=this.view.midleft.clearBlocks(_44b,_44c);
this.view.midcenter.clearBlocks(_44b,_44c);
this.cacheMap.remove(_44d.top,_44d.bottom);
this.render();
};
nitobi.grid.Scroller3x3.prototype.getViewportByCoords=function(row,_44f){
var _450=0;
if(row>=_450&&row<this.owner.getfreezetop()&&_44f>=0&&_44f<this.owner.frozenLeftColumnCount()){
return this.view.topleft;
}
if(row>=_450&&row<this.owner.getfreezetop()&&_44f>=this.owner.getFrozenLeftColumnCount()&&_44f<this.owner.getColumnCount()){
return this.view.topcenter;
}
if(row>=this.owner.getfreezetop()+_450&&row<this.owner.getDisplayedRowCount()+_450&&_44f>=0&&_44f<this.owner.getFrozenLeftColumnCount()){
return this.view.midleft;
}
if(row>=this.owner.getfreezetop()+_450&&row<this.owner.getDisplayedRowCount()+_450&&_44f>=this.owner.getFrozenLeftColumnCount()&&_44f<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(_451){
this.dataTable=_451;
};
nitobi.grid.Scroller3x3.prototype.getDataTable=function(){
return this.dataTable;
};
nitobi.grid.Scroller3x3.prototype.handleHtmlReady=function(){
this.onHtmlReady.notify();
};
nitobi.grid.Scroller3x3.prototype.getTop=function(){
return this.freezetop*this.rowHeight+this.headerHeight;
};
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(_454){
this.rowHeight=_454;
this.setViewportProperty("RowHeight",_454);
};
nitobi.grid.Scroller3x3.prototype.setHeaderHeight=function(_455){
this.headerHeight=_455;
this.setViewportProperty("HeaderHeight",_455);
};
nitobi.grid.Scroller3x3.prototype.setViewportProperty=function(_456,_457){
var sv=this.view;
for(var i=0;i<EBAScroller_VIEWPANES.length;i++){
sv[EBAScroller_VIEWPANES[i]]["set"+_456](_457);
}
};
nitobi.grid.Scroller3x3.prototype.fire=function(evt,args){
return nitobi.event.notify(evt+this.uid,args);
};
nitobi.grid.Scroller3x3.prototype.subscribe=function(evt,func,_45e){
if(typeof (_45e)=="undefined"){
_45e=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_45e,func));
};
nitobi.grid.Scroller3x3.prototype.dispose=function(){
try{
(this.cacheMap!=null?this.cacheMap.flush():"");
this.cacheMap=null;
var _45f=this.disposal.length;
for(var i=0;i<_45f;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(_463){
nitobi.grid.Selection.baseConstructor.call(this,_463);
this.owner=_463;
var t=new Date();
this.selecting=false;
this.expanding=false;
this.resizingRow=false;
this.created=false;
this.freezeTop=this.owner.getfreezetop();
this.freezeLeft=this.owner.getFrozenLeftColumnCount();
this.rowHeight=23;
this.onAfterExpand=new nitobi.base.Event();
this.onBeforeExpand=new nitobi.base.Event();
this.onMouseUp=new nitobi.base.Event();
this.expandEndCell=null;
this.expandStartCell=null;
};
nitobi.lang.extend(nitobi.grid.Selection,nitobi.collections.CellSet);
nitobi.grid.Selection.prototype.setRange=function(_465,_466,_467,_468){
nitobi.grid.Selection.base.setRange.call(this,_465,_466,_467,_468);
this.startCell=this.owner.getCellElement(_465,_466);
this.endCell=this.owner.getCellElement(_467,_468);
};
nitobi.grid.Selection.prototype.setRangeWithDomNodes=function(_469,_46a){
this.setRange(nitobi.grid.Cell.getRowNumber(_469),nitobi.grid.Cell.getColumnNumber(_469),nitobi.grid.Cell.getRowNumber(_46a),nitobi.grid.Cell.getColumnNumber(_46a));
};
nitobi.grid.Selection.prototype.createBoxes=function(){
if(!this.created){
var uid=this.owner.uid;
var H=nitobi.html;
var _46d=H.createElement("div",{"class":"ntb-grid-selection-grabby"});
this.expanderGrabbyEvents=[{type:"mousedown",handler:this.handleGrabbyMouseDown},{type:"mouseup",handler:this.handleGrabbyMouseUp},{type:"click",handler:this.handleGrabbyClick}];
H.attachEvents(_46d,this.expanderGrabbyEvents,this);
this.boxexpanderGrabby=_46d;
this.box=this.createBox("selectbox"+uid);
this.boxl=this.createBox("selectboxl"+uid);
this.events=[{type:"mousemove",handler:this.shrink},{type:"mouseup",handler:this.handleSelectionMouseUp},{type:"mousedown",handler:this.handleSelectionMouseDown},{type:"click",handler:this.handleSelectionClick},{type:"dblclick",handler:this.handleDblClick}];
H.attachEvents(this.box,this.events,this);
H.attachEvents(this.boxl,this.events,this);
var sv=this.owner.Scroller.view;
sv.midcenter.surface.appendChild(this.box);
sv.midleft.surface.appendChild(this.boxl);
this.clear();
this.created=true;
}
};
nitobi.grid.Selection.prototype.createBox=function(id){
var _470;
var cell;
if(nitobi.browser.IE){
cell=_470=document.createElement("div");
}else{
_470=nitobi.html.createTable({"cellpadding":0,"cellspacing":0,"border":0},{"backgroundColor":"transparent"});
cell=_470.rows[0].cells[0];
}
_470.className="ntb-grid-selection ntb-grid-selection-border";
_470.setAttribute("id","ntb-grid-selection-"+id);
var _472=nitobi.html.createElement("div",{"id":id,"class":"ntb-grid-selection-background"});
cell.appendChild(_472);
return _470;
};
nitobi.grid.Selection.prototype.clearBoxes=function(){
if(this.box!=null){
this.clearBox(this.box);
}
if(this.box1!=null){
this.clearBox(this.box1);
}
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.handleGrabbyMouseDown=function(evt){
this.selecting=true;
this.setExpanding(true,"vert");
var _475=this.getTopLeftCell();
var _476=this.getBottomRightCell();
this.expandStartCell=_475;
this.expandEndCell=_476;
var _477=this.owner.getScrollSurface();
this.expandStartCoords=this.box.getBoundingClientRect(_477.scrollTop+document.body.scrollTop,_477.scrollLeft+document.body.scrollLeft);
this.expandStartHeight=Math.abs(_475.getRow()-_476.getRow())+1;
this.expandStartWidth=Math.abs(_475.getColumn()-_476.getColumn())+1;
this.expandStartTopRow=_475.getRow();
this.expandStartBottomRow=_476.getRow();
this.expandStartLeftColumn=_475.getColumn();
this.expandStartRightColumn=_476.getColumn();
var Cell=nitobi.grid.Cell;
if(Cell.getRowNumber(this.startCell)>Cell.getRowNumber(this.endCell)){
var _479=this.startCell;
this.startCell=this.endCell;
this.endCell=_479;
}
this.onBeforeExpand.notify(this);
nitobi.html.cancelEvent(evt);
return false;
};
nitobi.grid.Selection.prototype.handleGrabbyMouseUp=function(evt){
if(this.expanding){
this.selecting=false;
this.setExpanding(false);
this.onAfterExpand.notify(this);
}
};
nitobi.grid.Selection.prototype.handleGrabbyClick=function(evt){
nitobi.html.cancelEvent(evt);
};
nitobi.grid.Selection.prototype.expand=function(cell,dir){
this.setExpanding(true,dir);
var Cell=nitobi.grid.Cell;
var _47f;
var _480=this.expandStartTopRow,_481=this.expandStartLeftColumn;
var _482=this.expandStartBottomRow,_483=this.expandStartRightColumn;
var _484=Cell.getRowNumber(this.endCell),_485=Cell.getColumnNumber(this.endCell);
var _486=Cell.getRowNumber(this.startCell),_487=Cell.getColumnNumber(this.startCell);
var _488=Cell.getColumnNumber(cell);
var _489=Cell.getRowNumber(cell);
var _48a=_487,_48b=_486;
var o=this.owner;
if(dir=="horiz"){
if(_487<_485&_488<_487){
this.changeEndCellWithDomNode(o.getCellElement(_482,_488));
this.changeStartCellWithDomNode(o.getCellElement(_480,_483));
}else{
if(_487>_485&&_488>_487){
this.changeEndCellWithDomNode(o.getCellElement(_482,_488));
this.changeStartCellWithDomNode(o.getCellElement(_480,_481));
}else{
this.changeEndCellWithDomNode(o.getCellElement((_486==_482?_480:_482),_488));
}
}
}else{
if(_486<_484&_489<_486){
this.changeEndCellWithDomNode(o.getCellElement(_489,_483));
this.changeStartCellWithDomNode(o.getCellElement(_482,_481));
}else{
if(_486>_484&&_489>_486){
this.changeEndCellWithDomNode(o.getCellElement(_489,_483));
this.changeStartCellWithDomNode(o.getCellElement(_480,_481));
}else{
this.changeEndCellWithDomNode(o.getCellElement(_489,(_487==_483?_481:_483)));
}
}
}
this.alignBoxes();
};
nitobi.grid.Selection.prototype.shrink=function(evt){
if(nitobi.html.Css.hasClass(evt.srcElement,"ntb-grid-selection-border")||nitobi.html.Css.hasClass(evt.srcElement,"ntb-grid-selection-grabby")){
return;
}
if(this.endCell!=this.startCell&&this.selecting){
var _48e=this.owner.getScrollSurface();
var Cell=nitobi.grid.Cell;
var _490=Cell.getRowNumber(this.endCell),_491=Cell.getColumnNumber(this.endCell);
var _492=Cell.getRowNumber(this.startCell),_493=Cell.getColumnNumber(this.startCell);
var _494=nitobi.html.getEventCoords(evt);
var evtY=_494.y,evtX=_494.x;
if(nitobi.browser.IE||document.compatMode=="BackCompat"){
evtY=evt.clientY,evtX=evt.clientX;
}
var _497=this.endCell.getBoundingClientRect(_48e.scrollTop+document.body.scrollTop,_48e.scrollLeft+document.body.scrollLeft);
var _498=_497.top,_499=_497.left;
if(_490>_492&&evtY<_498){
_490=_490-Math.floor(((_498-4)-evtY)/this.rowHeight)-1;
}else{
if(evtY>_497.bottom){
_490=_490+Math.floor((evtY-_498)/this.rowHeight);
}
}
if(_491>_493&&evtX<_499){
_491--;
}else{
if(evtX>_497.right){
_491++;
}
}
if(this.expanding){
var _49a=this.expandStartCell.getRow(),_49b=this.expandStartCell.getColumn();
var _49c=this.expandEndCell.getRow(),_49d=this.expandEndCell.getColumn();
if(_491>=this.expandStartLeftColumn&&_491<=this.expandStartRightColumn){
if(_491>=_493&&_491<_49d){
_491=_49d;
}else{
if(_491<=_493&&_491>_49b){
_491=_49b;
}
}
if(_491>=_493&&_491<=this.expandStartRightColumn){
_491=this.expandStartRightColumn;
}
}
if(_490>=this.expandStartTopRow&&_490<=this.expandStartBottomRow){
if(_492<_490&&_490<=_49c){
_490=_49c;
}else{
if(_492>_490&&_490>=_49a){
_490=_49a;
}else{
if(_492==_490){
_490=(_492==_49a?_49c:_49a);
}
}
}
}
}
var _49e=this.owner.getCellElement(_490,_491);
var _49f=this.owner.getCellElement(_492,_493);
if(_49e!=null&&_49e!=this.endCell||_49f!=null&&_49f!=this.startCell){
this.changeEndCellWithDomNode(_49e);
this.changeStartCellWithDomNode(_49f);
this.alignBoxes();
this.owner.ensureCellInView(_49e);
}
}
};
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();
}
this.alignBoxes();
this.selecting=false;
};
nitobi.grid.Selection.prototype.startSelecting=function(_4a2,_4a3){
this.selecting=true;
this.setRangeWithDomNodes(_4a2,_4a3);
this.shrink();
};
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 _4a7=this.endCell||this.startCell;
var sc=this.getCoords();
var _4a9=sc.top.y;
var _4aa=sc.top.x;
var _4ab=sc.bottom.y;
var _4ac=sc.bottom.x;
var _4ad=(document.compatMode=="CSS1Compat");
var ox=oy=(nitobi.browser.IE?-1:0);
var ow=oh=(nitobi.browser.IE&&_4ad?-1:1);
if(_4ac>=this.freezeLeft&&_4ab>=this.freezeTop){
var e=this.box;
e.style.display="block";
this.align(e,this.startCell,_4a7,286265344,oh,ow,oy,ox);
(e.rows!=null?e.rows[0].cells[0]:e).appendChild(this.boxexpanderGrabby);
}else{
this.box.style.display="none";
}
if(_4ac<this.freezeLeft||_4aa<this.freezeLeft){
var e=this.boxl;
e.style.display="block";
this.align(e,this.startCell,_4a7,286265344,oh,ow,oy,ox);
if(this.box.style.display=="none"){
(e.rows!=null?e.rows[0].cells[0]:e).appendChild(this.boxexpanderGrabby);
}
}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;
var Cell=nitobi.grid.Cell;
this.changeStartCell(Cell.getRowNumber(cell),Cell.getColumnNumber(cell));
};
nitobi.grid.Selection.prototype.changeEndCellWithDomNode=function(cell){
this.endCell=cell;
var Cell=nitobi.grid.Cell;
this.changeEndCell(Cell.getRowNumber(cell),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;
}
var bs=this.box.style;
bs.display="none";
bs.top="-1000px";
bs.left="-1000px";
bs.width="1px";
bs.height="1px";
var bls=this.boxl.style;
bls.display="none";
bls.top="-1000px";
bls.left="-1000px";
bls.width="1px";
bls.height="1px";
this.selecting=false;
};
nitobi.grid.Selection.prototype.handleSelectionClick=function(evt){
if(!this.selected()){
if(NTB_SINGLECLICK==null){
evt=nitobi.lang.copy(evt);
NTB_SINGLECLICK=window.setTimeout(nitobi.lang.close(this,this.edit,[evt]),150);
}
}else{
this.collapse();
this.owner.focus();
}
};
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(_4bd,_4be){
this.selectWithCoords(_4bd.getRowNumber(),_4bd.getColumnNumber(),_4be.getRowNumber(),_4be.getColumnNumber());
};
nitobi.grid.Selection.prototype.selectWithCoords=function(_4bf,_4c0,_4c1,_4c2){
this.setRange(_4bf,_4c0,_4c1,_4c2);
this.createBoxes();
this.alignBoxes();
};
nitobi.grid.Selection.prototype.handleSelectionMouseUp=function(evt){
if(this.expanding){
this.handleGrabbyMouseUp(evt);
}
this.stopSelecting();
this.onMouseUp.notify(this);
};
nitobi.grid.Selection.prototype.handleSelectionMouseDown=function(evt){
nitobi.html.cancelEvent(evt);
};
nitobi.grid.Selection.prototype.stopSelecting=function(){
this.selecting=true;
if(!this.selected()){
this.collapse(this.startCell);
}
this.selecting=false;
};
nitobi.grid.Selection.prototype.getStartCell=function(){
return this.startCell;
};
nitobi.grid.Selection.prototype.getEndCell=function(){
return this.endCell;
};
nitobi.grid.Selection.prototype.getTopLeftCell=function(){
var _4c5=this.getCoords();
return new nitobi.grid.Cell(this.owner,_4c5.top.y,_4c5.top.x);
};
nitobi.grid.Selection.prototype.getBottomRightCell=function(){
var _4c6=this.getCoords();
return new nitobi.grid.Cell(this.owner,_4c6.bottom.y,_4c6.bottom.x);
};
nitobi.grid.Selection.prototype.getHeight=function(){
var _4c7=this.getCoords();
return _4c7.bottom.y-_4c7.top.y+1;
};
nitobi.grid.Selection.prototype.getWidth=function(){
var _4c8=this.getCoords();
return _4c8.bottom.x-_4c8.top.x+1;
};
nitobi.grid.Selection.prototype.getRowByCoords=function(_4c9){
return (_4c9.parentNode.offsetTop/_4c9.parentNode.offsetHeight);
};
nitobi.grid.Selection.prototype.getColumnByCoords=function(_4ca){
var _4cb=(this.indicator?-2:0);
if(_4ca.parentNode.parentNode.getAttribute("id").substr(0,6)!="freeze"){
_4cb+=2-(this.freezeColumn*3);
}else{
_4cb+=2;
}
return Math.floor((_4ca.sourceIndex-_4ca.parentNode.sourceIndex-_4cb)/3);
};
nitobi.grid.Selection.prototype.selected=function(){
return (this.endCell==this.startCell)?false:true;
};
nitobi.grid.Selection.prototype.setRowHeight=function(_4cc){
this.rowHeight=_4cc;
};
nitobi.grid.Selection.prototype.getRowHeight=function(){
return this.rowHeight;
};
nitobi.grid.Selection.prototype.setExpanding=function(val,dir){
if(val&&this.expanding){
return;
}
this.expanding=val;
this.expandingVertical=(dir=="horiz"?false:true);
var C=nitobi.html.Css;
var _4d0="ntb-grid-selection-border";
var _4d1=_4d0+"-active";
if(val){
C.swapClass(this.box,_4d0,_4d1);
C.swapClass(this.boxl,_4d0,_4d1);
}else{
C.swapClass(this.box,_4d1,_4d0);
C.swapClass(this.boxl,_4d1,_4d0);
}
};
nitobi.grid.Selection.prototype.dispose=function(){
};
nitobi.grid.Selection.prototype.align=function(_4d2,_4d3,_4d4,_4d5,oh,ow,oy,ox,show){
oh=oh||0;
ow=ow||0;
oy=oy||0;
ox=ox||0;
var a=_4d5;
var td,sd,tt,tb,tl,tr,th,tw,st,sb,sl,sr,sh,sw;
if(!_4d3||!(_4d3.getBoundingClientRect)){
return;
}
ad=_4d3.getBoundingClientRect();
bd=_4d4.getBoundingClientRect();
sd=_4d2.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);
var H=nitobi.html;
if(a&268435456){
_4d2.style.height=(Math.max(bb-at,ab-bt)+oh)+"px";
}
if(a&16777216){
_4d2.style.width=(Math.max(br-al,ar-bl)+ow)+"px";
}
if(a&1048576){
_4d2.style.top=(H.getStyleTop(_4d2)+Math.min(tt,bt)-st+oy)+"px";
}
if(a&65536){
_4d2.style.top=(H.getStyleTop(_4d2)+tt-st+th-sh+oy)+"px";
}
if(a&4096){
_4d2.style.left=(H.getStyleLeft(_4d2)-sl+Math.min(tl,bl)+ox)+"px";
}
if(a&256){
_4d2.style.left=(H.getStyleLeft(_4d2)-sl+tl+tw-sw+ox)+"px";
}
if(a&16){
_4d2.style.top=(H.getStyleTop(_4d2)+tt-st+oy+Math.floor((th-sh)/2))+"px";
}
if(a&1){
_4d2.style.left=(H.getStyleLeft(_4d2)-sl+tl+ox+Math.floor((tw-sw)/2))+"px";
}
};
nitobi.grid.Surface=function(_4eb,_4ec,_4ed){
this.height=_4ec;
this.width=_4eb;
this.element=_4ed;
};
nitobi.grid.Surface.prototype.dispose=function(){
this.element=null;
};
nitobi.grid.TextColumn=function(grid,_4ef){
nitobi.grid.TextColumn.baseConstructor.call(this,grid,_4ef);
};
nitobi.lang.extend(nitobi.grid.TextColumn,nitobi.grid.Column);
nitobi.lang.defineNs("nitobi.ui");
nitobi.ui.Toolbars=function(_4f0){
this.uid="nitobiToolbar_"+nitobi.base.getUid();
this.toolbars={};
this.visibleToolbars=_4f0;
};
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(_4f1){
this.initialize();
this.container=_4f1;
if(this.standardToolbar==null&&this.visibleToolbars){
this.makeToolbar();
this.render();
}
};
nitobi.ui.Toolbars.prototype.setWidth=function(_4f2){
this.width=_4f2;
};
nitobi.ui.Toolbars.prototype.getWidth=function(){
return this.width;
};
nitobi.ui.Toolbars.prototype.setRowInsertEnabled=function(_4f3){
this.rowInsertEnabled=_4f3;
};
nitobi.ui.Toolbars.prototype.isRowInsertEnabled=function(){
return this.rowInsertEnabled;
};
nitobi.ui.Toolbars.prototype.setRowDeleteEnabled=function(_4f4){
this.rowDeleteEnabled=_4f4;
};
nitobi.ui.Toolbars.prototype.isRowDeleteEnabled=function(){
return this.rowDeleteEnabled;
};
nitobi.ui.Toolbars.prototype.makeToolbar=function(){
var _4f5=this.findCssUrl();
this.toolbarXml.documentElement.setAttribute("id","toolbar"+this.uid);
this.toolbarXml.documentElement.setAttribute("image_directory",_4f5);
var _4f6=this.toolbarXml.selectNodes("/toolbar/items/*");
for(var i=0;i<_4f6.length;i++){
if(_4f6[i].nodeType!=8){
_4f6[i].setAttribute("id",_4f6[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",_4f5);
_4f6=(this.toolbarPagingXml.selectNodes("/toolbar/items/*"));
for(var i=0;i<_4f6.length;i++){
if(_4f6[i].nodeType!=8){
_4f6[i].setAttribute("id",_4f6[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 _4f9=nitobi.html.Css.findParentStylesheet(".ntb-toolbar");
if(_4f9==null){
_4f9=nitobi.html.Css.findParentStylesheet(".ntb-grid");
if(_4f9==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 "+_4f9);
}
}
return nitobi.html.Css.getPath(_4f9);
};
nitobi.ui.Toolbars.prototype.isToolbarEnabled=function(){
return this.enabled;
};
nitobi.ui.Toolbars.prototype.render=function(){
var _4fa=this.container;
_4fa.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 _4fc=nitobi.xml.createXslDoc(xsl);
var _4fd=nitobi.xml.transformToString(this.standardToolbar.getXml(),_4fc,"xml");
_4fa.innerHTML=_4fd;
_4fa.style.zIndex="1000";
var _4fe=nitobi.xml.transformToString(this.pagingToolbar.getXml(),_4fc,"xml");
_4fa.innerHTML+=_4fe;
_4fc=null;
xmlDoc=null;
this.standardToolbar.attachToTag();
this.pagingToolbar.attachToTag();
this.resize();
var _4ff=this;
var _500=this.standardToolbar.getUiElements();
for(eachbutton in _500){
switch(eachbutton){
case "save"+this.uid:
_500[eachbutton].onClick=function(){
_4ff.fire("Save");
};
break;
case "newRecord"+this.uid:
_500[eachbutton].onClick=function(){
_4ff.fire("InsertRow");
};
if(!this.isRowInsertEnabled()){
_500[eachbutton].disable();
}
break;
case "deleteRecord"+this.uid:
_500[eachbutton].onClick=function(){
_4ff.fire("DeleteRow");
};
if(!this.isRowDeleteEnabled()){
_500[eachbutton].disable();
}
break;
case "refresh"+this.uid:
_500[eachbutton].onClick=function(){
var _501=confirm("Refreshing will discard any changes you have made. Is it OK to refresh?");
if(_501){
_4ff.fire("Refresh");
}
};
break;
default:
}
}
var _502=this.pagingToolbar.getUiElements();
var _4ff=this;
for(eachPbutton in _502){
switch(eachPbutton){
case "previousPage"+this.uid:
_502[eachPbutton].onClick=function(){
_4ff.fire("PreviousPage");
};
_502[eachPbutton].disable();
break;
case "nextPage"+this.uid:
_502[eachPbutton].onClick=function(){
_4ff.fire("NextPage");
};
break;
default:
}
}
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();
}
_4fa.style.visibility="visible";
};
nitobi.ui.Toolbars.prototype.resize=function(){
var _503=this.getWidth();
if(this.visibleToolbars&nitobi.ui.Toolbars.VisibleToolbars.PAGING){
_503=_503-2-parseInt(this.pagingToolbar.getWidth());
}
if(this.visibleToolbars&nitobi.ui.Toolbars.VisibleToolbars.STANDARD){
this.standardToolbar.setWidth(_503);
}
};
nitobi.ui.Toolbars.prototype.fire=function(evt,args){
return nitobi.event.notify(evt+this.uid,args);
};
nitobi.ui.Toolbars.prototype.subscribe=function(evt,func,_508){
if(typeof (_508)=="undefined"){
_508=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_508,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,_50a){
this.disposal=[];
this.surface=null;
this.element=null;
this.rowHeight=23;
this.headerHeight=23;
this.sortColumn=0;
this.sortDir=1;
this.uid=nitobi.base.getUid();
this.region=_50a;
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(_50b,_50c,_50d){
this.surface=_50c;
this.element=_50b;
this.container=nitobi.html.getFirstChild(_50c);
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(_510,rows,_512,_513){
this.startRow=_510;
this.rows=rows;
this.startColumn=_512;
this.columns=_513;
this.makeLastBlock(this.startRow,this.startRow+rows-1);
if(this.lastEmptyBlock!=null&&this.region>2&&this.region<5&&this.rows>0){
var _514=this.startRow+this.rows-1;
if(this.lastEmptyBlock.top>_514){
this.container.removeChild(this.lastEmptyBlock);
this.lastEmptyBlock=null;
}else{
this.lastEmptyBlock.bottom=_514;
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.clear=function(_515,_516,_517,_518){
var uid=this.grid.uid;
if(this.surface&&_515){
this.surface.innerHTML="<div id=\"gridvpcontainer_"+this.region+"_"+uid+"\"></div>";
}
if(this.element&&_518){
this.element.innerHTML="<div id=\"gridvpsurface_"+this.region+"_"+uid+"\"><div id=\"gridvpcontainer_"+this.region+"_"+uid+"\"></div></div>";
}
if(this.surface&&_517){
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(_51a,_51b){
this.sortColumn=_51a;
this.sortDir=_51b;
};
nitobi.grid.Viewport.prototype.renderGap=function(top,_51d){
var _51e=activeRow=null;
var _51f=this.findBlock(top);
var o=this.renderInsideEmptyBlock(top,_51d,_51f);
if(o==null){
return;
}
o.setAttribute("rendered","true");
var rows=_51d-top+1;
o.innerHTML=this.rowRenderer.render(top,rows,_51e,activeRow,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(_52a,_52b){
var _52c=[];
var _52d=this.findBlock(_52a);
var _52e=_52d;
_52c.push(_52d);
while(_52b>_52e.bottom){
var _52f=_52e.nextSibling;
if(_52f!=null){
_52e=_52f;
}else{
break;
}
_52c.push(_52e);
}
return _52c;
};
nitobi.grid.Viewport.prototype.clearBlocks=function(_530,_531){
var _532=this.getBlocks(_530,_531);
var len=_532.length;
var top=_532[0].top;
var _535=_532[len-1].bottom;
var _536=_532[len-1].nextSibling;
for(var i=0;i<len;i++){
_532[i].parentNode.removeChild(_532[i]);
}
this.renderEmptyBlock(top,_535,_536);
return {"top":top,"bottom":_535};
};
nitobi.grid.Viewport.prototype.renderInsideEmptyBlock=function(top,_539,_53a){
if(_53a==null){
return this.renderBlock(top,_539);
}
if(top==_53a.top&&_539>=_53a.bottom){
var _53b=this.renderBlock(top,_539,_53a);
this.container.replaceChild(_53b,_53a);
if(_53a.bottom<_53a.top){
throw "Render error";
}
return _53b;
}
if(top==_53a.top&&_539<_53a.bottom){
_53a.top=_539+1;
_53a.style.height=(this.rowHeight*(_53a.bottom-_53a.top+1))+"px";
_53a.rows=_53a.bottom-_53a.top+1;
if(_53a.bottom<_53a.top){
throw "Render error";
}
return this.renderBlock(top,_539,_53a);
}
if(top>_53a.top&&_539>=_53a.bottom){
_53a.bottom=top-1;
_53a.style.height=(this.rowHeight*(_53a.bottom-_53a.top+1))+"px";
if(_53a.bottom<_53a.top){
throw "Render error";
}
return this.renderBlock(top,_539,_53a.nextSibling);
}
if(top>_53a.top&&_539<_53a.bottom){
var _53c=this.renderEmptyBlock(_53a.top,top-1,_53a);
_53a.top=_539+1;
_53a.style.height=(this.rowHeight*(_53a.bottom-_53a.top+1))+"px";
if(_53a.bottom<_53a.top){
throw "Render error";
}
return this.renderBlock(top,_539,_53a);
}
throw "Could not insert "+top+"-"+_539+_53a.outerHTML;
};
nitobi.grid.Viewport.prototype.renderEmptyBlock=function(top,_53e,_53f){
var o=this.renderBlock(top,_53e,_53f);
o.setAttribute("id","eba_grid_emptyblock_"+this.region+"_"+top+"_"+_53e+"_"+this.grid.uid);
if(top==0&&_53e==99){
crash;
}
o.setAttribute("rendered","false");
o.style.height=((_53e-top+1)*this.rowHeight)+"px";
return o;
};
nitobi.grid.Viewport.prototype.renderBlock=function(top,_542,_543){
var o=document.createElement("div");
o.setAttribute("id","eba_grid_block_"+this.region+"_"+top+"_"+_542+"_"+this.grid.uid);
o.top=top;
o.bottom=_542;
o.left=this.startColumn;
o.right=this.startColumn+this.columns;
o.rows=_542-top+1;
o.columns=this.columns;
if(_543){
this.container.insertBefore(o,_543);
}else{
this.container.insertBefore(o,null);
}
return o;
};
nitobi.grid.Viewport.prototype.setHeaderHeight=function(_545){
this.headerHeight=_545;
};
nitobi.grid.Viewport.prototype.setRowHeight=function(_546){
this.rowHeight=_546;
};
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,_54b){
if(typeof (_54b)=="undefined"){
_54b=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_54b,func));
};
nitobi.grid.Viewport.prototype.attach=function(evt,func,_54e){
return nitobi.html.attachEvent(_54e,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 _54f="http://www.nitobi.com";
this.doc=nitobi.xml.createXmlDoc("<"+nitobi.xml.nsPrefix+"datasources xmlns:ntb=\""+_54f+"\"></"+nitobi.xml.nsPrefix+"datasources>");
};
nitobi.data.DataSet.prototype.initialize=function(){
this.tables=new Array();
};
nitobi.data.DataSet.prototype.add=function(_550){
this.tables[_550.id]=_550;
};
nitobi.data.DataSet.prototype.getTable=function(_551){
return this.tables[_551];
};
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 _554=this.tables[i].xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource").cloneNode(true);
this.doc.selectSingleNode("/"+nitobi.xml.nsPrefix+"datasources").appendChild(_554);
}
}
return this.doc;
};
nitobi.data.DataSet.prototype.dispose=function(){
for(var _555 in this.tables){
this.tables[_555].dispose();
}
};
nitobi.lang.defineNs("nitobi.data");
nitobi.data.DataTable=function(mode,_557,_558,_559,_55a){
if(_557==null){
}
this.estimateRowCount=_557;
this.version=3;
this.uid=nitobi.base.getUid();
this.mode=mode||"caching";
this.setAutoKeyEnabled(_55a);
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(_558){
this.saveHandlerArgs=_558;
}else{
this.saveHandlerArgs={};
}
if(_559){
this.getHandlerArgs=_559;
}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(_55b,_55c,_55d,_55e,_55f,sort,_561,_562,_563){
this.setGetHandlerParameter("TableId",_55b);
this.setSaveHandlerParameter("TableId",_55b);
this.id=_55b;
this.datastructure=null;
this.descriptor=new nitobi.data.DataTableDescriptor(this,nitobi.lang.close(this,this.syncRowCount),this.estimateRowCount);
this.pageFirstRow=0;
this.pageRowCount=0;
this.pageSize=_55f;
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=_561||"Asc";
this.filter=new Array();
this.onGenerateKey=_562;
this.remoteRowCount=0;
this.setRowCountKnown(false);
if(_55e==null){
_55e=0;
}
if(this.mode!="unbound"){
if(_55c!=null){
this.ajaxCallbackPool=new nitobi.ajax.HttpRequestPool(nitobi.ajax.HttpRequestPool_MAXCONNECTIONS);
this.ajaxCallbackPool.context=this;
this.setGetHandler(_55c);
this.setSaveHandler(_55d);
}
this.ajaxCallback=new nitobi.ajax.HttpRequest();
this.ajaxCallback.responseType="xml";
}else{
if(_55c!=null&&typeof (_55c)!="string"){
this.initializeXml(_55c);
}
}
this.sortXslProc=nitobi.xml.createXslProcessor(nitobi.data.sortXslProc.stylesheet);
this.requestQueue=new Array();
this.async=true;
};
nitobi.data.DataTable.prototype.setOnGenerateKey=function(_564){
this.onGenerateKey=_564;
};
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 _56c=this.datastructure.getAttribute("FieldNames");
var keys=this.datastructure.getAttribute("Keys");
var _56e=this.datastructure.getAttribute("Defaults");
var _56f=this.datastructure.getAttribute("Types");
this.initializeColumns(_56c,keys,_56f,_56e);
};
nitobi.data.DataTable.prototype.initializeSchema=function(){
var _570=this.columns.join("|");
var keys=this.keys.join("|");
var _572=this.defaults.join("|");
var _573=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,_570).replace(/\{keys\}/g,keys).replace(/\{defaults\}/g,_572).replace(/\{types\}/g,_573));
this.datastructure=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"datasourcestructure");
};
nitobi.data.DataTable.prototype.initializeColumns=function(_574,keys,_576,_577){
if(null!=_574){
var _578=this.columns.join("|");
if(_578==_574){
return;
}
this.columns=_574.split("|");
}
if(null!=keys){
this.keys=keys.split("|");
}
if(null!=_576){
this.types=_576.split("|");
}
if(null!=_577){
this.defaults=_577.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(_574){
ds.setAttribute("FieldNames",_574);
}
if(keys){
ds.setAttribute("Keys",keys);
}
if(_577){
ds.setAttribute("Defaults",_577);
}
if(_576){
ds.setAttribute("Types",_576);
}
this.makeFieldMap();
this.fire("ColumnsInitialized");
};
nitobi.data.DataTable.prototype.getTemplateNode=function(_57a){
var _57b=null;
if(_57a==null){
_57a=this.defaults;
}
_57b=nitobi.xml.createElement(this.xmlDoc,"e");
for(var i=0;i<this.columns.length;i++){
var _57d=(i>25?String.fromCharCode(Math.floor(i/26)+97):"")+(String.fromCharCode(i%26+97));
if(this.defaults[i]==null){
_57b.setAttribute(_57d,"");
}else{
_57b.setAttribute(_57d,this.defaults[i]);
}
}
return _57b;
};
nitobi.data.DataTable.prototype.commitProperties=function(){
if(this.mode=="unbound"){
}
};
nitobi.data.DataTable.prototype.flush=function(){
this.flushCache();
this.flushLog();
this.xmlDoc=nitobi.xml.createXmlDoc();
};
nitobi.data.DataTable.prototype.clearData=function(){
this.flushCache();
this.flushLog();
if(this.xmlDoc){
var _57e=this.xmlDoc.selectSingleNode("//ntb:data");
nitobi.xml.removeChildren(_57e);
}
};
nitobi.data.DataTable.prototype.flushCache=function(){
if(this.mode=="caching"||this.mode=="paging"){
this.dataCache.flush();
}
if(this.mode!="unbound"){
this.requestCache.flush();
}
};
nitobi.data.DataTable.prototype.join=function(_57f,_580,_581,_582){
};
nitobi.data.DataTable.prototype.merge=function(xd){
};
nitobi.data.DataTable.prototype.getField=function(_584,_585){
var r=this.getRecord(_584);
var a=this.fieldMap[_585];
if(a&&r){
return r.getAttribute(a.substring(1));
}else{
return null;
}
};
nitobi.data.DataTable.prototype.getRecord=function(_588){
var data=this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xi='"+_588+"']");
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 _58a=this.batchInsertRowCount;
this.batchInsertRowCount=0;
this.setRemoteRowCount(this.remoteRowCount+_58a);
if(_58a>0){
this.fire("RowInserted",_58a);
}
};
nitobi.data.DataTable.prototype.createRecord=function(_58b,_58c){
var xi=_58c;
this.adjustXi(parseInt(xi),1);
var data=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
var _58f=_58b||this.getTemplateNode();
var _590=nitobi.component.getUniqueId();
var _591=_58f.cloneNode(true);
_591.setAttribute("xi",xi);
_591.setAttribute("xid",_590);
_591.setAttribute("xac","i");
if(this.onGenerateKey){
var _592=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure").getAttribute("Keys").split("|");
var xml=null;
for(var j=0;j<_592.length;j++){
var _595=this.fieldMap[_592[j]].substring(1);
var _596=_591.getAttribute(_595);
if(!_596||_596==""){
if(!xml){
xml=eval(this.onGenerateKey);
}
if(typeof (xml)=="string"||typeof (xml)=="number"){
_591.setAttribute(_595,xml);
}else{
try{
var ck1=j%26;
var ck2=Math.floor(j/26);
var _599=(ck2>0?String.fromCharCode(96+ck2):"")+String.fromCharCode(97+ck1);
_591.setAttribute(_595,xml.selectSingleNode("//"+nitobi.xml.nsPrefix+"e").getAttribute(_599));
}
catch(e){
}
}
}
}
}
data.appendChild(_591);
if(this.log!=null){
var _59a=_591.cloneNode(true);
_59a.setAttribute("xac","i");
_59a.setAttribute("xid",_590);
this.logData.appendChild(_59a);
}
this.dataCache.insertIntoRange(_58c);
this.batchInsertRowCount++;
if(!this.batchInsert){
this.commitBatchInsert();
}
return _591;
};
nitobi.data.DataTable.prototype.updateRecord=function(xi,_59c,_59d){
var _59e=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@xi='"+xi+"']");
var xid=_59e.getAttribute("xid")||"error - unknown xid";
var _5a0=(_59e.getAttribute(_59c)!=_59d);
if(!_5a0){
return;
}
var _5a1="";
var _5a2=_59c;
if(_59e.getAttribute(_59c)==null&&this.fieldMap[_59c]!=null){
_5a2=this.fieldMap[_59c].substring(1);
}
_5a1=_59e.getAttribute(_5a2);
_59e.setAttribute(_5a2,_59d);
var _5a3="u";
var _5a4="u";
if(null==this.log){
this.flushLog();
}
var _5a5=_59e.cloneNode(true);
_5a5.setAttribute("xac","u");
this.logData=this.log.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
var _5a6=this.logData.selectSingleNode("./"+nitobi.xml.nsPrefix+"e[@xid='"+xid+"']");
if(null==_5a6){
this.logData.appendChild(_5a5);
_5a5.setAttribute("xid",xid);
}else{
_5a5.setAttribute("xac",_5a6.getAttribute("xac"));
this.logData.replaceChild(_5a5,_5a6);
}
if((true==this.AutoSave)){
this.save();
}
this.fire("RowUpdated",{"field":_59c,"newValue":_59d,"oldValue":_5a1,"record":_5a5});
};
nitobi.data.DataTable.prototype.deleteRecord=function(_5a7){
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 _5a9=data.selectSingleNode("*[@xi = '"+_5a7+"']");
if(_5a9==null){
throw "Index out of bounds in delete.";
}
var xid=_5a9.getAttribute("xid");
var xDel=this.logData.selectSingleNode("*[@xid='"+xid+"']");
var sTag="";
if(xDel!=null){
sTag=xDel.getAttribute("xac");
this.logData.removeChild(xDel);
}
if(sTag!="i"){
var _5ad=_5a9.cloneNode(true);
_5ad.setAttribute("xac","d");
this.logData.appendChild(_5ad);
}
data.removeChild(_5a9);
this.adjustXi(parseInt(_5a7)+1,-1);
this.dataCache.removeFromRange(_5a7);
this.setRemoteRowCount(this.remoteRowCount-1);
this.fire("RowDeleted");
};
nitobi.data.DataTable.prototype.adjustXi=function(_5ae,_5af){
nitobi.data.adjustXiXslProc.addParameter("startingIndex",_5ae,"");
nitobi.data.adjustXiXslProc.addParameter("adjustment",_5af,"");
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(_5b4,_5b5){
if(!eval(_5b5||"true")){
return;
}
try{
if(this.version==2.8){
var _5b6=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure").getAttribute("FieldNames").split("|");
var _5b7=this.log.selectNodes("//"+nitobi.xml.nsPrefix+"e[@xac = 'i']");
for(var i=0;i<_5b7.length;i++){
for(var j=0;j<_5b6.length;j++){
var _5ba=_5b7[i].getAttribute(this.fieldMap[_5b6[j]].substring(1));
if(!_5ba){
_5b7[i].setAttribute(this.fieldMap[_5b6[j]].substring(1),"");
}
}
}
var _5bb=this.log.selectNodes("//"+nitobi.xml.nsPrefix+"e[@xac = 'u']");
for(var i=0;i<_5bb.length;i++){
for(var j=0;j<_5b6.length;j++){
var _5ba=_5bb[i].getAttribute(this.fieldMap[_5b6[j]].substring(1));
if(!_5ba){
_5bb[i].setAttribute(this.fieldMap[_5b6[j]].substring(1),"");
}
}
}
nitobi.data.updategramTranslatorXslProc.addParameter("xkField",this.fieldMap["_xk"].substring(1),"");
nitobi.data.updategramTranslatorXslProc.addParameter("fields",_5b6.join("|").replace(/\|_xk/,""));
this.log=nitobi.xml.transformToXml(this.log,nitobi.data.updategramTranslatorXslProc);
}
var _5bc=this.getSaveHandler();
(_5bc.indexOf("?")==-1)?_5bc+="?":_5bc+="&";
_5bc+="TableId="+this.id;
_5bc+="&uid="+(new Date().getTime());
this.ajaxCallback=this.ajaxCallbackPool.reserve();
this.ajaxCallback.handler=_5bc;
this.ajaxCallback.responseType="xml";
this.ajaxCallback.context=this;
this.ajaxCallback.completeCallback=nitobi.lang.close(this,this.saveComplete);
this.ajaxCallback.params=new nitobi.data.SaveCompleteEventArgs(_5b4);
if(this.version>2.8&&this.log.selectNodes("//"+nitobi.xml.nsPrefix+"e[@xac='i']").length>0&&this.isAutoKeyEnabled()){
this.ajaxCallback.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 _5b6=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure").getAttribute("FieldNames").split("|");
_5b6.splice(_5b6.length-1,1);
_5b6=_5b6.join("|");
this.log.documentElement.setAttribute("fields",_5b6);
this.log.documentElement.setAttribute("keys",_5b6);
}
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.");
}
this.ajaxCallback.post(this.log);
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(_5bd){
try{
var _5be=_5bd.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xac='i']");
if(typeof (_5be)=="undefined"||_5be==null){
nitobi.lang.throwError("When updating keys from the server for AutoKey support, the inserts could not be parsed.");
}
var keys=_5bd.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<_5be.length;i++){
var _5c1=this.getRecord(_5be[i].getAttribute("xi"));
for(var j=0;j<keys.length;j++){
var att=this.fieldMap[keys[j]].substring(1);
_5c1.setAttribute(att,_5be[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(_5c4){
var xd=_5c4.response;
var _5c4=_5c4.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 _5c9=this.findWithoutMap("xid",rows[i].getAttribute("xid"))[0];
var key=this.fieldMap["_xk"].substring(1);
_5c9.setAttribute(key,xk);
}
}
}
if(null!=_5c4.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);
}
this.ajaxCallbackPool.release(this.ajaxCallback);
var _5cd=new nitobi.data.OnAfterSaveEventArgs(this,xd);
_5c4.callback.call(this,_5cd);
}
catch(err){
this.ajaxCallbackPool.release(this.ajaxCallback);
ebaErrorReport(err,"",EBA_ERROR);
}
};
nitobi.data.DataTable.prototype.makeFieldMap=function(){
var _5ce=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 _5d3=this.columns[i];
this.fieldMap[_5d3]=this.getFieldName(ck);
ck++;
}
};
nitobi.data.DataTable.prototype.getFieldName=function(_5d4){
var ck1=_5d4%26;
var ck2=Math.floor(_5d4/26);
return "@"+(ck2>0?String.fromCharCode(96+ck2):"")+String.fromCharCode(97+ck1);
};
nitobi.data.DataTable.prototype.find=function(_5d7,_5d8){
var _5d9=this.fieldMap[_5d7];
if(_5d9){
return this.findWithoutMap(_5d9,_5d8);
}else{
return new Array();
}
};
nitobi.data.DataTable.prototype.findWithoutMap=function(_5da,_5db){
if(_5da.charAt(0)!="@"){
_5da="@"+_5da;
}
return this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"e["+_5da+"=\""+_5db+"\"]");
};
nitobi.data.DataTable.prototype.sort=function(_5dc,dir,type,_5df){
if(_5df){
_5dc=this.fieldMap[_5dc];
_5dc=_5dc.substring(1);
dir=(dir=="Desc")?"descending":"ascending";
type=(type=="number")?"number":"text";
this.sortXslProc.addParameter("column",_5dc,"");
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=_5dc;
this.sortDir=dir||"Asc";
}
};
nitobi.data.DataTable.prototype.syncRowCount=function(){
this.setRemoteRowCount(this.descriptor.estimatedRowCount);
};
nitobi.data.DataTable.prototype.setRemoteRowCount=function(rows){
var _5e1=this.remoteRowCount;
this.remoteRowCount=rows;
if(this.remoteRowCount!=_5e1){
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,_5e3){
if(this.getHandler!=null&&this.getHandler!=""){
this.getHandler=nitobi.html.setUrlParameter(this.getHandler,name,_5e3);
}
this.getHandlerArgs[name]=_5e3;
};
nitobi.data.DataTable.prototype.setSaveHandlerParameter=function(name,_5e5){
if(this.postHandler!=null&&this.postHandler!=""){
this.postHandler=nitobi.html.setUrlParameter(this.getSaveHandler(),name,_5e5);
}
this.saveHandlerArgs[name]=_5e5;
};
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.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(_5e7,_5e8,_5e9){
this.errorCallback=_5e9;
var _5ea=this.ajaxCallbackPool.reserve();
var _5eb=this.getGetHandler();
_5ea.handler=_5eb;
_5ea.responseType="xml";
_5ea.context=this;
_5ea.completeCallback=nitobi.lang.close(this,this.getComplete);
_5ea.async=this.async;
_5ea.params=new nitobi.data.GetCompleteEventArgs(null,null,0,null,_5ea,this,_5e7,_5e8);
if(typeof (_5e8)!="function"||this.async==false){
_5ea.async=false;
return this.getComplete({"response":_5ea.get(),"params":_5ea.params});
}else{
_5ea.get();
}
};
nitobi.data.DataTable.prototype.getComplete=function(_5ec){
var xd=_5ec.response;
var _5ee=_5ec.params;
if(this.mode!="caching"){
this.xmlDoc=nitobi.xml.createXmlDoc();
}
if(null==xd||null==xd.xml||""==xd.xml){
var _5ef="No parse error.";
if(nitobi.xml.hasParseError(xd)){
if(xd==null){
_5ef="Blank Response was Given";
}else{
_5ef=nitobi.xml.getParseErrorReason(xd);
}
}
if(this.errorCallback){
this.errorCallback.call(this.context);
}
this.fire("DataReady",_5ee);
return _5ee;
}else{
if(typeof (this.successCallback)=="function"){
this.successCallback.call(this.context);
}
}
if(!this.configured){
this.configureFromData(xd);
}
xd=this.parseResponse(xd,_5ee);
xd=this.assignRowIds(xd);
var _5f0=null;
_5f0=xd.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e");
var _5f1;
var _5f2=_5f0.length;
if(_5ee.pageSize==null){
_5ee.pageSize=_5f2;
_5ee.lastRow=_5ee.startXi+_5ee.pageSize-1;
_5ee.firstRow=_5ee.startXi;
}
if(0!=_5f2){
_5f1=parseInt(_5f0[_5f0.length-1].getAttribute("xi"));
if(this.mode=="paging"){
this.dataCache.insert(0,_5ee.pageSize-1);
}else{
this.dataCache.insert(_5ee.firstRow,_5f1);
}
}else{
_5f1=-1;
_5ee.pageSize=0;
var pct=this.descriptor.lastKnownRow/this.descriptor.estimatedRowCount||0;
this.fire("PastEndOfData",pct);
}
_5ee.numRowsReturned=_5f2;
_5ee.lastRowReturned=_5f1;
var _5f4=_5ee.startXi;
var _5f5=_5ee.pageSize;
if(!isNaN(_5f4)&&!isNaN(_5f5)&&_5f4!=0){
this.requestCache.remove(_5f4,_5f4+_5f5-1);
}
if(this.mode!="caching"){
this.replaceData(xd);
}else{
this.mergeData(xd);
}
this.updateFromDescriptor(_5ee);
this.fire("RowCountReady",_5ee);
if(null!=_5ee.ajaxCallback){
this.ajaxCallbackPool.release(_5ee.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",_5ee);
if(null!=_5ee.callback&&null!=_5ee.context){
_5ee.callback.call(_5ee.context,_5ee);
_5ee.dispose();
_5ee=null;
}else{
return _5ee;
}
};
nitobi.data.DataTable.prototype.executeRequests=function(){
var _5f8=this.requestQueue;
this.requestQueue=new Array();
for(var i=0;i<_5f8.length;i++){
_5f8[i].call();
}
};
nitobi.data.DataTable.prototype.updateFromDescriptor=function(_5fa){
this.descriptor.update(_5fa);
if(this.mode=="paging"){
this.setRemoteRowCount(_5fa.numRowsReturned);
}else{
this.setRemoteRowCount(this.descriptor.estimatedRowCount);
}
this.setRowCountKnown(this.descriptor.isAtEndOfTable);
};
nitobi.data.DataTable.prototype.setRowCountKnown=function(_5fb){
var _5fc=this.rowCountKnown;
this.rowCountKnown=_5fb;
if(_5fb&&this.rowCountKnown!=_5fc){
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 _5ff=xd.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id = '"+this.id+"']//"+nitobi.xml.nsPrefix+"e");
var _600=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");
var len=_5ff.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='"+_5ff[i].getAttribute("xi")+"']")){
continue;
}
_600.appendChild(_5ff[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,_607){
if(this.version==2.8){
return this.parseLegacyResponse(xd,_607);
}else{
return this.parseStructuredResponse(xd,_607);
}
};
nitobi.data.DataTable.prototype.parseLegacyResponse=function(xd,_609){
var _60a=this.mode=="paging"?0:_609.startXi;
nitobi.data.dataTranslatorXslProc.addParameter("start",_60a,"");
nitobi.data.dataTranslatorXslProc.addParameter("id",this.id,"");
var _60b=xd.selectSingleNode("/root").getAttribute("fields");
var _60c=_60b.split("|");
var i=_60c.length;
var _60e=(i>25?String.fromCharCode(Math.floor(i/26)+96):"")+(String.fromCharCode(i%26+97));
nitobi.data.dataTranslatorXslProc.addParameter("xkField",_60e,"");
xd=nitobi.xml.transformToXml(xd,nitobi.data.dataTranslatorXslProc);
return xd;
};
nitobi.data.DataTable.prototype.parseStructuredResponse=function(xd,_610){
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 _611=xd.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e");
var _612=this.mode=="paging"?0:_610.startXi;
if(_611){
if(_611.getAttribute("xi")!=_612){
nitobi.data.adjustXiXslProc.addParameter("startingIndex","0","");
nitobi.data.adjustXiXslProc.addParameter("adjustment",_612,"");
xd=nitobi.xml.loadXml(xd,nitobi.xml.transformToString(xd,nitobi.data.adjustXiXslProc,"xml"));
}
}
return xd;
};
nitobi.data.DataTable.prototype.forceGet=function(_613,_614,_615,_616,_617,_618){
this.errorCallback=_617;
this.successCallback=_618;
this.context=_615;
var _619=this.getGetHandler();
(_619.indexOf("?")==-1)?_619+="?":_619+="&";
_619+="StartRecordIndex=0&start=0&PageSize="+_614+"&SortColumn="+(this.sortColumn||"")+"&SortDirection="+this.sortDir+"&TableId="+this.id+"&uid="+(new Date().getTime());
var _61a=this.ajaxCallbackPool.reserve();
_61a.handler=_619;
_61a.responseType="xml";
_61a.context=this;
_61a.completeCallback=nitobi.lang.close(this,this.getComplete);
_61a.params=new nitobi.data.GetCompleteEventArgs(0,_614-1,0,_614,_61a,this,_615,_616);
_61a.get();
return;
};
nitobi.data.DataTable.prototype.getPage=function(_61b,_61c,_61d,_61e,_61f,_620){
var _621=_61b+_61c-1;
var _622=this.dataCache.gaps(0,_61c-1);
var _623=_622.length;
if(_623){
var _624=this.requestCache.gaps(_61b,_621);
if(_624.length==0){
var _625=nitobi.lang.close(this,this.get,arguments);
this.requestQueue.push(_625);
return;
}
this.getFromServer(_61b,_621,_61b,_621,_61d,_61e,_61f);
}else{
this.getFromCache(_61b,_61c,_61d,_61e,_61f);
}
};
nitobi.data.DataTable.prototype.get=function(_626,_627,_628,_629,_62a){
this.errorCallback=_62a;
var _62b=null;
if(this.mode=="caching"){
_62b=this.getCached(_626,_627,_628,_629,_62a);
}
if(this.mode=="local"||this.mode=="static"){
_62b=this.getTable(_628,_629,_62a);
}
if(this.mode=="paging"){
_62b=this.getPage(_626,_627,_628,_629,_62a);
}
return _62b;
};
nitobi.data.DataTable.prototype.inCache=function(_62c,_62d){
if(this.mode=="local"){
return true;
}
var _62e=_62c,_62f=_62c+_62d-1;
var _630=this.getRemoteRowCount()-1;
if(this.getRowCountKnown()&&_630<_62f){
_62f=_630;
}
var _631=this.dataCache.gaps(_62e,_62f);
var _632=_631.length;
return !(_632>0);
};
nitobi.data.DataTable.prototype.cachedRanges=function(_633,_634){
return this.dataCache.ranges(_633,_634);
};
nitobi.data.DataTable.prototype.getCached=function(_635,_636,_637,_638,_639,_63a){
if(_636==null){
return this.getFromServer(_63b,null,_635,null,_637,_638,_639);
}
var _63b=_635,_63c=_635+_636-1;
var _63d=this.dataCache.gaps(_63b,_63c);
var _63e=_63d.length;
if(this.mode!="unbound"&&_63e>0){
var low=_63d[_63e-1].low;
var high=_63d[_63e-1].high;
var _641=this.requestCache.gaps(low,high);
if(_641.length==0){
var _642=nitobi.lang.close(this,this.get,arguments);
this.requestQueue.push(_642);
return;
}
return this.getFromServer(_63b,_63c,low,high,_637,_638,_639);
}else{
this.getFromCache(_635,_636,_637,_638,_639);
}
};
nitobi.data.DataTable.prototype.getFromServer=function(_643,_644,low,high,_647,_648,_649){
this.requestCache.insert(low,high);
var _64a=(_644==null?null:(high-low+1));
var _64b=(_64a==null?"":_64a);
var _64c=this.getGetHandler();
(_64c.indexOf("?")==-1)?_64c+="?":_64c+="&";
_64c+="StartRecordIndex="+low+"&start="+low+"&PageSize="+(_64b)+"&SortColumn="+(this.sortColumn||"")+"&SortDirection="+this.sortDir+"&uid="+(new Date().getTime());
var _64d=this.ajaxCallbackPool.reserve();
_64d.handler=_64c;
_64d.responseType="xml";
_64d.context=this;
_64d.completeCallback=nitobi.lang.close(this,this.getComplete);
_64d.async=this.async;
_64d.params=new nitobi.data.GetCompleteEventArgs(_643,_644,low,_64a,_64d,this,_647,_648);
return _64d.get();
};
nitobi.data.DataTable.prototype.getFromCache=function(_64e,_64f,_650,_651,_652){
var _653=_64e,_654=_64e+_64f-1;
if(_653>0||_654>0){
if(typeof (_651)=="function"){
var _655=new nitobi.data.GetCompleteEventArgs(_653,_654,_653,_654-_653+1,null,this,_650,_651);
_655.callback.call(_655.context,_655);
}
}
};
nitobi.data.DataTable.prototype.mergeFromXml=function(_656,_657){
var _658=Number(_656.documentElement.firstChild.getAttribute("xi"));
var _659=Number(_656.documentElement.lastChild.getAttribute("xi"));
var _65a=this.dataCache.gaps(_658,_659);
if(this.mode=="local"&&_65a.length==1){
this.dataCache.insert(_65a[0].low,_65a[0].high);
this.mergeFromXmlGetComplete(_656,_657,_658,_659);
this.batchInsertRowCount=(_65a[0].high-_65a[0].low+1);
this.commitBatchInsert();
return;
}
if(_65a.length==0){
this.mergeFromXmlGetComplete(_656,_657,_658,_659);
}else{
if(_65a.length==1){
this.get(_65a[0].low,_65a[0].high-_65a[0].low+1,this,nitobi.lang.close(this,this.mergeFromXmlGetComplete,[_656,_657,_658,_659]));
}else{
this.forceGet(_658,_659,this,nitobi.lang.close(this,this.mergeFromXmlGetComplete,[_656,_657,_658,_659]));
}
}
};
nitobi.data.DataTable.prototype.mergeFromXmlGetComplete=function(_65b,_65c,_65d,_65e){
var _65f=nitobi.xml.createElement(this.xmlDoc,"newdata");
this.xmlDoc.documentElement.appendChild(_65f);
_65f.appendChild(_65b.documentElement.cloneNode(true));
nitobi.data.mergeEbaXmlXslProc.addParameter("startRowIndex",_65d,"");
nitobi.data.mergeEbaXmlXslProc.addParameter("endRowIndex",_65e,"");
nitobi.data.mergeEbaXmlXslProc.addParameter("guid",nitobi.component.getUniqueId(),"");
this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,nitobi.xml.transformToString(this.xmlDoc,nitobi.data.mergeEbaXmlXslProc,"xml"));
_65f=nitobi.xml.createElement(this.log,"newdata");
this.log.documentElement.appendChild(_65f);
_65f.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"));
_65c.call();
};
nitobi.data.DataTable.prototype.fillColumn=function(_660,_661){
nitobi.data.fillColumnXslProc.addParameter("column",this.fieldMap[_660].substring(1));
nitobi.data.fillColumnXslProc.addParameter("value",_661);
this.xmlDoc.loadXML(nitobi.xml.transformToString(this.xmlDoc,nitobi.data.fillColumnXslProc,"xml"));
var _662=parseFloat((new Date()).getTime());
var _663=nitobi.xml.createElement(this.log,"newdata");
this.log.documentElement.appendChild(_663);
_663.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(_664){
this.handlerError=_664;
};
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,_669){
if(typeof (_669)=="undefined"){
_669=this;
}
return nitobi.event.subscribe(evt+this.uid,nitobi.lang.close(_669,func));
};
nitobi.lang.defineNs("nitobi.data");
nitobi.data.DataTableDescriptor=function(_66a,_66b,_66c){
this.disposal=[];
this.estimatedRowCount=0;
this.leapMultiplier=2;
this.estimateRowCount=(_66c==null?true:_66c);
this.lastKnownRow=0;
this.isAtEndOfTable=false;
this.table=_66a;
this.lowestEmptyRow=0;
this.tableProjectionUpdatedEvent=_66b;
this.disposal.push(this.tableProjectionUpdatedEvent);
};
nitobi.data.DataTableDescriptor.prototype.startPeek=function(){
this.enablePeek=true;
this.peek();
};
nitobi.data.DataTableDescriptor.prototype.peek=function(){
var _66d;
if(this.lowestEmptyRow>0){
var _66e=this.lowestEmptyRow-this.lastKnownRow;
_66d=this.lastKnownRow+Math.round(_66e/2);
}else{
_66d=(this.estimatedRowCount*this.leapMultiplier);
}
this.table.get(Math.round(_66d),1,this,this.peekComplete);
};
nitobi.data.DataTableDescriptor.prototype.peekComplete=function(_66f){
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(_670,_671){
if(this.lowestEmptyRow>0){
var _672=this.lowestEmptyRow-this.lastKnownRow;
this.estimatedRowCount=this.lastKnownRow+Math.round(_672/2);
}else{
if(_670==null||_671==null){
this.estimatedRowCount=0;
}else{
if(this.estimateRowCount){
this.estimatedRowCount=(this.estimatedRowCount*_670)+_671;
}
}
}
this.fireProjectionUpdatedEvent();
};
nitobi.data.DataTableDescriptor.prototype.update=function(_673,_674){
if(null==_674){
_674=false;
}
if(this.isAtEndOfTable&&!_674){
return false;
}
var _675=(_673!=null&&_673.numRowsReturned==0&&_673.startXi==0);
var _676=(_673!=null&&_673.lastRow!=_673.lastRowReturned);
if(null==_673){
_673={lastPage:false,pageSize:1,firstRow:0,lastRow:0,startXi:0};
}
var _677=(_675)||(_676)||(this.isAtEndOfTable)||((this.lastKnownRow==this.estimatedRowCount-1)&&(this.estimatedRowCount==this.lowestEmptyRow));
if(_673.pageSize==0&&!_677){
this.lowestEmptyRow=this.lowestEmptyRow>0?Math.min(_673.startXi,this.lowestEmptyRow):_673.startXi;
this.leap();
return true;
}
this.lastKnownRow=Math.max(_673.lastRowReturned,this.lastKnownRow);
if(_677&&!_674){
if(_673.lastRowReturned>=0){
this.estimatedRowCount=_673.lastRowReturned+1;
this.isAtEndOfTable=true;
}else{
if(_675){
this.estimatedRowCount=0;
this.isAtEndOfTable=true;
}else{
this.estimatedRowCount=this.lastKnownRow+Math.ceil((_673.lastRow-this.lastKnownRow)/2);
}
}
this.fireProjectionUpdatedEvent();
this.stopPeek();
return true;
}
if(!this.estimateRowCount){
this.estimatedRowCount=this.lastKnownRow+1;
}
if(this.estimatedRowCount==0){
this.estimatedRowCount=(_673.lastRow+1)*(this.estimateRowCount?2:1);
}
if((this.estimatedRowCount>(_673.lastRow+1)&&!_674)||!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(_678){
if(this.tableProjectionUpdatedEvent!=null){
this.tableProjectionUpdatedEvent(_678);
}
};
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(_679){
this.source=_679;
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(_67a,_67b,_67c,_67d,_67e,_67f,obj,_681){
this.firstRow=_67a;
this.lastRow=_67b;
this.callback=_681;
this.dataSource=_67f;
this.context=obj;
this.ajaxCallback=_67e;
this.startXi=_67c;
this.pageSize=_67d;
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(_682){
this.callback=_682;
};
nitobi.data.SaveCompleteEventArgs.prototype.initialize=function(){
};
nitobi.data.OnAfterSaveEventArgs=function(_683,_684,_685){
nitobi.data.OnAfterSaveEventArgs.baseConstructor.call(this,_683);
this.success=_685;
this.responseData=_684;
};
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.placeholder=null;
var div=nitobi.html.createElement("div");
div.innerHTML="<table border='0' cellpadding='0' cellspacing='0' class='ntb-input-border'><tr><td></td></tr></table>";
var ph=this.placeholder=div.firstChild;
this.cell=null;
this.ignoreBlur=false;
this.editCompleteHandler=function(){
};
this.onKeyUp=new nitobi.base.Event();
this.onKeyDown=new nitobi.base.Event();
this.onKeyPress=new nitobi.base.Event();
this.onChange=new nitobi.base.Event();
this.onCancel=new nitobi.base.Event();
this.onTab=new nitobi.base.Event();
this.onEnter=new nitobi.base.Event();
};
nitobi.form.Control.prototype.initialize=function(){
};
nitobi.form.Control.prototype.mimic=function(){
};
nitobi.form.Control.prototype.deactivate=function(evt){
if(this.ignoreBlur){
return false;
}
this.ignoreBlur=true;
};
nitobi.form.Control.prototype.bind=function(_689,cell){
this.owner=_689;
this.cell=cell;
this.ignoreBlur=false;
};
nitobi.form.Control.prototype.hide=function(){
this.placeholder.style.left="-2000px";
};
nitobi.form.Control.prototype.attachToParent=function(_68b){
_68b.appendChild(this.placeholder);
};
nitobi.form.Control.prototype.show=function(){
this.placeholder.style.display="block";
};
nitobi.form.Control.prototype.focus=function(){
this.control.focus();
this.ignoreBlur=false;
};
nitobi.form.Control.prototype.align=function(){
var oY=0;
var oX=0;
if(nitobi.browser.MOZ){
var _68e=this.owner.getScrollSurface();
var _68f=this.owner.getActiveView().region;
if(_68f==3||_68f==4){
oY=_68e.scrollTop-nitobi.form.EDITOR_OFFSETY;
}
if(_68f==1||_68f==4){
oX=_68e.scrollLeft-nitobi.form.EDITOR_OFFSETX;
}
}
nitobi.drawing.align(this.placeholder,this.cell.getDomNode(),286265344,1,1,-oY-1,-oX-1);
};
nitobi.form.Control.prototype.selectText=function(){
this.focus();
if(this.control&&this.control.createTextRange){
var _690=this.control.createTextRange();
_690.collapse(false);
_690.select();
}
};
nitobi.form.Control.prototype.checkValidity=function(evt){
var _692=this.deactivate(evt);
if(_692==false){
nitobi.html.cancelBubble(evt);
return false;
}
return true;
};
nitobi.form.Control.prototype.handleKey=function(evt){
var k=evt.keyCode;
if(this.onKeyDown.notify(evt)==false){
return;
}
var y=0;
var x=0;
if(k==38){
y=-1;
}else{
if(k==40){
y=1;
}else{
if(k==9){
x=1;
if(evt.shiftKey){
x=-1;
}
if(nitobi.browser.IE){
evt.keyCode="";
}
}else{
if(k==13){
y=1;
}else{
if(k==27){
this.ignoreBlur=true;
this.hide();
this.owner.focus();
this.onCancel.notify(this);
}
return;
}
}
}
}
if(!this.checkValidity(evt)){
return;
}
this.owner.move(x,y);
nitobi.html.cancelBubble(evt);
};
nitobi.form.Control.prototype.handleKeyUp=function(evt){
this.onKeyUp.notify(evt);
};
nitobi.form.Control.prototype.handleKeyPress=function(evt){
this.onKeyPress.notify(evt);
};
nitobi.form.Control.prototype.handleChange=function(evt){
this.onChange.notify(evt);
};
nitobi.form.Control.prototype.setEditCompleteHandler=function(_69a){
this.editCompleteHandler=_69a;
};
nitobi.form.Control.prototype.eSET=function(name,args){
var _69d=args[0];
var _69e=_69d;
var _69f=name.substr(2);
_69f=_69f.substr(0,_69f.length-5);
if(typeof (_69d)=="string"){
_69e=function(){
return nitobi.event.evaluate(_69d,arguments[0]);
};
}
if(this[_69f]!=null){
this[name].unSubscribe(this[_69f]);
}
var guid=this[name].subscribe(_69e);
this.jSET(_69f,[guid]);
return guid;
};
nitobi.form.Control.prototype.afterDeactivate=function(text,_6a2){
_6a2=_6a2||text;
if(this.editCompleteHandler!=null){
var _6a3=new nitobi.grid.EditCompleteEventArgs(this,text,_6a2,this.cell);
var _6a4=this.editCompleteHandler.call(this.owner,_6a3);
if(!_6a4){
this.ignoreBlur=false;
}
return _6a4;
}
};
nitobi.form.Control.prototype.jSET=function(name,val){
this[name]=val[0];
};
nitobi.form.Control.prototype.dispose=function(){
for(var item in this){
}
};
nitobi.form.IBlurable=function(_6a8,_6a9){
this.selfBlur=false;
this.elements=_6a8;
var H=nitobi.html;
for(var i=0;i<this.elements.length;i++){
var e=this.elements[i];
H.attachEvent(e,"mousedown",this.handleMouseDown,this);
H.attachEvent(e,"blur",this.handleBlur,this);
H.attachEvent(e,"focus",this.handleFocus,this);
H.attachEvent(e,"mouseup",this.handleMouseUp,this);
}
this.blurFunc=_6a9;
this.lastFocus=null;
};
nitobi.form.IBlurable.prototype.removeBlurable=function(){
for(var i=0;i<elems.length;i++){
nitobi.html.detachEvent(elems[i],"mousedown",this.handleMouseDown,this);
}
};
nitobi.form.IBlurable.prototype.handleMouseDown=function(evt){
if(this.lastFocus!=evt.srcElement){
this.selfBlur=true;
}else{
this.selfBlur=false;
}
this.lastFocus=evt.srcElement;
};
nitobi.form.IBlurable.prototype.handleBlur=function(evt){
if(!this.selfBlur){
this.blurFunc(evt);
}
this.selfBlur=false;
};
nitobi.form.IBlurable.prototype.handleFocus=function(){
this.selfBlur=false;
};
nitobi.form.IBlurable.prototype.handleMouseUp=function(){
this.selfBlur=false;
};
nitobi.form.Text=function(){
nitobi.form.Text.baseConstructor.call(this);
var ph=this.placeholder;
ph.style.top="-3000px";
ph.style.left="-3000px";
var tc=this.control=nitobi.html.createElement("input",{"id":"ntb-textbox"});
tc.setAttribute("maxlength",255);
this.events=[{type:"keydown",handler:this.handleKey},{type:"keyup",handler:this.handleKeyUp},{type:"keypress",handler:this.handleKeyPress},{type:"change",handler:this.handleChange},{type:"blur",handler:this.deactivate}];
};
nitobi.lang.extend(nitobi.form.Text,nitobi.form.Control);
nitobi.form.Text.prototype.initialize=function(){
var _6b2=this.placeholder.rows[0].cells[0];
_6b2.appendChild(this.control);
nitobi.html.attachEvents(this.control,this.events,this);
};
nitobi.form.Text.prototype.bind=function(_6b3,cell,_6b5){
nitobi.form.Text.base.bind.apply(this,arguments);
if(_6b5!=null&&_6b5!=""){
this.control.value=_6b5;
}else{
this.control.value=cell.getValue();
}
var _6b6=this.cell.getColumnObject().getModel();
this.eSET("onKeyPress",[_6b6.getAttribute("OnKeyPressEvent")]);
this.eSET("onKeyDown",[_6b6.getAttribute("OnKeyDownEvent")]);
this.eSET("onKeyUp",[_6b6.getAttribute("OnKeyUpEvent")]);
this.eSET("onChange",[_6b6.getAttribute("OnChangeEvent")]);
this.control.setAttribute("maxlength",_6b6.getAttribute("MaxLength"));
nitobi.html.Css.addClass(this.control,"ntb-column-data"+this.owner.uid+"_"+(this.cell.getColumn()+1));
};
nitobi.form.Text.prototype.mimic=function(){
this.align();
nitobi.html.fitWidth(this.placeholder,this.control);
this.selectText();
};
nitobi.form.Text.prototype.focus=function(){
this.control.focus();
};
nitobi.form.Text.prototype.deactivate=function(evt){
if(nitobi.form.Text.base.deactivate.apply(this,arguments)==false){
return;
}
nitobi.html.Css.removeClass(this.control,"ntb-column-data"+this.owner.uid+"_"+(this.cell.getColumn()+1));
return this.afterDeactivate(this.control.value);
};
nitobi.form.Text.prototype.dispose=function(){
nitobi.html.detachEvents(this.control,this.events);
var _6b8=this.placeholder.parentNode;
_6b8.removeChild(this.placeholder);
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.mimic=function(){
if(false==eval(this.owner.getOnCellValidateEvent())){
return;
}
this.toggle();
this.deactivate();
};
nitobi.form.Checkbox.prototype.deactivate=function(){
this.afterDeactivate(this.value);
};
nitobi.form.Checkbox.prototype.attachToParent=function(){
};
nitobi.form.Checkbox.prototype.toggle=function(){
var _6b9=this.cell.getColumnObject();
var _6ba=_6b9.getModel();
var _6bb=_6ba.getAttribute("CheckedValue");
if(_6bb==""||_6bb==null){
_6bb=1;
}
var _6bc=_6ba.getAttribute("UnCheckedValue");
if(_6bc==""||_6bc==null){
_6bc=0;
}
this.value=(this.cell.getDomNode().getAttribute("value")==_6bb)?_6bc:_6bb;
};
nitobi.form.Checkbox.prototype.hide=function(){
};
nitobi.form.Checkbox.prototype.dispose=function(){
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.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(_6bd,_6be,_6bf){
var _6c0=null;
if(null==_6be){
ebaErrorReport("getEditor: column parameter is null","",EBA_DEBUG);
return _6c0;
}
var _6c1=_6be.getType();
var _6c2=_6be.getType();
var _6c3="nitobi.Grid"+_6c1+_6c2+"Editor";
_6c0=this.editors[_6c3];
if(_6c0==null||_6c0.control==null){
switch(_6c1){
case "LINK":
case "HYPERLINK":
_6c0=new nitobi.form.Link;
break;
case "IMAGE":
return null;
case "BUTTON":
return null;
case "LOOKUP":
_6c0=new nitobi.form.Lookup();
break;
case "LISTBOX":
_6c0=new nitobi.form.ListBox();
break;
case "PASSWORD":
_6c0=new nitobi.form.Password();
break;
case "TEXTAREA":
_6c0=new nitobi.form.TextArea();
break;
case "CHECKBOX":
_6c0=new nitobi.form.Checkbox();
break;
default:
if(_6c2=="DATE"){
if(_6be.isCalendarEnabled()){
_6c0=new nitobi.form.Calendar();
}else{
_6c0=new nitobi.form.Date();
}
}else{
if(_6c2=="NUMBER"){
_6c0=new nitobi.form.Number();
}else{
_6c0=new nitobi.form.Text();
}
}
break;
}
_6c0.initialize();
}
this.editors[_6c3]=_6c0;
return _6c0;
};
nitobi.form.ControlFactory.prototype.dispose=function(){
for(var _6c4 in this.editors){
this.editors[_6c4].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(_6c5,cell){
nitobi.form.Link.base.bind.apply(this,arguments);
this.url=this.cell.getValue();
};
nitobi.form.Link.prototype.mimic=function(){
if(false==eval(this.owner.getOnCellValidateEvent())){
return;
}
this.click();
this.deactivate();
};
nitobi.form.Link.prototype.deactivate=function(){
this.afterDeactivate(this.value);
};
nitobi.form.Link.prototype.click=function(){
this.control=window.open(this.url);
this.value=this.url;
};
nitobi.form.Link.prototype.hide=function(){
};
nitobi.form.Link.prototype.attachToParent=function(){
};
nitobi.form.Link.prototype.dispose=function(){
this.metadata=null;
this.owner=null;
this.context=null;
};
nitobi.form.ListBox=function(){
nitobi.form.ListBox.baseConstructor.call(this);
var ph=this.placeholder;
ph.setAttribute("id","listbox_span");
ph.style.top="-1000px";
ph.style.left="-1000px";
this.metadata=null;
this.keypress=false;
this.events=[{type:"change",handler:this.deactivate},{type:"keydown",handler:this.handleKey},{type:"keyup",handler:this.handleKeyUp},{type:"keypress",handler:this.handleKeyPress},{type:"blur",handler:this.deactivate}];
};
nitobi.lang.extend(nitobi.form.ListBox,nitobi.form.Control);
nitobi.form.ListBox.prototype.initialize=function(){
};
nitobi.form.ListBox.prototype.bind=function(_6c8,cell){
nitobi.form.ListBox.base.bind.apply(this,arguments);
var _6ca=cell.getColumnObject().getModel();
var _6cb=_6ca.getAttribute("DatasourceId");
this.dataTable=this.owner.data.getTable(_6cb);
this.eSET("onKeyPress",[_6ca.getAttribute("OnKeyPressEvent")]);
this.eSET("onKeyDown",[_6ca.getAttribute("OnKeyDownEvent")]);
this.eSET("onKeyUp",[_6ca.getAttribute("OnKeyUpEvent")]);
this.eSET("onChange",[_6ca.getAttribute("OnChangeEvent")]);
this.bindComplete(cell.getValue());
};
nitobi.form.ListBox.prototype.bindComplete=function(_6cc){
var _6cd=this.dataTable.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.dataTable.id+"']");
var _6ce=this.cell.getColumnObject();
var _6cf=_6ce.getModel();
var _6d0=_6cf.getAttribute("DisplayFields");
var _6d1=_6cf.getAttribute("ValueField");
var xsl=nitobi.form.listboxXslProc;
xsl.addParameter("DisplayFields",_6d0,"");
xsl.addParameter("ValueField",_6d1,"");
xsl.addParameter("val",_6cc,"");
this.listXml=nitobi.xml.transformToXml(nitobi.xml.createXmlDoc(_6cd.xml),xsl);
this.placeholder.rows[0].cells[0].innerHTML=nitobi.xml.serialize(this.listXml);
var tc=this.control=nitobi.html.getFirstChild(this.placeholder.rows[0].cells[0]);
tc.style.width="100%";
tc.style.height=(this.cell.DomNode.offsetHeight-2)+"px";
nitobi.html.attachEvents(tc,this.events,this);
nitobi.html.Css.addClass(tc.className,this.cell.getDomNode().className);
this.align();
this.focus();
};
nitobi.form.ListBox.prototype.deactivate=function(ok){
if(this.keypress){
this.keypress=false;
return;
}
if(nitobi.form.ListBox.base.deactivate.apply(this,arguments)==false){
return;
}
if(this.onChange.notify(this)==false){
return;
}
var c=this.control;
var text="",_6d7="";
if(ok||ok==null){
text=c.options[c.selectedIndex].text;
_6d7=c.options[c.selectedIndex].value;
}else{
_6d7=this.cell.getValue();
var len=c.options.length;
for(var i=0;i<len;i++){
if(c.options[i].value==_6d7){
text=c.options[i].text;
}
}
}
return this.afterDeactivate(nitobi.html.encode(text),_6d7);
};
nitobi.form.ListBox.prototype.handleKey=function(evt){
var k=evt.keyCode;
this.keypress=false;
switch(k){
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;
default:
nitobi.form.ListBox.base.handleKey.call(this,evt);
}
};
nitobi.form.ListBox.prototype.dispose=function(){
nitobi.html.detachEvents(this.control,this.events);
this.placeholder=null;
this.control=null;
this.listXml=null;
this.metadata=null;
this.owner=null;
};
nitobi.form.Lookup=function(){
nitobi.form.Lookup.baseConstructor.call(this);
this.bVisible=false;
var div=nitobi.html.createElement("div");
div.innerHTML="<table class='ntb-input-border' border='0' cellpadding='0' cellspacing='0'><tr><td class=\"ntb-lookup-text\"></td></tr><tr><td style=\"position:relative;\"><div style=\"position:relative;top:0px;left:0px;\"></div></td></tr></table>";
var ph=this.placeholder=div.firstChild;
ph.setAttribute("id","lookup_span");
ph.style.top="-2000px";
ph.style.left="-2000px";
var tc=this.textControl=nitobi.html.createElement("input",{autocomplete:"off"},{zIndex:"2000"});
tc.setAttribute("id","ntb-lookup-text");
this.control=tc;
this.textEvents=[{"type":"keydown","handler":this.handleKey},{"type":"keyup","handler":this.filter},{"type":"keypress","handler":this.handleKeyPress},{"type":"change","handler":this.handleChange}];
ph.rows[0].cells[0].appendChild(tc);
this.selectPlaceholder=ph.rows[1].cells[0].firstChild;
this.selectEvents=[{"type":"click","handler":this.handleSelectClicked}];
this.firstKeyup=false;
this.autocompleted=false;
this.listXml=null;
this.listXmlLower=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 _6e0=nitobi.xml.createXslDoc(xsl);
this.searchXslProc=nitobi.xml.createXslProcessor(_6e0);
_6e0=null;
};
nitobi.lang.extend(nitobi.form.Lookup,nitobi.form.Control);
nitobi.lang.implement(nitobi.form.Lookup,nitobi.ui.IDataBoundList);
nitobi.lang.implement(nitobi.form.Lookup,nitobi.form.IBlurable);
nitobi.form.Lookup.prototype.initialize=function(){
this.firstKeyup=false;
nitobi.html.attachEvents(this.textControl,this.textEvents,this);
nitobi.html.attachEvents(this.selectPlaceholder,this.selectEvents,this);
};
nitobi.form.Lookup.prototype.hideSelect=function(){
this.selectControl.style.display="none";
this.bVisible=false;
};
nitobi.form.Lookup.prototype.bind=function(_6e1,cell,_6e3){
nitobi.form.Lookup.base.bind.apply(this,arguments);
this.column=this.cell.getColumnObject();
var _6e4=this.column.getModel();
this.datasourceId=_6e4.getAttribute("DatasourceId");
this.getHandler=_6e4.getAttribute("GetHandler");
this.pageSize=_6e4.getAttribute("PageSize");
this.delay=parseInt(_6e4.getAttribute("Delay"));
this.size=_6e4.getAttribute("Size");
this.displayFields=_6e4.getAttribute("DisplayFields");
this.valueField=_6e4.getAttribute("ValueField");
this.eSET("onKeyPress",[_6e4.getAttribute("OnKeyPressEvent")]);
this.eSET("onKeyDown",[_6e4.getAttribute("OnKeyDownEvent")]);
this.eSET("onKeyUp",[_6e4.getAttribute("OnKeyUpEvent")]);
this.eSET("onChange",[_6e4.getAttribute("OnChangeEvent")]);
var _6e5=nitobi.form.listboxXslProc;
_6e5.addParameter("DisplayFields",this.displayFields,"");
_6e5.addParameter("ValueField",this.valueField,"");
this.dataTable=this.owner.data.getTable(this.datasourceId);
this.dataTable.setGetHandler(this.getHandler);
this.dataTable.async=false;
if(_6e3.length<=0){
_6e3=this.cell.getValue();
}
this.get(_6e3,true);
};
nitobi.form.Lookup.prototype.bindComplete=function(_6e6){
var _6e7=this.dataTable.getXmlDoc();
var _6e8=nitobi.form.listboxXslProc;
_6e8.addParameter("DisplayFields",this.displayFields,"");
_6e8.addParameter("ValueField",this.valueField,"");
_6e8.addParameter("val",nitobi.xml.constructValidXpathQuery(this.cell.getValue(),false),"");
if(nitobi.browser.IE&&document.compatMode=="CSS1Compat"){
_6e8.addParameter("size",6,"");
}
this.listXml=nitobi.xml.transformToXml(nitobi.xml.createXmlDoc(_6e7.xml),nitobi.form.listboxXslProc);
this.listXmlLower=nitobi.xml.createXmlDoc(this.listXml.xml.toLowerCase());
if(nitobi.browser.IE&&document.compatMode=="CSS1Compat"){
_6e8.addParameter("size","","");
}
this.selectPlaceholder.innerHTML=nitobi.xml.serialize(this.listXml);
var tc=this.textControl;
var sc=this.selectControl=nitobi.html.getFirstChild(this.selectPlaceholder);
sc.setAttribute("id","ntb-lookup-options");
sc.setAttribute("size",this.size);
sc.style.display="none";
if(nitobi.browser.IE6&&document.compatMode!="CSS1Compat"){
sc.style.height="100%";
}
nitobi.form.IBlurable.call(this,[tc,sc],this.deactivate);
this.bVisible=false;
var rn=this.search(_6e6);
this.align();
if(rn>0){
sc.selectedIndex=rn-1;
tc.value=sc[sc.selectedIndex].text;
nitobi.html.highlight(tc,tc.value.length-(tc.value.length-_6e6.length));
this.autocompleted=true;
}else{
var row=_6e7.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+this.valueField+"='"+_6e6+"']");
if(row!=null){
tc.value=row.getAttribute(this.displayFields);
var rn=this.search(tc.value);
sc.selectedIndex=parseInt(rn)-1;
}else{
tc.value=_6e6;
sc.selectedIndex=-1;
}
}
tc.parentNode.style.height=nitobi.html.getHeight(this.cell.getDomNode())+"px";
sc.style.display="inline";
tc.focus();
};
nitobi.form.Lookup.prototype.handleSelectClicked=function(evt){
this.textControl.value=this.selectControl.selectedIndex!=-1?this.selectControl.options[this.selectControl.selectedIndex].text:"";
this.deactivate(evt);
};
nitobi.form.Lookup.prototype.focus=function(evt){
this.textControl.focus();
};
nitobi.form.Lookup.prototype.deactivate=function(evt){
if(nitobi.form.Lookup.base.deactivate.apply(this,arguments)==false){
return;
}
var sc=this.selectControl;
var tc=this.textControl;
var text="",_6f3="";
if(evt!=null&&evt!=false){
if(sc.selectedIndex>=0){
_6f3=sc.options[sc.selectedIndex].value;
text=sc.options[sc.selectedIndex].text;
}else{
if(this.column.getModel().getAttribute("ForceValidOption")!="true"){
_6f3=tc.value;
text=_6f3;
}else{
_6f3=this.cell.getValue();
var len=sc.options.length;
for(var i=0;i<len;i++){
if(sc.options[i].value==_6f3){
text=sc.options[i].text;
}
}
}
}
}else{
_6f3=this.cell.getValue();
var len=sc.options.length;
for(var i=0;i<len;i++){
if(sc.options[i].value==_6f3){
text=sc.options[i].text;
}
}
}
nitobi.html.detachEvents(sc,this.textEvents);
window.clearTimeout(this.timeoutId);
return this.afterDeactivate(nitobi.html.encode(text),_6f3);
};
nitobi.form.Lookup.prototype.handleKey=function(evt,_6f7){
var k=evt.keyCode;
if(k!=40&&k!=38){
nitobi.form.Lookup.base.handleKey.call(this,evt);
}
this.autocompleted=false;
if(!this.bVisible){
this.selectControl.style.display="inline";
}
};
nitobi.form.Lookup.prototype.search=function(_6f9){
_6f9=nitobi.xml.constructValidXpathQuery(_6f9,false);
this.searchXslProc.addParameter("searchValue",_6f9.toLowerCase(),"");
var _6fa=nitobi.xml.transformToString(this.listXmlLower,this.searchXslProc);
if(""==_6fa){
_6fa=0;
}else{
_6fa=parseInt(_6fa);
}
return _6fa;
};
nitobi.form.Lookup.prototype.filter=function(evt,o){
if(this.onKeyUp.notify(evt)==false){
return;
}
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 _700=tc.value;
this.get(_700);
}
}
};
nitobi.form.Lookup.prototype.get=function(_701,_702){
if(this.getHandler!=null&&this.getHandler!=""){
if(_702||!this.delay){
this.doGet(_701);
}else{
if(this.timeoutId){
window.clearTimeout(this.timeoutId);
this.timeoutId=null;
}
this.timeoutId=window.setTimeout(nitobi.lang.close(this,this.doGet,[_701]),this.delay);
}
}else{
this.bindComplete(_701);
}
};
nitobi.form.Lookup.prototype.doGet=function(_703){
if(_703){
this.dataTable.setGetHandlerParameter("SearchString",_703);
}
this.dataTable.get(null,this.pageSize,this);
this.timeoutId=null;
this.bindComplete(_703);
};
nitobi.form.Lookup.prototype.dispose=function(){
this.placeholder=null;
nitobi.html.detachEvents(this.textEvents,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;
if(!this.isValidKey(k)){
nitobi.html.cancelEvent(evt);
return false;
}
};
nitobi.form.Number.prototype.defaultValue=0;
nitobi.form.Number.prototype.isValidKey=function(k){
if((k<48||k>57)&&(k<37||k>40)&&(k<96||k>105)&&k!=190&&k!=110&&k!=189&&k!=109&&k!=9&&k!=45&&k!=46&&k!=8){
return false;
}
return true;
};
nitobi.form.Number.prototype.bind=function(_707,cell,_709){
var _70a=_709.charCodeAt(0);
if(_70a>=97){
_70a=_70a-32;
}
var k=this.isValidKey(_70a)?_709:"";
nitobi.form.Number.base.bind.call(this,_707,cell,k);
};
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(){
nitobi.form.TextArea.baseConstructor.call(this);
var div=nitobi.html.createElement("div");
div.innerHTML="<table border='0' cellpadding='0' cellspacing='0' class='ntb-input-border'><tr><td></td></table>";
var ph=this.placeholder=div.firstChild;
ph.style.top="-3000px";
ph.style.left="-3000px";
this.control=document.createElement("textarea");
};
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);
var phs=this.placeholder.style;
};
nitobi.form.TextArea.prototype.handleKey=function(evt){
var k=evt.keyCode;
if(k==40||k==38||k==37||k==39||(k==13&&evt.shiftKey)){
}else{
nitobi.form.TextArea.base.handleKey.call(this,evt);
}
};
nitobi.form.Calendar=function(){
nitobi.form.Calendar.baseConstructor.call(this);
var div=nitobi.html.createElement("div");
div.innerHTML="<table border='0' cellpadding='0' cellspacing='0' style='table-layout:fixed;' class='ntb-input-border'><tr><td>"+"<input id='ntb-datepicker-input' type='text' maxlength='255' style='width:100%;' />"+"</td><td class='ntb-datepicker-button'><a id='ntb-datepicker-button' href='#' onclick='return false;'></a></td></tr><tr><td colspan='2' style='width:1px;height:1px;position:relative;'><!-- --></td></tr><colgroup><col></col><col style='width:20px;'></col></colgroup></table>";
this.control=div.getElementsByTagName("input")[0];
var ph=this.placeholder=div.firstChild;
ph.setAttribute("id","calendar_span");
ph.style.top="-3000px";
ph.style.left="-3000px";
var pd=this.pickerDiv=nitobi.html.createElement("div",{},{position:"absolute"});
this.isPickerVisible=false;
nitobi.html.Css.addClass(pd,NTB_CSS_HIDE);
ph.rows[1].cells[0].appendChild(pd);
};
nitobi.lang.extend(nitobi.form.Calendar,nitobi.form.Control);
nitobi.form.Calendar.prototype.initialize=function(){
this.datePicker=new nitobi.calendar.DatePicker(nitobi.component.getUniqueId());
this.datePicker.setContainer(this.pickerDiv);
this.datePicker.onSetDate.subscribe(this.handlePick,this);
var tc=this.control;
var H=nitobi.html;
H.attachEvent(tc,"keydown",this.handleKey,this,false);
H.attachEvent(tc,"blur",this.deactivate,this,false);
H.attachEvent(this.pickerDiv,"mousedown",this.handleCalendarMouseDown,this);
H.attachEvent(this.pickerDiv,"mouseup",this.handleCalendarMouseUp,this);
var a=this.placeholder.getElementsByTagName("a")[0];
H.attachEvent(a,"mousedown",this.handleClick,this);
H.attachEvent(a,"mouseup",this.handleMouseUp,this);
};
nitobi.form.Calendar.prototype.bind=function(_717,cell,_719){
this.isPickerVisible=false;
nitobi.html.Css.addClass(this.pickerDiv,NTB_CSS_HIDE);
nitobi.form.Calendar.base.bind.apply(this,arguments);
if(_719!=null&&_719!=""){
this.control.value=_719;
}else{
this.control.value=cell.getValue();
}
this.column=this.cell.getColumnObject();
this.control.maxlength=this.column.getModel().getAttribute("MaxLength");
};
nitobi.form.Calendar.prototype.mimic=function(){
this.align();
var _71a=this.placeholder.offsetWidth;
var _71b=this.placeholder.rows[0].cells[1].offsetWidth;
this.control.style.width=_71a-_71b-(document.compatMode=="BackCompat"?0:8)+"px";
this.selectText();
};
nitobi.form.Calendar.prototype.deactivate=function(){
if(nitobi.form.Calendar.base.deactivate.apply(this,arguments)==false){
return;
}
this.afterDeactivate(this.control.value);
};
nitobi.form.Calendar.prototype.handleClick=function(evt){
if(!this.isPickerVisible){
this.datePicker.setDate(nitobi.base.DateMath.parseIso8601(this.control.value));
this.datePicker.render();
}
this.ignoreBlur=true;
nitobi.ui.Effects.setVisible(this.pickerDiv,!this.isPickerVisible,"none",this.setVisibleComplete,this);
};
nitobi.form.Calendar.prototype.handleMouseUp=function(evt){
this.control.focus();
this.ignoreBlur=false;
};
nitobi.form.Calendar.prototype.handleCalendarMouseDown=function(evt){
this.ignoreBlur=true;
};
nitobi.form.Calendar.prototype.handleCalendarMouseUp=function(evt){
this.handleMouseUp(evt);
};
nitobi.form.Calendar.prototype.setVisibleComplete=function(){
this.isPickerVisible=!this.isPickerVisible;
};
nitobi.form.Calendar.prototype.handlePick=function(){
var date=this.datePicker.getDate();
var _721=nitobi.base.DateMath.toIso8601(date);
this.control.value=_721;
};
nitobi.form.Calendar.prototype.dispose=function(){
nitobi.html.detachEvent(this.control,"keydown",this.handleKey);
nitobi.html.detachEvent(this.control,"blur",this.deactivate);
var _722=this.placeholder.parentNode;
_722.removeChild(this.placeholder);
this.control=null;
this.placeholder=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(_729){
this.getHtmlElementHandle().style.height=_729+"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(_72b){
this.getHtmlElementHandle().style.width=_72b+"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(_72e){
this.m_HtmlElementHandle=_72e;
};
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(_73a,_73b,_73c){
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==_73b){
_73b=nitobi.xml.createXslDoc(xsl);
}
if(null==_73c){
_73c=nitobi.xml.createXmlDoc(this.m_Xml);
}
Eba.Error.assert(nitobi.xml.isValidXml(_73c),"Tried to render invalid XML according to Mozilla. The XML is "+_73c.xml);
var html=nitobi.xml.transform(_73c,_73b);
if(html.xml){
html=html.xml;
}
if(null==_73a){
document.body.insertAdjacentHTML("beforeEnd",html);
}else{
_73a.innerHTML=html;
}
this.attachToTag();
};
nitobi.ui.UiElement.prototype.attachToTag=function(){
var _73f=this.getHtmlElementHandle();
if(_73f!=null){
_73f.object=this;
_73f.jsobject=this;
_73f.javascriptObject=this;
}
};
nitobi.ui.UiElement.prototype.dispose=function(){
var _740=this.getHtmlElementHandle();
if(_740!=null){
_740.object=null;
}
this.m_Xml=null;
this.m_Xsl=null;
this.m_HtmlElementHandle=null;
};
nitobi.ui.InteractiveUiElement=function(_741){
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=\"ntb-button\" onmousemove=\"return false;\" onmousedown=\"if (this.object.m_Enabled) this.className='ntb-button-down';\" onmouseup=\"this.className='ntb-button';\" onmouseover=\"if (this.object.m_Enabled) this.className='ntb-button-highlight';\" onmouseout=\"this.className='ntb-button';\" 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(_744){
if(this.m_Enabled){
eval(_744);
}
};
nitobi.ui.Button.prototype.disable=function(){
nitobi.ui.Button.base.disable.call(this);
var _745=this.getHtmlElementHandle();
_745.childNodes[0].src=_745.getAttribute("image_disabled");
};
nitobi.ui.Button.prototype.enable=function(){
nitobi.ui.Button.base.enable.call(this);
var _746=this.getHtmlElementHandle();
_746.childNodes[0].src=_746.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=\"ntb-binarybutton\" onmousemove=\"return false;\" onmousedown=\"if (this.object.m_Enabled) this.className='ntb-button-down';\" onmouseup=\"(this.object.isChecked()?this.object.check():this.object.uncheck())\" onmouseover=\"if (this.object.m_Enabled) this.className='ntb-button-highlight';\" 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 _749=this.getHtmlElementHandle();
_749.className="ntb-button-checked";
this.m_Checked=true;
};
nitobi.ui.BinaryStateButton.prototype.uncheck=function(){
var _74a=this.getHtmlElementHandle();
_74a.className="ntb-button";
this.m_Checked=false;
};
nitobi.ui.BinaryStateButton.prototype.toggle=function(){
var _74b=this.getHtmlElementHandle();
if(_74b.className=="ntb-button-checked"){
this.uncheck();
}else{
this.check();
}
};
nitobi.ui.ToolbarXsl="<xsl:template match=\"//toolbar\">"+"<div class=\"ntb-toolbar\" 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>"+"<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);
};
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(_74e){
this.m_UiElements=_74e;
};
nitobi.ui.Toolbar.prototype.attachButtonObjects=function(){
if(!this.m_UiElements){
this.m_UiElements=new Array();
var tag=this.getHtmlElementHandle();
var _750=tag.childNodes;
for(var i=0;i<_750.length;i++){
var _752=_750[i];
if(_752.nodeType!=3){
var _753;
switch(_752.className){
case ("ntb-button"):
_753=new nitobi.ui.Button(null,_752.id);
break;
case ("ntb-binarybutton"):
_753=new nitobi.ui.BinaryStateButton(null,_752.id);
break;
default:
_753=new nitobi.ui.UiElement(null,null,_752.id);
break;
}
_753.attachToTag();
this.m_UiElements[_752.id]=_753;
}
}
}
};
nitobi.ui.Toolbar.prototype.render=function(_754){
nitobi.ui.Toolbar.base.base.render.call(this,_754);
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.dispose=function(){
if(typeof (this.m_UiElements)!="undefined"){
for(var _757 in this.m_UiElements){
this.m_UiElements[_757].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(_758){
nitobi.prepare();
nitobi.calendar.DatePicker.baseConstructor.call(this,_758);
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 _75b=this.getHtmlNode("value");
if(_75b){
_75b.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(_75d){
this.setBoolAttribute("timepickerenabled",_75d);
};
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.getTheme=function(){
return ((this.getAttribute("theme","")==null)||(this.getAttribute("theme","")==""))?"base":this.getAttribute("theme","");
};
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(_760){
this.formatter=_760;
};
nitobi.calendar.DatePicker.prototype.handleClick=function(evt,_762){
var td=evt.srcElement;
if(td.nodeName!="TD"){
return;
}
var _764=this.getDate();
if(_764){
var days=nitobi.base.DateMath.getNumberOfDays(this.getStartDate(),_764)-1;
if(days>=0&&days<42){
var row=2+Math.floor(days/7);
var col=days%7;
var _768=this.getHtmlNode("table");
nitobi.html.Css.removeClass(_768.rows[row].cells[col],"ntb-dp-currentday");
}
}
var tr=_762;
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(_76d){
this.monthNames=_76d;
};
nitobi.calendar.DatePicker.prototype.getDayNames=function(){
return this.dayNames||(this.dayNames=nitobi.calendar.DatePicker.defaultDayNames);
};
nitobi.calendar.DatePicker.prototype.setDayNames=function(_76e){
this.dayNames=_76e;
};
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(_76f){
var _770=nitobi.base.DateMath;
var _771=_76f.getDate();
var _772=_76f.getStartDate();
var date=_772.getDate();
var _774=_771?_770.getNumberOfDays(_772,_771)-1:1000;
var _775=_770.getMonthDays(_772)-_772.getDate()+1;
var _776=_770.add(_770.clone(_772),"d",_775);
var _777=_770.getMonthDays(_776);
_777=_777+_775>42?42-_775:_777;
var id=_76f.getId();
var _779=_775>_777;
var year=_779?_772.getFullYear():_776.getFullYear();
var _77b=_76f.getMonthNames();
var _77c=_77b[(_772.getMonth()+!_779)%12];
var _77d=_76f.getDayNames();
var str=new nitobi.lang.StringBuilder();
var _77f=true;
var _780=false;
var _781=false;
str.append("<div id=\""+id+".themer\" style=\"width:100%;height:100%;\" class=\" ntb-calendar-reset "+(_76f.getTheme()!=""?_76f.getTheme():_76f.getCssClass())+"\"><div onselectstart=\"return false;\" id=\""+id+"\" class=\"ntb-datepicker\" style=\"width:"+_76f.getWidth()+"px;height:"+_76f.getHeight()+"px;\">");
str.append("<table id=\""+id+".table\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"width:100%;height:100%;\" class=\"ntb-datepicker-table\">");
str.append("<thead><tr class=\"ntb-datepicker-monthheader\">");
str.append("<th><a id=\""+id+".prevmonth\" class=\"ntb-datepicker-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-datepicker-month\" href=\"#\" onclick=\"return false;\">"+_77c+"</a> ");
str.append("<a id=\""+id+".year\" class=\"ntb-datepicker-year\" href=\"#\" onclick=\"return false;\">"+year+"</a>");
str.append("</th>");
str.append("<th><a id=\""+id+".nextmonth\" class=\"ntb-datepicker-nextmonth\" href=\"#\" onclick=\"return false;\">&#9660;</a></th>");
str.append("</tr><tr>");
for(var i=0;i<7;i++){
str.append("<th class=\"ntb-datepicker-dayheader\">"+_77d[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(!_774--?"ntb-datepicker-currentday ":"");
if(!_779&&_77f){
str.append("ntb-datepicker-lastmonth ");
}else{
if((_779&&_77f)||(!_779&&_780)){
str.append("ntb-datepicker-thismonth ");
}else{
str.append("ntb-datepicker-nextmonth");
}
}
str.append(" ntb-datepicker-day\">"+date+"</td>");
if(_775){
if(!--_775){
_77f=false;
_780=true;
date=1;
}else{
date++;
}
}else{
if(date==_777){
_780=false;
_781=true;
}
date=date==_777?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=\""+_76f.getFormattedDate()+"\" /></div></div>");
return str.toString();
};


var temp_ntb_modelDoc='<state	 xmlns:ntb="http://www.nitobi.com"	ID="mySheet"	Version="3.01" 	element="grid" 		uniqueID="_hkj342">    <nitobi.grid.Grid    	Theme="nitobi"    	CellBorder="0" 		Height="300"		Width="700"		skin="default"		RowHeight="23"					indicatorHeight="23"		HeaderHeight="23"		scrollbarWidth="26"		scrollbarHeight="26"		toolbarHeight="22"				top="23"		left="0"		minHeight="60"		minWidth="250"		PrimaryDatasourceSize="0" 		containerHeight=""		containerWidth=""		columnsdefined="0"		renderframe="0"		renderindicators="0"		renderheader="0"		renderfooter="0"		renderleft="0"		renderright="0"		rendercenter="0"		selected="1"		activeView=""		highlightCell=""		scrolling="0"		EditMode="0"		prevCell=""		prevText=""		prevData=""		FrozenLeftColumnCount="0"		DatasourceSizeEstimate="0"    	DatasourceId=""  		freezeright="0"		freezetop="0"		ToolbarEnabled="1"    	Expanding="0"			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="1"		showErrors="0"		columnGraying="0"		keymode=""			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"		SingleClickEditEnabled="0"		LastError=""		SortEnabled="1"    	SortMode="default"    	EnterTab="down"    	    	WidthFixed="0"     	HeightFixed="0"    	MinWidth="20"     	MinHeight="0"	>    </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.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="#,###.00" NegativeMask="" GroupingSeparator="," DecimalSeparator="." type="TEXT" editor="TEXT"/>    	<nitobi.grid.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="#,###.00" NegativeMask="" GroupingSeparator="," DecimalSeparator="." type="NUMBER" editor="NUMBER"/>    	<nitobi.grid.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="#,###.00" NegativeMask="" GroupingSeparator="," DecimalSeparator="." type="TEXTAREA" editor="TEXTAREA"/>    	<nitobi.grid.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="#,###.00" NegativeMask="" GroupingSeparator="," DecimalSeparator="." ImageUrl="" type="IMAGE" editor="IMAGE"/>    	<nitobi.grid.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="#,###.00" NegativeMask="" GroupingSeparator="," DecimalSeparator="." OpenWindow="1" type="LINK" editor="LINK"/>    	<nitobi.grid.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" NegativeMask="" GroupingSeparator="," DecimalSeparator="." CalendarEnabled="1" type="DATE" editor="DATE"/>    	<nitobi.grid.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="#,###.00" NegativeMask="" GroupingSeparator="," DecimalSeparator="." DatasourceId="" Datasource="" DisplayFields="" ValueField="" Delay="" Size="6" ForceValidOption="0" type="LOOKUP" editor="LOOKUP"/>    	<nitobi.grid.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="#,###.00" NegativeMask="" GroupingSeparator="," DecimalSeparator="." DatasourceId="" Datasource="" DisplayFields="" ValueField="" type="LISTBOX" editor="LISTBOX"/>    	<nitobi.grid.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="#,###.00" NegativeMask="" GroupingSeparator="," DecimalSeparator="." type="PASSWORD" editor="PASSWORD"/>    	<nitobi.grid.Column Align="right" ClassName="" CssStyle="" ColumnName="" DataType="number" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="#,###.00" NegativeMask="" GroupingSeparator="," DecimalSeparator="." DatasourceId="" Datasource="" DisplayFields="" ValueField="" CheckedValue="" UnCheckedValue="" type="CHECKBOX" editor="CHECKBOX"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" type="TEXT" editor="TEXT"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" type="NUMBER" editor="NUMBER"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" type="TEXTAREA" editor="TEXTAREA"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" ImageUrl="" type="IMAGE" editor="IMAGE"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" OpenWindow="1" type="LINK" editor="LINK"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" type="DATE" editor="DATE"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" DatasourceId="" Datasource="" DisplayFields="" ValueField="" Delay="" Size="6" ForceValidOption="0" type="LOOKUP" editor="LOOKUP"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" DatasourceId="" Datasource="" DisplayFields="" ValueField="" type="LISTBOX" editor="LISTBOX"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" type="PASSWORD" editor="PASSWORD"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="date" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" DatasourceId="" Datasource="" DisplayFields="" ValueField="" CheckedValue="" UnCheckedValue="" type="CHECKBOX" editor="CHECKBOX"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" type="TEXT" editor="TEXT"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" type="NUMBER" editor="NUMBER"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" type="TEXTAREA" editor="TEXTAREA"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" ImageUrl="" type="IMAGE" editor="IMAGE"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" OpenWindow="1" type="LINK" editor="LINK"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" Mask="M/d/yyyy" CalendarEnabled="1" type="DATE" editor="DATE"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" DatasourceId="" Datasource="" DisplayFields="" ValueField="" Delay="" Size="6" ForceValidOption="0" type="LOOKUP" editor="LOOKUP"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" DatasourceId="" Datasource="" DisplayFields="" ValueField="" type="LISTBOX" editor="LISTBOX"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" type="PASSWORD" editor="PASSWORD"/>    	<nitobi.grid.Column Align="left" ClassName="" CssStyle="" ColumnName="" DataType="text" Editable="1" Initial="" Label="" GetHandler="" DataSource="" Template="" TemplateUrl="" MaxLength="255" SortDirection="Desc" SortEnabled="1" Width="100" Visible="1" xdatafld="" Value="" xi="100" DatasourceId="" Datasource="" DisplayFields="" ValueField="" CheckedValue="" UnCheckedValue="" type="CHECKBOX" editor="CHECKBOX"/>		<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_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\'"/><x:va-x:n-g"x:s-//state/nitobi.grid.Grid"></x:va-><x:va-x:n-u"x:s-//state/@uniqueID"></x:va-><xsl:keyx:n-style" match="//s" use="@k" /><x:t- match = "/"> <x:va-x:n-t"x:s-$g/@Theme"></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> } .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; <xsl:if test="$IE=\'true\'"> width:0px; </xsl:if> } .<x:v-x:s-$t"/> .ntb-cell {overflow:hidden;white-space:nowrap;} .<x:v-x:s-$t"/> .ntb-cell-border {overflow:hidden;white-space:nowrap;<xsl:if test="$IE=\'true\'">height:auto;</xsl:if>} .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; -moz-user-select: none; -khtml-user-select: none; user-select: none; } .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-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-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->} .ntb-input-border { table-layout:fixed; overflow:hidden; position:absolute; z-index:2000; top:-2000px; left:-2000px; } .ntb-column-resize-surface { filter:alpha(opacity=1); background-color:white; position:absolute; visibility:hidden; top:0px; left:0px; width:100px; height:100px; z-index:800; } .<x:v-x:s-$t"/> .ntb-column-indicator { overflow:hidden; white-space: nowrap; } .ntb-row<x:v-x:s-$u" /> {height:<x:v-x:s-$g/@RowHeight" />px;margin:0px;} .ntb-header-row<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-> #grid<x:v-x:s-$u" /> .ntb-column<x:v-x:s-$u" />_<xsl:number value="$p" /> {width:<x:v-x:s-number($w)-number($g/@CellBorder)" />px;} #grid<x:v-x:s-$u" /> .ntb-column-data<x:v-x:s-$u" />_<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-u"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-$u" />" class="ntb-grid ntb-grid-reset <x:v-x:s-state/nitobi.grid.Grid/@Theme" />"&gt; &lt;tr&gt; &lt;td colspan="2"&gt; &lt;div id="ntb-grid-overlay<x:v-x:s-$u" />" class="ntb-grid-overlay<x:v-x:s-$u" />"&gt;&lt;/div&gt; <xsl:if test="$IE=\'false\'">&lt;div id="ntb-grid-keynav<x:v-x:s-$u" />" 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-$u" />" class="ntb-grid-scrollerheight<x:v-x:s-$u" /> ntb-grid-scrollerwidth<x:v-x:s-$u" />" &gt; &lt;div id="ntb-grid-scrollerarea<x:v-x:s-$u" />" class="ntb-grid-scrollerheight<x:v-x:s-$u" />" style="overflow:hidden;" &gt; &lt;div tabindex="2" class="ntb-grid-scroller<x:v-x:s-$u" /> ntb-grid-scrollerheight<x:v-x:s-$u" />" &gt; &lt;table class="ntb-grid-scroller" cellpadding="0" cellspacing="0" border="0" &gt; &lt;tr id="ntb-grid-header<x:v-x:s-$u" />" class="ntb-grid-topheight<x:v-x:s-$u" /> " &gt; &lt;td class="ntb-scroller ntb-grid-topheight<x:v-x:s-$u" />" &gt; &lt;div id="gridvp_0_<x:v-x:s-$u" />" class="ntb-grid-topheight<x:v-x:s-$u" /> ntb-grid-leftwidth<x:v-x:s-$u" />"&gt; &lt;div id="gridvpsurface_0_<x:v-x:s-$u" />" &gt; &lt;div id="gridvpcontainer_0_<x:v-x:s-$u" />" &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-$u" />" class="ntb-grid-topheight<x:v-x:s-$u" /> ntb-grid-centerwidth<x:v-x:s-$u" /> ntb-grid-header"&gt; &lt;div id="gridvpsurface_1_<x:v-x:s-$u" />" class="ntb-grid-surfacewidth<x:v-x:s-$u" />" &gt; &lt;div id="gridvpcontainer_1_<x:v-x:s-$u" />" &gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr id="ntb-grid-data<x:v-x:s-$u" />"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-$u" />" class="ntb-frozenshadow"&gt;&lt;/div&gt;--> &lt;div id="gridvp_2_<x:v-x:s-$u" />" class="ntb-grid-midheight<x:v-x:s-$u" /> ntb-grid-leftwidth<x:v-x:s-$u" />" style="position:relative;"&gt; &lt;div id="gridvpsurface_2_<x:v-x:s-$u" />" &gt; &lt;div id="gridvpcontainer_2_<x:v-x:s-$u" />" &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-$u" />" class="ntb-grid-midheight<x:v-x:s-$u"/> ntb-grid-centerwidth<x:v-x:s-$u" />" style="position:relative;"&gt; &lt;div id="gridvpsurface_3_<x:v-x:s-$u" />" class="ntb-grid-surfacewidth<x:v-x:s-$u" />" &gt; &lt;div id="gridvpcontainer_3_<x:v-x:s-$u" />" &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-$u" />" class="ntb-grid-scrollerheight<x:v-x:s-$u" />"&gt;&lt;div id="vscrollclip<x:v-x:s-$u" />" class="ntb-grid-scrollerheight<x:v-x:s-$u" /> ntb-grid-scrollbarwidth<x:v-x:s-$u"/> ntb-scrollbar" style="overflow:hidden;" &gt;&lt;div id="vscroll<x:v-x:s-$u" />" 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-$u" />" 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-$u" />" &gt; &lt;td &gt;&lt;div id="hscrollclip<x:v-x:s-$u" />" class="ntb-grid-scrollbarheight<x:v-x:s-$u" /> ntb-grid-scrollerwidth<x:v-x:s-$u" /> ntb-hscrollbar" style="overflow:hidden;" &gt; &lt;div id="hscroll<x:v-x:s-$u" />" class="ntb-grid-scrollbarheight<x:v-x:s-$u" /> ntb-grid-scrollerwidth<x:v-x:s-$u" /> ntb-scrollbar" style="overflow-x:scroll;overflow-y:hidden;height:<x:v-x:s-number($offset)+number(state/nitobi.grid.Grid/@scrollbarHeight)"/>px;position:relative;top:-<x:v-x:s-$offset"/>px;left:0px;" &gt; &lt;div class="hScrollbarRange<x:v-x:s-$u" />" style="HEIGHT:1px;overflow:hidden;"&gt; &lt;/div&gt; &lt;/td&gt; &lt;td class="ntb-grid-vscrollshow<x:v-x:s-$u" /> ntb-scrollcorner" &gt;&lt;/td&gt; &lt;/tr&gt; &lt;tr id="ntb-grid-toolbarshow<x:v-x:s-$u" />" &gt;&lt;td colspan="2" class="ntbtoolbarcontainer" &gt;&lt;div id="toolbarContainer<x:v-x:s-$u" />" style="overflow:hidden;" class="ntb-grid-toolbarshow<x:v-x:s-$u" /> ntb-grid-toolbarheight<x:v-x:s-$u" /> ntb-grid-width<x:v-x:s-$u" />"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr &gt; &lt;td colspan="2" id="ntb-grid-toolscontainer<x:v-x:s-$u"/>" style="position:relative;height:0px;"&gt; &lt;textarea id="ntb-clipboard<x:v-x:s-$u"/>" class="ntb-clipboard"&gt;&lt;/textarea&gt; &lt;div id="ntb-column-resizeline<x:v-x:s-$u" />" class="ntb-column-resizeline" style="top: 0px; left: 0px; height: 336px; visibility: hidden;"&gt;&lt;/div&gt; <xsl:if test="$resizeEnabled = \'true\'"> &lt;div id="resizecornercontainer<x:v-x:s-$u" />" 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-$u" />\'), \'visibility\', \'visible\')" onmouseout="nitobi.html.Css.setStyle($(\'resizecorner<x:v-x:s-$u" />\'), \'visibility\', \'hidden\')"&gt; &lt;div id="resizecorner<x:v-x:s-$u" />" style="visibility:hidden;"&gt; &lt;div class="ntb-resize-indicator-right"&gt;&lt;/div&gt; &lt;div class="ntb-resize-indicator-bottom"&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-size"></x:p-> <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 id="ntb-listbox" class="ntb-input ntb-lookup-options"> <xsl:if test="$size"> <x:a-x:n-size">6</x:a-> </xsl:if> <!--<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_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-name" decimal-separator="char" grouping-separator="char" infinity="string" minus-sign="char" NaN="string" percent="char" per-mille="char" zero-digit="char" digit="char" pattern-separator="char"/> --><xsl:decimal-formatx:n-NA" decimal-separator="." grouping-separator="," /><xsl:decimal-formatx:n-EU" 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:c-> <x:wh- test="$group=\'.\' and $decimal=\',\'"> <x:v-x:s-format-number($number, $mask, \'EU\')" /> </x:wh-> <x:o-> <x:v-x:s-format-number($number, $mask, \'NA\')" /> </x:o-> </x:c-> </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" /><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-\'.\'" /> <!--http://www.w3schools.com/xsl/func_formatnumber.asp--><!-- <xsl:decimal-formatx:n-name" decimal-separator="char" grouping-separator="char" infinity="string" minus-sign="char" NaN="string" percent="char" per-mille="char" zero-digit="char" digit="char" pattern-separator="char"/> --><xsl:decimal-formatx:n-NA" decimal-separator="." grouping-separator="," /><xsl:decimal-formatx:n-EU" 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:c-> <x:wh- test="$group=\'.\' and $decimal=\',\'"> <x:v-x:s-format-number($number, $mask, \'EU\')" /> </x:wh-> <x:o-> <x:v-x:s-format-number($number, $mask, \'NA\')" /> </x:o-> </x:c-> </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_rowXslProc='<?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="xml" omit-xml-declaration="yes"/> <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:p-x:n-start" /><x:p-x:n-end" /><x:p-x:n-activeColumn"x:s-\'0\'" /><x:p-x:n-activeRow"x:s-\'0\'" /><x:p-x:n-sortColumn"x:s-\'0\'" /><x:p-x:n-sortDirection"x:s-\'Asc\'" /><x:p-x:n-dataTableId"x:s-\'_default\'" /><x:p-x:n-columns"x:s-/ntb:root/ntb:columns/*/*" /><xsl:keyx:n-data-source" match="//ntb:datasources/ntb:datasource" use="@id" /> <!-- 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-> <!--http://www.w3schools.com/xsl/func_formatnumber.asp--><!-- <xsl:decimal-formatx:n-name" decimal-separator="char" grouping-separator="char" infinity="string" minus-sign="char" NaN="string" percent="char" per-mille="char" zero-digit="char" digit="char" pattern-separator="char"/> --><xsl:decimal-formatx:n-NA" decimal-separator="." grouping-separator="," /><xsl:decimal-formatx:n-EU" 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:c-> <x:wh- test="$group=\'.\' and $decimal=\',\'"> <x:v-x:s-format-number($number, $mask, \'EU\')" /> </x:wh-> <x:o-> <x:v-x:s-format-number($number, $mask, \'NA\')" /> </x:o-> </x:c-> </x:va-> <xsl:if test="not(string($formattedNumber) = \'NaN\')"> <x:v-x:s-$formattedNumber" /> </xsl:if></x:t-><x:t- match = "/"> <div> <xsl:if test="$showHeaders"> <table cellpadding="0" cellspacing="0" border="0" class="ntb-grid-headerblock"> <tr> <x:a-x:n-class">ntb-header-row<x:v-x:s-$uniqueId" /></x:a-> <xsl:for-eachx:s-$columns"> <xsl:if test="@Visible = \'1\' and (position() &gt; $firstColumn and position() &lt;= $lastColumn)"> <td ebatype="columnheader"> <x:a-x:n-id">columnheader_<x:v-x:s-position()-1"/>_<x:v-x:s-$uniqueId" /></x:a-> <x:a-x:n-xi"><x:v-x:s-position()-1"/></x:a-> <x:a-x:n-col"><x:v-x:s-position()-1"/></x:a-> <x:a-x:n-onmouseover">$(\'grid<x:v-x:s-$uniqueId" />\').jsObject.handleHeaderMouseOver(this);</x:a-> <x:a-x:n-onmouseout">$(\'grid<x:v-x:s-$uniqueId" />\').jsObject.handleHeaderMouseOut(this);</x:a-> <x:a-x:n-class">ntb-column-indicator-border<x:c-><x:wh- test="$sortColumn=position()-1 and $sortDirection=\'Asc\'">ascending</x:wh-><x:wh- test="$sortColumn=position()-1 and $sortDirection=\'Desc\'">descending</x:wh-><x:o-></x:o-></x:c-></x:a-> <div class="ntb-column-indicator"> <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-> </div> </td> </xsl:if> </xsl:for-each> </tr> <x:ct-x:n-colgroup" /> </table> </xsl:if> <table cellpadding="0" cellspacing="0" border="0" class="ntb-grid-datablock"> <x:at-x:s-key(\'data-source\', $dataTableId)/ntb:data/ntb:e[@xi &gt;= $start and @xi &lt; $end]" > <xsl:sortx:s-@xi" data-type="number" /> </x:at-> <x:ct-x:n-colgroup" /> </table> </div></x:t-><x:t-x:n-colgroup"> <colgroup> <xsl:for-eachx:s-$columns"> <xsl:if test="@Visible = \'1\' and (position() &gt; $firstColumn and position() &lt;= $lastColumn)"> <col> <x:a-x:n-class">ntb-column<x:v-x:s-$uniqueId"/>_<x:v-x:s-position()" /><xsl:text> </xsl:text><xsl:if test="not(@Editable=\'1\')">ntb-column-readonly</xsl:if></x:a-> </col> </xsl:if> </xsl:for-each> </colgroup></x:t-><x:t- match="ntb:e"> <x:va-x:n-rowClass"> <xsl:if test="@xi mod 2 = 0">ntb-row-alternate</xsl:if> <!-- <xsl:if test="<x:v-x:s-@rowselectattr=1"/>">ebarowselected</xsl:if> --> </x:va-> <x:va-x:n-xi"x:s-@xi" /> <x:va-x:n-row"x:s-." /> <tr class="ntb-row {$rowClass} ntb-row{$uniqueId}" xi="{$xi}"> <x:a-x:n-id">row_<x:v-x:s-$xi" /><x:v-x:s-$frozenColumnId"/>_<x:v-x:s-$uniqueId" /></x:a-> <xsl:for-eachx:s-$columns"> <xsl:if test="@Visible = \'1\' and (position() &gt; $firstColumn and position() &lt;= $lastColumn)"> <x:ct-x:n-render-cell"> <x:w-x:n-row"x:s-$row"/> <x:w-x:n-xi"x:s-$xi"/> </x:ct-> </xsl:if> </xsl:for-each> </tr></x:t-> <x:t-x:n-render-cell"> <x:p-x:n-row" /> <x:p-x:n-xi" /> <x:va-x:n-xdatafld"x:s-substring-after(@xdatafld,\'@\')"/> <x:va-x:n-pos"x:s-position()-1"/> <x:va-x:n-value"><x:c-><x:wh- test="not(@xdatafld = \'\')"><x:v-x:s-$row/@*[name()=$xdatafld]" /></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-></x:va-> <td ebatype="cell" id="cell_{$xi}_{$pos}_{$uniqueId}" xi="{$xi}" col="{$pos}" style="{@CssStyle}"> <x:a-x:n-class">ntb-cell-border<xsl:text> </xsl:text>ntb-column-data<x:v-x:s-$uniqueId"/>_<x:v-x:s-position()" /><xsl:text> </xsl:text>ntb-column-<x:c-><x:wh- test="$sortColumn=$pos and $sortDirection=\'Asc\'">ascending</x:wh-><x:wh- test="$sortColumn=$pos and $sortDirection=\'Desc\'">descending</x:wh-><x:o-></x:o-></x:c-><xsl:text> </xsl:text>ntb-column-<x:v-x:s-@DataType"/><xsl:text> </xsl:text><x:ct-x:n-ClassName"><x:w-x:n-row"x:s-$row"/></x:ct-><xsl:text> </xsl:text><xsl:if test="@type = \'NUMBER\' and $value &lt; 0">ntb-cell-negativenumber</xsl:if></x:a-> <div style="overflow:hidden;white-space:nowrap;" class="ntb-cell"> <xsl:if test="@TooltipsEnabled=\'1\'"> <x:a-x:n-title"> <x:v-x:s-$value"/> </x:a-> </xsl:if> <x:ct-x:n-render-value"> <x:w-x:n-value"x:s-$value"/> <x:w-x:n-mask"x:s-@Mask"/> <x:w-x:n-negativeMask"x:s-@NegativeMask"/> <x:w-x:n-groupseparator"x:s-@GroupingSeparator"/> <x:w-x:n-decimalseparator"x:s-@DecimalSeparator"/> <x:w-x:n-datasource"x:s-@DatasourceId"/> <x:w-x:n-valuefield"x:s-@ValueField"/> <x:w-x:n-displayfields"x:s-@DisplayFields"/> <x:w-x:n-checkedvalue"x:s-@CheckedValue"/> <x:w-x:n-imageurl"x:s-@ImageUrl"/> </x:ct-> </div> </td> </x:t-> <x:t-x:n-render-value"> <x:p-x:n-value" /> <x:p-x:n-mask" /> <x:p-x:n-negativeMask" /> <x:p-x:n-groupseparator" /> <x:p-x:n-decimalseparator" /> <x:p-x:n-datasource" /> <x:p-x:n-valuefield" /> <x:p-x:n-displayfields" /> <x:p-x:n-checkedvalue" /> <x:p-x:n-imageurl" /> <x:c-> <x:wh- test="@type = \'TEXT\' or @type = \'\'"> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$value" /> </x:ct-> </x:wh-> <x:wh- test="@type = \'NUMBER\'"> <x:va-x:n-number-mask"> <x:c-> <x:wh- test="$mask"><x:v-x:s-$mask" /></x:wh-> <x:o->#,###.00</x:o-> </x:c-> </x:va-> <x:va-x:n-negative-mask"> <x:c-> <x:wh- test="$negativeMask and not($negativeMask=\'\')"><x:v-x:s-$negativeMask" /></x:wh-> <x:o-><x:v-x:s-$number-mask" /></x:o-> </x:c-> </x:va-> <x:va-x:n-number"> <xsl:if test="$value &lt; 0"> <x:ct-x:n-n:format"> <x:w-x:n-number"x:s-translate($value,\'-\',\'\')" /> <x:w-x:n-mask"x:s-$negative-mask" /> <x:w-x:n-group"x:s-$groupseparator" /> <x:w-x:n-decimal"x:s-$decimalseparator" /> </x:ct-> </xsl:if> <xsl:if test="$value &gt;= 0"> <x:ct-x:n-n:format"> <x:w-x:n-number"x:s-$value" /> <x:w-x:n-mask"x:s-$number-mask" /> <x:w-x:n-group"x:s-$groupseparator" /> <x:w-x:n-decimal"x:s-$decimalseparator" /> </x:ct-> </xsl:if> </x:va-> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$number" /> </x:ct-> </x:wh-> <x:wh- test="@type = \'LOOKUP\'"> <x:c-> <x:wh- test="$valuefield = $displayfields"> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$value" /> </x:ct-> </x:wh-> <x:o-> <x:ct-x:n-replaceblank"> <x:w-x:n-value"> <x:c-> <x:wh- test="$datasource"> <x:va-x:n-preset-value" > <xsl:for-eachx:s-key(\'data-source\',$datasource)//*"> <xsl:if test="@*[name(.)=$valuefield and .=$value]"> <x:ct-x:n-print-displayfields"> <x:w-x:n-field"x:s-$displayfields" /> </x:ct-> </xsl:if> </xsl:for-each> </x:va-> <x:c-> <x:wh- test="$preset-value=\'\'"> <x:v-x:s-$value"/> </x:wh-> <x:o-> <x:v-x:s-$preset-value"/> </x:o-> </x:c-> </x:wh-> <x:o-> <x:v-x:s-$value"/> </x:o-> </x:c-> </x:w-> </x:ct-> </x:o-> </x:c-> </x:wh-> <x:wh- test="@type = \'LISTBOX\'"> <x:c-> <x:wh- test="$datasource"> <xsl:for-eachx:s-key(\'data-source\',$datasource)//*"> <xsl:if test="@*[name(.)=$valuefield and .=$value]"> <x:ct-x:n-replaceblank"> <x:w-x:n-value"> <x:ct-x:n-print-displayfields"> <x:w-x:n-field"x:s-$displayfields" /> </x:ct-> </x:w-> </x:ct-> </xsl:if> </xsl:for-each> </x:wh-> <x:o-> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$value" /> </x:ct-> </x:o-> </x:c-> </x:wh-> <x:wh- test="@type = \'CHECKBOX\'"> <xsl:for-eachx:s-key(\'data-source\',$datasource)//*"> <xsl:if test="@*[name(.)=$valuefield and .=$value]"> <x:va-x:n-checkString"> <x:c-> <x:wh- test="$value=$checkedvalue">checked</x:wh-> <x:o->unchecked</x:o-> </x:c-> </x:va-> <div style="overflow:hidden;"> <div style="float:left;" class="ntb-checkbox ntb-checkbox-{$checkString}" checked="{$value}" width="10" >ATOKENTOREPLACE</div><span><x:v-x:s-@*[name(.)=$displayfields]" /></span> </div> </xsl:if> </xsl:for-each> </x:wh-> <x:wh- test="@type = \'IMAGE\'"> <x:va-x:n-url"> <x:c-> <x:wh- test="$imageurl and not($imageurl=\'\')"><x:v-x:s-$imageurl" /></x:wh-> <x:o-><x:v-x:s-$value" /></x:o-> </x:c-> </x:va-> <!-- image editor --> <img border="0" src="{$url}" /> </x:wh-> <x:wh- test="@type = \'DATE\'"> <x:va-x:n-date-mask"> <x:c-> <x:wh- test="$mask"><x:v-x:s-$mask" /></x:wh-> <x:o->MMM d, yy</x:o-> </x:c-> </x:va-> <x:va-x:n-date"> <x:ct-x:n-d:format-date"> <x:w-x:n-date-time"x:s-$value" /> <x:w-x:n-mask"x:s-$date-mask" /> </x:ct-> </x:va-> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$date" /> </x:ct-> </x:wh-> <x:wh- test="@type = \'TEXTAREA\'"> <x:ct-x:n-replace-break"> <x:w-x:n-text"> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$value" /> </x:ct-> </x:w-> </x:ct-> </x:wh-> <x:wh- test="@type = \'PASSWORD\'">*********</x:wh-> <x:wh- test="@type = \'LINK\'"> <span class="ntb-hyperlink-editor"> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$value" /> </x:ct-> </span> </x:wh-> <x:o-></x:o-> </x:c-> </x:t-><x:t-x:n-replaceblank"> <x:p-x:n-value" /> <x:c-> <x:wh- test="not($value) or $value = \'\' or $value = \' \'">ATOKENTOREPLACE</x:wh-> <x:o-><x:v-x:s-$value" /></x:o-> </x:c-></x:t-><x:t-x:n-replace"> <x:p-x:n-text"/> <x:p-x:n-search"/> <x:p-x:n-replacement"/> <x:c-> <x:wh- test="contains($text, $search)"> <x:v-x:s-substring-before($text, $search)"/> <x:v-x:s-$replacement"/> <x:ct-x:n-replace"> <x:w-x:n-text"x:s-substring-after($text,$search)"/> <x:w-x:n-search"x:s-$search"/> <x:w-x:n-replacement"x:s-$replacement"/> </x:ct-> </x:wh-> <x:o-> <x:v-x:s-$text"/> </x:o-> </x:c-></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: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:o-> </x:c-></x:t-><x:t-x:n-replace-break"> <x:p-x:n-text"/> <x:ct-x:n-replace"> <x:w-x:n-text"x:s-$text"/> <x:w-x:n-search"x:s-\'&amp;amp;#xa;\'"/> <x:w-x:n-replacement"x:s-\'&amp;lt;br/&amp;gt;\'"/> </x:ct-></x:t-><x:t-x:n-ClassName"> <x:p-x:n-row"/> <x:va-x:n-class"x:s-@ClassName"/> <x:va-x:n-value"x:s-$row/@*[name()=$class]"/> <x:c-> <x:wh- test="$value"><x:v-x:s-$value"/></x:wh-> <x:o-><x:v-x:s-$class"/></x:o-> </x:c-></x:t-><!--This can be used as an insertion point for column templates--> <!--COLUMN-TYPE-TEMPLATES--></xsl:stylesheet>';
nitobi.lang.defineNs("nitobi.grid");
nitobi.grid.rowXslProc = nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_rowXslProc));

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));


