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.ui");nitobi.ui.Scrollbar=function(){this.uid="scroll"+nitobi.base.getUid()};nitobi.ui.Scrollbar.prototype.render=function(){};nitobi.ui.Scrollbar.prototype.attachToParent=function(c,b,a){this.UiContainer=c;this.element=b||nitobi.html.getFirstChild(this.UiContainer);if(this.element==null){this.render()}this.surface=a||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 b=document.getElementById("vscroll"+this.uid);var a=-1;if(nitobi.browser.MOZ){a=-3}nitobi.drawing.align(b,this.UiContainer.childNodes[0],269484288,-42,0,24,a,false)};nitobi.ui.Scrollbar.prototype.scrollByUser=function(){this.fire("ScrollByUser",this.getScrollPercent())};nitobi.ui.Scrollbar.prototype.setScroll=function(a){};nitobi.ui.Scrollbar.prototype.getScrollPercent=function(){};nitobi.ui.Scrollbar.prototype.setRange=function(a){};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(b,a){return nitobi.event.notify(b+this.uid,a)};nitobi.ui.Scrollbar.prototype.subscribe=function(c,b,a){if(typeof(a)=="undefined"){a=this}return nitobi.event.subscribe(c+this.uid,nitobi.lang.close(a,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(a){this.element.scrollTop=(this.surface.offsetHeight-this.element.offsetHeight)*a;return false};nitobi.ui.VerticalScrollbar.prototype.getScrollPercent=function(){return(this.element.scrollTop/(this.surface.offsetHeight-this.element.offsetHeight))};nitobi.ui.VerticalScrollbar.prototype.setRange=function(a){var b=this.element.scrollTop;this.surface.style.height=Math.floor(this.element.offsetHeight/a)+"px";this.element.scrollTop=b;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(a){this.element.scrollLeft=(this.surface.clientWidth-this.element.clientWidth)*a;return false};nitobi.ui.HorizontalScrollbar.prototype.setRange=function(a){this.surface.style.width=Math.floor(this.element.offsetWidth/a)+"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(a){this.column.getModel().setAttribute("GetHandler",a);this.getHandler=a};nitobi.ui.IDataBoundList.prototype.getDataSourceId=function(){return this.datasourceId};nitobi.ui.IDataBoundList.prototype.setDataSourceId=function(a){this.column.getModel().setAttribute("DatasourceId",a);this.datasourceId=a};nitobi.ui.IDataBoundList.prototype.getDisplayFields=function(){return this.displayFields};nitobi.ui.IDataBoundList.prototype.setDisplayFields=function(a){this.column.getModel().setAttribute("DisplayFields",a);this.displayFields=a};nitobi.ui.IDataBoundList.prototype.getValueField=function(){return this.valueField};nitobi.ui.IDataBoundList.prototype.setValueField=function(a){this.column.getModel().setAttribute("ValueField",a);this.valueField=a};nitobi.lang.defineNs("nitobi.collections");nitobi.collections.CacheMap=function(){this.tail=null;this.debug=new Array()};nitobi.collections.CacheMap.prototype.insert=function(a,c){a=Number(a);c=Number(c);this.debug.push("insert("+a+","+c+")");var b=new nitobi.collections.CacheNode(a,c);if(this.head==null){this.debug.push("empty cache, adding first node");this.head=b;this.tail=b}else{var d=this.head;while(d!=null&&a>d.high+1){d=d.next}if(d==null){this.debug.push("appending node to end");this.tail.next=b;b.prev=this.tail;this.tail=b}else{this.debug.push("inserting new node before "+d.toString());if(d.prev!=null){b.prev=d.prev;d.prev.next=b}b.next=d;d.prev=b;while(b.mergeNext()){}if(b.prev==null){this.head=b}if(b.next==null){this.tail=b}}}};nitobi.collections.CacheMap.prototype.remove=function(b,g){b=Number(b);g=Number(g);this.debug.push("insert("+b+","+g+")");if(this.head==null){}else{if(g<this.head.low||b>this.tail.high){return}var f=this.head;while(f!=null&&b>f.high){f=f.next}if(f==null){this.debug.push("the range was not found")}else{var e=f;var d=null;while(e!=null&&g>e.high){if((e.next!=null&&g<e.next.low)||e.next==null){break}d=e.next;if(e!=f){this.removeNode(e)}e=d}if(f!=e){if(g>=e.high){this.removeNode(e)}if(b<=f.low){this.removeNode(f)}}else{if(f.low>=b&&f.high<=g){this.removeNode(f);return}else{if(b>f.low&&g<f.high){var a=f.low;var c=f.high;this.removeNode(f);this.insert(a,b-1);this.insert(g+1,c);return}}}if(e!=null&&g<e.high){e.low=g+1}if(f!=null&&b>f.low){f.high=b-1}}}};nitobi.collections.CacheMap.prototype.gaps=function(a,e){var b=new Array();var d=this.head;if(d==null||d.low>e||this.tail.high<a){b.push(new nitobi.collections.Range(a,e));return b}var c=0;while(d!=null&&d.high<a){c=d.high+1;d=d.next}if(d!=null){do{if(b.length==0){if(a<d.low){b.push(new nitobi.collections.Range(Math.max(a,c),Math.min(d.low-1,e)))}}if(e>d.high){if(d.next==null||d.next.low>e){b.push(new nitobi.collections.Range(d.high+1,e))}else{b.push(new nitobi.collections.Range(d.high+1,d.next.low-1))}}d=d.next}while(d!=null&&d.high<e)}else{b.push(new nitobi.collections.Range(this.tail.high+1,e))}return b};nitobi.collections.CacheMap.prototype.ranges=function(a,b){var c=new Array();var d=this.head;if(d==null||d.low>b||this.tail.high<a){return c}while(d!=null&&d.high<a){minLow=d.high+1;d=d.next}if(d!=null){do{c.push(new nitobi.collections.Range(d.low,d.high));d=d.next}while(d!=null&&d.high<b)}return c};nitobi.collections.CacheMap.prototype.gapsString=function(b,f){var d=this.gaps(b,f);var c=new Array();for(var e=0;e<d.length;e++){c.push(d[e].toString())}return c.join(",")};nitobi.collections.CacheMap.prototype.removeNode=function(a){if(a.prev!=null){a.prev.next=a.next}else{this.head=a.next}if(a.next!=null){a.next.prev=a.prev}else{this.tail=a.prev}a=null};nitobi.collections.CacheMap.prototype.toString=function(){var b=this.head;var a=new Array();while(b!=null){a.push(b.toString());b=b.next}return a.join(",")};nitobi.collections.CacheMap.prototype.flush=function(){var b=this.head;while(Boolean(b)){var a=b.next;delete (b);b=a}this.head=null;this.tail=null};nitobi.collections.CacheMap.prototype.insertIntoRange=function(c){var b=this.head;var a=0;while(b!=null){if(c>=b.low&&c<=b.high){a=1;b.high+=a}else{b.low+=a;b.high+=a}b=b.next}if(a==0){this.insert(c,c)}};nitobi.collections.CacheMap.prototype.removeFromRange=function(a){var c=this.head;var b=0;while(c!=null){if(a>=c.low&&a<=c.high){b=-1;if(c.low==c.high){this.remove(a,a)}else{c.high+=b}}else{c.low+=b;c.high+=b}c=c.next}ntbAssert(b!=0,"Tried to remove something from a range where the range does not exist")};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(a,c){a=Number(a);c=Number(c);this.debug.push("insert("+a+","+c+")");if(this.head==null){var b=new nitobi.collections.CacheNode(a,c);this.debug.push("empty cache, adding first node");this.head=b;this.tail=b}else{var d=this.head;while(d!=null&&a>d.high){d=d.next}if(d==null){var b=new nitobi.collections.CacheNode(a,c);this.debug.push("appending node to end");this.tail.next=b;b.prev=this.tail;this.tail=b}else{this.debug.push("inserting new node into or before "+d.toString());if(a<d.low||c>d.high){if(a<d.low){var b=new nitobi.collections.CacheNode(a,c);b.prev=d.prev;b.next=d;if(d.prev!=null){d.prev.next=b}d.prev=b;b.high=Math.min(b.high,d.low-1)}else{var b=new nitobi.collections.CacheNode(d.high+1,c);b.prev=d;b.next=d.next;if(d.next!=null){d.next.prev=b;b.high=Math.min(c,b.next.low-1)}d.next=b}if(b.prev==null){this.head=b}if(b.next==null){this.tail=b}}}}};nitobi.collections.BlockMap.prototype.blocks=function(a,c){var d=new Array();var e=this.head;if(e==null||e.low>c||this.tail.high<a){d.push(new nitobi.collections.Range(a,c));return d}var b=0;while(e!=null&&e.high<a){b=e.high+1;e=e.next}if(e!=null){do{if(d.length==0){if(a<e.low){d.push(new nitobi.collections.Range(Math.max(a,b),Math.min(e.low-1,c)))}}if(c>e.high){if(e.next==null||e.next.low>c){d.push(new nitobi.collections.Range(e.high+1,c))}else{d.push(new nitobi.collections.Range(e.high+1,e.next.low-1))}}e=e.next}while(e!=null&&e.high<c)}else{d.push(new nitobi.collections.Range(this.tail.high+1,c))}return d};nitobi.lang.defineNs("nitobi.collections");nitobi.collections.CellSet=function(c,b,a,e,d){this.owner=c;if(b!=null&&a!=null&&e!=null&&d!=null){this.setRange(b,a,e,d)}else{this.setRange(0,0,0,0)}};nitobi.collections.CellSet.prototype.toString=function(){var c="";for(var b=this._topRow;b<=this._bottomRow;b++){c+="[";for(var a=this._leftColumn;a<=this._rightColumn;a++){c+="("+b+","+a+")"}c+="]"}return c};nitobi.collections.CellSet.prototype.setRange=function(d,c,b,a){ntbAssert(d!=null&&c!=null&&b!=null&&a!=null,"nitobi.collections.CellSet.setRange requires startRow, startColumn, endRow, endColumn as integers",null,EBA_THROW);this._startRow=d;this._startColumn=c;this._endRow=b;this._endColumn=a;this._leftColumn=Math.min(c,a);this._rightColumn=Math.max(c,a);this._topRow=Math.min(d,b);this._bottomRow=Math.max(d,b)};nitobi.collections.CellSet.prototype.changeStartCell=function(a,b){this._startRow=a;this._startColumn=b;this._leftColumn=Math.min(b,this._endColumn);this._rightColumn=Math.max(b,this._endColumn);this._topRow=Math.min(a,this._endRow);this._bottomRow=Math.max(a,this._endRow)};nitobi.collections.CellSet.prototype.changeEndCell=function(b,a){this._endRow=b;this._endColumn=a;this._leftColumn=Math.min(a,this._startColumn);this._rightColumn=Math.max(a,this._startColumn);this._topRow=Math.min(b,this._startRow);this._bottomRow=Math.max(b,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(b,a){return this.owner.getCellObject(this._topRow+b,this._leftColumn+a)};nitobi.lang.defineNs("nitobi.collections");nitobi.collections.CacheNode=function(a,b){this.low=a;this.high=b;this.next=null;this.prev=null};nitobi.collections.CacheNode.prototype.isIn=function(a){return((a>=this.low)&&(a<=this.high))};nitobi.collections.CacheNode.prototype.mergeNext=function(){var b=this.next;if(b!=null&&b.low<=this.high+1){this.high=Math.max(this.high,b.high);this.low=Math.min(this.low,b.low);var a=b.next;this.next=a;if(a!=null){a.prev=this}b.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+"]"};nitobi.lang.defineNs("nitobi.collections");nitobi.collections.Range=function(a,b){this.low=a;this.high=b};nitobi.collections.Range.prototype.isIn=function(a){return((a>=this.low)&&(a<=this.high))};nitobi.collections.Range.prototype.toString=function(){return"["+this.low+","+this.high+"]"};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(a){nitobi.prepare();EBAAutoRender=false;this.disposal=[];this.uid=a||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;nitobi.grid.Grid.prototype.properties={id:{n:"ID",t:"",d:"",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"},toolbarheight:{n:"ToolbarHeight",t:"i",d:25,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"},innercellborder:{n:"InnerCellBorder",t:"i",d:0,p:"x"},dragfillenabled:{n:"DragFillEnabled",t:"b",d:true,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"},onafterresizeevent:{n:"OnAfterResizeEvent",t:"",p:"e"},onbeforeresizeevent:{n:"OnBeforeResizeEvent",t:"",p:"e"}};nitobi.grid.Grid.prototype.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"},forcevalidoption:{n:"ForceValidOption",t:"b",d:false},autocomplete:{n:"AutoComplete",t:"b",d:true},autoclear:{n:"AutoClear",t:"b",d:false},getonenter:{n:"GetOnEnter",t:"b",d:false},referencecolumn:{n:"ReferenceColumn",t:"s",d:""}},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:{}};nitobi.grid.Grid.prototype.typeAccessorCreators={s:function(){},b:function(){},i:function(){},n:function(){}};nitobi.grid.Grid.prototype.createAccessors=function(b){var a=nitobi.grid.Grid.prototype.properties[b];nitobi.grid.Grid.prototype["set"+a.n]=function(){this[a.p+a.t+"SET"](a.n,arguments)};nitobi.grid.Grid.prototype["get"+a.n]=function(){return this[a.p+a.t+"GET"](a.n,arguments)};nitobi.grid.Grid.prototype["is"+a.n]=function(){return this[a.p+a.t+"GET"](a.n,arguments)};nitobi.grid.Grid.prototype[a.n]=a.d};for(var name in nitobi.grid.Grid.prototype.properties){nitobi.grid.Grid.prototype.createAccessors(name)}nitobi.grid.Grid.prototype.initialize=function(){this.fire("Preinitialize");this.initializeFromCss();this.createChildren();this.fire("AfterInitialize");this.fire("CreationComplete")};nitobi.grid.Grid.prototype.initializeFromCss=function(){this.CellHoverColor=this.getThemedStyle("ntb-cell-hover","backgroundColor")||"#C0C0FF";this.RowHoverColor=this.getThemedStyle("ntb-row-hover","backgroundColor")||"#FFFFC0";this.CellActiveColor=this.getThemedStyle("ntb-cell-active","backgroundColor")||"#F0C0FF";this.RowActiveColor=this.getThemedStyle("ntb-row-active","backgroundColor")||"#FFC0FF";var c=this.getThemedStyle("ntb-row","height");if(c!=null&&c!=""){this.setRowHeight(parseInt(c))}var b=this.getThemedStyle("ntb-grid-header","height");if(b!=null&&b!=""){this.setHeaderHeight(parseInt(b))}if(nitobi.browser.IE&&nitobi.lang.isStandards()){var a=this.getThemedClass("ntb-cell-border");if(a!=null){this.setCellBorder(parseInt(a.borderLeftWidth+0)+parseInt(a.borderRightWidth+0)+parseInt(a.paddingLeft+0)+parseInt(a.paddingRight+0))}}if(nitobi.browser.MOZ){var a=this.getThemedClass("ntb-cell");if(a!=null){this.setInnerCellBorder(parseInt(a.borderLeftWidth+0)+parseInt(a.borderRightWidth+0)+parseInt(a.paddingLeft+0)+parseInt(a.paddingRight+0))}}};nitobi.grid.Grid.prototype.getThemedClass=function(c){var d=nitobi.html.Css;var b=d.getRule("."+this.getTheme()+" ."+c)||d.getRule("."+c);var a=null;if(b!=null&&b.style!=null){a=b.style}return a};nitobi.grid.Grid.prototype.getThemedStyle=function(b,a){return nitobi.html.Css.getClassStyle("."+this.getTheme()+" ."+b,a)};nitobi.grid.Grid.prototype.connectRenderersToDataSet=function(a){this.TopLeftRenderer.xmlDataSource=a;this.TopCenterRenderer.xmlDataSource=a;this.MidLeftRenderer.xmlDataSource=a;this.MidCenterRenderer.xmlDataSource=a};nitobi.grid.Grid.prototype.connectToDataSet=function(b,a){this.data=b;if(this.TopLeftRenderer){this.connectRenderersToDataSet(b)}this.connectToTable(a)};nitobi.grid.Grid.prototype.connectToTable=function(b){if(typeof(b)=="string"){this.datatable=this.data.getTable(b)}else{if(typeof(b)=="object"){this.datatable=b}else{if(this.data.getTable("_default")+""!="undefined"){this.datatable=this.data.getTable("_default")}else{return false}}}this.connected=true;this.updateStructure();var c=this.datatable;var a=nitobi.lang;c.subscribe("DataReady",a.close(this,this.handleHandlerError));c.subscribe("DataReady",a.close(this,this.syncWithData));c.subscribe("DataSorted",a.close(this,this.syncWithData));c.subscribe("RowInserted",a.close(this,this.syncWithData));c.subscribe("RowDeleted",a.close(this,this.syncWithData));c.subscribe("RowCountChanged",a.close(this,this.setRowCount));c.subscribe("PastEndOfData",a.close(this,this.adjustRowCount));c.subscribe("RowCountKnown",a.close(this,this.finalizeRowCount));c.subscribe("StructureChanged",a.close(this,this.updateStructure));c.subscribe("ColumnsInitialized",a.close(this,this.updateStructure));this.dataTableId=this.datatable.id;this.datatable.setOnGenerateKey(this.getKeyGenerator());this.fire("TableConnected",this.datatable);return true};nitobi.grid.Grid.prototype.ensureConnected=function(){if(this.data==null){this.data=new nitobi.data.DataSet();this.data.initialize();this.datatable=new nitobi.data.DataTable(this.getDataMode(),this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());this.datatable.initialize("_default",this.getGetHandler(),this.getSaveHandler());this.data.add(this.datatable);this.connectToDataSet(this.data)}if(this.datatable==null){this.datatable=this.data.getTable("_default");if(this.datatable==null){this.datatable=new nitobi.data.DataTable(this.getDataMode(),this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());this.datatable.initialize("_default",this.getGetHandler(),this.getSaveHandler());this.data.add(this.datatable)}this.connectToDataSet(this.data)}this.connected=true};nitobi.grid.Grid.prototype.updateStructure=function(){if(this.inferredColumns){this.defineColumns(this.datatable)}this.mapColumns();if(this.TopLeftRenderer){this.defineColumnBindings();this.defineColumnsFinalize()}};nitobi.grid.Grid.prototype.mapColumns=function(){this.fieldMap=this.datatable.fieldMap};nitobi.grid.Grid.prototype.configureDefaults=function(){this.initializeModel();this.displayedFirstRow=0;this.displayedRowCount=0;this.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};nitobi.grid.Grid.prototype.attachDomEvents=function(){ntbAssert(this.UiContainer!=null&&nitobi.html.getFirstChild(this.UiContainer)!=null,"The Grid has not been attached to the DOM yet using attachToDom method. Therefore, attachDomEvents cannot proceed.",null,EBA_THROW);var f=this.getGridContainer();var d=this.headerEvents;d.push({type:"mousedown",handler:this.handleHeaderMouseDown});d.push({type:"mouseup",handler:this.handleHeaderMouseUp});d.push({type:"mousemove",handler:this.handleHeaderMouseMove});nitobi.html.attachEvents(this.getHeaderContainer(),d,this);var e=this.cellEvents;e.push({type:"mousedown",handler:this.handleCellMouseDown});e.push({type:"mousemove",handler:this.handleCellMouseMove});nitobi.html.attachEvents(this.getDataContainer(),e,this);var a=this.events;a.push({type:"contextmenu",handler:this.handleContextMenu});a.push({type:"mousedown",handler:this.handleMouseDown});a.push({type:"mouseup",handler:this.handleMouseUp});a.push({type:"mousemove",handler:this.handleMouseMove});a.push({type:"mouseout",handler:this.handleMouseOut});a.push({type:"mouseover",handler:this.handleMouseOver});if(!nitobi.browser.MOZ){a.push({type:"mousewheel",handler:this.handleMouseWheel})}else{nitobi.html.attachEvent($ntb("vscrollclip"+this.uid),"mousedown",this.focus,this);nitobi.html.attachEvent($ntb("hscrollclip"+this.uid),"mousedown",this.focus,this);a.push({type:"DOMMouseScroll",handler:this.handleMouseWheel})}nitobi.html.attachEvents(f,a,this,false);if(nitobi.browser.IE){f.onselectstart=function(){var g=window.event.srcElement.id;if(g.indexOf("selectbox")==0||g.indexOf("cell")==0){return false}}}if(nitobi.browser.IE){this.keyNav=this.getScrollerContainer()}else{this.keyNav=$ntb("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);var c=$ntb("ntb-grid-resizeright"+this.uid);var b=$ntb("ntb-grid-resizebottom"+this.uid);if(c!=null){nitobi.html.attachEvent(c,"mousedown",this.beforeResize,this);nitobi.html.attachEvent(b,"mousedown",this.beforeResize,this)}};nitobi.grid.Grid.prototype.hoverCell=function(d){var c=this.hovered;if(c){var a=c.style;if(a.backgroundColor==this.CellHoverColor){a.backgroundColor=this.hoveredbg}}if(d==null||d==this.activeCell){return}var b=d.style;this.hoveredbg=b.backgroundColor;this.hovered=d;b.backgroundColor=this.CellHoverColor};nitobi.grid.Grid.prototype.hoverRow=function(f){if(!this.isRowHighlightEnabled()){return}var e=nitobi.html.Css;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(f==this.activeRow||f==null){return}var d=-1;var c=nitobi.html.getFirstChild(f);var b=nitobi.grid.Row.getRowNumber(f);var a=nitobi.grid.Row.getRowElements(this,b);if(a.left!=null&&a.left!=this.leftActiveRow){this.leftrowhoveredbg=a.left.style.backgroundColor;this.leftrowhovered=a.left;a.left.style.backgroundColor=this.RowHoverColor}if(a.mid!=null&&a.mid!=this.midActiveRow){this.midrowhoveredbg=a.mid.style.backgroundColor;this.midrowhovered=a.mid;a.mid.style.backgroundColor=this.RowHoverColor}};nitobi.grid.Grid.prototype.clearHover=function(){this.hoverCell();this.hoverRow()};nitobi.grid.Grid.prototype.handleMouseOver=function(a){this.fire("MouseOver",a)};nitobi.grid.Grid.prototype.handleMouseOut=function(a){this.clearHover();this.fire("MouseOut",a)};nitobi.grid.Grid.prototype.handleMouseDown=function(a){};nitobi.grid.Grid.prototype.handleHeaderMouseDown=function(a){var e=this.findActiveCell(a.srcElement);if(e==null){return}var d=nitobi.grid.Cell.getColumnNumber(e);if(this.headerResizeHover(a,e)){var b=this.getColumnObject(d);var c=new nitobi.grid.OnBeforeColumnResizeEventArgs(this,b);if(!nitobi.event.evaluate(b.getOnBeforeResizeEvent(),c)){return}this.columnResizer.startResize(this,d,e,a);return false}else{this.headerClicked(d);this.fire("HeaderDown",d)}};nitobi.grid.Grid.prototype.handleCellMouseDown=function(a){var b=this.findActiveCell(a.srcElement)||this.activeCell;if(b==null){return}if(!a.shiftKey){var d=this.getSelectedColumnObject();var c=new nitobi.grid.OnCellClickEventArgs(this,this.getSelectedCellObject());if(!this.fire("BeforeCellClick",c)||(!!d&&!nitobi.event.evaluate(d.getOnBeforeCellClickEvent(),c))){return}this.waitt=true;this.setCellClicked(true);this.setActiveCell(b,a.ctrlKey||a.metaKey);if(this.waitt==true){this.selection.selecting=true}var d=this.getSelectedColumnObject();var c=new nitobi.grid.OnCellClickEventArgs(this,this.getSelectedCellObject());this.fire("CellClick",c);if(!!d){nitobi.event.evaluate(d.getOnCellClickEvent(),c)}}};nitobi.grid.Grid.prototype.handleMouseUp=function(a){this.getSelection().handleSelectionMouseUp(a)};nitobi.grid.Grid.prototype.handleHeaderMouseUp=function(a){var c=this.findActiveCell(a.srcElement);if(!c){this.focus();return}var b=parseInt(c.getAttribute("xi"));this.fire("HeaderUp",b)};nitobi.grid.Grid.prototype.handleMouseMove=function(a){this.fire("MouseMove",a)};nitobi.grid.Grid.prototype.handleHeaderMouseMove=function(a){var b=this.findActiveCell(a.srcElement);if(b==null){return}if(this.headerResizeHover(a,b)){b.style.cursor="w-resize"}else{(nitobi.browser.IE?b.style.cursor="hand":b.style.cursor="pointer")}};nitobi.grid.Grid.prototype.headerResizeHover=function(c,b){var a=c.clientX;var d=nitobi.html.getBoundingClientRect(b,0,(nitobi.grid.Cell.getColumnNumber(b)>this.getFrozenLeftColumnCount()?this.scroller.getScrollLeft():0));return(a<d.right&&a>d.right-10)};nitobi.grid.Grid.prototype.handleHeaderMouseOver=function(a){a.className=a.className.replace(/(ntb-column-indicator-border)(.*?)(\s|$)/g,function(){return arguments[1]+arguments[2]+"hover "})};nitobi.grid.Grid.prototype.handleHeaderMouseOut=function(a){a.className=a.className.replace(/(ntb-column-indicator-border)(.*?)(\s|$)/g,function(){return arguments[0].replace("hover","")})};nitobi.grid.Grid.prototype.handleCellMouseMove=function(k){this.setCellClicked(false);var d=this.findActiveCell(k.srcElement);if(d==null){return}var a=this.selection;if(a.selecting){var c=k.button;var b=nitobi.html.getEventCoords(k);var h=b.x,f=b.y;if(nitobi.browser.IE){h=k.clientX,f=k.clientY}if(c==1||(c==0&&!nitobi.browser.IE)){if(!a.expanding){a.redraw(d)}else{var j=a.expandStartCoords;var g=0;if(h>j.right){g=Math.abs(h-j.right)}else{if(h<j.left){g=Math.abs(h-j.left)}}var e=0;if(f>j.bottom){e=Math.abs(f-j.bottom)}else{if(f<j.top){e=Math.abs(f-j.top)}}if(e>g){expandDir="vert"}else{expandDir="horiz"}a.expand(d,expandDir)}this.ensureCellInView(d)}else{this.selection.selecting=false}}else{this.hoverCell(d);this.hoverRow(d.parentNode)}};nitobi.grid.Grid.prototype.handleMouseWheel=function(b){this.focus();var a=0;if(b.wheelDelta){a=b.wheelDelta/120}else{if(b.detail){a=-b.detail/3}}this.scrollVerticalRelative(-20*a);nitobi.html.cancelEvent(b)};nitobi.grid.Grid.prototype.setActiveCell=function(c,b){if(!c){return}this.blurActiveCell(this.activeCell);this.focus();this.activateCell(c);var a=this.activeColumnObject;this.selection.collapse(this.activeCell);if(!this.isCellClicked()){this.ensureCellInView(this.activeCell);this.setCellClicked(false)}var e=c.parentNode;this.setActiveRow(e,b);var d=new nitobi.grid.OnCellFocusEventArgs(this,this.getSelectedCellObject());this.fire("CellFocus",d);if(!!a){nitobi.event.evaluate(a.getOnCellFocusEvent(),d)}};nitobi.grid.Grid.prototype.activateCell=function(a){this.activeCell=a;this.activeCellObject=new nitobi.grid.Cell(this,a);this.activeColumnObject=this.getSelectedColumnObject()};nitobi.grid.Grid.prototype.blurActiveCell=function(b){this.oldCell=b;var a=this.activeColumnObject;var c=new nitobi.grid.OnCellBlurEventArgs(this,this.getSelectedCellObject());if(!!a){if(!this.fire("CellBlur",c)||!nitobi.event.evaluate(a.getOnCellBlurEvent(),c)){return}}};nitobi.grid.Grid.prototype.getRowNodes=function(a){return nitobi.grid.Row.getRowElements(this,nitobi.grid.Row.getRowNumber(a))};nitobi.grid.Grid.prototype.setActiveRow=function(h,g){var d=nitobi.grid.Row;var f=d.getRowNumber(h);var e=-1;if(this.oldCell!=null){e=d.getRowNumber(this.oldCell)}if(this.selectedRows[0]!=null){e=d.getRowNumber(this.selectedRows[0])}if(!g||!this.isMultiRowSelectEnabled()){if(f!=e&&e!=-1){var c=new nitobi.grid.OnRowBlurEventArgs(this,this.getRowObject(e));if(!this.fire("RowBlur",c)||!nitobi.event.evaluate(this.getOnRowBlurEvent(),c)){return}}this.clearActiveRows()}if(this.isRowSelectEnabled()){var b=d.getRowElements(this,f);this.midActiveRow=b.mid;this.leftActiveRow=b.left;if(h.getAttribute("select")=="1"){this.clearActiveRow(h)}else{this.selectedRows.push(h);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(f!=e){var a=new nitobi.grid.OnRowFocusEventArgs(this,this.getRowObject(f));this.fire("RowFocus",a);nitobi.event.evaluate(this.getOnRowFocusEvent(),a)}};nitobi.grid.Grid.prototype.getSelectedRows=function(){return this.selectedRows};nitobi.grid.Grid.prototype.clearActiveRows=function(){for(var a=0;a<this.selectedRows.length;a++){var b=this.selectedRows[a];this.clearActiveRow(b)}this.selectedRows=[]};nitobi.grid.Grid.prototype.selectAllRows=function(){this.clearActiveRows();for(var b=0;b<this.getDisplayedRowCount();b++){var a=this.getCellElement(b,0);if(a!=null){var c=a.parentNode;this.setActiveRow(c,true)}}return this.selectedRows};nitobi.grid.Grid.prototype.clearActiveRow=function(c){var b=nitobi.grid.Row.getRowNumber(c);var a=nitobi.grid.Row.getRowElements(this,b);if(a.left!=null){a.left.removeAttribute("select");this.removeRowStyle(a.left)}if(a.mid!=null){a.mid.removeAttribute("select");this.removeRowStyle(a.mid)}};nitobi.grid.Grid.prototype.applyCellStyle=function(a){if(a==null){return}a.style.background=this.CellActiveColor};nitobi.grid.Grid.prototype.removeCellStyle=function(a){if(a==null){return}a.style.background=""};nitobi.grid.Grid.prototype.applyRowStyle=function(a){if(a==null){return}a.style.background=this.RowActiveColor};nitobi.grid.Grid.prototype.removeRowStyle=function(a){if(a==null){return}a.style.background=""};nitobi.grid.Grid.prototype.findActiveCell=function(d){var c=5;d==null;for(var b=0;b<c&&d.getAttribute;b++){var a=d.getAttribute("ebatype");if(a=="cell"||a=="columnheader"){return d}d=d.parentNode}return null};nitobi.grid.Grid.prototype.attachToParentDomElement=function(a){this.UiContainer=a;this.fire("AttachToParent")};nitobi.grid.Grid.prototype.getToolbars=function(){return this.toolbars};nitobi.grid.Grid.prototype.adjustHorizontalScrollBars=function(){var b=this.calculateWidth();var a=$ntb("ntb-grid-hscrollshow"+this.uid);if((b<=parseInt(this.getWidth()))){a.style.display="none"}else{a.style.display="block";this.resizeScroller();var c=this.getWidth()/this.calculateWidth();this.hScrollbar.setRange(c)}};nitobi.grid.Grid.prototype.createChildren=function(){var a=nitobi.lang;ntbAssert((this.UiContainer!=null),"Grid must have a UI Container");if(this.UiContainer!=null&&this.getGridContainer()==null){this.renderFrame()}this.generateFrameCss();var c=this.loadingScreen=new nitobi.grid.LoadingScreen(this);this.subscribe("Preinitialize",a.close(c,c.show));this.subscribe("HtmlReady",a.close(c,c.hide));this.subscribe("AfterGridResize",a.close(c,c.resize));c.initialize();c.attachToElement($ntb("ntb-grid-overlay"+this.uid));c.show();var f=new nitobi.grid.ColumnResizer(this);f.onAfterResize.subscribe(a.close(this,this.afterColumnResize));this.columnResizer=f;var d=new nitobi.grid.GridResizer(this);d.widthFixed=this.isWidthFixed();d.heightFixed=this.isHeightFixed();d.minWidth=this.getMinWidth();d.minHeight=Math.max(this.getMinHeight(),(this.getHeaderHeight()+this.getscrollbarHeight()));d.onAfterResize.subscribe(a.close(this,this.afterResize));this.gridResizer=d;var g=this.Scroller=this.scroller=new nitobi.grid.Scroller3x3(this,this.getHeight(),this.getDisplayedRowCount(),this.getColumnCount(),this.getfreezetop(),this.getFrozenLeftColumnCount());g.setRowHeight(this.getRowHeight());g.setHeaderHeight(this.getHeaderHeight());g.onHtmlReady.subscribe(this.handleHtmlReady,this);this.subscribe("TableConnected",a.close(g,g.setDataTable));g.setDataTable(this.datatable);this.initializeSelection();this.createRenderers();var b=this.Scroller.view;b.midleft.rowRenderer=this.MidLeftRenderer;b.midcenter.rowRenderer=this.MidCenterRenderer;b.topleft.rowRenderer=this.TopLeftRenderer;b.topcenter.rowRenderer=this.TopCenterRenderer;this.mapToHtml();var h=this.vScrollbar=new nitobi.ui.VerticalScrollbar();h.attachToParent(this.element,$ntb("vscroll"+this.uid));h.subscribe("ScrollByUser",a.close(this,this.scrollVertical));this.subscribe("PercentHeightChanged",a.close(h,h.setRange));this.subscribe("ScrollVertical",a.close(h,h.setScrollPercent));this.setscrollbarWidth(h.getWidth());var e=this.hScrollbar=new nitobi.ui.HorizontalScrollbar();e.attachToParent(this.element,$ntb("hscroll"+this.uid));e.subscribe("ScrollByUser",a.close(this,this.scrollHorizontal));this.subscribe("PercentWidthChanged",a.close(e,e.setRange));this.subscribe("ScrollHorizontal",a.close(e,e.setScrollPercent));this.setscrollbarHeight(e.getHeight())};nitobi.grid.Grid.prototype.createToolbars=function(d){var b=this.toolbars=new nitobi.ui.Toolbars(this,(this.isToolbarEnabled()?d:0));var c=document.getElementById("toolbarContainer"+this.uid);b.setWidth(this.getWidth());b.setHeight(this.getToolbarHeight());b.setRowInsertEnabled(this.isRowInsertEnabled());b.setRowDeleteEnabled(this.isRowDeleteEnabled());b.attachToParent(c);var a=nitobi.lang;b.subscribe("InsertRow",a.close(this,this.insertAfterCurrentRow));b.subscribe("DeleteRow",a.close(this,this.deleteCurrentRow));b.subscribe("Save",a.close(this,this.save));b.subscribe("Refresh",a.close(this,this.refresh));this.subscribe("AfterGridResize",a.close(this,this.resizeToolbars))};nitobi.grid.Grid.prototype.resizeToolbars=function(){this.toolbars.setWidth(this.getWidth());this.toolbars.resize()};nitobi.grid.Grid.prototype.scrollVerticalRelative=function(b){var a=this.scroller.getScrollTop()+b;var c=this.Scroller.view.midcenter;percent=a/(c.container.offsetHeight-c.element.offsetHeight);this.scrollVertical(percent)};nitobi.grid.Grid.prototype.scrollVertical=function(b){this.focus();this.clearHover();var a=this.scroller.getScrollTopPercent();this.scroller.setScrollTopPercent(b);this.fire("ScrollVertical",b);if(b>0.99&&a<0.99){this.fire("ScrollHitBottom",b)}if(b<0.01){this.fire("ScrollHitTop",b)}};nitobi.grid.Grid.prototype.scrollHorizontalRelative=function(b){var a=this.scroller.getScrollLeft()+b;var c=this.scroller.view.midcenter;percent=a/(c.container.offsetWidth-c.element.offsetWidth);this.scrollHorizontal(percent)};nitobi.grid.Grid.prototype.scrollHorizontal=function(a){this.focus();this.clearHover();this.scroller.setScrollLeftPercent(a);this.fire("ScrollHorizontal",a);if(a>0.99){this.fire("ScrollHitRight",a)}if(a<0.01){this.fire("ScrollHitLeft",a)}};nitobi.grid.Grid.prototype.getScrollSurface=function(){if(this.Scroller!=null){return this.Scroller.view.midcenter.element}};nitobi.grid.Grid.prototype.getActiveView=function(){var a=nitobi.grid.Cell;return this.Scroller.getViewportByCoords(a.getRowNumber(this.activeCell),a.getColumnNumber(this.activeCell))};nitobi.grid.Grid.prototype.ensureCellInView=function(g){var l=this.getScrollSurface();var j=g||this.activeCell;if(j==null){return}var k=0;var m=0;if(!nitobi.browser.IE){k=l.scrollTop;m=l.scrollLeft}var f=nitobi.html.getBoundingClientRect(j);var e=nitobi.html.getBoundingClientRect(l);var a=EBA_SELECTION_BUFFER||0;var h=f.top-e.top-a-k;var d=f.bottom-e.bottom+a-k;var c=f.left-e.left-a-m;var b=f.right-e.right+a-m;if(h<0){this.scrollVerticalRelative(h)}if(d>0){this.scrollVerticalRelative(d)}if(nitobi.grid.Cell.getColumnNumber(j)>this.getFrozenLeftColumnCount()-1){if(c<0){this.scrollHorizontalRelative(c)}if(b>0){this.scrollHorizontalRelative(b)}}this.fire("CellCoordsChanged",f)};nitobi.grid.Grid.prototype.updateCellRanges=function(){if(this.frameRendered){var c=this.getRowCount();this.Scroller.updateCellRanges(this.getColumnCount(),c,this.getFrozenLeftColumnCount(),this.getfreezetop());this.measure();this.resizeScroller();var b=this.isToolbarEnabled()?this.getHeight()-this.getToolbarHeight():this.getHeight();var a=$ntb("ntb-grid-hscrollshow"+this.uid);b=b-a.clientHeight;this.fire("PercentHeightChanged",(b)/this.calculateHeight());this.fire("PercentWidthChanged",this.getWidth()/this.calculateWidth())}};nitobi.grid.Grid.prototype.measure=function(){this.measureViews();this.sizeValid=true};nitobi.grid.Grid.prototype.measureViews=function(){this.measureRows();this.measureColumns()};nitobi.grid.Grid.prototype.measureColumns=function(){var e=this.getFrozenLeftColumnCount();var f=0;var g=0;var c=this.getColumnDefinitions();var b=c.length;for(var d=0;d<b;d++){if(c[d].getAttribute("Visible")=="1"||c[d].getAttribute("visible")=="1"){var a=Number(c[d].getAttribute("Width"));g+=a;if(d<e){f+=a}}}this.setleft(f)};nitobi.grid.Grid.prototype.measureRows=function(){var a=this.isColumnIndicatorsEnabled()?this.getHeaderHeight():0;this.settop(this.calculateHeight(0,this.getfreezetop()-1)+a)};nitobi.grid.Grid.prototype.resizeScroller=function(){var d=(this.getToolbars()!=null&&this.isToolbarEnabled()?this.getToolbarHeight():0);var c=this.isColumnIndicatorsEnabled()?this.getHeaderHeight():0;var b=$ntb("ntb-grid-hscrollshow"+this.uid);var a=b.clientHeight;this.Scroller.resize(this.getHeight()-d-c-a)};nitobi.grid.Grid.prototype.resize=function(b,a){this.setWidth(b);this.setHeight(a);this.generateCss();this.fire("AfterGridResize",{source:this,width:b,height:a})};nitobi.grid.Grid.prototype.beforeResize=function(a){var b=new nitobi.base.EventArgs(this);if(!nitobi.event.evaluate(this.getOnBeforeResizeEvent(),b)){return}this.gridResizer.startResize(this,a)};nitobi.grid.Grid.prototype.afterResize=function(){this.resize(this.gridResizer.newWidth,this.gridResizer.newHeight);this.syncWithData()};nitobi.grid.Grid.prototype.afterColumnResize=function(c){var a=this.getColumnObject(c.column);var b=a.getWidth();this.columnResize(a,b+c.dx)};nitobi.grid.Grid.prototype.columnResize=function(j,h){if(isNaN(h)){return}j=(typeof j=="object"?j:this.getColumnObject(j));var f=j.getWidth();j.setWidth(h);this.updateCellRanges();if(nitobi.browser.IE7){this.generateCss()}else{var d=j.column;var l=h-f;var a=nitobi.html.Css;if(d<this.getFrozenLeftColumnCount()){var b=a.getClass(".ntb-grid-leftwidth"+this.uid);b.width=(parseInt(b.width)+l)+"px";var k=a.getClass(".ntb-grid-centerwidth"+this.uid);k.width=(parseInt(k.width)-l)+"px"}else{var g=a.getClass(".ntb-grid-surfacewidth"+this.uid);g.width=(parseInt(g.width)+l)+"px"}var e=a.getClass(".ntb-column"+this.uid+"_"+(d+1));e.width=(parseInt(e.width)+l)+"px";this.adjustHorizontalScrollBars()}this.Selection.collapse(this.activeCell);var c=new nitobi.grid.OnAfterColumnResizeEventArgs(this,j);nitobi.event.evaluate(j.getOnAfterResizeEvent(),c)};nitobi.grid.Grid.prototype.initializeModel=function(){this.model=nitobi.xml.createXmlDoc(nitobi.xml.serialize(nitobi.grid.modelDoc));this.modelNode=this.model.documentElement.selectSingleNode("//nitobi.grid.Grid");var b=nitobi.html.getScrollBarWidth();if(b){this.setscrollbarWidth(b);this.setscrollbarHeight(b)}var c=this.model.selectSingleNode("state/nitobi.grid.Columns");if(c==null){var c=this.model.createElement("nitobi.grid.Columns");this.model.documentElement.appendChild(nitobi.xml.importNode(this.model,c,true))}var a=this.getColumnCount();if(a>0){this.defineColumns(a)}else{this.columnsDefined=false;this.inferredColumns=true}this.model.documentElement.setAttribute("ID",this.uid);this.model.documentElement.setAttribute("uniqueID",this.uid)};nitobi.grid.Grid.prototype.clearDefaultData=function(b){for(var a=0;a<b;a++){var c=this.model.createElement("e");c.setAttribute("xi",a+1);xDec.appendChild(c)}};nitobi.grid.Grid.prototype.createRenderers=function(){var d=this.uid;var b=this.getRowHeight();var a=["TopLeftRenderer","TopCenterRenderer","MidLeftRenderer","MidCenterRenderer"];for(var c=0;c<4;c++){this[a[c]]=new nitobi.grid.RowRenderer(this.data,null,b,null,null,d)}};nitobi.grid.Grid.prototype.bind=function(){if(this.isBound()){this.clear();this.datatable.descriptor.reset()}};nitobi.grid.Grid.prototype.dataBind=function(){this.bind()};nitobi.grid.Grid.prototype.getDataSource=function(a){var b=this.dataTableId||"_default";if(a){b=a}return this.data.getTable(b)};nitobi.grid.Grid.prototype.getChangeLogXmlDoc=function(a){return this.getDataSource(a).getChangeLogXmlDoc()};nitobi.grid.Grid.prototype.getComplete=function(b){if(null==b.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 a=b.dataSource.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+b.dataSource.id+"']");ntbAssert((null!=a),"Datasource is not avialable in bindComplete handler.\n")};nitobi.grid.Grid.prototype.bindComplete=function(){if(this.inferredColumns&&!this.columnsDefined){this.defineColumns(this.datatable)}this.setRowCount(this.datatable.remoteRowCount);this.setBound(true);this.syncWithData()};nitobi.grid.Grid.prototype.syncWithData=function(a){if(this.isBound()){this.Scroller.render(true);this.fire("DataReady",{source:this})}};nitobi.grid.Grid.prototype.finalizeRowCount=function(a){this.rowCountKnown=true;this.setRowCount(a)};nitobi.grid.Grid.prototype.adjustRowCount=function(a){this.scrollVertical(a)};nitobi.grid.Grid.prototype.setRowCount=function(a){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(a)}this.rowCount=a;this.updateCellRanges()};nitobi.grid.Grid.prototype.getRowCount=function(){return this.rowCount};nitobi.grid.Grid.prototype.layout=function(a){if(this.prevHeight!=this.getHeight()||this.prevWidth!=this.getWidth()){this.prevHeight=this.getHeight();this.prevWidth=this.getWidth();this.layoutValid=false}if(!this.layoutValid&&this.frameRendered){this.layoutFrame();this.generateFrameCss();this.layoutValid=true}};nitobi.grid.Grid.prototype.layoutFrame=function(h){if(!this.frameRendered){return}if(!this.Scroller){return}this.minHeight=this.getMinHeight();this.minWidth=this.getMinWidth();var f=false;var e=false;var x=this.getToolbarHeight();var k=this.getRowHeight();var a=20;var l=this.getscrollbarHeight();var d=this.getscrollbarWidth();var b=this.getHeaderHeight();x=this.isToolbarEnabled()?x:0;b=this.isColumnIndicatorsEnabled?b:0;var j=Math.max(this.minHeight,x+k+l+b);var g=this.Height;var w=Math.max(this.minWidth,a+d);var v=this.Width;if(f){var c=this.Scroller.minSurfaceWidth;var t=this.Scroller.maxSurfaceWidth}else{var c=this.Scroller.SurfaceWidth;var t=c}if(e){var s=this.Scroller.minSurfaceHeight;var r=this.Scroller.maxSurfaceHeight}else{var s=this.Scroller.SurfaceHeight;var r=s}var p=s+(x)+(b);var o=c;var n=(p>g);var m=(o>v);var n=(m&&((p+20)>g))||n;var m=(n&&((o+20)>v))||m;l=m?l:0;sbV=n?sbV:0;var u=p-b-x-l;var q=o-d;this.resize()};nitobi.grid.Grid.prototype.defineColumns=function(a){this.fire("BeforeColumnsDefined");this.resetColumns();var c=null;var b=nitobi.lang.typeOf(a);this.inferredColumns=false;switch(b){case"string":c=this.defineColumnsFromString(a);break;case nitobi.lang.type.XMLNODE:case nitobi.lang.type.XMLDOC:case nitobi.lang.type.HTMLNODE:c=this.defineColumnsFromXml(a);break;case nitobi.lang.type.ARRAY:c=this.defineColumnsFromArray(a);break;case"object":this.inferredColumns=true;c=this.defineColumnsFromData(a);break;case"number":c=this.defineColumnsCollection(a);break;default:}this.fire("AfterColumnsDefined");this.defineColumnsFinalize();return c};nitobi.grid.Grid.prototype.defineColumnsFromXml=function(o){if(o==null||o.childNodes.length==0){return this.defineColumnsCollection(0)}if(o.childNodes[0].nodeName==nitobi.xml.nsPrefix+"columndefinition"){var n=nitobi.grid.declarationConverterXslProc;o=nitobi.xml.transformToXml(o,n)}var D=0,q=0,t=0;var E=this.model.selectSingleNode("/state/Defaults/nitobi.grid.Column");var B=this.getColumnDefinitions().length;var m=o.childNodes.length;var u=this.model.selectSingleNode("state/nitobi.grid.Columns");ntbAssert((o&&o.xml!=""),"There are either no column definitions defined in the HTML declaration or they could not be parsed as valid XML.","",EBA_DEBUG);var x=o.childNodes;var b=this.getFrozenLeftColumnCount();if(B==0){var m=x.length;for(var s=0;s<m;s++){var k=x[s];var r="";var C=k.nodeName;var A=k.selectSingleNode("ntb:texteditor|ntb:numbereditor|ntb:textareaeditor|ntb:imageeditor|ntb:linkeditor|ntb:dateeditor|ntb:lookupeditor|ntb:listboxeditor|ntb:checkboxeditor|ntb:passwordeditor");var z="TEXT";var w={"ntb:textcolumn":"EBATextColumn","ntb:numbercolumn":"EBANumberColumn","ntb:datecolumn":"EBADateColumn"};var r=w[C].replace("EBA","").replace("Column","").toLowerCase();var v={"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(A!=null){z=v[A.nodeName]||z}else{z=w[C]||z}z=z.replace("EBA","").replace("Editor","").replace("Column","").toUpperCase();var y=this.model.selectSingleNode("/state/Defaults/nitobi.grid.Column[@DataType='"+(r)+"' and @type='"+z+"' and @editor='"+z+"']").cloneNode(true);this.setModelValues(y,k);var l=w[k.nodeName]||"EBATextColumn";this.defineColumnDatasource(y);this.defineColumnBinding(y);u.appendChild(y);var j=y.getAttribute("GetHandler");if(j){var h=y.getAttribute("DatasourceId");if(!h||h==""){h="columnDatasource_"+s+"_"+this.uid;y.setAttribute("DatasourceId",h)}var p=new nitobi.data.DataTable("local",this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());p.initialize(h,j,null);p.async=false;this.data.add(p);var g=[];g[0]=y;var f=y.getAttribute("editor");var d=null;var c=null;if(y.getAttribute("editor")=="LOOKUP"){d=0;c=1;p.async=true}p.get(d,c,this,nitobi.lang.close(this,this.editorDataReady,[y]),function(){ntbAssert(false,"Datasource for "+y.getAttribute("ColumnName"),"",EBA_WARN)})}}this.measureColumns();this.setColumnCount(m)}var a;a=o.selectSingleNode("/"+nitobi.xml.nsPrefix+"grid/"+nitobi.xml.nsPrefix+"datasources");if(a){this.Declaration.datasources=nitobi.xml.createXmlDoc(a.xml)}return u};nitobi.grid.Grid.prototype.defineColumnsFinalize=function(){this.setColumnsDefined(true);if(this.connected){if(this.frameRendered){this.makeXSL();this.generateColumnCss();this.renderHeaders()}}};nitobi.grid.Grid.prototype.defineColumnDatasource=function(_159){var val=_159.getAttribute("Datasource");if(val!=null){var ds=new Array();try{ds=eval(val)}catch(e){var _15c=val.split(",");if(_15c.length>0){for(var i=0;i<_15c.length;i++){var item=_15c[i];ds[i]={text:item.split(":")[0],display:item.split(":")[1]}}}return}if(typeof(ds)=="object"&&ds.length>0){var _15f=new nitobi.data.DataTable("unbound",this.getPagingMode()==nitobi.grid.PAGINGMODE_LIVESCROLLING,{GridId:this.getID()},{GridId:this.getID()},this.isAutoKeyEnabled());var _160="columnDatasource"+new Date().getTime();_15f.initialize(_160);_159.setAttribute("DatasourceId",_160);var _161="";for(var item in ds[0]){_161+=item+"|"}_161=_161.substring(0,_161.length-1);_15f.initializeColumns(_161);for(var i=0;i<ds.length;i++){_15f.createRecord(null,i);for(var item in ds[i]){_15f.updateRecord(i,item,ds[i][item])}}this.data.add(_15f);this.editorDataReady(_159)}}};nitobi.grid.Grid.prototype.defineColumnsFromData=function(f){if(f==null){f=this.datatable}var e=f.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure");if(e==null){return this.defineColumnsCollection(0)}var c=e.getAttribute("FieldNames");if(c.length==0){return this.defineColumnsCollection(0)}var b=e.getAttribute("defaults");var a=this.defineColumnsFromString(c);for(var d=0;d<a.length;d++){if(b&&d<b.length){a[d].setAttribute("initial",b[d]||"")}a[d].setAttribute("width",100)}this.inferredColumns=true;return a};nitobi.grid.Grid.prototype.defineColumnsFromString=function(a){return this.defineColumnsFromArray(a.split("|"))};nitobi.grid.Grid.prototype.defineColumnsFromArray=function(e){var d=e.length;var a=this.defineColumnsCollection(d);for(var c=0;c<d;c++){var b=a[c];if(typeof(e[c])=="string"){b.setAttribute("ColumnName",e[c]);b.setAttribute("xdatafld_orig",e[c]);b.setAttribute("DataField_orig",e[c]);b.setAttribute("Label",e[c]);if(typeof(this.fieldMap[e[c]])!="undefined"){b.setAttribute("xdatafld",this.fieldMap[e[c]]);b.setAttribute("DataField",this.fieldMap[e[c]])}else{b.setAttribute("xdatafld","unbound");b.setAttribute("DataField","unbound")}}else{if(e[c].name!="_xk"){b.setAttribute("ColumnName",b.name);b.setAttribute("xdatafld_orig",b.name);b.setAttribute("DataField_orig",b.name);b.setAttribute("xdatafld",this.fieldMap[e[c].name]);b.setAttribute("DataField",this.fieldMap[e[c].name]);b.setAttribute("Width",b.width);b.setAttribute("Label",b.label);b.setAttribute("Initial",b.initial);b.setAttribute("Mask",b.mask)}}}this.setColumnCount(d);return a};nitobi.grid.Grid.prototype.defineColumnBindings=function(){var b=nitobi.grid.rowXslProc.stylesheet;var d=this.getColumnDefinitions();for(var a=0;a<d.length;a++){var c=d[a];this.defineColumnBinding(c,b);c.setAttribute("xi",a)}nitobi.grid.rowXslProc=nitobi.xml.createXslProcessor(b)};nitobi.grid.Grid.prototype.defineColumnBinding=function(e,d){if(this.fieldMap==null){return}var c=e.getAttribute("xdatafld");var b=e.getAttribute("xdatafld_orig");if(b==null||b==""){e.setAttribute("xdatafld_orig",c);e.setAttribute("DataField_orig",c)}else{c=e.getAttribute("xdatafld_orig")}e.setAttribute("ColumnName",c);var a=this.fieldMap[c];if(typeof(a)!="undefined"){e.setAttribute("xdatafld",a);e.setAttribute("DataField",a)}this.formatBinding(e,"CssStyle",d);this.formatBinding(e,"ClassName",d);this.formatBinding(e,"Value",d)};nitobi.grid.Grid.prototype.formatBinding=function(l,k,c){var q=l.getAttribute(k);var p=l.getAttribute(k+"_orig");if(q==null||q==""){return}if(p==null||p==""){l.setAttribute(k+"_orig",q)}q=l.getAttribute(k+"_orig");var r=new RegExp("\\{.[^}]*}","gi");var n=q.match(r);if(n==null){return}for(var o=0;o<n.length;o++){var h=n[o];var g=h;var f=new RegExp("\\$.*?[^0-9a-zA-Z_]","gi");var e=g.match(f);for(var m=0;m<e.length;m++){var d=e[m];var b=d.substring(0,d.length-1);var a=b.substring(1);var s=this.fieldMap[a]+"";g=g.replace(b,s.substring(1)||"")}g=g.substring(1,g.length-1);q=q.replace(h,g).replace(/\{\}/g,"")}l.setAttribute(k,q)};nitobi.grid.Grid.prototype.defineColumnsCollection=function(f){var g=this.model.selectSingleNode("state/nitobi.grid.Columns");var c=g.childNodes;var b=this.model.selectSingleNode("/state/Defaults/nitobi.grid.Column");for(var a=0;a<f;a++){var d=b.cloneNode(true);g.appendChild(d);d.setAttribute("xi",a);d.setAttribute("title",(a>25?String.fromCharCode(Math.floor(a/26)+65):"")+(String.fromCharCode(a%26+65)))}this.setColumnCount(f);var c=g.selectNodes("*");return c};nitobi.grid.Grid.prototype.resetColumns=function(){this.fire("BeforeClearColumns");this.inferredColumns=true;this.columnsDefined=false;var a=this.model.selectSingleNode("state/nitobi.grid.Columns");var b=this.model.createElement("nitobi.grid.Columns");if(a==null){this.model.documentElement.appendChild(b)}else{this.model.documentElement.replaceChild(b,a)}this.setColumnCount(0);this.fire("AfterClearColumns")};nitobi.grid.Grid.prototype.renderHeaders=function(){if(this.getColumnDefinitions().length>0){this.Scroller.clearSurfaces(false,true);var c=0;endRow=this.getfreezetop()-1;var b=this.Scroller.view.topleft;b.top=this.getHeaderHeight();b.left=0;b.renderGap(c,endRow,false,"*");var a=this.Scroller.view.topcenter;a.top=this.getHeaderHeight();a.left=0;a.renderGap(c,endRow,false)}};nitobi.grid.Grid.prototype.initializeSelection=function(){var a=new nitobi.grid.Selection(this,this.isDragFillEnabled());a.setRowHeight(this.getRowHeight());a.onAfterExpand.subscribe(this.afterExpandSelection,this);a.onBeforeExpand.subscribe(this.beforeExpandSelection,this);a.onMouseUp.subscribe(this.handleSelectionMouseUp,this);this.selection=this.Selection=a};nitobi.grid.Grid.prototype.beforeExpandSelection=function(a){this.setExpanding(true);this.fire("BeforeDragFill",new nitobi.base.EventArgs(this,a))};nitobi.grid.Grid.prototype.afterExpandSelection=function(q){var t=this.selection;var n=t.getCoords();var m=n.top.y;var l=n.bottom.y;var s=n.top.x;var r=n.bottom.x;var p=this.getTableForSelection({top:{x:t.expandStartLeftColumn,y:t.expandStartTopRow},bottom:{x:t.expandStartRightColumn,y:t.expandStartBottomRow}});var x="",o=this.getClipboard();if(t.expandingVertical){if(t.expandStartBottomRow>l&&m>=t.expandStartTopRow){for(var v=t.expandStartLeftColumn;v<=t.expandStartRightColumn;v++){for(var u=l+1;u<t.expandStartBottomRow+1;u++){this.getCellObject(u,v).setValue("")}}}else{var k=(t.expandStartBottomRow<l);var h=(t.expandStartTopRow>m);var f=(k||h);if(f){if(p.lastIndexOf("\n")==p.length-1){p=p.substring(0,p.length-1)}var b=(Math.floor((t.getHeight()-!f)/t.expandStartHeight));for(var v=0;v<b;v++){x+=p+(!nitobi.browser.IE?"\n":"")}d=p.split("\n");var w=(t.getHeight()-!f)%t.expandStartHeight;var y="";if(k){d.splice(w,d.length-w);y=x+d.join("\n")+(d.length>0?"\n":"")}else{d.splice(0,d.length-w);y=d.join("\n")+(d.length>0?"\n":"")+x}o.value=y;this.pasteDataReady(o)}}}else{if(t.expandStartRightColumn>r&&s>=t.expandStartLeftColumn){for(var v=s+1;v<=t.expandStartRightColumn+1;v++){for(var u=t.expandStartTopRow;u<t.expandStartBottomRow;u++){this.getCellObject(u,v).setValue("")}}}else{var c=t.expandStartRightColumn<r;var a=t.expandStartLeftColumn>s;var f=(c||a);if(f){var w=(t.getWidth()-!f)%t.expandStartWidth;var g=(!nitobi.browser.IE?"\n":"\r\n");if(p.lastIndexOf(g)==p.length-g.length){p=p.substring(0,p.length-g.length)}var d=p.replace(/\r/g,"").split("\n");var x=new Array(d.length);var b=(Math.floor((t.getWidth()-!f)/t.expandStartWidth));for(var v=0;v<d.length;v++){var e=d[v].split("\t");for(var u=0;u<b;u++){x[v]=(x[v]==null?[]:x[v]).concat(e)}if(w!=0){if(c){x[v]=x[v].concat(e.splice(0,w))}else{x[v]=e.splice(w,e.length-w).concat(x[v])}}x[v]=x[v].join("\t")}o.value=x.join("\n")+"\n";this.pasteDataReady(o)}}}this.setExpanding(false);this.fire("AfterDragFill",new nitobi.base.EventArgs(this,q))};nitobi.grid.Grid.prototype.calculateHeight=function(c,a){c=(c!=null)?c:0;var b=this.getDisplayedRowCount();a=(a!=null)?a:b-1;return(a-c+1)*this.getRowHeight()};nitobi.grid.Grid.prototype.calculateWidth=function(d,a){var c=this.getColumnDefinitions();var e=c.length;d=d||0;a=(a!=null)?Math.min(a,e):e;var f=0;for(var b=d;b<a;b++){if(c[b].getAttribute("Visible")=="1"||c[b].getAttribute("visible")=="1"){f+=Number(c[b].getAttribute("Width"))}}return(f)};nitobi.grid.Grid.prototype.maximize=function(){var b,c;var a=this.element.offsetParent;b=a.clientWidth;c=a.clientHeight;this.resize(b,c)};nitobi.grid.Grid.prototype.editorDataReady=function(e){var d=e.getAttribute("DisplayFields").split("|");var m=e.getAttribute("ValueField");var l=this.data.getTable(e.getAttribute("DatasourceId"));var k=e.getAttribute("Initial");if(k==""){var h=e.getAttribute("type").toLowerCase();switch(h){case"checkbox":case"listbox":var f=l.fieldMap[m].substring(1);var j=l.getDataXmlDoc();if(j!=null){var b=j.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+f+"='"+k+"']");if(b==null){var c=j.selectSingleNode("//"+nitobi.xml.nsPrefix+"e");if(c!=null){k=c.getAttribute(f)}}}break}e.setAttribute("Initial",k)}if((d.length==1&&d[0]=="")&&(m==null||m=="")){for(var n in l.fieldMap){d[0]=l.fieldMap[n].substring(1);break}}else{for(var g=0;g<d.length;g++){d[g]=l.fieldMap[d[g]].substring(1)}}var a=d.join("|");if(m==null||m==""){m=d[0]}else{m=l.fieldMap[m].substring(1)}e.setAttribute("DisplayFields",a);e.setAttribute("ValueField",m)};nitobi.grid.Grid.prototype.headerClicked=function(c){var b=this.getColumnObject(c);var a=new nitobi.grid.OnHeaderClickEventArgs(this,b);if(!this.fire("HeaderClick",a)||!nitobi.event.evaluate(b.getOnHeaderClickEvent(),a)){return}this.sort(c)};nitobi.grid.Grid.prototype.addFilter=function(){this.dataTable.addFilter(arguments)};nitobi.grid.Grid.prototype.clearFilter=function(){this.dataTable.clearFilter()};nitobi.grid.Grid.prototype.setSortStyle=function(b,a,d){var c=this.getColumnObject(b);if(d){this.sortColumn=null;this.sortColumnCell=null;this.Scroller.setSort(b,"");this.setColumnSortOrder(b,"")}else{c.setSortDirection(a);this.setColumnSortOrder(b,a);this.sortColumn=c;this.sortColumnCell=c.getHeaderElement();this.Scroller.setSort(b,a)}};nitobi.grid.Grid.prototype.sort=function(d,c){ntbAssert(typeof(d)!="undefined","No column to sort.");var b=this.getColumnObject(d);if(b==null||!b.isSortEnabled()||(!this.isSortEnabled())){return}var g=new nitobi.grid.OnBeforeSortEventArgs(this,b);if(!this.fire("BeforeSort",g)||!nitobi.event.evaluate(b.getOnBeforeSortEvent(),g)){return}if(c==null||typeof(c)=="undefined"){c=(b.getSortDirection()=="Asc")?"Desc":"Asc"}this.setSortStyle(d,c);var a=b.getColumnName();var f=b.getDataType();var e=this.getSortMode()=="local"||(this.getDataMode()=="local"&&this.getSortMode()!="remote");this.datatable.sort(a,c,f,e);if(!e){this.datatable.flush()}this.clearSurfaces();this.scrollVertical(0);if(!e){this.loadDataPage(0)}this.subscribeOnce("HtmlReady",this.handleAfterSort,this,[b])};nitobi.grid.Grid.prototype.handleAfterSort=function(b){var a=new nitobi.grid.OnAfterSortEventArgs(this,b);this.fire("AfterSort",a);nitobi.event.evaluate(b.getOnAfterSortEvent(),a)};nitobi.grid.Grid.prototype.handleDblClick=function(b){var a=this.activeCellObject;var d=this.activeColumnObject;var c=new nitobi.grid.OnCellDblClickEventArgs(this,a);return this.fire("CellDblClick",c)&&nitobi.event.evaluate(d.getOnCellDblClickEvent(),c)};nitobi.grid.Grid.prototype.clearData=function(){if(this.getDataMode()!="local"){this.datatable.flush()}};nitobi.grid.Grid.prototype.clearColumnHeaderSortOrder=function(){if(this.sortColumn){var a=this.sortColumn;var c=a.getHeaderElement();var b=c.className;b=b.replace(/ascending/gi,"").replace(/descending/gi,"");c.className=b;this.sortColumn=null}};nitobi.grid.Grid.prototype.setColumnSortOrder=function(e,c){this.clearColumnHeaderSortOrder();var b=this.getColumnObject(e);var a=b.getHeaderElement();var f=nitobi.html.Css;var d=a.className;if(c==""){a.className=d.replace(/(ntb-column-indicator-border)(.*?)(\s|$)/g,"")+" ntb-column-indicator-border";c="Desc"}else{a.className=d.replace(/(ntb-column-indicator-border)(.*?)(\s|$)/g,function(g){var h=(c=="Desc"?"descending":"ascending");return(g.indexOf("hover")>0?g.replace("hover",h+"hover"):g+h)})}b.setSortDirection(c);this.sortColumn=b;this.sortColumnCell=a};nitobi.grid.Grid.prototype.initializeState=function(){};nitobi.grid.Grid.prototype.mapToHtml=function(a){if(a==null){a=this.UiContainer}this.Scroller.mapToHtml(a);this.element=document.getElementById("grid"+this.uid);this.element.jsObject=this};nitobi.grid.Grid.prototype.generateCss=function(){this.generateFrameCss()};nitobi.grid.Grid.prototype.generateColumnCss=function(){this.generateCss()};nitobi.grid.Grid.prototype.generateFrameCss=function(){var g=nitobi.xml.serialize(this.model);if(this.oldModel==g){return}this.oldModel=nitobi.xml.serialize(this.model);if(nitobi.browser.IE&&document.compatMode=="CSS1Compat"){this.frameCssXslProc.addParameter("IE","true","")}var d=nitobi.xml.transformToString(this.model,this.frameCssXslProc);if(!nitobi.browser.SAFARI&&!nitobi.browser.CHROME&&this.stylesheet==null){this.stylesheet=nitobi.html.Css.createStyleSheet()}var b=this.getScrollSurface();var c=0;var a=0;if(b!=null){c=b.scrollTop;a=b.scrollLeft}if(this.oldFrameCss!=d){this.oldFrameCss=d;if(nitobi.browser.SAFARI||nitobi.browser.CHROME){this.generateFrameCssSafari()}else{try{this.stylesheet.cssText=d}catch(f){}if(b!=null){if(nitobi.browser.MOZ){this.scrollVerticalRelative(c);this.scrollHorizontalRelative(a)}b.style.top="0px";b.style.left="0px"}}}};nitobi.grid.Grid.prototype.generateFrameCssSafari=function(){var j=document.styleSheets[0];var e=this.uid;var g=this.getTheme();var f=this.getWidth();var d=this.getHeight();var c=(this.isVScrollbarEnabled()?1:0);var y=(this.isHScrollbarEnabled()?1:0);var x=(this.isToolbarEnabled()?1:0);var w=this.calculateWidth(0,this.getFrozenLeftColumnCount());var v=this.calculateWidth(this.getFrozenLeftColumnCount(),this.getColumnCount());var s=w+v;var r=d-this.getscrollbarHeight()*y-this.getToolbarHeight()*x;var o=f-this.getscrollbarWidth()*c;var m=r-this.gettop();var l=nitobi.html.Css.addRule;var h="ntb-grid-";if(this.rules==null){this.rules={};this.rules[".ntb-grid-datablock"]=l(j,".ntb-grid-datablock","table-layout:fixed;width:100%;");this.rules[".ntb-grid-headerblock"]=l(j,".ntb-grid-headerblock","table-layout:fixed;width:100%;");l(j,"."+h+"overlay"+e,"position:relative;z-index:1000;top:0px;left:0px;");l(j,"."+h+"scroller"+e,"overflow:hidden;text-align:left;");l(j,".ntb-grid","padding:0px;margin:0px;border:1px solid #cccccc;");l(j,".ntb-scroller","padding:0px;");l(j,".ntb-scrollcorner","padding:0px;");l(j,".ntb-input-border","table-layout:fixed;overflow:hidden;position:absolute;z-index:2000;top:-2000px;left:-2000px;;");l(j,".ntb-column-resize-surface","filter:alpha(opacity=1);background-color:white;position:absolute;visibility:hidden;top:0;left:0;width:100;height:100;z-index:800;");l(j,".ntb-column-indicator","overflow:hidden;white-space: nowrap;")}this.rules["#grid"+e]=l(j,"#grid"+e,"overflow:hidden;text-align:left;-moz-user-select: none;-khtml-user-select: none;user-select: none;"+(nitobi.browser.IE?"position:relative;":""));this.rules["#grid"+e].style.height=d+"px";this.rules["#grid"+e].style.width=f+"px";l(j,".hScrollbarRange"+e,"width:"+s+"px;");l(j,".vScrollbarRange"+e,"");l(j,"."+g+" .ntb-cell","overflow:hidden;white-space:nowrap;");l(j,"."+g+" .ntb-cell-border","overflow:hidden;white-space:nowrap;"+(nitobi.browser.IE?"height:auto;":"")+";");l(j,".ntb-grid-headershow"+e,"padding:0px;"+(this.isColumnIndicatorsEnabled()?"display:none;":"")+"");l(j,".ntb-grid-vscrollshow"+e,"padding:0px;"+(c?"":"display:none;")+"");l(j,"#ntb-grid-hscrollshow"+e,"padding:0px;"+(y?"":"display:none;")+"");l(j,".ntb-grid-toolbarshow"+e,""+(x?"":"display:none;")+"");l(j,".ntb-grid-height"+e,"height:"+d+"px;overflow:hidden;");l(j,".ntb-grid-width"+e,"width:"+f+"px;overflow:hidden;");l(j,".ntb-grid-overlay"+e,"position:relative;z-index:1000;top:0px;left:0px;");l(j,".ntb-grid-scroller"+e,"overflow:hidden;text-align:left;");l(j,".ntb-grid-scrollerheight"+e,"height:"+(s>f?r:r+this.getscrollbarHeight())+"px;");l(j,".ntb-grid-scrollerwidth"+e,"width:"+o+"px;");l(j,".ntb-grid-topheight"+e,"height:"+this.gettop()+"px;overflow:hidden;"+(this.gettop()==0?"display:none;":"")+"");l(j,".ntb-grid-midheight"+e,"overflow:hidden;height:"+(s>f?m:m+this.getscrollbarHeight())+"px;");l(j,".ntb-grid-leftwidth"+e,"width:"+this.getleft()+"px;overflow:hidden;text-align:left;");l(j,".ntb-grid-centerwidth"+e,"width:"+(f-this.getleft()-this.getscrollbarWidth()*c)+"px;");l(j,".ntb-grid-scrollbarheight"+e,"height:"+this.getscrollbarHeight()+"px;");l(j,".ntb-grid-scrollbarwidth"+e,"width:"+this.getscrollbarWidth()+"px;");l(j,".ntb-grid-toolbarheight"+e,"height:"+this.getToolbarHeight()+"px;");l(j,".ntb-grid-surfacewidth"+e,"width:"+v+"px;");l(j,".ntb-grid-surfaceheight"+e,"height:100px;");l(j,".ntb-hscrollbar"+e,(s>f?"display:block;":"display:none;"));l(j,".ntb-row"+e,"height:"+this.getRowHeight()+"px;margin:0px;line-height:"+this.getRowHeight()+"px;");l(j,".ntb-header-row"+e,"height:"+this.getHeaderHeight()+"px;");var b=this.getColumnDefinitions();for(var k=1;k<=b.length;k++){var a=b[k-1];var q=this.rules[".ntb-column"+e+"_"+(k)];if(q==null){q=this.rules[".ntb-column"+e+"_"+(k)]=l(j,".ntb-column"+e+"_"+(k))}q.style.width=a.getAttribute("Width")+"px";var n=this.rules[".ntb-column-data"+e+"_"+(k)];if(n==null){this.rules[".ntb-column-data"+e+"_"+(k)]=l(j,".ntb-column-data"+e+"_"+(k),"text-align:"+a.getAttribute("Align")+";")}}};nitobi.grid.Grid.prototype.clearSurfaces=function(){this.selection.clearBoxes();this.Scroller.clearSurfaces();this.updateCellRanges();this.cachedCells={}};nitobi.grid.Grid.prototype.renderFrame=function(){var a="IE";if(nitobi.browser.MOZ){a="MOZ"}else{if(nitobi.browser.SAFARI||nitobi.browser.CHROME){a="SAFARI"}}this.frameXslProc.addParameter("browser",a,"");this.UiContainer.innerHTML=nitobi.xml.transformToString(this.model,this.frameXslProc);this.attachDomEvents();this.frameRendered=true;this.fire("AfterFrameRender")};nitobi.grid.Grid.prototype.renderMiddle=function(){this.Scroller.view.midleft.flushCache();this.Scroller.view.midcenter.flushCache()};nitobi.grid.Grid.prototype.refresh=function(){var a=null;if(!this.fire("BeforeRefresh",a)){return}ntbAssert(this.datatable!=null,"The Grid must be conntected to a DataTable to call refresh.","",EBA_THROW);this.selectedRows=[];this.clearSurfaces();if(this.getDataMode()!="local"){this.datatable.clearData()}this.syncWithData();this.subscribeOnce("HtmlReady",this.handleAfterRefresh,this)};nitobi.grid.Grid.prototype.handleAfterRefresh=function(){var a=null;this.fire("AfterRefresh",a)};nitobi.grid.Grid.prototype.clear=function(){this.selectedRows=[];this.clearData();this.clearSurfaces()};nitobi.grid.Grid.prototype.handleContextMenu=function(a,b){var c=this.getOnContextMenuEvent();if(c==null){return true}else{if(this.fire("ContextMenu")){return true}else{a.cancelBubble=true;a.returnValue=false;return false}}};nitobi.grid.Grid.prototype.handleKeyPress=function(a){if(this.activeCell==null){return}var b=this.activeColumnObject;this.fire("KeyPress",new nitobi.base.EventArgs(this,a));nitobi.event.evaluate(b.getOnKeyPressEvent(),a);nitobi.html.cancelEvent(a);return false};nitobi.grid.Grid.prototype.handleKeyUp=function(a){if(this.activeCell==null){return}var b=this.activeColumnObject;this.fire("KeyUp",new nitobi.base.EventArgs(this,a));nitobi.event.evaluate(b.getOnKeyUpEvent(),a)};nitobi.grid.Grid.prototype.handleKey=function(a,h){if(this.activeCell!=null){var e=this.activeColumnObject;var f=new nitobi.base.EventArgs(this,a);if(!this.fire("KeyDown",f)||!nitobi.event.evaluate(e.getOnKeyDownEvent(),f)){return}}var c=a.keyCode;c=c+(a.shiftKey?256:0)+(a.ctrlKey?512:0)+(a.metaKey?1024:0);switch(c){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:if(this.getSelectedRows().length>1){this.deleteSelectedRows()}else{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(a);return true;case 1091:this.copy(a);return true;case 600:case 302:break;case 598:case 301:this.paste(a);return true;break;case 1110:this.paste(a);return true;case 35:break;case 36:break;case 547:break;case 548:break;case 13:var g=this.getEnterTab().toLowerCase();var d=0;var b=1;if(g=="left"){d=-1;b=0}else{if(g=="right"){d=1;b=0}else{if(g=="down"){d=0;b=1}else{if(g=="up"){d=0;b=-1}}}}this.move(d,b);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;case 595:this.save();break;case 594:this.refresh();break;case 590:this.insertAfterCurrentRow();break;default:this.edit(a)}};nitobi.grid.Grid.prototype.reselect=function(a,f){var b=this.selection;var d=nitobi.grid.Cell.getRowNumber(b.endCell)+f;var e=nitobi.grid.Cell.getColumnNumber(b.endCell)+a;if(e>=0&&e<this.columnCount()&&d>=0){var c=this.getCellElement(d,e);if(!c){return}b.changeEndCellWithDomNode(c);b.alignBoxes();this.ensureCellInView(c)}};nitobi.grid.Grid.prototype.pageSelect=function(a){};nitobi.grid.Grid.prototype.selectHome=function(){var a=this.selection;var b=nitobi.grid.Cell.getRowNumber(a.endCell);this.reselect(0,-b)};nitobi.grid.Grid.prototype.edit=function(h){if(this.activeCell==null){return}var j=this.activeCellObject;var b=this.activeColumnObject;var g=new nitobi.grid.OnBeforeCellEditEventArgs(this,j);if(!this.fire("BeforeCellEdit",g)||!nitobi.event.evaluate(b.getOnBeforeCellEditEvent(),g)){return}var f=null;var e=null;var a=null;if(h){f=h.keyCode||null;e=h.shiftKey||null;a=h.ctrlKey||null}var d="";var c=null;if((e&&(f>64)&&(f<91))||(!e&&((f>47)&&(f<58)))){c=0}if(!e){if((f>64)&&(f<91)){c=32}else{if(f>95&&f<106){c=-48}else{if((f==189)||(f==109)){d="-"}else{if((f>186)&&(f<188)){c=-126}}}}}else{}if(c!=null){d=String.fromCharCode(f+c)}if((!a)&&(""!=d)||(f==113)||(f==0)||(f==null)||(f==32)){if(b.isEditable()){this.cellEditor=nitobi.form.ControlFactory.instance.getEditor(this,b);if(this.cellEditor==null){return}this.cellEditor.setEditCompleteHandler(this.editComplete);this.cellEditor.attachToParent(this.getToolsContainer());this.cellEditor.bind(this,j,d);this.cellEditor.mimic();this.setEditMode(true);nitobi.html.cancelEvent(h);return false}}else{return}};nitobi.grid.Grid.prototype.editComplete=function(d){var b=d.cell;var c=b.getColumnObject();var a=d.databaseValue;var j=d.displayValue;var h=new nitobi.grid.OnCellValidateEventArgs(this,b,a,b.getValue());if(!this.fire("CellValidate",h)||!nitobi.event.evaluate(c.getOnCellValidateEvent(),h)){return false}b.setValue(a,j);d.editor.hide();this.setEditMode(false);var g=new nitobi.grid.OnAfterCellEditEventArgs(this,b);this.fire("AfterCellEdit",g);nitobi.event.evaluate(c.getOnAfterCellEditEvent(),g);try{this.focus()}catch(f){}};nitobi.grid.Grid.prototype.autoSave=function(){if(this.isAutoSaveEnabled()){return this.save()}return false};nitobi.grid.Grid.prototype.selectCellByCoords=function(b,a){this.setPosition(b,a)};nitobi.grid.Grid.prototype.setPosition=function(b,a){if(b>=0&&a>=0){this.setActiveCell(this.getCellElement(b,a))}};nitobi.grid.Grid.prototype.save=function(){if(this.datatable.log.selectNodes("//"+nitobi.xml.nsPrefix+"data/*").length==0){return}if(!this.fire("BeforeSave")){return}this.datatable.save(nitobi.lang.close(this,this.saveCompleteHandler),this.getOnBeforeSaveEvent())};nitobi.grid.Grid.prototype.saveCompleteHandler=function(a){if(this.getDataSource().getHandlerError()){this.fire("HandlerError",a)}this.fire("AfterSave",a)};nitobi.grid.Grid.prototype.focus=function(){try{this.keyNav.focus();this.fire("Focus",new nitobi.base.EventArgs(this));if(!nitobi.browser.SAFARI&&!nitobi.browser.CHROME){nitobi.html.cancelEvent(nitobi.html.Event);return false}}catch(a){}};nitobi.grid.Grid.prototype.blur=function(){this.clearActiveRows();this.selection.clear();this.blurActiveCell(null);this.activateCell(null);this.fire("Blur",new nitobi.base.EventArgs(this))};nitobi.grid.Grid.prototype.getRendererForColumn=function(a){var c=this.getColumnCount();if(a>=c){a=c-1}var b=this.getFrozenLeftColumnCount();if(a<frozenLeft){return this.MidLeftRenderer}else{return this.MidCenterRenderer}};nitobi.grid.Grid.prototype.getColumnOuterTemplate=function(a){return this.getRendererForColumn(a).xmlTemplate.selectSingleNode("//*[@match='ntb:e']/div/div["+a+"]")};nitobi.grid.Grid.prototype.getColumnInnerTemplate=function(a){return this.getColumnOuterXslTemplate(a).selectSingleNode("*[2]")};nitobi.grid.Grid.prototype.makeXSL=function(){var f=this.getFrozenLeftColumnCount();var e=this.getColumnCount();var c=this.isRowHighlightEnabled();var b="_default";if(this.datatable!=null){b=this.datatable.id}var a=0;var g=f;var d=this.model.selectSingleNode("state/nitobi.grid.Columns");this.TopLeftRenderer.generateXslTemplate(d,null,a,g,this.isColumnIndicatorsEnabled(),this.isRowIndicatorsEnabled(),c,this.isToolTipsEnabled());this.TopLeftRenderer.dataTableId=b;a=f;g=e-f;this.TopCenterRenderer.generateXslTemplate(d,null,a,g,this.isColumnIndicatorsEnabled(),this.isRowIndicatorsEnabled(),c,this.isToolTipsEnabled());this.TopCenterRenderer.dataTableId=b;this.MidLeftRenderer.generateXslTemplate(d,null,0,f,0,this.isRowIndicatorsEnabled(),c,this.isToolTipsEnabled(),"left");this.MidLeftRenderer.dataTableId=b;this.MidCenterRenderer.generateXslTemplate(d,null,f,e-f,0,0,c,this.isToolTipsEnabled());this.MidCenterRenderer.dataTableId=b;this.fire("AfterMakeXsl")};nitobi.grid.Grid.prototype.render=function(){this.generateCss();this.updateCellRanges()};nitobi.grid.Grid.prototype.refilter=nitobi.grid.Grid.prototype.render;nitobi.grid.Grid.prototype.getColumnDefinitions=function(){return this.model.selectNodes("state/nitobi.grid.Columns/*")};nitobi.grid.Grid.prototype.getVisibleColumnDefinitions=function(){return this.model.selectNodes("state/nitobi.grid.Columns/*[@Visible='1']")};nitobi.grid.Grid.prototype.initializeModelFromDeclaration=function(){var b=this.Declaration.grid.documentElement.attributes;var a=b.length;for(var c=0;c<a;c++){var e=b[c];var d=this.properties[e.nodeName];if(d!=null){this["set"+d.n](e.nodeValue)}}this.model.documentElement.setAttribute("ID",this.uid);this.model.documentElement.setAttribute("uniqueID",this.uid)};nitobi.grid.Grid.prototype.setModelValues=function(n,m){var l=n.getAttribute("DataType");var k=n.getAttribute("type").toLowerCase();var g=m.attributes;for(var a=0;a<g.length;a++){var e=g[a];var d=e.nodeName.toLowerCase();var c=this.xColumnProperties[l+"column"][d]||this.xColumnProperties.column[d];var b=e.nodeValue;if(c.t=="b"){b=nitobi.lang.boolToStr(nitobi.lang.toBool(b))}n.setAttribute(c.n,b)}var h=m.selectSingleNode("./ntb:"+k+"editor");if(h==null){return}var f=h.attributes;for(var a=0;a<f.length;a++){var e=f[a];var d=e.nodeName.toLowerCase();var c=this.xColumnProperties[k+"editor"][d];var b=e.nodeValue;if(c.t=="b"){b=nitobi.lang.boolToStr(nitobi.lang.toBool(b))}n.setAttribute(c.n,b)}};nitobi.grid.Grid.prototype.getNewRecordKey=function(){var b;var c;var a;do{b=new Date();c=(b.getTime()+"."+Math.round(Math.random()*99));a=this.datatable.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@xk = '"+c+"']")}while(a!=null);return c};nitobi.grid.Grid.prototype.insertAfterCurrentRow=function(){if(this.activeCell){var a=nitobi.grid.Cell.getRowNumber(this.activeCell);this.insertRow(a+1)}else{this.insertRow()}};nitobi.grid.Grid.prototype.insertRow=function(g){var k=parseInt(this.getDisplayedRowCount());var j=0;if(g!=null){j=parseInt((g==null?k:parseInt(g)));j--}var e=new nitobi.grid.OnBeforeRowInsertEventArgs(this,this.getRowObject(j));if(!this.isRowInsertEnabled()||!this.fire("BeforeRowInsert",e)){return}var d=this.datatable.getTemplateNode();for(var f=0;f<this.columnCount();f++){var c=this.getColumnObject(f);var b=c.getInitial();if(b==null||b==""){var a=c.getDataType();if(a==null||a==""){a="text"}switch(a){case"text":b="";break;case"number":b=0;break;case"date":b="1900-01-01";break}}var h=c.getxdatafld().substr(1);if(h!=null&&h!=""){d.setAttribute(h,b)}}this.clearSurfaces();this.datatable.createRecord(d,j);this.subscribeOnce("HtmlReady",this.handleAfterRowInsert,this,[j])};nitobi.grid.Grid.prototype.handleAfterRowInsert=function(a){this.fire("AfterRowInsert",new nitobi.grid.OnAfterRowInsertEventArgs(this,this.getRowObject(a)));this.setActiveCell(this.getCellElement(a,0))};nitobi.grid.Grid.prototype.deleteCurrentRow=function(){if(this.activeCell){this.deleteRow(nitobi.grid.Cell.getRowNumber(this.activeCell))}else{alert("First select a record to delete.")}};nitobi.grid.Grid.prototype.deleteSelectedRows=function(){var d=new nitobi.grid.OnBeforeRowDeleteEventArgs(this,this.getSelectedRows());if(!this.isRowDeleteEnabled()||!this.fire("BeforeRowDelete",d)){return}var b=this.getSelectedRows();var a=[];for(row in b){a.push(parseInt(b[row].getAttribute("xi")))}a.sort(function(g,f){return g-f});this.clearSurfaces();var e=this.getDisplayedRowCount();try{this.datatable.deleteRecordsArray(a);if(e<=0){this.activeCell=null}this.subscribeOnce("HtmlReady",this.handleAfterRowDelete,this,a)}catch(c){this.dataBind()}};nitobi.grid.Grid.prototype.deleteRow=function(b){ntbAssert(b>=0,"Must specify a row to delete.");var a=new nitobi.grid.OnBeforeRowDeleteEventArgs(this,this.getRowObject(b));if(!this.isRowDeleteEnabled()||!this.fire("BeforeRowDelete",a)){return}this.clearSurfaces();var d=this.getDisplayedRowCount();try{this.datatable.deleteRecord(b);d--;if(d<=0){this.activeCell=null}this.subscribeOnce("HtmlReady",this.handleAfterRowDelete,this,[b])}catch(c){this.dataBind()}};nitobi.grid.Grid.prototype.handleAfterRowDelete=function(a){this.fire("AfterRowDelete",new nitobi.grid.OnBeforeRowDeleteEventArgs(this,this.getRowObject(a)));this.setActiveCell(this.getCellElement(a,0))};nitobi.grid.Grid.prototype.page=function(a){};nitobi.grid.Grid.prototype.move=function(d,b){if(this.activeCell!=null){var c=1;var j=1;d=(d*c);b=(b*j);var a=nitobi.grid.Cell;var g=a.getColumnNumber(this.activeCell);var f=a.getRowNumber(this.activeCell);this.selectCellByCoords(f+b,g+d);var e=new nitobi.grid.CellEventArgs(this,this.activeCell);if(g+1==this.getVisibleColumnDefinitions().length&&d==1){this.fire("HitRowEnd",e)}else{if(g==0&&d==-1){this.fire("HitRowStart",e)}}}};nitobi.grid.Grid.prototype.handleSelectionMouseUp=function(a){if(this.isCellClicked()){this.ensureCellInView(this.activeCell)}this.setCellClicked(false);if(this.isSingleClickEditEnabled()){this.edit(a)}else{if(!nitobi.browser.IE){this.focus()}}};nitobi.grid.Grid.prototype.loadNextDataPage=function(){this.loadDataPage(this.getCurrentPageIndex()+1)};nitobi.grid.Grid.prototype.loadPreviousDataPage=function(){this.loadDataPage(this.getCurrentPageIndex()-1)};nitobi.grid.Grid.prototype.GetPage=function(a){ebaErrorReport("GetPage is deprecated please use loadDataPage instead","",EBA_DEBUG);this.loadDataPage(a)};nitobi.grid.Grid.prototype.loadDataPage=function(a){};nitobi.grid.Grid.prototype.getSelectedRow=function(a){try{var b=-1;var d=this.activeCell;if(d!=null){b=nitobi.grid.Cell.getRowNumber(d);if(a){b-=this.getfreezetop()}}return b}catch(c){_ntbAssert(false,c.message)}};nitobi.grid.Grid.prototype.handleHandlerError=function(){var a=this.getDataSource().getHandlerError();if(a){this.fire("HandlerError")}};nitobi.grid.Grid.prototype.getRowObject=function(a,c){var b=c;if(c==null&&a!=null){b=a}return new nitobi.grid.Row(this,b)};nitobi.grid.Grid.prototype.getSelectedColumn=function(a){try{var d=-1;var c=this.activeCell;if(c!=null){d=parseInt(c.getAttribute("col"));if(a){d-=this.getFrozenLeftColumnCount()}}return d}catch(b){_ntbAssert(false,b.message)}};nitobi.grid.Grid.prototype.getSelectedColumnName=function(){var a=this.getSelectedColumnObject();return a.getColumnName()};nitobi.grid.Grid.prototype.getSelectedColumnObject=function(){return this.getColumnObject(this.getSelectedColumn())};nitobi.grid.Grid.prototype.columnCount=function(){try{var b=this.getColumnDefinitions();return b.length}catch(a){_ntbAssert(false,a.message)}};nitobi.grid.Grid.prototype.getCellObject=function(e,b){var d=b;var a=this.cachedCells[e+"_"+b];if(a==null){if(typeof(b)=="string"){var c=this.model.selectSingleNode("state/nitobi.grid.Columns/nitobi.grid.Column[@xdatafld_orig='"+b+"']");if(c!=null){b=parseInt(c.getAttribute("xi"))}}if(typeof(b)=="number"){a=new nitobi.grid.Cell(this,e,b)}else{a=null}this.cachedCells[e+"_"+b]=this.cachedCells[e+"_"+d]=a||""}else{if(a==""){a=null}}return a};nitobi.grid.Grid.prototype.getCellText=function(b,a){return this.getCellObject(b,a).getHtml()};nitobi.grid.Grid.prototype.getCellValue=function(b,a){return this.getCellObject(b,a).getValue()};nitobi.grid.Grid.prototype.getCellElement=function(b,a){return document.getElementById("cell_"+b+"_"+a+"_"+this.uid)};nitobi.grid.Grid.prototype.getSelectedRowObject=function(a){var c=null;var b=nitobi.grid.Cell.getRowNumber(this.activeCell);c=new nitobi.grid.Row(this,b);return c};nitobi.grid.Grid.prototype.getColumnObject=function(b){ntbAssert(b>=0,"Invalid column accessed.");var a=null;if(b>=0&&b<this.getColumnDefinitions().length){a=this.columns[b];if(a==null){var c=this.getColumnDefinitions()[b].getAttribute("DataType");switch(c){case"number":a=new nitobi.grid.NumberColumn(this,b);break;case"date":a=new nitobi.grid.DateColumn(this,b);break;default:a=new nitobi.grid.TextColumn(this,b);break}this.columns[b]=a}}if(a==null||a.getModel()==null){return null}else{return a}};nitobi.grid.Grid.prototype.getSelectedCellObject=function(){var d=this.activeCellObject;if(d==null){d=this.activeCell;if(d!=null){var b=nitobi.grid.Cell;var a=b.getRowNumber(d);var e=b.getColumnNumber(d);d=this.getCellObject(a,e)}}return d};nitobi.grid.Grid.prototype.autoAddRow=function(){if(this.activeCell.innerText.replace(/\s/g,"")!=""&&this.autoAdd){this.deactivateCell();if(this.active=="Y"){this.freezeCell()}eval(this.getOnRowBlurEvent());this.insertRow();this.go("HOME");this.editCell()}};nitobi.grid.Grid.prototype.setDisplayedRowCount=function(a){ntbAssert(!isNaN(a),"displayed row was set to nan");if(this.Scroller){this.Scroller.view.midcenter.rows=a;this.Scroller.view.midleft.rows=a}this.displayedRowCount=a};nitobi.grid.Grid.prototype.getDisplayedRowCount=function(){ntbAssert(!isNaN(this.displayedRowCount),"displayed row count return nan");return this.displayedRowCount};nitobi.grid.Grid.prototype.getToolsContainer=function(){this.toolsContainer=this.toolsContainer||document.getElementById("ntb-grid-toolscontainer"+this.uid);return this.toolsContainer};nitobi.grid.Grid.prototype.getHeaderContainer=function(){return document.getElementById("ntb-grid-header"+this.uid)};nitobi.grid.Grid.prototype.getDataContainer=function(){return document.getElementById("ntb-grid-data"+this.uid)};nitobi.grid.Grid.prototype.getScrollerContainer=function(){return document.getElementById("ntb-grid-scroller"+this.uid)};nitobi.grid.Grid.prototype.getGridContainer=function(){return nitobi.html.getFirstChild(this.UiContainer)};nitobi.grid.Grid.prototype.copy=function(){var c=this.selection.getCoords();var d=this.getTableForSelection(c);var b=new nitobi.grid.OnCopyEventArgs(this,d,c);if(!this.isCopyEnabled()||!this.fire("BeforeCopy",b)){return}if(!nitobi.browser.IE){var a=this.getClipboard();a.onkeyup=nitobi.lang.close(this,this.focus);a.value=d;a.focus();a.setSelectionRange(0,a.value.length)}else{window.clipboardData.setData("Text",d)}this.fire("AfterCopy",b)};nitobi.grid.Grid.prototype.getTableForSelection=function(c){var b=this.getColumnMap(c.top.x,c.bottom.x);var a=nitobi.data.FormatConverter.convertEbaXmlToTsv(this.getDataSource().getDataXmlDoc(),b,c.top.y,c.bottom.y);return a};nitobi.grid.Grid.prototype.getColumnMap=function(d,b){var a=this.getColumnDefinitions();d=(d==null)?0:d;b=(b==null)?a.length-1:b;var e=new Array();for(var c=d;c<=b&&(null!=a[c]);c++){e.push(a[c].getAttribute("xdatafld").substr(1))}return e};nitobi.grid.Grid.prototype.paste=function(){if(!this.isPasteEnabled()){return}var a=this.getClipboard();a.onkeyup=nitobi.lang.close(this,this.pasteDataReady,[a]);a.focus();return a};nitobi.grid.Grid.prototype.pasteDataReady=function(j){j.onkeyup=null;var h=this.selection;var g=h.getCoords();var f=g.top.x;var d=f+nitobi.data.FormatConverter.getDataColumns(j.value)-1;var b=true;for(var k=f;k<=d;k++){var n=this.getColumnObject(k);if(n){if(!n.isEditable()){b=false;break}}}if(!b){this.fire("PasteFailed",new nitobi.base.EventArgs(this));this.handleAfterPaste();return}else{var m=this.getColumnMap(f,d);var l=g.top.y;var e=Math.max(l+nitobi.data.FormatConverter.getDataRows(j.value)-1,0);this.getSelection().selectWithCoords(l,f,e,f+m.length-1);var c=new nitobi.grid.OnPasteEventArgs(this,j.value,g);if(!this.fire("BeforePaste",c)){return}var a=j.value;var o=null;if(a.substr(0,1)=="<"){o=nitobi.data.FormatConverter.convertHtmlTableToEbaXml(a,m,l)}else{o=nitobi.data.FormatConverter.convertTsvToEbaXml(a,m,l)}if(o.documentElement!=null){this.datatable.mergeFromXml(o,nitobi.lang.close(this,this.pasteComplete,[o,l,e,c]))}}};nitobi.grid.Grid.prototype.pasteComplete=function(d,b,c,a){this.Scroller.reRender(b,c);this.subscribeOnce("HtmlReady",this.handleAfterPaste,this,[a])};nitobi.grid.Grid.prototype.handleAfterPaste=function(a){this.fire("AfterPaste",a)};nitobi.grid.Grid.prototype.getClipboard=function(){var a=document.getElementById("ntb-clipboard"+this.uid);a.onkeyup=null;a.value="";return a};nitobi.grid.Grid.prototype.getSelection=function(){return this.selection};nitobi.grid.Grid.prototype.handleHtmlReady=function(a){this.fire("HtmlReady",new nitobi.base.EventArgs(this))};nitobi.grid.Grid.prototype.fire=function(a,b){return nitobi.event.notify(a+this.uid,b)};nitobi.grid.Grid.prototype.subscribe=function(a,d,c){if(this.subscribedEvents==null){this.subscribedEvents={}}if(typeof(c)=="undefined"){c=this}var b=nitobi.event.subscribe(a+this.uid,nitobi.lang.close(c,d));this.subscribedEvents[b]=a+this.uid;return b};nitobi.grid.Grid.prototype.subscribeOnce=function(a,g,f,e){var b=null;var d=this;var c=function(){g.apply(f||this,e||arguments);d.unsubscribe(a,b)};b=this.subscribe(a,c)};nitobi.grid.Grid.prototype.unsubscribe=function(a,b){return nitobi.event.unsubscribe(a+this.uid,b)};nitobi.grid.Grid.prototype.dispose=function(){try{this.element.jsObject=null;editorXslProc=null;var a=nitobi.html;a.detachEvents(this.getGridContainer(),this.events);a.detachEvents(this.getHeaderContainer(),this.headerEvents);a.detachEvents(this.getDataContainer(),this.cellEvents);a.detachEvents(this.getScrollerContainer(),this.scrollerEvents);a.detachEvents(this.keyNav,this.keyEvents);for(var b in this.subscribedEvents){var d=this.subscribedEvents[b];this.unsubscribe(d.substring(0,d.length-this.uid.length),b)}this.UiContainer.parentNode.removeChild(this.UiContainer);for(var b in this){if(this[b]!=null){if(this[b].dispose instanceof Function){this[b].dispose()}this[b]=null}}nitobi.form.ControlFactory.instance.dispose()}catch(c){}};nitobi.Grid=nitobi.grid.Grid;nitobi.grid.Cell=function(c,e,d){if(e==null||c==null){return null}this.grid=c;var b=null;if(typeof(e)=="object"){var a=e;e=Number(a.getAttribute("xi"));d=a.getAttribute("col");b=a}else{b=this.grid.getCellElement(e,d)}this.DomNode=b;this.row=Number(e);this.Row=this.row;this.column=Number(d);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(e,c){if(e==this.getValue()){return}var b=this.getColumnObject();var a="";switch(b.getType()){case"PASSWORD":for(var p=0;p<e.length;p++){a+="*"}break;case"NUMBER":if(this.numberXsl==null){this.numberXsl=nitobi.form.numberXslProc}if(e==""){e=b.getEditor().defaultValue||0}if(this.DomNode!=null){if(e<0){nitobi.html.Css.addClass(this.DomNode,"ntb-cell-negativenumber")}else{nitobi.html.Css.removeClass(this.DomNode,"ntb-cell-negativenumber")}}var o=b.getMask();var s=b.getNegativeMask();var q=e;if(e<0&&s!=""){o=s;q=(e+"").replace("-","")}this.numberXsl.addParameter("number",q,"");this.numberXsl.addParameter("mask",o,"");this.numberXsl.addParameter("group",b.getGroupingSeparator(),"");this.numberXsl.addParameter("decimal",b.getDecimalSeparator(),"");a=nitobi.xml.transformToString(nitobi.xml.Empty,this.numberXsl);if(""==a&&e!=""){a=nitobi.html.getFirstChild(this.DomNode).innerHTML;e=this.getValue()}break;case"DATE":if(this.dateXsl==null){this.dateXsl=nitobi.form.dateXslProc.stylesheet}var v=new Date();var m=nitobi.xml.createXmlDoc("<root><date>"+e+"</date><year>"+(v.getFullYear())+"</year><mask>"+this.columnObject.getMask()+"</mask></root>");a=nitobi.xml.transformToString(m,this.dateXsl);if(""==a){a=nitobi.html.getFirstChild(this.DomNode).innerHTML;e=this.getValue()}break;case"TEXTAREA":a=nitobi.html.encode(e);break;case"LOOKUP":var k=b.getModel();var h=k.getAttribute("DatasourceId");var g=this.grid.data.getTable(h);var f=k.getAttribute("DisplayFields");var t=k.getAttribute("ValueField");var r=g.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+t+"='"+e+"']/@"+f);if(r!=null){a=r.nodeValue}else{a=e}break;case"CHECKBOX":var k=b.getModel();var h=k.getAttribute("DatasourceId");var g=this.grid.data.getTable(h);var f=k.getAttribute("DisplayFields");var t=k.getAttribute("ValueField");var n=k.getAttribute("CheckedValue");if(n==""||n==null){n=0}var l=g.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+t+"='"+e+"']/@"+f).nodeValue;var j=(e==n)?"checked":"unchecked";a='<div style="overflow:hidden;"><div class="ntb-checkbox ntb-checkbox-'+j+'" checked="'+e+'">&nbsp;</div><div class="ntb-checkbox-text">'+nitobi.html.encode(l)+"</div></div>";break;case"LISTBOX":var k=b.getModel();var h=k.getAttribute("DatasourceId");var g=this.grid.data.getTable(h);var f=k.getAttribute("DisplayFields");var t=k.getAttribute("ValueField");a=g.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+t+"='"+e+"']/@"+f).nodeValue;break;case"IMAGE":a=nitobi.html.getFirstChild(this.DomNode).innerHTML;if(nitobi.lang.typeOf(e)==nitobi.lang.type.HTMLNODE){a='<img border="0" src="'+e.getAttribute("src")+'" />'}else{if(typeof(e)=="string"){a='<img border="0" src="'+e+'" />'}}break;default:a=e}a=a||"&nbsp;";if(this.DomNode!=null){var u=nitobi.html.getFirstChild(this.DomNode);u.innerHTML=a||"&nbsp;";u.setAttribute("title",e);this.DomNode.setAttribute("value",e)}this.grid.datatable.updateRecord(this.dataIndex,b.getColumnName(),e)};nitobi.grid.Cell.prototype.getValue=function(){var b=this.getColumnObject();var a=this.GETDATA();switch(b.getType()){case"NUMBER":a=parseFloat(a);break;default:}return a};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 a=this.getData();if(a!=null){return a.value}};nitobi.grid.Cell.prototype.xGETMETA=function(){if(this.MetaNode==null){return null}var a=this.MetaNode;a=a.selectSingleNode("@"+arguments[0]);if(a!=null){return a.value}};nitobi.grid.Cell.prototype.xSETMETA=function(){var a=this.MetaNode;if(a!=null){a.setAttribute(arguments[0],arguments[1][0])}else{alert("Cannot set property: "+arguments[0])}};nitobi.grid.Cell.prototype.xSETCSS=function(){var a=this.DomNode;if(a!=null){a.style.setAttribute(arguments[0],arguments[1][0])}else{alert("Cannot set property: "+arguments[0])}};nitobi.grid.Cell.prototype.xGET=function(){var a=this.getModel();a=a.selectSingleNode(arguments[0]);if(a!=null){return a.value}};nitobi.grid.Cell.prototype.xSET=function(){var a=this.getModel();a=a.selectSingleNode(arguments[0]);if(a!=null){a.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(b,c,a){return $ntb("cell_"+c+"_"+a+"_"+b.uid)};nitobi.grid.Cell.getRowNumber=function(a){return parseInt(a.getAttribute("xi"))};nitobi.grid.Cell.getColumnNumber=function(a){return parseInt(a.getAttribute("col"))};nitobi.lang.defineNs("nitobi.grid");nitobi.grid.CellEventArgs=function(b,a){nitobi.grid.CellEventArgs.baseConstructor.call(this,b);this.cell=a};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(b,a){this.grid=b;this.row=a;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(c,a,b){this.source=c;this.coords=b;this.data=a};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(a,b){this.grid=a;this.column=b;this.uid=nitobi.base.getUid();this.modelNodes={}};nitobi.grid.Column.prototype={setAlign:function(){this.xSET("Align",arguments)},getAlign:function(){return this.xGET("Align",arguments)},getWrap:function(){return parseInt(this.xGET("Wrap",arguments))},setClassName:function(){this.xSET("ClassName",arguments)},getClassName:function(){return this.xGET("ClassName",arguments)},setCssStyle:function(){this.xSET("CssStyle",arguments)},getCssStyle:function(){return this.xGET("CssStyle",arguments)},setColumnName:function(){this.xSET("ColumnName",arguments)},getColumnName:function(){return this.xGET("ColumnName",arguments)},setType:function(){this.xSET("type",arguments)},getType:function(){return this.xGET("type",arguments)},setDataType:function(){this.xSET("DataType",arguments)},getDataType:function(){return this.xGET("DataType",arguments)},setEditable:function(){this.xSET("Editable",arguments)},isEditable:function(){return nitobi.lang.toBool(this.xGET("Editable",arguments),true)},setInitial:function(){this.xSET("Initial",arguments)},getInitial:function(){return this.xGET("Initial",arguments)},setLabel:function(){this.xSET("Label",arguments)},getLabel:function(){return this.xGET("Label",arguments)},setGetHandler:function(){this.xSET("GetHandler",arguments)},getGetHandler:function(){return this.xGET("GetHandler",arguments)},setDatasourceId:function(){this.xSET("DatasourceId",arguments)},getDatasourceId:function(){return this.xGET("DatasourceId",arguments)},setTemplate:function(){this.xSET("Template",arguments)},getTemplate:function(){return this.xGET("Template",arguments)},setTemplateUrl:function(){this.xSET("TemplateUrl",arguments)},getTemplateUrl:function(){return this.xGET("TemplateUrl",arguments)},setMaxLength:function(){this.xSET("maxlength",arguments)},getMaxLength:function(){return Number(this.xGET("maxlength",arguments))},setSortDirection:function(){this.xSET("SortDirection",arguments)},getSortDirection:function(){return this.xGET("SortDirection",arguments)},setSortEnabled:function(){this.xSET("SortEnabled",arguments)},isSortEnabled:function(){return nitobi.lang.toBool(this.xGET("SortEnabled",arguments),true)},setWidth:function(){this.xSET("Width",arguments)},getWidth:function(){return Number(this.xGET("Width",arguments))},setSize:function(){this.xSET("Size",arguments)},getSize:function(){return Number(this.xGET("Size",arguments))},setVisible:function(){this.xSET("Visible",arguments)},isVisible:function(){return nitobi.lang.toBool(this.xGET("Visible",arguments),true)},setxdatafld:function(){this.xSET("xdatafld",arguments)},getxdatafld:function(){return this.xGET("xdatafld",arguments)},setValue:function(){this.xSET("Value",arguments)},getValue:function(){return this.xGET("Value",arguments)},setxi:function(){this.xSET("xi",arguments)},getxi:function(){return Number(this.xGET("xi",arguments))},setEditor:function(){this.xSET("Editor",arguments)},getEditor:function(){return this.xGET("Editor",arguments)},setDisplayFields:function(){this.xSET("DisplayFields",arguments)},getDisplayFields:function(){return this.xGET("DisplayFields",arguments)},setValueField:function(){this.xSET("ValueField",arguments)},getValueField:function(){return this.xGET("ValueField",arguments)},setDelay:function(){this.xSET("Delay",arguments)},getDelay:function(){return Number(this.xGET("Delay",arguments))},setReferenceColumn:function(){this.xSET("ReferenceColumn",arguments)},getReferenceColumn:function(){return this.xGET("ReferenceColumn",arguments)},setOnCellClickEvent:function(){this.xSET("OnCellClickEvent",arguments)},getOnCellClickEvent:function(){return this.xGET("OnCellClickEvent",arguments)},setOnBeforeCellClickEvent:function(){this.xSET("OnBeforeCellClickEvent",arguments)},getOnBeforeCellClickEvent:function(){return this.xGET("OnBeforeCellClickEvent",arguments)},setOnCellDblClickEvent:function(){this.xSET("OnCellDblClickEvent",arguments)},getOnCellDblClickEvent:function(){return this.xGET("OnCellDblClickEvent",arguments)},setOnHeaderDoubleClickEvent:function(){this.xSET("OnHeaderDoubleClickEvent",arguments)},getOnHeaderDoubleClickEvent:function(){return this.xGET("OnHeaderDoubleClickEvent",arguments)},setOnHeaderClickEvent:function(){this.xSET("OnHeaderClickEvent",arguments)},getOnHeaderClickEvent:function(){return this.xGET("OnHeaderClickEvent",arguments)},setOnBeforeResizeEvent:function(){this.xSET("OnBeforeResizeEvent",arguments)},getOnBeforeResizeEvent:function(){return this.xGET("OnBeforeResizeEvent",arguments)},setOnAfterResizeEvent:function(){this.xSET("OnAfterResizeEvent",arguments)},getOnAfterResizeEvent:function(){return this.xGET("OnAfterResizeEvent",arguments)},setOnCellValidateEvent:function(){this.xSET("OnCellValidateEvent",arguments)},getOnCellValidateEvent:function(){return this.xGET("OnCellValidateEvent",arguments)},setOnBeforeCellEditEvent:function(){this.xSET("OnBeforeCellEditEvent",arguments)},getOnBeforeCellEditEvent:function(){return this.xGET("OnBeforeCellEditEvent",arguments)},setOnAfterCellEditEvent:function(){this.xSET("OnAfterCellEditEvent",arguments)},getOnAfterCellEditEvent:function(){return this.xGET("OnAfterCellEditEvent",arguments)},setOnCellBlurEvent:function(){this.xSET("OnCellBlurEvent",arguments)},getOnCellBlurEvent:function(){return this.xGET("OnCellBlurEvent",arguments)},setOnCellFocusEvent:function(){this.xSET("OnCellFocusEvent",arguments)},getOnCellFocusEvent:function(){return this.xGET("OnCellFocusEvent",arguments)},setOnBeforeSortEvent:function(){this.xSET("OnBeforeSortEvent",arguments)},getOnBeforeSortEvent:function(){return this.xGET("OnBeforeSortEvent",arguments)},setOnAfterSortEvent:function(){this.xSET("OnAfterSortEvent",arguments)},getOnAfterSortEvent:function(){return this.xGET("OnAfterSortEvent",arguments)},setOnCellUpdateEvent:function(){this.xSET("OnCellUpdateEvent",arguments)},getOnCellUpdateEvent:function(){return this.xGET("OnCellUpdateEvent",arguments)},setOnKeyDownEvent:function(){this.xSET("OnKeyDownEvent",arguments)},getOnKeyDownEvent:function(){return this.xGET("OnKeyDownEvent",arguments)},setOnKeyUpEvent:function(){this.xSET("OnKeyUpEvent",arguments)},getOnKeyUpEvent:function(){return this.xGET("OnKeyUpEvent",arguments)},setOnKeyPressEvent:function(){this.xSET("OnKeyPressEvent",arguments)},getOnKeyPressEvent:function(){return this.xGET("OnKeyPressEvent",arguments)},setOnChangeEvent:function(){this.xSET("OnChangeEvent",arguments)},getOnChangeEvent:function(){return this.xGET("OnChangeEvent",arguments)},setGetOnEnter:function(){this.xbSET("GetOnEnter",arguments)},isGetOnEnter:function(){return nitobi.lang.toBool(this.xGET("GetOnEnter",arguments),true)},setAutoComplete:function(){this.xbSET("AutoComplete",arguments)},isAutoComplete:function(){return nitobi.lang.toBool(this.xGET("AutoComplete",arguments),true)},setAutoClear:function(){this.xbSET("AutoClear",arguments)},isAutoClear:function(){return nitobi.lang.toBool(this.xGET("AutoClear",arguments),true)}};nitobi.grid.Column.prototype.getModel=function(){if(this.ModelNode==null){var a=this.column;this.ModelNode=this.grid.model.selectNodes("//state/nitobi.grid.Columns/nitobi.grid.Column")[a]}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 a=this.getClassName();return nitobi.html.getClass(a)};nitobi.grid.Column.prototype.getHeaderStyle=function(){var a="acolumnheader"+this.grid.uid+"_"+this.column;return nitobi.html.getClass(a)};nitobi.grid.Column.prototype.getDataStyle=function(){var a="ntb-column-data"+this.grid.uid+"_"+this.column;return nitobi.html.getClass(a)};nitobi.grid.Column.prototype.getEditor=function(){return nitobi.form.ControlFactory.instance.getEditor(this.grid,this)};nitobi.grid.Column.prototype.hide=function(){var c=this.getWidth();var b="ntb-column"+this.grid.uid+"_"+String(this.column+1);var a=nitobi.html.getClass(b);a.display="none";this.grid.resizePanes(-c,this.column);this.grid.adjustHorizontalScrollBars()};nitobi.grid.Column.prototype.show=function(){var c=this.getWidth();var b="ntb-column"+this.grid.uid+"_"+String(this.column+1);var a=nitobi.html.getClass(b);a.display="";this.grid.resizePanes(c,this.column)};nitobi.grid.Column.prototype.toggleVis=function(){var b="ntb-column"+this.grid.uid+"_"+String(this.column+1);var a=nitobi.html.getClass(b,true);if(a.display=="none"){this.show()}else{this.hide()}};nitobi.grid.Column.prototype.xGET=function(){var c=null,b="@"+arguments[0],d="";var a=this.modelNodes[b];if(a!=null){c=a}else{c=this.modelNodes[b]=this.getModel().selectSingleNode(b)}if(c!=null){d=c.nodeValue}return d};nitobi.grid.Column.prototype.xSET=function(){var a=this.getModel();if(a!=null){a.setAttribute(arguments[0],arguments[1][0])}};nitobi.grid.Column.prototype.xbSETMODEL=function(){var a=this.getModel();if(a!=null){a.setAttribute(arguments[0],nitobi.lang.boolToStr(arguments[1][0]))}};nitobi.grid.Column.prototype.eSET=function(name,_309){var _30a=_309[0];var _30b=_30a;var _30c=name.substr(2);_30c=_30c.substr(0,_30c.length-5);if(typeof(_30a)=="string"){_30b=function(_30d){return eval(_30a)}}if(typeof(this[name])!="undefined"){alert("unsubscribe");this.unsubscribe(_30c,this[name])}var guid=this.subscribe(_30c,_30b);this.jSET(name,[guid])};nitobi.grid.Column.prototype.jSET=function(a,b){this[a]=b[0]};nitobi.grid.Column.prototype.fire=function(a,b){return nitobi.event.notify(a+this.uid,b)};nitobi.grid.Column.prototype.subscribe=function(a,c,b){if(typeof(b)=="undefined"){b=this}return nitobi.event.subscribe(a+this.uid,nitobi.lang.close(b,c))};nitobi.grid.Column.prototype.unsubscribe=function(a,b){return nitobi.event.unsubscribe(a+this.uid,b)};nitobi.grid.Column.getColumnHeaderElement=function(b,a){return $ntb("columnheader_"+a+"_"+b.uid)};nitobi.grid.Column.prototype.inRange=function(a){var c=this.getHeaderElement().offsetLeft;var b=c+this.getWidth();return c<a&&a<b};nitobi.lang.defineNs("nitobi.grid");nitobi.grid.ColumnEventArgs=function(b,a){this.grid=b;this.column=a;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(a){this.grid=a;this.hScrollClass=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)}}this.column;this.onAfterResize=new nitobi.base.Event()};nitobi.grid.ColumnResizer.prototype.startResize=function(e,d,b,c){this.grid=e;this.column=d;var a=nitobi.html.getEventCoords(c).x;if(nitobi.browser.IE){this.surface.style.display="block";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=a;this.lineStyle.display="block";var f=nitobi.html.getBoundingClientRect(this.grid.UiContainer).left;this.lineStyle.left=a-f+"px";this.lineStyle.height=this.grid.Scroller.scrollSurface.offsetHeight+"px";nitobi.drawing.align(this.line,b,nitobi.drawing.align.ALIGNTOP,0,0,nitobi.html.getHeight(b)+1);nitobi.ui.startDragOperation(this.line,c,false,true,this,this.endResize)};nitobi.grid.ColumnResizer.prototype.endResize=function(c){var a=c.x;var d=c.y;if(nitobi.browser.IE){this.surface.style.display="none"}var b=this.lineStyle;b.display="none";b.top="-3000px";b.left="-3000px";this.dx=a-this.x;this.onAfterResize.notify(this)};nitobi.grid.ColumnResizer.prototype.dispose=function(){this.grid=null;this.line=null;this.lineStyle=null;this.surface=null};nitobi.grid.GridResizer=function(a){this.grid=a;this.widthFixed=false;this.heightFixed=false;this.minHeight=0;this.minWidth=0;this.box=document.getElementById("ntb-grid-resizebox"+a.uid);this.onAfterResize=new nitobi.base.Event()};nitobi.grid.GridResizer.prototype.startResize=function(a,g){this.grid=a;var f=null;var l,k;var e=nitobi.html.getEventCoords(g);l=e.x;k=e.y;this.x=l;this.y=k;var m=a.getWidth();var d=a.getHeight();var j=a.element.offsetLeft;var c=a.element.offsetTop;this.resizeW=!this.widthFixed;this.resizeH=!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.display="block";var b=nitobi.drawing.align.SAMEWIDTH|nitobi.drawing.align.SAMEHEIGHT|nitobi.drawing.align.ALIGNTOP|nitobi.drawing.align.ALIGNLEFT;nitobi.drawing.align(this.box,this.grid.element,b,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(g)}};nitobi.grid.GridResizer.prototype.resize=function(){var b=this.dd.x;var e=this.dd.y;var d=nitobi.html.getBoundingClientRect(this.grid.UiContainer);var a=d.left;var c=d.top;this.box.style.display="block";if((b-a)>this.minWidth){this.box.style.width=(b-a)+"px"}if((e-c)>this.minHeight){this.box.style.height=(e-c)+"px"}};nitobi.grid.GridResizer.prototype.endResize=function(){var a=this.dd.x;var d=this.dd.y;this.box.style.display="none";var c=this.grid.getWidth();var b=this.grid.getHeight();this.newWidth=Math.max(parseInt(c)+(a-this.x),this.minWidth);this.newHeight=Math.max(parseInt(b)+(d-this.y),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(g,h,f){var e='<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" />';e+='<xsl:template match="//TABLE"><ntb:data id="_default">';e+="<xsl:apply-templates /></ntb:data> </xsl:template>";e+='<xsl:template match = "//TR">  <xsl:element name="ntb:e"> <xsl:attribute name="xi"><xsl:value-of select="position()-1+'+parseInt(f)+'"/></xsl:attribute>';for(var d=0;d<h.length;d++){e+='<xsl:attribute name="'+h[d]+'" ><xsl:value-of select="TD['+parseInt(d+1)+']"/></xsl:attribute>'}e+="</xsl:element></xsl:template>";e+="</xsl:stylesheet>";var c=nitobi.xml.createXmlDoc(g);var b=nitobi.xml.createXslProcessor(e);var a=nitobi.xml.transformToXml(c,b);return a};nitobi.data.FormatConverter.convertTsvToEbaXml=function(d,c,b){if(!nitobi.browser.IE&&d[d.length-1]!="\n"){d=d+"\n"}var a="<TABLE><TBODY>"+d.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(a.indexOf("<TBODY><TR>")==-1){a=a.replace(/TBODY\>(.*)\<\/TBODY/,"TBODY><TR><TD>$1</TD></TR></TBODY")}return nitobi.data.FormatConverter.convertHtmlTableToEbaXml(a,c,b)};nitobi.data.FormatConverter.convertTsvToJs=function(b){var a="["+b.replace(/[\&\r]/g,"").replace(/([^\t\n]*)[\t]/g,'$1","').replace(/([^\n]*?)\n/g,'["$1"],')+"]";return a};nitobi.data.FormatConverter.convertEbaXmlToHtmlTable=function(g,f,d,e){var b='<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 = "/">';b+='<TABLE><TBODY><xsl:for-each select="//ntb:e[@xi>'+parseInt(d-1)+" and @xi &lt; "+parseInt(e+1)+']" ><TR>';for(var c=0;c<f.length;c++){b+='<TD><xsl:value-of select="@'+f[c]+'" /></TD>'}b+="</TR></xsl:for-each></TBODY></TABLE></xsl:template></xsl:stylesheet>";var a=nitobi.xml.createXslProcessor(b);return nitobi.xml.transformToXml(g,a).xml.replace(/xmlns:ntb="http:\/\/www.nitobi.com"/,"")};nitobi.data.FormatConverter.convertEbaXmlToTsv=function(e,d,b,a){var f='<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 = "/">';f+='<xsl:for-each select="//ntb:e[@xi>'+parseInt(b-1)+" and @xi &lt; "+parseInt(a+1)+']" >\n';for(var g=0;g<d.length;g++){f+='<xsl:value-of select="@'+d[g]+'" />';if(g<d.length-1){f+="<xsl:text>&#x09;</xsl:text>"}}f+="<xsl:text>&#xa;</xsl:text></xsl:for-each></xsl:template></xsl:stylesheet>";var c=nitobi.xml.createXslProcessor(f);return nitobi.xml.transformToString(e,c).replace(/xmlns:ntb="http:\/\/www.nitobi.com"/,"")};nitobi.data.FormatConverter.getDataColumns=function(b){var a=0;if(b!=null&&b!=""){if(b.substr(0,1)=="<"){a=b.toLowerCase().substr(0,b.toLowerCase().indexOf("</tr>")).split("</td>").length-1}else{a=b.substr(0,b.indexOf("\n")).split("\t").length}}else{a=0}return a};nitobi.data.FormatConverter.getDataRows=function(a){var b=0;if(a!=null&&a!=""){if(a.substr(0,1)=="<"){b=a.toLowerCase().split("</tr>").length-1}else{retValArray=a.split("\n");b=retValArray.length;if(retValArray[retValArray.length-1]==""){b--}}}else{b=0}return b};nitobi.grid.DateColumn=function(a,b){nitobi.grid.DateColumn.baseConstructor.call(this,a,b)};nitobi.lang.extend(nitobi.grid.DateColumn,nitobi.grid.Column);var ntb_datep=nitobi.grid.DateColumn.prototype;nitobi.grid.DateColumn.prototype.setMask=function(){this.xSET("Mask",arguments)};nitobi.grid.DateColumn.prototype.getMask=function(){return this.xGET("Mask",arguments)};nitobi.grid.DateColumn.prototype.setCalendarEnabled=function(){this.xSET("CalendarEnabled",arguments)};nitobi.grid.DateColumn.prototype.isCalendarEnabled=function(){return nitobi.lang.toBool(this.xGET("CalendarEnabled",arguments),false)};nitobi.lang.defineNs("nitobi.grid.Declaration");nitobi.grid.Declaration.parse=function(f){var e={};e.grid=nitobi.xml.parseHtml(f);ntbAssert(!nitobi.xml.hasParseError(e.grid),"The framework was not able to parse the declaration.\n\n\nThe parse error was: "+nitobi.xml.getParseErrorReason(e.grid)+"The declaration contents where:\n"+nitobi.html.getOuterHtml(f),"",EBA_THROW);var d=f.firstChild;while(d!=null){if(typeof(d.tagName)!="undefined"){var a=d.tagName.replace(/ntb\:/gi,"").toLowerCase();if(a=="inlinehtml"){e[a]=d}else{var b="http://www.nitobi.com";if(a=="columndefinition"){var c;if(nitobi.browser.IE){c=("<"+nitobi.xml.nsPrefix+'grid xmlns:ntb="'+b+'"><'+nitobi.xml.nsPrefix+"columns>"+d.parentNode.innerHTML.substring(31).replace(/\=\s*([^\"^\s^\>]+)/g,'="$1" ')+"</"+nitobi.xml.nsPrefix+"columns></"+nitobi.xml.nsPrefix+"grid>")}else{c="<"+nitobi.xml.nsPrefix+'grid xmlns:ntb="'+b+'"><'+nitobi.xml.nsPrefix+"columns>"+d.parentNode.innerHTML.replace(/\=\s*([^\"^\s^\>]+)/g,'="$1" ')+"</"+nitobi.xml.nsPrefix+"columns></"+nitobi.xml.nsPrefix+"grid>"}c=c.replace(/\&nbsp\;/gi," ");e.columndefinitions=nitobi.xml.createXmlDoc();e.columndefinitions.validateOnParse=false;e.columndefinitions=nitobi.xml.loadXml(e.columndefinitions,c);break}else{e[a]=nitobi.xml.parseHtml(d)}}}d=d.nextSibling}return e};nitobi.grid.Declaration.loadDataSources=function(d,a){var b=new Array();if(d.datasources){b=d.datasources.selectNodes("//"+nitobi.xml.nsPrefix+"datasources/*")}if(b.length>0){for(var k=0;k<b.length;k++){var c=b[k].getAttribute("id");if(c!="_default"){var g=b[k].xml.replace(/fieldnames=/g,"FieldNames=").replace(/keys=/g,"Keys=");g='<ntb:grid xmlns:ntb="http://www.nitobi.com"><ntb:datasources>'+g+"</ntb:datasources></ntb:grid>";var f=new nitobi.data.DataTable("local",a.getPagingMode()!=nitobi.grid.PAGINGMODE_NONE,{GridId:a.getID()},{GridId:a.getID()},a.isAutoKeyEnabled());f.initialize(c,g);f.initializeXml(g);a.data.add(f);var e=a.model.selectNodes("//nitobi.grid.Column[@DatasourceId='"+c+"']");for(var h=0;h<e.length;h++){a.editorDataReady(e[h])}}}}};nitobi.lang.defineNs("nitobi.grid");nitobi.grid.EditCompleteEventArgs=function(c,b,d,a){this.editor=c;this.cell=a;this.databaseValue=d;this.displayValue=b};nitobi.grid.EditCompleteEventArgs.prototype.dispose=function(){this.editor=null;this.cell=null;this.metadata=null};nitobi.data.GetCompleteEventArgs=function(h,g,e,d,c,b,a,j,f){this.firstRow=h;this.lastRow=g;this.callback=j;this.dataSource=b;this.context=a;this.ajaxCallback=c;this.startXi=e;this.pageSize=d;this.lastPage=false;this.numRowsReturned=f;this.lastRowReturned=g};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_PAGEDLIVESCROLLING="pagedlivescrolling";nitobi.grid.RENDERMODE_ONDEMAND="ondemand";nitobi.lang.defineNs("nitobi.GridFactory");nitobi.GridFactory.createGrid=function(l,k,j){var h="";var g="";var f="";j=nitobi.html.getElement(j);if(j!=null){xDeclaration=nitobi.grid.Declaration.parse(j);l=xDeclaration.grid.documentElement.getAttribute("mode").toLowerCase();var e=nitobi.GridFactory.isGetHandler(xDeclaration);var d=nitobi.GridFactory.isDatasourceId(xDeclaration);var c=false;if(l==nitobi.grid.MODE_LOCALLIVESCROLLING){ntbAssert(d||e,"To use local LiveScrolling mode a DatasourceId must also be specified.","",EBA_THROW);h=nitobi.grid.PAGINGMODE_LIVESCROLLING;g=nitobi.data.DATAMODE_LOCAL}else{if(l==nitobi.grid.MODE_LIVESCROLLING){ntbAssert(e,"To use LiveScrolling mode a GetHandler must also be specified.","",EBA_THROW);h=nitobi.grid.PAGINGMODE_LIVESCROLLING;g=nitobi.data.DATAMODE_CACHING}else{if(l==nitobi.grid.MODE_NONPAGING){ntbAssert(e,"To use NonPaging mode a GetHandler must also be specified.","",EBA_THROW);c=true;h=nitobi.grid.PAGINGMODE_NONE;g=nitobi.data.DATAMODE_LOCAL}else{if(l==nitobi.grid.MODE_LOCALNONPAGING){ntbAssert(d,"To use local LiveScrolling mode a DatasourceId must also be specified.","",EBA_THROW);h=nitobi.grid.PAGINGMODE_NONE;g=nitobi.data.DATAMODE_LOCAL}else{if(l==nitobi.grid.MODE_LOCALSTANDARDPAGING){h=nitobi.grid.PAGINGMODE_STANDARD;g=nitobi.data.DATAMODE_LOCAL}else{if(l==nitobi.grid.MODE_STANDARDPAGING){h=nitobi.grid.PAGINGMODE_STANDARD;g=nitobi.data.DATAMODE_PAGING}else{if(l==nitobi.grid.MODE_PAGEDLIVESCROLLING){h=nitobi.grid.PAGINGMODE_STANDARD;g=nitobi.data.DATAMODE_PAGING;f=nitobi.grid.RENDERMODE_ONDEMAND}else{}}}}}}}}var b=j.getAttribute("id");l=(l||nitobi.grid.MODE_STANDARDPAGING).toLowerCase();var a=null;if(l==nitobi.grid.MODE_LOCALSTANDARDPAGING){a=new nitobi.grid.GridLocalPage(b)}else{if(l==nitobi.grid.MODE_LIVESCROLLING){a=new nitobi.grid.GridLiveScrolling(b)}else{if(l==nitobi.grid.MODE_LOCALLIVESCROLLING){a=new nitobi.grid.GridLiveScrolling(b)}else{if(l==nitobi.grid.MODE_NONPAGING||l==nitobi.grid.MODE_LOCALNONPAGING){a=new nitobi.grid.GridNonpaging(b)}else{if(l==nitobi.grid.MODE_STANDARDPAGING||l==nitobi.grid.MODE_PAGEDLIVESCROLLING){a=new nitobi.grid.GridStandard(b)}}}}}a.setPagingMode(h);a.setDataMode(g);a.setRenderMode(f);nitobi.GridFactory.processDeclaration(a,j,xDeclaration);j.jsObject=a;return a};nitobi.GridFactory.processDeclaration=function(a,d,l){if(l!=null){a.setDeclaration(l);if(typeof(l.inlinehtml)=="undefined"){var k=document.createElement("ntb:inlinehtml");k.setAttribute("parentid","grid"+a.uid);nitobi.html.insertAdjacentElement(d,"beforeEnd",k);a.Declaration.inlinehtml=k}if(this.data==null||this.data.tables==null||this.data.tables.length==0){var j=new nitobi.data.DataSet();j.initialize();a.connectToDataSet(j)}a.initializeModelFromDeclaration();var h=a.Declaration.columndefinitions||a.Declaration.columns;if(typeof(h)!="undefined"&&h!=null&&h.childNodes.length!=0&&h.childNodes[0].childNodes.length!=0){a.defineColumns(h.documentElement)}nitobi.grid.Declaration.loadDataSources(l,a);a.attachToParentDomElement(a.Declaration.inlinehtml);var g=a.getDataMode();var f=a.getDatasourceId();var e=a.getGetHandler();if(f!=null&&f!=""){a.connectToTable(a.data.getTable(f))}else{a.ensureConnected();if(a.mode.toLowerCase()==nitobi.grid.MODE_LIVESCROLLING&&l!=null&&l.datasources!=null){var c=l.datasources.selectNodes("//ntb:datasource[@id='_default']/ntb:data/ntb:e").length;if(c>0){var b=a.data.getTable("_default");b.initializeXmlData(l.grid.xml);b.initializeXml(l.grid.xml);b.descriptor.leap(0,c*2);b.syncRowCount()}}}window.setTimeout(function(){a.bind()},50)}};nitobi.GridFactory.isLocal=function(c){var b=c.grid.documentElement.getAttribute("datasourceid");var a=c.grid.documentElement.getAttribute("gethandler");if(a!=null&&a!=""){return false}else{if(b!=null&&b!=""){return true}else{throw ("Non-paging grid requires either a gethandler or a local datasourceid to be specified.")}}};nitobi.GridFactory.isGetHandler=function(b){var a=b.grid.documentElement.getAttribute("gethandler");if(a!=null&&a!=""){return true}return false};nitobi.GridFactory.isDatasourceId=function(b){var a=b.grid.documentElement.getAttribute("datasourceid");if(a!=null&&a!=""){return true}return false};nitobi.grid.hover=function(j,g,e){if(!e){return}var c=j.getAttribute("id");var b=c.replace(/__/g,"||");var a=b.split("_");var o=a[3];var n=a[5].replace(/\|\|/g,"__");var m=document.getElementById("cell_"+o+"_0_"+n);var l=m.parentNode;var k=l.childNodes[l.childNodes.length-1];var c=k.getAttribute("id");var a=c.split("_");var h=document.getElementById("cell_"+o+"_"+(Number(a[4])+1)+"_"+n);var f=null;if(h!=null){f=h.parentNode}if(g){var d=nitobi.grid.RowHoverColor||"white";l.style.backgroundColor=d;if(f){f.style.backgroundColor=d}}else{l.style.backgroundColor="";if(f){f.style.backgroundColor=""}}if(g){nitobi.html.addClass(j,"ntb-cell-hover")}else{nitobi.html.removeClass(j,"ntb-cell-hover")}};initEBAGrids=function(){nitobi.initComponents()};nitobi.initGrids=function(){var a=[];var c=document.getElementsByTagName(!nitobi.browser.IE?"ntb:grid":"grid");for(var b=0;b<c.length;b++){if(c[b].jsObject==null){nitobi.initGrid(c[b].id);a.push(c[b].jsObject)}}return a};nitobi.initGrid=function(b){var a=nitobi.html.getElement(b);if(a!=null){a.jsObject=nitobi.GridFactory.createGrid(null,null,a)}return a.jsObject};nitobi.initComponents=function(){nitobi.initGrids()};nitobi.getGrid=function(a){return document.getElementById(a).jsObject};nitobi.base.Registry.getInstance().register(new nitobi.base.Profile("nitobi.initGrid",null,false,"ntb:grid"));nitobi.grid.GridLiveScrolling=function(a){nitobi.grid.GridLiveScrolling.baseConstructor.call(this,a);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 a=arguments;nitobi.grid.GridLiveScrolling.base.createChildren.call(this,a);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 a=this.getRowsPerPage();if(this.datatable.mode=="local"){a=null}this.datatable.get(0,a,this,this.getComplete)}else{this.finalizeRowCount(this.datatable.getRemoteRowCount());this.bindComplete()}};nitobi.grid.GridLiveScrolling.prototype.getComplete=function(a){nitobi.grid.GridLiveScrolling.base.getComplete.call(this,a);if(!this.columnsDefined){this.defineColumnsFinalize()}this.bindComplete()};nitobi.grid.GridLiveScrolling.prototype.pageSelect=function(a){var c=this.Scroller.getUnrenderedBlocks();var b=c.last-c.first;this.reselect(0,b*a)};nitobi.grid.GridLiveScrolling.prototype.page=function(a){var b=this.Scroller.getUnrenderedBlocks();var c=b.last-b.first;this.move(0,c*a)};nitobi.grid.LoadingScreen=function(a){this.loadingScreen=null;this.grid=a;this.loadingImg=null};nitobi.grid.LoadingScreen.prototype.initialize=function(){this.loadingScreen=document.createElement("div");var b=this.findCssUrl();var c="";if(b==null){c="Loading..."}else{c="<img src='"+b+"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 id='ntb-loading-cell"+this.grid.uid+"' style='padding:0px;margin:0px;text-align:center;font:verdana;font-size:10pt;'>"+c+"</td></tr></table>";this.loadingScreen.className="ntb-loading";var a=this.loadingScreen.style;a.verticalAlign="middle";a.visibility="hidden";a.position="absolute";a.top="0px";a.left="0px"};nitobi.grid.LoadingScreen.prototype.attachToElement=function(a){a.appendChild(this.loadingScreen)};nitobi.grid.LoadingScreen.prototype.findCssUrl=function(){var b=nitobi.html.findParentStylesheet(".ntb-loading-Icon");if(b==null){return null}var a=nitobi.html.normalizeUrl(b.href);if(nitobi.browser.IE){while(b.parentStyleSheet){b=b.parentStyleSheet;a=nitobi.html.normalizeUrl(b.href)+a}}return a};nitobi.grid.LoadingScreen.prototype.show=function(){try{this.resize();this.loadingScreen.style.visibility="visible";this.loadingScreen.style.display="block"}catch(a){}};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(a){nitobi.grid.GridLocalPage.baseConstructor.call(this,a);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 a=arguments;nitobi.grid.GridLocalPage.base.createChildren.call(this,a);nitobi.grid.GridLiveScrolling.base.createToolbars.call(this,nitobi.ui.Toolbars.VisibleToolbars.STANDARD|nitobi.ui.Toolbars.VisibleToolbars.PAGING);this.subscribe("EndOfData",function(b){this.toolbars.pagingToolbar.getUiElements()["nextPage"+this.toolbars.uid].disable()});this.subscribe("TopOfData",function(b){this.toolbars.pagingToolbar.getUiElements()["previousPage"+this.toolbars.uid].disable()});this.subscribe("NotTopOfData",function(b){this.toolbars.pagingToolbar.getUiElements()["previousPage"+this.toolbars.uid].enable()});this.subscribe("NotEndOfData",function(b){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(d){this.fire("BeforeLoadDataPage");if(d>-1){this.setCurrentPageIndex(d);this.setDisplayedRowCount(this.getRowsPerPage());var b=this.getCurrentPageIndex()*this.getRowsPerPage();var c=this.getRowsPerPage()-this.getfreezetop();this.setDisplayedRowCount(c);var a=b+c;if(a>=this.getRowCount()){this.fire("EndOfData")}else{this.fire("NotEndOfData")}if(b==0){this.fire("TopOfData")}else{this.fire("NotTopOfData")}this.clearSurfaces();this.updateCellRanges();this.scrollVertical(0)}this.fire("AfterLoadDataPage")};nitobi.grid.GridLocalPage.prototype.setRowsPerPage=function(a){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 a=this.getfreezetop();endRow=this.getRowsPerPage()-1;this.Scroller.view.midcenter.renderGap(a,endRow,false)};nitobi.grid.GridNonpaging=function(a){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 a=arguments;nitobi.grid.GridNonpaging.base.createChildren.call(this,a);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(a){nitobi.grid.GridNonpaging.base.getComplete.call(this,a);this.finalizeRowCount(a.numRowsReturned);this.defineColumnsFinalize();this.bindComplete()};nitobi.grid.GridNonpaging.prototype.renderMiddle=function(){nitobi.grid.GridNonpaging.base.renderMiddle.call(this,arguments);var a=this.getfreezetop();endRow=this.getRowCount();this.Scroller.view.midcenter.renderGap(a,endRow,false)};nitobi.grid.GridStandard=function(a){nitobi.grid.GridStandard.baseConstructor.call(this,a);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 a=arguments;nitobi.grid.GridStandard.base.createChildren.call(this,a);nitobi.grid.GridStandard.base.createToolbars.call(this,nitobi.ui.Toolbars.VisibleToolbars.STANDARD|nitobi.ui.Toolbars.VisibleToolbars.PAGING);this.toolbars.subscribe("FirstPage",nitobi.lang.close(this,this.pageFirst));this.toolbars.subscribe("LastPage",nitobi.lang.close(this,this.pageLast));this.toolbars.subscribe("NextPage",nitobi.lang.close(this,this.pageNext));this.toolbars.subscribe("PreviousPage",nitobi.lang.close(this,this.pagePrevious));this.toolbars.subscribe("InputTextPage",nitobi.lang.close(this,this.pageTextInput));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(a){if(nitobi.grid.GridStandard.base.connectToTable.call(this,a)!=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(a){this.setDisplayedRowCount(this.getDisplayedRowCount()+(a||1));this.updateCellRanges()};nitobi.grid.GridStandard.prototype.decrementDisplayedRowCount=function(a){this.setDisplayedRowCount(this.getDisplayedRowCount()-(a||1));this.updateCellRanges()};nitobi.grid.GridStandard.prototype.subscribeToRowCountReady=function(){};nitobi.grid.GridStandard.prototype.updateDisplayedRowCount=function(a){this.setDisplayedRowCount(a.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(b){var a=this.getToolbars().pagingToolbar;if(a!=null){a.getUiElements()[b+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(b){var a=this.getToolbars().pagingToolbar;if(a!=null){a.getUiElements()[b+this.toolbars.uid].enable()}};nitobi.grid.GridStandard.prototype.pageFirst=function(){this.fire("BeforeLoadPreviousPage");this.loadDataPage(0);this.fire("AfterLoadPreviousPage")};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.pageLast=function(){this.fire("BeforeLoadNextPage");var a=Math.ceil(this.datatable.totalRowCount/this.getRowsPerPage());this.loadDataPage(a-1);this.fire("AfterLoadNextPage")};nitobi.grid.GridStandard.prototype.pageTextInput=function(){this.fire("BeforeLoadNextPage");var b=$ntb("startPage"+this.toolbars.uid);if(b){var a=parseInt(b.value);this.loadDataPage(a-1)}this.fire("AfterLoadNextPage")};nitobi.grid.GridStandard.prototype.loadDataPage=function(e){this.fire("BeforeLoadDataPage");if(e>-1){if(this.sortColumn){if(this.datatable.sortColumn){for(var b=0;b<this.getColumnCount();b++){var c=this.getColumnObject(b);if(c.getColumnName()==this.datatable.sortColumn){this.setSortStyle(b,this.datatable.sortDir);break}}}else{this.setSortStyle(this.sortColumn.column,"",true)}}this.setCurrentPageIndex(e);var a=this.getCurrentPageIndex()*this.getRowsPerPage();var d=this.getRowsPerPage()-this.getfreezetop();this.datatable.flush();this.datatable.get(a,d,this,this.afterLoadDataPage)}this.fire("AfterLoadDataPage")};nitobi.grid.GridStandard.prototype.afterLoadDataPage=function(a){this.setDisplayedRowCount(a.numRowsReturned);this.setRowCount(a.numRowsReturned);if(a.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(a){this.afterLoadDataPage(a);nitobi.grid.GridStandard.base.getComplete.call(this,a);this.defineColumnsFinalize();this.bindComplete()};nitobi.grid.GridStandard.prototype.renderMiddle=function(){nitobi.grid.GridStandard.base.renderMiddle.call(this,arguments);var a=this.getfreezetop();endRow=this.getRowsPerPage()-1;this.Scroller.view.midcenter.renderGap(a,endRow,false)};nitobi.grid.NumberColumn=function(b,a){nitobi.grid.NumberColumn.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.NumberColumn,nitobi.grid.Column);var ntb_numberp=nitobi.grid.NumberColumn.prototype;nitobi.grid.NumberColumn.prototype.setAlign=function(){this.xSET("Align",arguments)};nitobi.grid.NumberColumn.prototype.getAlign=function(){return this.xGET("Align",arguments)};nitobi.grid.NumberColumn.prototype.setMask=function(){this.xSET("Mask",arguments)};nitobi.grid.NumberColumn.prototype.getMask=function(){return this.xGET("Mask",arguments)};nitobi.grid.NumberColumn.prototype.setNegativeMask=function(){this.xSET("NegativeMask",arguments)};nitobi.grid.NumberColumn.prototype.getNegativeMask=function(){return this.xGET("NegativeMask",arguments)};nitobi.grid.NumberColumn.prototype.setGroupingSeparator=function(){this.xSET("GroupingSeparator",arguments)};nitobi.grid.NumberColumn.prototype.getGroupingSeparator=function(){return this.xGET("GroupingSeparator",arguments)};nitobi.grid.NumberColumn.prototype.setDecimalSeparator=function(){this.xSET("DecimalSeparator",arguments)};nitobi.grid.NumberColumn.prototype.getDecimalSeparator=function(){return this.xGET("DecimalSeparator",arguments)};nitobi.grid.NumberColumn.prototype.setOnKeyDownEvent=function(){this.xSET("OnKeyDownEvent",arguments)};nitobi.grid.NumberColumn.prototype.getOnKeyDownEvent=function(){return this.xGET("OnKeyDownEvent",arguments)};nitobi.grid.NumberColumn.prototype.setOnKeyUpEvent=function(){this.xSET("OnKeyUpEvent",arguments)};nitobi.grid.NumberColumn.prototype.getOnKeyUpEvent=function(){return this.xGET("OnKeyUpEvent",arguments)};nitobi.grid.NumberColumn.prototype.setOnKeyPressEvent=function(){this.xSET("OnKeyPressEvent",arguments)};nitobi.grid.NumberColumn.prototype.getOnKeyPressEvent=function(){return this.xGET("OnKeyPressEvent",arguments)};nitobi.grid.NumberColumn.prototype.setOnChangeEvent=function(){this.xSET("OnChangeEvent",arguments)};nitobi.grid.NumberColumn.prototype.getOnChangeEvent=function(){return this.xGET("OnChangeEvent",arguments)};nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnCopyEventArgs=function(c,a,b){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(b,a,c){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(b,a){nitobi.grid.OnAfterCellEditEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnAfterCellEditEventArgs,nitobi.grid.CellEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnAfterColumnResizeEventArgs=function(b,a){nitobi.grid.OnAfterColumnResizeEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnAfterColumnResizeEventArgs,nitobi.grid.ColumnEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnAfterRowDeleteEventArgs=function(a,b){nitobi.grid.OnAfterRowDeleteEventArgs.baseConstructor.call(this,a,b)};nitobi.lang.extend(nitobi.grid.OnAfterRowDeleteEventArgs,nitobi.grid.RowEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnAfterRowInsertEventArgs=function(a,b){nitobi.grid.OnAfterRowInsertEventArgs.baseConstructor.call(this,a,b)};nitobi.lang.extend(nitobi.grid.OnAfterRowInsertEventArgs,nitobi.grid.RowEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnAfterSortEventArgs=function(c,b,a){nitobi.grid.OnAfterSortEventArgs.baseConstructor.call(this,c,b);this.direction=a};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(b,a){nitobi.grid.OnBeforeCellEditEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnBeforeCellEditEventArgs,nitobi.grid.CellEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnBeforeColumnResizeEventArgs=function(b,a){nitobi.grid.OnBeforeColumnResizeEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnBeforeColumnResizeEventArgs,nitobi.grid.ColumnEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnBeforeRowDeleteEventArgs=function(a,b){nitobi.grid.OnBeforeRowDeleteEventArgs.baseConstructor.call(this,a,b)};nitobi.lang.extend(nitobi.grid.OnBeforeRowDeleteEventArgs,nitobi.grid.RowEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnBeforeRowInsertEventArgs=function(b,a){nitobi.grid.OnBeforeRowInsertEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnBeforeRowInsertEventArgs,nitobi.grid.RowEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnBeforeSortEventArgs=function(c,b,a){nitobi.grid.OnBeforeSortEventArgs.baseConstructor.call(this,c,b);this.direction=a};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(b,a){nitobi.grid.OnBeforeCellClickEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnBeforeCellClickEventArgs,nitobi.grid.CellEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnCellBlurEventArgs=function(b,a){nitobi.grid.OnCellBlurEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnCellBlurEventArgs,nitobi.grid.CellEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnCellClickEventArgs=function(b,a){nitobi.grid.OnCellClickEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnCellClickEventArgs,nitobi.grid.CellEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnCellDblClickEventArgs=function(b,a){nitobi.grid.OnCellDblClickEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnCellDblClickEventArgs,nitobi.grid.CellEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnCellFocusEventArgs=function(b,a){nitobi.grid.OnCellFocusEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnCellFocusEventArgs,nitobi.grid.CellEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnCellValidateEventArgs=function(d,a,c,b){nitobi.grid.OnCellValidateEventArgs.baseConstructor.call(this,d,a);this.oldValue=b;this.newValue=c};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(b,a){nitobi.grid.OnHeaderClickEventArgs.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.OnHeaderClickEventArgs,nitobi.grid.ColumnEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnRowBlurEventArgs=function(a,b){nitobi.grid.OnRowBlurEventArgs.baseConstructor.call(this,a,b)};nitobi.lang.extend(nitobi.grid.OnRowBlurEventArgs,nitobi.grid.RowEventArgs);nitobi.lang.defineNs("nitobi.grid");nitobi.grid.OnRowFocusEventArgs=function(a,b){nitobi.grid.OnRowFocusEventArgs.baseConstructor.call(this,a,b)};nitobi.lang.extend(nitobi.grid.OnRowFocusEventArgs,nitobi.grid.RowEventArgs);nitobi.grid.Row=function(a,b){this.grid=a;this.row=b;this.Row=b;this.DomNode=nitobi.grid.Row.getRowElement(a,b)};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(a){return this.grid.getCellObject(this.row,a)};nitobi.grid.Row.prototype.getKey=function(a){return this.grid.getCellObject(this.row,a)};nitobi.grid.Row.getRowElement=function(a,b){return nitobi.grid.Row.getRowElements(a,b).mid};nitobi.grid.Row.getRowElements=function(b,h){var g=b.getFrozenLeftColumnCount();if(!g){return{left:null,mid:$ntb("row_"+h+"_"+b.uid)}}var f=nitobi.grid.Cell;var c={};try{c.left=f.getCellElement(b,h,0).parentNode;var a=f.getCellElement(b,h,g);c.mid=a?a.parentNode:null;return c}catch(d){}};nitobi.grid.Row.getRowNumber=function(a){return parseInt(a.getAttribute("xi"))};nitobi.grid.Row.prototype.xGETMETA=function(){var a=this.MetaNode;a=a.selectSingleNode("@"+arguments[0]);if(a!=null){return a.value}};nitobi.grid.Row.prototype.xSETMETA=function(){var b=this.MetaNode;if(null==b){var c=this.grid.data.selectSingleNode("//root/gridmeta");var a=this.MetaNode=this.grid.data.createNode(1,"r","");a.setAttribute("xi",this.row);c.appendChild(a);b=this.MetaNode=a}if(b!=null){b.setAttribute(arguments[0],arguments[1][0])}else{alert("Cannot set property: "+arguments[0])}};nitobi.grid.RowRenderer=function(d,b,a,f,e,c){this.rowHeight=a;this.xmlDataSource=d;this.dataTableId="";this.firstColumn=f;this.columns=e;this.firstColumn=f;this.uniqueId=c;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(h,j,e,f,d,c){var h=Number(h)||0;var j=Number(j)||0;var a=nitobi.grid.rowXslProc;a.addParameter("start",h,"");a.addParameter("end",h+j,"");a.addParameter("sortColumn",d,"");a.addParameter("sortDirection",c,"");a.addParameter("dataTableId",this.dataTableId,"");a.addParameter("showHeaders",this.showHeaders+0,"");a.addParameter("firstColumn",this.firstColumn,"");a.addParameter("lastColumn",this.lastColumn,"");a.addParameter("uniqueId",this.uniqueId,"");a.addParameter("rowHover",this.rowHover,"");a.addParameter("frozenColumnId",this.frozenColumnId,"");a.addParameter("toolTipsEnabled",this.toolTipsEnabled,"");var b=this.xmlDataSource.xmlDoc();if(b.documentElement.firstChild==null){return""}var g=this.mergeDoc;this.mergeDocCols.replaceChild((!nitobi.browser.IE?g.importNode(this.definitions,true):this.definitions.cloneNode(true)),this.mergeDocCols.firstChild);this.mergeDocData.replaceChild((!nitobi.browser.IE?g.importNode(b.documentElement,true):b.documentElement.cloneNode(true)),this.mergeDocData.firstChild);s2=nitobi.xml.transformToString(g,a,"xml");s2=s2.replace(/ATOKENTOREPLACE/g,"&nbsp;");s2=s2.replace(/\#\&lt\;\#/g,"<").replace(/\#\&gt\;\#/g,">").replace(/\#\&amp;lt\;\#/g,"<").replace(/\#\&amp;gt\;\#/g,">").replace(/\#EQ\#/g,"=").replace(/\#\Q\#/g,'"').replace(/\#\&amp\;\#/g,"&");return s2};nitobi.grid.RowRenderer.prototype.generateXslTemplate=function(h,f,d,c,m,l,k,j,b){this.definitions=h;this.showIndicators=l;this.showHeaders=m;this.firstColumn=d;this.lastColumn=d+c;this.rowHover=k;this.frozenColumnId=(b?b:"");this.toolTipsEnabled=j;return;try{var o=(typeof(gApplicationPath)=="undefined"?window.location.href.substr(0,window.location.href.lastIndexOf("/")+1):gApplicationPath);var a=this.xmlTemplate.selectNodes("//xsl:import");for(var g=0;g<a.length;g++){a[g].setAttribute("href",o+"xsl/"+a[g].getAttribute("href"))}}catch(n){}};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(a,g,e,f,d,c){this.disposal=[];this.height=g;this.rows=e;this.columns=f;this.freezetop=d;this.freezeleft=c;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=a;var b=nitobi.grid.Viewport;this.view={topleft:new b(this.owner,0),topcenter:new b(this.owner,1),midleft:new b(this.owner,3),midcenter:new b(this.owner,4)};this.view.midleft.onHtmlReady.subscribe(this.handleHtmlReady,this);this.setCellRanges();this.scrollSurface=null;this.startRow=d;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(c,b,d,a){this.columns=c;this.rows=b;this.freezetop=a;this.freezeleft=d;this.setCellRanges()};nitobi.grid.Scroller3x3.prototype.setCellRanges=function(){var a=null;if(this.implementsStandardPaging()){a=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,(a?a:this.rows)-this.freezetop,0,this.freezeleft);this.view.midcenter.setCellRanges(this.freezetop,(a?a:this.rows)-this.freezetop,this.freezeleft,this.columns-this.freezeleft)};nitobi.grid.Scroller3x3.prototype.resize=function(a){this.height=a};nitobi.grid.Scroller3x3.prototype.setScrollLeftRelative=function(a){this.setScrollLeft(this.scrollLeft+a)};nitobi.grid.Scroller3x3.prototype.setScrollLeftPercent=function(a){this.setScrollLeft(Math.round((this.view.midcenter.element.scrollWidth-this.view.midcenter.element.clientWidth)*a))};nitobi.grid.Scroller3x3.prototype.setScrollLeft=function(a){this.view.midcenter.element.scrollLeft=a;this.view.topcenter.element.scrollLeft=a};nitobi.grid.Scroller3x3.prototype.getScrollLeft=function(){return this.scrollSurface.scrollLeft};nitobi.grid.Scroller3x3.prototype.setScrollTopRelative=function(a){this.setScrollTop(this.getScrollTop()+a)};nitobi.grid.Scroller3x3.prototype.setScrollTopPercent=function(a){ntbAssert(!isNaN(a),"scrollPercent isNaN");this.setScrollTop(Math.round((this.view.midcenter.element.scrollHeight-this.view.midcenter.element.clientHeight)*a))};nitobi.grid.Scroller3x3.prototype.getScrollTopPercent=function(){return this.scrollSurface.scrollTop/(this.view.midcenter.element.scrollHeight-this.view.midcenter.element.clientHeight)};nitobi.grid.Scroller3x3.prototype.setScrollTop=function(a){this.view.midcenter.element.scrollTop=a;this.view.midleft.element.scrollTop=a;this.render()};nitobi.grid.Scroller3x3.prototype.getScrollTop=function(){return this.scrollSurface.scrollTop};nitobi.grid.Scroller3x3.prototype.clearSurfaces=function(d,c,b,a){this.flushCache();b=true;if(d){c=true;b=true;a=true}if(c){this.view.topleft.clear(true);this.view.topcenter.clear(true)}if(b){this.view.midleft.clear(true,true,false,false);this.view.midcenter.clear(false,false,true)}if(a){}};nitobi.grid.Scroller3x3.prototype.mapToHtml=function(d){var b=this.owner.uid;for(var a=0;a<4;a++){var c=$ntb("gridvp_"+a+"_"+b);this.view[EBAScroller_VIEWPANES[a]].mapToHtml(c,nitobi.html.getFirstChild(c),null)}this.scrollSurface=$ntb("gridvp_3_"+b)};nitobi.grid.Scroller3x3.prototype.getUnrenderedBlocks=function(){var b={first:this.freezetop,last:this.rows-1-this.freezetop};if(!this.implementsShowAll()){var g=this.getScrollTop()+this.getTop()-this.headerHeight;var a=this.view.midcenter;var j=a.findBlockAtCoord(g);var h=a.findBlockAtCoord(g+this.height);var f=null;var e=null;if(j==null){return}f=j.top+Math.floor((g-j.offsetTop)/this.rowHeight);if(h){e=h.top+Math.floor((g+this.height-h.offsetTop)/this.rowHeight)}else{e=f+Math.floor(this.height/this.rowHeight)}e=Math.min(e,this.rows);if(this.implementsStandardPaging()){var d=0;if(this.owner.getRenderMode()==nitobi.grid.RENDERMODE_ONDEMAND){var c=f+d;var k=Math.min(e+d,d+this.getDisplayedRowCount()-1);b={first:c,last:k}}else{var c=d;var k=c+this.getDisplayedRowCount()-1;b={first:c,last:k}}}else{b={first:f,last:e}}this.onRangeUpdate.notify(b)}return b};nitobi.grid.Scroller3x3.prototype.render=function(b){if(this.owner.isBound()&&(this.getScrollTop()!=this.lastScrollTop||b||this.scrollTopPercent>0.9)){var a=nitobi.lang.close(this,this.performRender,[]);window.clearTimeout(this.lastTimeoutId);this.lastTimeoutId=window.setTimeout(a,EBAScroller_RENDERTIMEOUT)}};nitobi.grid.Scroller3x3.prototype.performRender=function(){var a=this.getUnrenderedBlocks();if(a==null){return}var d=this.getScrollTop();var s=this.view.midcenter;var r=this.view.midleft;var c=this.getDataTable();var b=a.first;var f=a.last;if(f>=c.remoteRowCount-1&&!c.rowCountKnown){f+=2}var o=this.cacheMap.gaps(b,f);var n=(this.owner.mode.toLowerCase()==nitobi.grid.MODE_LIVESCROLLING?(b+f<=0):(b+f<=-1));if(n){this.onHtmlReady.notify()}else{if(o[0]!=null){var t=o[0].low;var g=o[0].high;var h=g-t+1;if(!c.inCache(t,h)){if(t==null||h==null){alert("low or rows =null")}if(this.implementsStandardPaging()){var m=this.getCurrentPageIndex()*this.getRowsPerPage();var l=m+this.getRowsPerPage();c.get(m,l)}else{c.get(t,h)}var k=c.cachedRanges(t,g);for(var q=0;q<k.length;q++){var e=this.cacheMap.gaps(k[q].low,k[q].high);for(var p=0;p<e.length;p++){a.first=e[p].low;a.last=e[p].high;this.renderGap(e[p].low,e[p].high)}}return false}else{this.renderGap(t,g)}}}this.onRenderComplete.notify()};nitobi.grid.Scroller3x3.prototype.renderGap=function(a,d){var b=this.cacheMap.gaps(a,d);var e=this.view.midcenter;var f=this.view.midleft;if(b[0]!=null){var a=b[0].low;var d=b[0].high;var c=d-a+1;this.cacheMap.insert(a,d);e.renderGap(a,d);f.renderGap(a,d)}};nitobi.grid.Scroller3x3.prototype.renderSpecified=function(g,a){var m=a-g+1;var k=this.getUnrenderedBlocks();var h=this.getDataTable();if(!h.inCache(g,m)){if(g==null||m==null){alert("low or rows =null")}if(this.implementsStandardPaging()){var f=this.getCurrentPageIndex()*this.getRowsPerPage();var e=f+this.getRowsPerPage();h.get(f,e)}else{h.get(g,m)}var d=h.cachedRanges(g,a);for(var c=0;c<d.length;c++){var l=this.cacheMap.gaps(d[c].low,d[c].high);for(var b=0;b<l.length;b++){k.first=l[b].low;k.last=l[b].high;this.renderGap(l[b].low,l[b].high)}}return false}else{this.renderGap(g,a)}};nitobi.grid.Scroller3x3.prototype.flushCache=function(){if(Boolean(this.cacheMap)){this.cacheMap.flush()}};nitobi.grid.Scroller3x3.prototype.reRender=function(c,b){var a=this.view.midleft.clearBlocks(c,b);this.view.midcenter.clearBlocks(c,b);this.cacheMap.remove(a.top,a.bottom);this.render()};nitobi.grid.Scroller3x3.prototype.getViewportByCoords=function(c,b){var a=0;if(c>=a&&c<this.owner.getfreezetop()&&b>=0&&b<this.owner.frozenLeftColumnCount()){return this.view.topleft}if(c>=a&&c<this.owner.getfreezetop()&&b>=this.owner.getFrozenLeftColumnCount()&&b<this.owner.getColumnCount()){return this.view.topcenter}if(c>=this.owner.getfreezetop()+a&&c<this.owner.getDisplayedRowCount()+a&&b>=0&&b<this.owner.getFrozenLeftColumnCount()){return this.view.midleft}if(c>=this.owner.getfreezetop()+a&&c<this.owner.getDisplayedRowCount()+a&&b>=this.owner.getFrozenLeftColumnCount()&&b<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(a){this.dataTable=a};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(b,a){this.view.topleft.setSort(b,a);this.view.topcenter.setSort(b,a);this.view.midleft.setSort(b,a);this.view.midcenter.setSort(b,a)};nitobi.grid.Scroller3x3.prototype.setRowHeight=function(a){this.rowHeight=a;this.setViewportProperty("RowHeight",a)};nitobi.grid.Scroller3x3.prototype.setHeaderHeight=function(a){this.headerHeight=a;this.setViewportProperty("HeaderHeight",a)};nitobi.grid.Scroller3x3.prototype.setViewportProperty=function(d,c){var a=this.view;for(var b=0;b<EBAScroller_VIEWPANES.length;b++){a[EBAScroller_VIEWPANES[b]]["set"+d](c)}};nitobi.grid.Scroller3x3.prototype.fire=function(a,b){return nitobi.event.notify(a+this.uid,b)};nitobi.grid.Scroller3x3.prototype.subscribe=function(a,c,b){if(typeof(b)=="undefined"){b=this}return nitobi.event.subscribe(a+this.uid,nitobi.lang.close(b,c))};nitobi.grid.Scroller3x3.prototype.dispose=function(){try{(this.cacheMap!=null?this.cacheMap.flush():"");this.cacheMap=null;var c=this.disposal.length;for(var b=0;b<c;b++){if(typeof(this.disposal[b])=="function"){this.disposal[b].call(this)}this.disposal[b]=null}for(var a in this.view){this.view[a].dispose()}for(var d in this){if(this[d]!=null&&this[d].dispose instanceof Function){this[d].dispose()}}}catch(f){}};nitobi.grid.Selection=function(a,c){nitobi.grid.Selection.baseConstructor.call(this,a);this.owner=a;var b=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;this.dragFillEnabled=c||false};nitobi.lang.extend(nitobi.grid.Selection,nitobi.collections.CellSet);nitobi.grid.Selection.prototype.setRange=function(c,b,a,d){nitobi.grid.Selection.base.setRange.call(this,c,b,a,d);this.startCell=this.owner.getCellElement(c,b);this.endCell=this.owner.getCellElement(a,d)};nitobi.grid.Selection.prototype.setRangeWithDomNodes=function(b,a){this.setRange(nitobi.grid.Cell.getRowNumber(b),nitobi.grid.Cell.getColumnNumber(b),nitobi.grid.Cell.getRowNumber(a),nitobi.grid.Cell.getColumnNumber(a))};nitobi.grid.Selection.prototype.createBoxes=function(){if(!this.created){var c=this.owner.uid;var b=nitobi.html;var d=b.createElement("div",{"class":"ntb-grid-selection-grabby"});this.expanderGrabbyEvents=[{type:"mousedown",handler:this.handleGrabbyMouseDown},{type:"mouseup",handler:this.handleGrabbyMouseUp},{type:"click",handler:this.handleGrabbyClick}];b.attachEvents(d,this.expanderGrabbyEvents,this);this.boxexpanderGrabby=d;this.box=this.createBox("selectbox"+c);this.boxl=this.createBox("selectboxl"+c);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}];b.attachEvents(this.box,this.events,this);b.attachEvents(this.boxl,this.events,this);var a=this.owner.Scroller.view;a.midcenter.surface.appendChild(this.box);a.midleft.surface.appendChild(this.boxl);this.clear();this.created=true}};nitobi.grid.Selection.prototype.createBox=function(d){var c;var a;if(nitobi.browser.IE){a=c=document.createElement("div")}else{c=nitobi.html.createTable({cellpadding:0,cellspacing:0,border:0},{backgroundColor:"transparent"});a=c.rows[0].cells[0]}c.className="ntb-grid-selection ntb-grid-selection-border";c.setAttribute("id","ntb-grid-selection-"+d);var b=nitobi.html.createElement("div",{id:d,"class":"ntb-grid-selection-background"});a.appendChild(b);return c};nitobi.grid.Selection.prototype.clearBoxes=function(){if(this.box!=null){this.clearBox(this.box)}if(this.boxl!=null){this.clearBox(this.boxl)}this.created=false;delete this.box;delete this.boxl;this.box=null;this.boxl=null};nitobi.grid.Selection.prototype.clearBox=function(a){nitobi.html.detachEvents(a,this.events);if(a.parentNode!=null){a.parentNode.removeChild(a)}a=null};nitobi.grid.Selection.prototype.handleGrabbyMouseDown=function(b){this.selecting=true;this.setExpanding(true,"vert");var f=this.getTopLeftCell();var e=this.getBottomRightCell();this.expandStartCell=f;this.expandEndCell=e;var d=this.owner.getScrollSurface();this.expandStartCoords=nitobi.html.getBoundingClientRect(this.box,d.scrollTop+document.body.scrollTop,d.scrollLeft+document.body.scrollLeft);this.expandStartHeight=Math.abs(f.getRow()-e.getRow())+1;this.expandStartWidth=Math.abs(f.getColumn()-e.getColumn())+1;this.expandStartTopRow=f.getRow();this.expandStartBottomRow=e.getRow();this.expandStartLeftColumn=f.getColumn();this.expandStartRightColumn=e.getColumn();var c=nitobi.grid.Cell;if(c.getRowNumber(this.startCell)>c.getRowNumber(this.endCell)){var a=this.startCell;this.startCell=this.endCell;this.endCell=a}this.onBeforeExpand.notify(this)};nitobi.grid.Selection.prototype.handleGrabbyMouseUp=function(a){if(this.expanding){this.selecting=false;(this._startRow==this._endRow)?this.setExpanding(false,"horiz"):this.setExpanding(false);this.onAfterExpand.notify(this)}};nitobi.grid.Selection.prototype.handleGrabbyClick=function(a){};nitobi.grid.Selection.prototype.expand=function(q,c){this.setExpanding(true,c);var b=nitobi.grid.Cell;var s;var r=this.expandStartTopRow,p=this.expandStartLeftColumn;var m=this.expandStartBottomRow,k=this.expandStartRightColumn;var h=b.getRowNumber(this.endCell),f=b.getColumnNumber(this.endCell);var e=b.getRowNumber(this.startCell),d=b.getColumnNumber(this.startCell);var n=b.getColumnNumber(q);var l=b.getRowNumber(q);var j=d,g=e;var a=this.owner;if(c=="horiz"){if(d<f&n<d){this.changeEndCellWithDomNode(a.getCellElement(m,n));this.changeStartCellWithDomNode(a.getCellElement(r,k))}else{if(d>f&&n>d){this.changeEndCellWithDomNode(a.getCellElement(m,n));this.changeStartCellWithDomNode(a.getCellElement(r,p))}else{this.changeEndCellWithDomNode(a.getCellElement((e==m?r:m),n))}}}else{if(e<h&l<e){this.changeEndCellWithDomNode(a.getCellElement(l,k));this.changeStartCellWithDomNode(a.getCellElement(m,p))}else{if(e>h&&l>e){this.changeEndCellWithDomNode(a.getCellElement(l,k));this.changeStartCellWithDomNode(a.getCellElement(r,p))}else{this.changeEndCellWithDomNode(a.getCellElement(l,(d==k?p:k)))}}}this.alignBoxes()};nitobi.grid.Selection.prototype.shrink=function(d){if(nitobi.html.Css.hasClass(d.srcElement,"ntb-grid-selection-border")||nitobi.html.Css.hasClass(d.srcElement,"ntb-grid-selection-grabby")){return}if(this.endCell!=this.startCell&&this.selecting){var s=this.owner.getScrollSurface();var c=nitobi.grid.Cell;var p=c.getRowNumber(this.endCell),n=c.getColumnNumber(this.endCell);var l=c.getRowNumber(this.startCell),j=c.getColumnNumber(this.startCell);var g=nitobi.html.getEventCoords(d);var r=g.y,t=g.x;if(nitobi.browser.IE||document.compatMode=="BackCompat"){r=d.clientY,t=d.clientX}var e=nitobi.html.getBoundingClientRect(this.endCell,s.scrollTop+document.body.scrollTop,s.scrollLeft+document.body.scrollLeft);var q=e.top,o=e.left;if(p>l&&r<q){p=p-Math.floor(((q-4)-r)/this.rowHeight)-1}else{if(r>e.bottom){p=p+Math.floor((r-q)/this.rowHeight)}}if(n>j&&t<o){n--}else{if(t>e.right){n++}}if(this.expanding){var m=this.expandStartCell.getRow(),k=this.expandStartCell.getColumn();var h=this.expandEndCell.getRow(),f=this.expandEndCell.getColumn();if(n>=this.expandStartLeftColumn&&n<=this.expandStartRightColumn){if(n>=j&&n<f){n=f}else{if(n<=j&&n>k){n=k}}if(n>=j&&n<=this.expandStartRightColumn){n=this.expandStartRightColumn}}if(p>=this.expandStartTopRow&&p<=this.expandStartBottomRow){if(l<p&&p<=h){p=h}else{if(l>p&&p>=m){p=m}else{if(l==p){p=(l==m?h:m)}}}}}var b=this.owner.getCellElement(p,n);var a=this.owner.getCellElement(l,j);if(b!=null&&b!=this.endCell||a!=null&&a!=this.startCell){this.changeEndCellWithDomNode(b);this.changeStartCellWithDomNode(a);this.alignBoxes();this.owner.ensureCellInView(b)}}};nitobi.grid.Selection.prototype.getHeight=function(){var a=nitobi.html.getBoundingClientRect(this.box);return a.top-a.bottom};nitobi.grid.Selection.prototype.collapse=function(a){if(!a){a=this.startCell}if(!a){return}this.setRangeWithDomNodes(a,a);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(b,a){this.selecting=true;this.setRangeWithDomNodes(b,a);this.shrink()};nitobi.grid.Selection.prototype.clearSelection=function(a){this.collapse(a)};nitobi.grid.Selection.prototype.resizeSelection=function(a){this.endCell=a;this.shrink()};nitobi.grid.Selection.prototype.moveSelection=function(a){this.collapse(a)};nitobi.grid.Selection.prototype.alignBoxes=function(){var j=this.endCell||this.startCell;var h=this.getCoords();var c=h.top.y;var b=h.top.x;var a=h.bottom.y;var l=h.bottom.x;var k=nitobi.lang.isStandards();var d=oy=(nitobi.browser.IE?-1:0);var f=oh=(nitobi.browser.IE&&k?-1:1);if(nitobi.browser.SAFARI||nitobi.browser.CHROME){oy=d=-1;if(k){oh=f=-1}}if(l>=this.freezeLeft&&a>=this.freezeTop){var g=this.box;g.style.display="block";this.align(g,this.startCell,j,286265344,oh,f,oy,d);if(this.dragFillEnabled){(g.rows!=null?g.rows[0].cells[0]:g).appendChild(this.boxexpanderGrabby)}}else{this.box.style.display="none"}if(l<this.freezeLeft||b<this.freezeLeft){var g=this.boxl;g.style.display="block";this.align(g,this.startCell,j,286265344,oh,f,oy,d);if(this.box.style.display=="none"){if(this.dragFillEnabled){(g.rows!=null?g.rows[0].cells[0]:g).appendChild(this.boxexpanderGrabby)}}}else{this.boxl.style.display="none"}};nitobi.grid.Selection.prototype.redraw=function(a){if(!this.selecting){this.setRangeWithDomNodes(a,a)}else{this.changeEndCellWithDomNode(a)}this.alignBoxes()};nitobi.grid.Selection.prototype.changeStartCellWithDomNode=function(a){this.startCell=a;var b=nitobi.grid.Cell;this.changeStartCell(b.getRowNumber(a),b.getColumnNumber(a))};nitobi.grid.Selection.prototype.changeEndCellWithDomNode=function(a){this.endCell=a;var b=nitobi.grid.Cell;this.changeEndCell(b.getRowNumber(a),b.getColumnNumber(a))};nitobi.grid.Selection.prototype.init=function(a){this.createBoxes();var b=new Date();this.selecting=true;this.setRangeWithDomNodes(a,a)};nitobi.grid.Selection.prototype.clear=function(){if(!this.box){return}var a=this.box.style;a.display="none";a.top="-1000px";a.left="-1000px";a.width="1px";a.height="1px";var b=this.boxl.style;b.display="none";b.top="-1000px";b.left="-1000px";b.width="1px";b.height="1px";this.selecting=false};nitobi.grid.Selection.prototype.handleSelectionClick=function(a){if(!this.selected()){if(NTB_SINGLECLICK==null){if(nitobi.browser.IE){a=nitobi.lang.copy(a)}NTB_SINGLECLICK=window.setTimeout(nitobi.lang.close(this,this.edit,[a]),400)}}else{this.collapse();this.owner.focus()}};nitobi.grid.Selection.prototype.handleDblClick=function(a){if(!this.selected()){window.clearTimeout(NTB_SINGLECLICK);NTB_SINGLECLICK=null;if(this.owner.handleDblClick(a)){this.edit(a)}}else{this.collapse()}};nitobi.grid.Selection.prototype.edit=function(a){NTB_SINGLECLICK=null;this.owner.edit(a)};nitobi.grid.Selection.prototype.select=function(b,a){this.selectWithCoords(b.getRowNumber(),b.getColumnNumber(),a.getRowNumber(),a.getColumnNumber())};nitobi.grid.Selection.prototype.selectWithCoords=function(a,d,c,b){this.setRange(a,d,c,b);this.createBoxes();this.alignBoxes()};nitobi.grid.Selection.prototype.handleSelectionMouseUp=function(a){if(this.expanding){this.handleGrabbyMouseUp(a)}this.stopSelecting(a);this.onMouseUp.notify(this)};nitobi.grid.Selection.prototype.handleSelectionMouseDown=function(a){};nitobi.grid.Selection.prototype.stopSelecting=function(b){this.owner.waitt=false;this.selecting=true;if(!this.selected()){var a=this.owner.findActiveCell(b.srcElement)||this.startCell;this.collapse(a)}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 a=this.getCoords();return new nitobi.grid.Cell(this.owner,a.top.y,a.top.x)};nitobi.grid.Selection.prototype.getBottomRightCell=function(){var a=this.getCoords();return new nitobi.grid.Cell(this.owner,a.bottom.y,a.bottom.x)};nitobi.grid.Selection.prototype.getHeight=function(){var a=this.getCoords();return a.bottom.y-a.top.y+1};nitobi.grid.Selection.prototype.getWidth=function(){var a=this.getCoords();return a.bottom.x-a.top.x+1};nitobi.grid.Selection.prototype.getRowByCoords=function(a){return(a.parentNode.offsetTop/a.parentNode.offsetHeight)};nitobi.grid.Selection.prototype.getColumnByCoords=function(b){var a=(this.indicator?-2:0);if(b.parentNode.parentNode.getAttribute("id").substr(0,6)!="freeze"){a+=2-(this.freezeColumn*3)}else{a+=2}return Math.floor((b.sourceIndex-b.parentNode.sourceIndex-a)/3)};nitobi.grid.Selection.prototype.selected=function(){return(this.endCell==this.startCell)?false:true};nitobi.grid.Selection.prototype.setRowHeight=function(a){this.rowHeight=a};nitobi.grid.Selection.prototype.getRowHeight=function(){return this.rowHeight};nitobi.grid.Selection.prototype.setExpanding=function(d,a){if(d&&this.expanding){return}this.expanding=d;this.expandingVertical=(a=="horiz"?false:true);var c=nitobi.html.Css;var e="ntb-grid-selection-border";var b=e+"-active";if(d){c.swapClass(this.box,e,b);c.swapClass(this.boxl,e,b)}else{c.swapClass(this.box,b,e);c.swapClass(this.boxl,b,e)}};nitobi.grid.Selection.prototype.dispose=function(){};nitobi.grid.Selection.prototype.align=function(A,z,y,w,o,j,g,h,t){o=o||0;j=j||0;g=g||0;h=h||0;var v=w;var l,b,c,m,f,e,k,x,q,d,s,r,u,p;if(!z||(nitobi.lang.typeOf(z)!=nitobi.lang.type.HTMLNODE)){return}ntbAssert(Boolean(z.parentNode)&&Boolean(y.parentNode)&&Boolean(A.parentNode),"Couldn't align selection. The parentnode has vanished. Most likely this is due to refilter.");ad=nitobi.html.getBoundingClientRect(z);bd=nitobi.html.getBoundingClientRect(y);b=nitobi.html.getBoundingClientRect(A);at=ad.top;ab=ad.bottom;al=ad.left;ar=ad.right;bt=bd.top;bb=bd.bottom;bl=bd.left;br=bd.right;c=ad.top;m=bd.bottom;f=ad.left;e=bd.right;k=Math.abs(m-c);x=Math.abs(e-f);q=b.top;d=b.bottom;s=b.left;r=b.right;u=Math.abs(d-q);p=Math.abs(r-s);var n=nitobi.html;if(v&268435456){A.style.height=(Math.max(bb-at,ab-bt)+o)+"px"}if(v&16777216){A.style.width=(Math.max(br-al,ar-bl)+j)+"px"}if(v&1048576){A.style.top=(n.getStyleTop(A)+Math.min(c,bt)-q+g)+"px"}if(v&65536){A.style.top=(n.getStyleTop(A)+c-q+k-u+g)+"px"}if(v&4096){A.style.left=(n.getStyleLeft(A)-s+Math.min(f,bl)+h)+"px"}if(v&256){A.style.left=(n.getStyleLeft(A)-s+f+x-p+h)+"px"}if(v&16){A.style.top=(n.getStyleTop(A)+c-q+g+Math.floor((k-u)/2))+"px"}if(v&1){A.style.left=(n.getStyleLeft(A)-s+f+h+Math.floor((x-p)/2))+"px"}};nitobi.grid.Surface=function(b,c,a){this.height=c;this.width=b;this.element=a};nitobi.grid.Surface.prototype.dispose=function(){this.element=null};nitobi.grid.TextColumn=function(b,a){nitobi.grid.TextColumn.baseConstructor.call(this,b,a)};nitobi.lang.extend(nitobi.grid.TextColumn,nitobi.grid.Column);nitobi.lang.defineNs("nitobi.ui");nitobi.ui.Toolbars=function(b,a){this.grid=b;this.uid="nitobiToolbar_"+nitobi.base.getUid();this.toolbars={};this.visibleToolbars=a};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(a){this.initialize();this.container=a;if(this.standardToolbar==null&&this.visibleToolbars){this.makeToolbar();this.render()}};nitobi.ui.Toolbars.prototype.setWidth=function(a){this.width=a};nitobi.ui.Toolbars.prototype.getWidth=function(){return this.width};nitobi.ui.Toolbars.prototype.setHeight=function(a){this.height=a};nitobi.ui.Toolbars.prototype.getHeight=function(){return this.height};nitobi.ui.Toolbars.prototype.setRowInsertEnabled=function(a){this.rowInsertEnabled=a};nitobi.ui.Toolbars.prototype.isRowInsertEnabled=function(){return this.rowInsertEnabled};nitobi.ui.Toolbars.prototype.setRowDeleteEnabled=function(a){this.rowDeleteEnabled=a};nitobi.ui.Toolbars.prototype.isRowDeleteEnabled=function(){return this.rowDeleteEnabled};nitobi.ui.Toolbars.prototype.makeToolbar=function(){var b=this.findCssUrl();this.toolbarXml.documentElement.setAttribute("id","toolbar"+this.uid);this.toolbarXml.documentElement.setAttribute("image_directory",b);var a=this.toolbarXml.selectNodes("/toolbar/items/*");for(var c=0;c<a.length;c++){if(a[c].nodeType!=8){a[c].setAttribute("id",a[c].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",b);a=(this.toolbarPagingXml.selectNodes("/toolbar/items/*"));for(var c=0;c<a.length;c++){if(a[c].nodeType!=8){a[c].setAttribute("id",a[c].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 a=nitobi.html.Css.findParentStylesheet(".ntb-toolbar");if(a==null){a=nitobi.html.Css.findParentStylesheet(".ntb-grid");if(a==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 "+a)}}return nitobi.html.Css.getPath(a)};nitobi.ui.Toolbars.prototype.isToolbarEnabled=function(){return this.enabled};nitobi.ui.Toolbars.prototype.render=function(){var _540=this.container;_540.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 _542=nitobi.xml.createXslDoc(xsl);xsl=nitobi.ui.pagingToolbarXsl;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 _543=nitobi.xml.createXslDoc(xsl);var _544=nitobi.xml.transformToString(this.standardToolbar.getXml(),_542,"xml");_540.innerHTML=_544;_540.style.zIndex="1000";var _545=nitobi.xml.transformToString(this.pagingToolbar.getXml(),_543,"xml");_540.innerHTML+=_545;_542=null;xmlDoc=null;this.standardToolbar.attachToTag();this.pagingToolbar.attachToTag();this.resize();var _546=this;var _547=this.standardToolbar.getUiElements();for(eachbutton in _547){if(_547[eachbutton].m_HtmlElementHandle==null){continue}_547[eachbutton].toolbar=this;_547[eachbutton].grid=this.grid;if(nitobi.browser.IE&&_547[eachbutton].m_HtmlElementHandle.onbuttonload!=null){var x=function(item,grid,tbar,iDom){eval(_547[eachbutton].m_HtmlElementHandle.onbuttonload)};x(_547[eachbutton],this.grid,this,_547[eachbutton].m_HtmlElementHandle)}else{if(!nitobi.browser.IE&&_547[eachbutton].m_HtmlElementHandle.hasAttribute("onbuttonload")){var x=function(item,grid,tbar,iDom){eval(_547[eachbutton].m_HtmlElementHandle.getAttribute("onbuttonload"))};x(_547[eachbutton],this.grid,this,_547[eachbutton].m_HtmlElementHandle)}}switch(eachbutton){case"save"+this.uid:_547[eachbutton].onClick=function(){_546.fire("Save")};break;case"newRecord"+this.uid:_547[eachbutton].onClick=function(){_546.fire("InsertRow")};if(!this.isRowInsertEnabled()){_547[eachbutton].disable()}break;case"deleteRecord"+this.uid:_547[eachbutton].onClick=function(){_546.fire("DeleteRow")};if(!this.isRowDeleteEnabled()){_547[eachbutton].disable()}break;case"refresh"+this.uid:_547[eachbutton].onClick=function(){var _551=confirm("Refreshing will discard any changes you have made. Is it OK to refresh?");if(_551){_546.fire("Refresh")}};break;case"showhide"+this.uid:this.show_hide_btn=_547[eachbutton];_547[eachbutton].onClick=function(){grid=_546.grid;element=_546.show_hide_btn;var menu=$ntb("ntb-grid-showhide"+grid.uid);if(menu.style.display=="none"){menu.style.position="absolute";menu.style.left="-5000";menu.style.display="";var _553=menu.clientHeight;menu.style.display="none";menu.style.top=(element.m_HtmlElementHandle.parentNode.offsetTop-_553)+"px";menu.style.left=(element.m_HtmlElementHandle.offsetLeft+element.m_HtmlElementHandle.offsetWidth)+"px";menu.style.display=""}else{menu.style.position="relative";menu.style.display="none"}};break;default:}}var _554=this.pagingToolbar.getUiElements();var _546=this;for(eachPbutton in _554){if(_554[eachPbutton].m_HtmlElementHandle==null){continue}_554[eachPbutton].toolbar=this;_554[eachPbutton].grid=this.grid;if(nitobi.browser.IE&&_554[eachPbutton].m_HtmlElementHandle.onbuttonload!=null){var x=function(item,grid,tbar,iDom){eval(_554[eachPbutton].m_HtmlElementHandle.onbuttonload)};x(_554[eachPbutton],this.grid,this,_554[eachPbutton].m_HtmlElementHandle)}else{if(!nitobi.browser.IE&&_554[eachPbutton].m_HtmlElementHandle.hasAttribute("onbuttonload")){var x=function(item,grid,tbar,iDom){eval(_554[eachPbutton].m_HtmlElementHandle.getAttribute("onbuttonload"))};x(_554[eachPbutton],this.grid,this,_554[eachPbutton].m_HtmlElementHandle)}}switch(eachPbutton){case"firstPage"+this.uid:_554[eachPbutton].onClick=function(){_546.fire("FirstPage");_546.resetCounter()};break;case"previousPage"+this.uid:_554[eachPbutton].onClick=function(){_546.fire("PreviousPage");_546.decrementCounter()};_554[eachPbutton].disable();break;case"nextPage"+this.uid:_554[eachPbutton].onClick=function(){_546.fire("NextPage");_546.incrementCounter()};break;case"lastPage"+this.uid:_554[eachPbutton].onClick=function(){_546.fire("LastPage");_546.maxCounter()};break;case"startPage"+this.uid:_554[eachPbutton].onBlur=function(){_546.inputCounter()};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()}_540.style.visibility="visible"};nitobi.ui.Toolbars.prototype.resetCounter=function(){var a=$ntb("startPage"+this.uid);if(a){a.value=String(1)}};nitobi.ui.Toolbars.prototype.maxCounter=function(){var b=$ntb("startPage"+this.uid);var a=this.grid.datatable.totalRowCount/this.grid.getRowsPerPage();if(b){b.value=String(Math.ceil(a))}};nitobi.ui.Toolbars.prototype.incrementCounter=function(){var a=$ntb("startPage"+this.uid);if(a){var b=parseInt(a.value);a.value=String(++b)}};nitobi.ui.Toolbars.prototype.decrementCounter=function(){var a=$ntb("startPage"+this.uid);if(a){var b=parseInt(a.value);a.value=String(--b)}};nitobi.ui.Toolbars.prototype.inputCounter=function(){var d=$ntb("startPage"+this.uid);if(d){var b=Math.ceil(this.grid.datatable.totalRowCount/this.grid.getRowsPerPage());var c=parseInt(d.value);var a=isNaN(d.value);if(c<0||c>b||a){alert("Please enter a value within the ranges of 1 and "+b)}else{this.fire("InputTextPage")}}};nitobi.ui.Toolbars.prototype.calculateRange=function(){var b=1;var a=this.grid.datatable.totalRowCount/this.grid.getRowsPerPage();var c=$ntb("endPage"+this.uid);if(c){c.innerHTML="&nbsp;"+Math.ceil(a)}};nitobi.ui.Toolbars.prototype.resize=function(){var a=this.getWidth();if(this.visibleToolbars&nitobi.ui.Toolbars.VisibleToolbars.PAGING){this.standardToolbar.setHeight(this.getHeight())}if(this.visibleToolbars&nitobi.ui.Toolbars.VisibleToolbars.STANDARD){this.standardToolbar.setHeight(this.getHeight())}};nitobi.ui.Toolbars.prototype.fire=function(a,b){return nitobi.event.notify(a+this.uid,b)};nitobi.ui.Toolbars.prototype.subscribe=function(a,c,b){if(typeof(b)=="undefined"){b=this}return nitobi.event.subscribe(a+this.uid,nitobi.lang.close(b,c))};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(b,a){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=a;this.scrollIncrement=0;this.grid=b;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(b,a,c){this.surface=a;this.element=b;this.container=nitobi.html.getFirstChild(a);this.makeLastBlock(0,this.grid.getRowsPerPage()*5)};nitobi.grid.Viewport.prototype.makeLastBlock=function(a,b){if(this.lastEmptyBlock==null&&this.grid&&this.region>2&&this.region<5&&this.container){if(this.container.lastChild){a=Math.max(a,this.container.lastChild.bottom)}this.lastEmptyBlock=this.renderEmptyBlock(a,b)}};nitobi.grid.Viewport.prototype.setCellRanges=function(b,a,e,d){this.startRow=b;this.rows=a;this.startColumn=e;this.columns=d;this.makeLastBlock(this.startRow,this.startRow+a-1);if(this.lastEmptyBlock!=null&&this.region>2&&this.region<5&&this.rows>0){var c=this.startRow+this.rows-1;if(this.lastEmptyBlock.top>c){this.container.removeChild(this.lastEmptyBlock);this.lastEmptyBlock=null}else{this.lastEmptyBlock.bottom=c;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(e,d,b,c){var a=this.grid.uid;if(this.surface&&e){this.surface.innerHTML='<div id="gridvpcontainer_'+this.region+"_"+a+'"></div>'}if(this.element&&c){this.element.innerHTML='<div id="gridvpsurface_'+this.region+"_"+a+'"><div id="gridvpcontainer_'+this.region+"_"+a+'"></div></div>'}if(this.surface&&b){this.surface.innerHTML='<div id="gridvpcontainer_'+this.region+"_"+a+'"></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(b,a){this.sortColumn=b;this.sortDir=a};nitobi.grid.Viewport.prototype.renderGap=function(d,b){var a=activeRow=null;var f=this.findBlock(d);var e=this.renderInsideEmptyBlock(d,b,f);if(e==null){return}e.setAttribute("rendered","true");var c=b-d+1;e.innerHTML=this.rowRenderer.render(d,c,a,activeRow,this.sortColumn,this.sortDir);this.onHtmlReady.notify(this)};nitobi.grid.Viewport.prototype.findBlock=function(c){var a=this.container.childNodes;for(var b=0;b<a.length;b++){if(c>=a[b].top&&c<=a[b].bottom){return a[b]}}};nitobi.grid.Viewport.prototype.findBlockAtCoord=function(e){var b=this.container.childNodes;for(var c=0;c<b.length;c++){var a=b[c].offsetTop;var d=a+b[c].offsetHeight;if(e>=a&&e<=d){return b[c]}}};nitobi.grid.Viewport.prototype.getBlocks=function(f,e){var d=[];var c=this.findBlock(f);var b=c;d.push(c);while(e>b.bottom){var a=b.nextSibling;if(a!=null){b=a}else{break}d.push(b)}return d};nitobi.grid.Viewport.prototype.clearBlocks=function(c,h){var d=this.getBlocks(c,h);var b=d.length;var f=d[0].top;var a=d[b-1].bottom;var g=d[b-1].nextSibling;for(var e=0;e<b;e++){d[e].parentNode.removeChild(d[e])}this.renderEmptyBlock(f,a,g);return{top:f,bottom:a}};nitobi.grid.Viewport.prototype.renderInsideEmptyBlock=function(c,e,d){if(d==null){return this.renderBlock(c,e)}if(c==d.top&&e>=d.bottom){var b=this.renderBlock(c,e,d);this.container.replaceChild(b,d);if(d.bottom<d.top){throw"Render error"}return b}if(c==d.top&&e<d.bottom){d.top=e+1;d.style.height=(this.rowHeight*(d.bottom-d.top+1))+"px";d.rows=d.bottom-d.top+1;if(d.bottom<d.top){throw"Render error"}return this.renderBlock(c,e,d)}if(c>d.top&&e>=d.bottom){d.bottom=c-1;d.style.height=(this.rowHeight*(d.bottom-d.top+1))+"px";if(d.bottom<d.top){throw"Render error"}return this.renderBlock(c,e,d.nextSibling)}if(c>d.top&&e<d.bottom){var a=this.renderEmptyBlock(d.top,c-1,d);d.top=e+1;d.style.height=(this.rowHeight*(d.bottom-d.top+1))+"px";if(d.bottom<d.top){throw"Render error"}return this.renderBlock(c,e,d)}throw"Could not insert "+c+"-"+e+d.outerHTML};nitobi.grid.Viewport.prototype.renderEmptyBlock=function(c,b,a){var d=this.renderBlock(c,b,a);d.setAttribute("id","eba_grid_emptyblock_"+this.region+"_"+c+"_"+b+"_"+this.grid.uid);if(c==0&&b==99){crash}d.setAttribute("rendered","false");d.style.height=Math.max(((b-c+1)*this.rowHeight),0)+"px";return d};nitobi.grid.Viewport.prototype.renderBlock=function(c,b,a){var d=document.createElement("div");d.setAttribute("id","eba_grid_block_"+this.region+"_"+c+"_"+b+"_"+this.grid.uid);d.top=c;d.bottom=b;d.left=this.startColumn;d.right=this.startColumn+this.columns;d.rows=b-c+1;d.columns=this.columns;if(a){this.container.insertBefore(d,a)}else{this.container.insertBefore(d,null)}return d};nitobi.grid.Viewport.prototype.setHeaderHeight=function(a){this.headerHeight=a};nitobi.grid.Viewport.prototype.setRowHeight=function(a){this.rowHeight=a};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(a,b){return nitobi.event.notify(a+this.uid,b)};nitobi.grid.Viewport.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.grid.Viewport.prototype.attach=function(a,b,c){return nitobi.html.attachEvent(c,a,nitobi.lang.close(this,b))};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 a="http://www.nitobi.com";this.doc=nitobi.xml.createXmlDoc("<"+nitobi.xml.nsPrefix+'datasources xmlns:ntb="'+a+'"></'+nitobi.xml.nsPrefix+"datasources>")};nitobi.data.DataSet.prototype.initialize=function(){this.tables=new Array()};nitobi.data.DataSet.prototype.add=function(a){ntbAssert(!this.tables[a.id],"This table data source has already been added.","",EBA_THROW);this.tables[a.id]=a};nitobi.data.DataSet.prototype.getTable=function(a){return this.tables[a]};nitobi.data.DataSet.prototype.xmlDoc=function(){var a=this.doc.documentElement;while(a.hasChildNodes()){a.removeChild(a.firstChild)}for(var b in this.tables){if(this.tables[b].xmlDoc&&this.tables[b].xmlDoc.documentElement){var c=this.tables[b].xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource").cloneNode(true);this.doc.selectSingleNode("/"+nitobi.xml.nsPrefix+"datasources").appendChild(nitobi.xml.importNode(this.doc,c,true))}}return this.doc};nitobi.data.DataSet.prototype.dispose=function(){for(var a in this.tables){this.tables[a].dispose()}};nitobi.lang.defineNs("nitobi.data");nitobi.data.DataTable=function(e,c,d,b,a){if(c==null){ntbAssert(false,"Table needs estimateRowCount param")}this.estimateRowCount=c;this.version=3;this.uid=nitobi.base.getUid();this.mode=e||"caching";this.setAutoKeyEnabled(a);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(d){this.saveHandlerArgs=d}else{this.saveHandlerArgs={}}if(b){this.getHandlerArgs=b}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(d,b,j,h,g,e,f,c,a){this.setGetHandlerParameter("TableId",d);this.setSaveHandlerParameter("TableId",d);this.id=d;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=g;this.minPageSize=10;this.requestCache=new nitobi.collections.CacheMap(-1,-1);this.dataCache=new nitobi.collections.CacheMap(-1,-1);this.flush();this.sortColumn=e;this.sortDir=f||"Asc";this.filter=new Array();this.onGenerateKey=c;this.remoteRowCount=0;this.setRowCountKnown(false);if(h==null){h=0}if(this.mode!="unbound"){ntbAssert(b!=null&&typeof(b)!="undefined","getHandler is not specified for the nitobi.data.DataTable","",EBA_THROW);if(b!=null){this.ajaxCallbackPool=new nitobi.ajax.HttpRequestPool(nitobi.ajax.HttpRequestPool_MAXCONNECTIONS);this.ajaxCallbackPool.context=this;this.setGetHandler(b);this.setSaveHandler(j)}this.ajaxCallback=new nitobi.ajax.HttpRequest();this.ajaxCallback.responseType="xml"}else{if(b!=null&&typeof(b)!="string"){this.initializeXml(b)}}this.sortXslProc=nitobi.xml.createXslProcessor(nitobi.data.sortXslProc.stylesheet);this.requestQueue=new Array();this.async=true};nitobi.data.DataTable.prototype.setOnGenerateKey=function(a){this.onGenerateKey=a};nitobi.data.DataTable.prototype.getOnGenerateKey=function(){return this.onGenerateKey};nitobi.data.DataTable.prototype.setAutoKeyEnabled=function(a){this.autoKeyEnabled=a};nitobi.data.DataTable.prototype.isAutoKeyEnabled=function(){return this.autoKeyEnabled};nitobi.data.DataTable.prototype.initializeXml=function(c){this.replaceData(c);var b=this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"e").length;if(b>0){var a=this.xmlDoc.xml;a=nitobi.xml.transformToString(this.xmlDoc,this.sortXslProc,"xml");this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,a);this.dataCache.insert(0,b-1);if(this.mode=="local"){this.setRowCountKnown(true)}}this.setRemoteRowCount(b);this.fire("DataInitalized")};nitobi.data.DataTable.prototype.initializeXmlData=function(b){var a=b;if(typeof(b)=="object"){a=b.xml}a=a.replace(/fieldnames=/g,"FieldNames=").replace(/keys=/g,"Keys=");this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,a);this.datastructure=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"datasourcestructure")};nitobi.data.DataTable.prototype.replaceData=function(d){this.initializeXmlData(d);var b=this.datastructure.getAttribute("FieldNames");var c=this.datastructure.getAttribute("Keys");var a=this.datastructure.getAttribute("Defaults");var e=this.datastructure.getAttribute("Types");this.initializeColumns(b,c,e,a)};nitobi.data.DataTable.prototype.initializeSchema=function(){var d=this.columns.join("|");var c=this.keys.join("|");var b=this.defaults.join("|");var a=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,d).replace(/\{keys\}/g,c).replace(/\{defaults\}/g,b).replace(/\{types\}/g,a));this.datastructure=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"datasourcestructure")};nitobi.data.DataTable.prototype.initializeColumns=function(f,a,e,c){if(null!=f){var d=this.columns.join("|");if(d==f){return}this.columns=f.split("|")}if(null!=a){this.keys=a.split("|")}if(null!=e){this.types=e.split("|")}if(null!=c){this.defaults=c.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 b=this.datastructure;if(f){b.setAttribute("FieldNames",f)}if(a){b.setAttribute("Keys",a)}if(c){b.setAttribute("Defaults",c)}if(e){b.setAttribute("Types",e)}this.makeFieldMap();this.fire("ColumnsInitialized")};nitobi.data.DataTable.prototype.getTemplateNode=function(d){var c=null;if(d==null){d=this.defaults}c=nitobi.xml.createElement(this.xmlDoc,"e");for(var b=0;b<this.columns.length;b++){var a=(b>25?String.fromCharCode(Math.floor(b/26)+97):"")+(String.fromCharCode(b%26+97));if(this.defaults[b]==null){c.setAttribute(a,"")}else{c.setAttribute(a,this.defaults[b])}}return c};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 a=this.xmlDoc.selectSingleNode("//ntb:data");nitobi.xml.removeChildren(a)}};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(b,a,d,c){};nitobi.data.DataTable.prototype.merge=function(a){};nitobi.data.DataTable.prototype.getField=function(d,b){var e=this.getRecord(d);var c=this.fieldMap[b];if(c&&e){return e.getAttribute(c.substring(1))}else{return null}};nitobi.data.DataTable.prototype.getRecord=function(b){var a=this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xi='"+b+"']");if(a.length==0){return null}return a[0]};nitobi.data.DataTable.prototype.beginBatchInsert=function(){this.batchInsert=true;this.batchInsertRowCount=0};nitobi.data.DataTable.prototype.commitBatchInsert=function(){this.batchInsert=false;var a=this.batchInsertRowCount;this.batchInsertRowCount=0;this.setRemoteRowCount(this.remoteRowCount+a);if(a>0){this.fire("RowInserted",a)}};nitobi.data.DataTable.prototype.createRecord=function(_5f3,_5f4){var xi=_5f4;this.adjustXi(parseInt(xi),1);var data=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");var _5f7=_5f3||this.getTemplateNode();var _5f8=nitobi.component.getUniqueId();var _5f9=_5f7.cloneNode(true);_5f9.setAttribute("xi",xi);_5f9.setAttribute("xid",_5f8);_5f9.setAttribute("xac","i");if(this.onGenerateKey){var _5fa=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure").getAttribute("Keys").split("|");var xml=null;for(var j=0;j<_5fa.length;j++){var _5fd=this.fieldMap[_5fa[j]].substring(1);var _5fe=_5f9.getAttribute(_5fd);if(!_5fe||_5fe==""){if(!xml){xml=eval(this.onGenerateKey)}if(typeof(xml)=="string"||typeof(xml)=="number"){_5f9.setAttribute(_5fd,xml)}else{try{var ck1=j%26;var ck2=Math.floor(j/26);var _601=(ck2>0?String.fromCharCode(96+ck2):"")+String.fromCharCode(97+ck1);_5f9.setAttribute(_5fd,xml.selectSingleNode("//"+nitobi.xml.nsPrefix+"e").getAttribute(_601))}catch(e){ntbAssert(false,"Key generation failed.","",EBA_THROW)}}}}}data.appendChild(nitobi.xml.importNode(data.ownerDocument,_5f9,true));if(this.log!=null){var _602=_5f9.cloneNode(true);_602.setAttribute("xac","i");_602.setAttribute("xid",_5f8);this.logData.appendChild(nitobi.xml.importNode(this.logData.ownerDocument,_602,true))}this.dataCache.insertIntoRange(_5f4);this.batchInsertRowCount++;if(!this.batchInsert){this.commitBatchInsert()}return _5f9};nitobi.data.DataTable.prototype.updateRecord=function(c,m,k){var h=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@xi='"+c+"']");ntbAssert((null!=h),"Could not find the specified node in the data source.\nTableDataSource: "+this.id+"\nRow: "+c,"",EBA_THROW);var b=h.getAttribute("xid")||"error - unknown xid";ntbAssert(("error - unknown xid"!=b),"Could not find the specified node in the update log.\nTableDataSource: "+this.id+"\nRow: "+c,"",EBA_THROW);var e=(h.getAttribute(m)!=k);if(!e){return}var d="";var a=m;if(h.getAttribute(m)==null&&this.fieldMap[m]!=null){a=this.fieldMap[m].substring(1)}d=h.getAttribute(a);h.setAttribute(a,k);var l="u";var j="u";if(null==this.log){this.flushLog()}var g=h.cloneNode(true);g.setAttribute("xac","u");this.logData=this.log.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");var f=this.logData.selectSingleNode("./"+nitobi.xml.nsPrefix+"e[@xid='"+b+"']");g=nitobi.xml.importNode(this.logData.ownerDocument,g,true);if(null==f){g=nitobi.xml.importNode(this.logData.ownerDocument,g,true);this.logData.appendChild(g);g.setAttribute("xid",b)}else{g.setAttribute("xac",f.getAttribute("xac"));this.logData.replaceChild(g,f)}if((true==this.AutoSave)){this.save()}this.fire("RowUpdated",{field:m,newValue:k,oldValue:d,record:g})};nitobi.data.DataTable.prototype.deleteRecord=function(c){var a=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 b=a.selectSingleNode("*[@xi = '"+c+"']");this.removeRecordFromXml(c,b,a);this.setRemoteRowCount(this.remoteRowCount-1);this.fire("RowDeleted")};nitobi.data.DataTable.prototype.deleteRecordsArray=function(e){var d=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 c=null;var b=null;for(var a=0;a<e.length;a++){var d=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data");b=e[a]-a;c=d.selectSingleNode("*[@xi = '"+b+"']");this.removeRecordFromXml(b,c,d)}this.setRemoteRowCount(this.remoteRowCount-e.length);this.fire("RowDeleted")};nitobi.data.DataTable.prototype.removeRecordFromXml=function(f,c,g){if(c==null){throw"Index out of bounds in delete."}var e=c.getAttribute("xid");var a=this.logData.selectSingleNode("*[@xid='"+e+"']");var d="";if(a!=null){d=a.getAttribute("xac");this.logData.removeChild(a)}if(d!="i"){var b=c.cloneNode(true);b.setAttribute("xac","d");this.logData.appendChild(b)}g.removeChild(c);this.adjustXi(parseInt(f)+1,-1);this.dataCache.removeFromRange(f)};nitobi.data.DataTable.prototype.adjustXi=function(b,a){nitobi.data.adjustXiXslProc.addParameter("startingIndex",b,"");nitobi.data.adjustXiXslProc.addParameter("adjustment",a,"");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(b){this.getHandler=b;for(var a in this.getHandlerArgs){this.setGetHandlerParameter(a,this.getHandlerArgs[a])}};nitobi.data.DataTable.prototype.getGetHandler=function(){return this.getHandler};nitobi.data.DataTable.prototype.setSaveHandler=function(b){this.postHandler=b;for(var a in this.saveHandlerArgs){this.setSaveHandlerParameter(a,this.saveHandlerArgs[a])}};nitobi.data.DataTable.prototype.getSaveHandler=function(){return this.postHandler};nitobi.data.DataTable.prototype.save=function(_624,_625){ntbAssert(this.postHandler!=null&&this.postHandler!="","A postHandler must be defined on the DataTable for saving to work.","",EBA_THROW);if(!eval(_625||"true")){return}try{if(this.version==2.8){var _626=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure").getAttribute("FieldNames").split("|");var _627=this.log.selectNodes("//"+nitobi.xml.nsPrefix+"e[@xac = 'i']");for(var i=0;i<_627.length;i++){for(var j=0;j<_626.length;j++){var _62a=_627[i].getAttribute(this.fieldMap[_626[j]].substring(1));if(!_62a){_627[i].setAttribute(this.fieldMap[_626[j]].substring(1),"")}}_627[i].setAttribute("xf",this.parentValue)}var _62b=this.log.selectNodes("//"+nitobi.xml.nsPrefix+"e[@xac = 'u']");for(var i=0;i<_62b.length;i++){for(var j=0;j<_626.length;j++){var _62a=_62b[i].getAttribute(this.fieldMap[_626[j]].substring(1));if(!_62a){_62b[i].setAttribute(this.fieldMap[_626[j]].substring(1),"")}}}nitobi.data.updategramTranslatorXslProc.addParameter("xkField",this.fieldMap._xk.substring(1),"");nitobi.data.updategramTranslatorXslProc.addParameter("fields",_626.join("|").replace(/\|_xk/,""));nitobi.data.updategramTranslatorXslProc.addParameter("datasourceId",this.id,"");this.log=nitobi.xml.transformToXml(this.log,nitobi.data.updategramTranslatorXslProc)}var _62c=this.getSaveHandler();(_62c.indexOf("?")==-1)?_62c+="?":_62c+="&";_62c+="TableId="+this.id;_62c+="&uid="+(new Date().getTime());this.ajaxCallback=this.ajaxCallbackPool.reserve();ntbAssert(Boolean(this.ajaxCallback),"The datasource is serving too many connections. Please try again later. # current connections: "+this.ajaxCallbackPool.inUse.length);this.ajaxCallback.handler=_62c;this.ajaxCallback.responseType="xml";this.ajaxCallback.context=this;this.ajaxCallback.completeCallback=nitobi.lang.close(this,this.saveComplete);this.ajaxCallback.params=new nitobi.data.SaveCompleteEventArgs(_624);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 _626=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasourcestructure").getAttribute("FieldNames").split("|");_626.splice(_626.length-1,1);_626=_626.join("|");this.log.documentElement.setAttribute("fields",_626);this.log.documentElement.setAttribute("keys",_626)}if(this.isAutoKeyEnabled()&&this.version<3){}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(f){try{var d=f.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xac='i']");if(typeof(d)=="undefined"||d==null){nitobi.lang.throwError("When updating keys from the server for AutoKey support, the inserts could not be parsed.")}var h=f.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"datasourcestructure")[0].getAttribute("keys").split("|");if(typeof(h)=="undefined"||h==null||h.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 e=0;e<d.length;e++){var b=this.getRecord(d[e].getAttribute("xi"));for(var c=0;c<h.length;c++){var a=this.fieldMap[h[c]].substring(1);b.setAttribute(a,d[e].getAttribute(a))}}}catch(g){nitobi.lang.throwError("When updating keys from the server for AutoKey support, the inserts could not be parsed.",g)}};nitobi.data.DataTable.prototype.saveComplete=function(l){var k=l.response;var l=l.params;try{if(this.isAutoKeyEnabled()&&this.version>2.8){this.updateAutoKeys(k)}if(this.version==2.8&&!this.onGenerateKey){var n=k.selectNodes("//insert");for(var c=0;c<n.length;c++){var f=n[c].getAttribute("xk");if(f!=null){var g=this.findWithoutMap("xid",n[c].getAttribute("xid"))[0];var j=this.fieldMap._xk.substring(1);var m=this.fieldMap[this.primaryField].substring(1);g.setAttribute(j,f);g.setAttribute(m,f)}}}if(null!=l.result){ntbAssert((null==errorMessage),"Data Save Error:"+errorMessage,EBA_EM_ATTRIBUTE_ERROR,EBA_ERROR)}var a=k.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource")||k.selectSingleNode("/root");var d=null;if(a){d=a.getAttribute("error")}if(d){this.setHandlerError(d)}else{this.setHandlerError(null)}this.ajaxCallbackPool.release(this.ajaxCallback);var h=new nitobi.data.OnAfterSaveEventArgs(this,k);l.callback.call(this,h)}catch(b){this.ajaxCallbackPool.release(this.ajaxCallback);ebaErrorReport(b,"",EBA_ERROR)}};nitobi.data.DataTable.prototype.makeFieldMap=function(){var d=this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource");var f=0;var b=0;this.fieldMap=new Array();var e=this.columns.length;for(var c=0;c<e;c++){var a=this.columns[c];this.fieldMap[a]=this.getFieldName(b);b++}};nitobi.data.DataTable.prototype.getFieldName=function(a){var c=a%26;var b=Math.floor(a/26);return"@"+(b>0?String.fromCharCode(96+b):"")+String.fromCharCode(97+c)};nitobi.data.DataTable.prototype.find=function(c,b){var a=this.fieldMap[c];if(a){return this.findWithoutMap(a,b)}else{return new Array()}};nitobi.data.DataTable.prototype.findWithoutMap=function(b,a){if(b.charAt(0)!="@"){b="@"+b}return this.xmlDoc.selectNodes("//"+nitobi.xml.nsPrefix+"e["+b+'="'+a+'"]')};nitobi.data.DataTable.prototype.sort=function(d,a,b,c){if(c){d=this.fieldMap[d];d=d.substring(1);a=(a=="Desc")?"descending":"ascending";b=(b=="number")?"number":"text";this.sortXslProc.addParameter("column",d,"");this.sortXslProc.addParameter("dir",a,"");this.sortXslProc.addParameter("type",b,"");this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,nitobi.xml.transformToString(this.xmlDoc,this.sortXslProc,"xml"));this.fire("DataSorted")}else{this.sortColumn=d;this.sortDir=a||"Asc"}};nitobi.data.DataTable.prototype.syncRowCount=function(){this.setRemoteRowCount(this.descriptor.estimatedRowCount)};nitobi.data.DataTable.prototype.setRemoteRowCount=function(b){var a=this.remoteRowCount;this.remoteRowCount=b;if(this.remoteRowCount!=a){this.fire("RowCountChanged",b)}};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(b,a){if(this.getHandler!=null&&this.getHandler!=""){this.getHandler=nitobi.html.setUrlParameter(this.getHandler,b,a)}this.getHandlerArgs[b]=a};nitobi.data.DataTable.prototype.setSaveHandlerParameter=function(b,a){if(this.postHandler!=null&&this.postHandler!=""){this.postHandler=nitobi.html.setUrlParameter(this.getSaveHandler(),b,a)}this.saveHandlerArgs[b]=a};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 a in this){if(this[a]!=null&&this[a].dispose instanceof Function){this[a].dispose()}this[a]=null}};nitobi.data.DataTable.prototype.getTable=function(e,d,c){this.errorCallback=c;var b=this.ajaxCallbackPool.reserve();ntbAssert(Boolean(b),"The datasource is serving too many connections. Please try again later. # current connections: "+this.ajaxCallbackPool.inUse.length);var a=this.getGetHandler();b.handler=a;b.responseType="xml";b.context=this;b.completeCallback=nitobi.lang.close(this,this.getComplete);b.async=this.async;b.params=new nitobi.data.GetCompleteEventArgs(null,null,0,null,b,this,e,d);if(typeof(d)!="function"||this.async==false){b.async=false;return this.getComplete({response:b.get(),params:b.params})}else{b.get()}};nitobi.data.DataTable.prototype.getComplete=function(d){var o=d.response;var c=d.params;if(this.mode!="caching"){this.xmlDoc=nitobi.xml.createXmlDoc()}if(null==o||null==o.xml||""==o.xml){var b="No parse error.";if(nitobi.xml.hasParseError(o)){if(o==null){b="Blank Response was Given"}else{b=nitobi.xml.getParseErrorReason(o)}}ntbAssert(null!=this.errorCallback,"The server returned either an error or invalid XML but there is no error handler in the DataTable.\nThe parse error content was:\n"+b);if(this.errorCallback){this.errorCallback.call(this.context)}this.fire("DataReady",c);return c}else{if(typeof(this.successCallback)=="function"){this.successCallback.call(this.context)}}if(!this.configured){this.configureFromData(o)}o=this.parseResponse(o,c);o=this.assignRowIds(o);var a=null;a=o.selectNodes("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e");var r;var q=a.length;if(c.pageSize==null){c.pageSize=q;c.lastRow=c.startXi+c.pageSize-1;c.firstRow=c.startXi}if(0!=q){ntbAssert(a[0].getAttribute("xi")==(c.startXi),"The gethandler returned a different first row than requested.");r=parseInt(a[a.length-1].getAttribute("xi"));if(this.mode=="paging"){this.dataCache.insert(0,c.pageSize-1)}else{this.dataCache.insert(c.firstRow,r)}}else{r=-1;c.pageSize=0;if(this.totalRowCount==null){var n=this.descriptor.lastKnownRow/this.descriptor.estimatedRowCount||0;this.fire("PastEndOfData",n)}}c.numRowsReturned=q;c.lastRowReturned=r;var m=c.startXi;var l=c.pageSize;if(!isNaN(m)&&!isNaN(l)&&m!=0){this.requestCache.remove(m,m+l-1)}if(this.mode!="caching"){this.replaceData(o)}else{this.mergeData(o)}if(!this.totalRowCount){var k=this.xmlDoc.selectSingleNode("//ntb:datasource").getAttribute("totalrowcount");k=parseInt(k);if(!isNaN(k)){this.totalRowCount=k}this.fire("TotalRowCountReady",this.totalRowCount)}var j=this.xmlDoc.selectSingleNode("//ntb:datasource").getAttribute("parentfield");var h=this.xmlDoc.selectSingleNode("//ntb:datasource").getAttribute("primaryfield");var p=this.xmlDoc.selectSingleNode("//ntb:datasource").getAttribute("parentvalue");this.parentField=j||"";this.parentValue=p||"";this.primaryField=h||"";this.updateFromDescriptor(c);this.fire("RowCountReady",c);if(null!=c.ajaxCallback){this.ajaxCallbackPool.release(c.ajaxCallback)}this.executeRequests();var f=o.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource");var g=null;if(f){g=f.getAttribute("error")}if(g){this.setHandlerError(g)}else{this.setHandlerError(null)}this.fire("DataReady",c);if(null!=c.callback&&null!=c.context){c.callback.call(c.context,c);c.dispose();c=null}else{return c}};nitobi.data.DataTable.prototype.executeRequests=function(){var a=this.requestQueue;this.requestQueue=new Array();for(var b=0;b<a.length;b++){a[b].call()}};nitobi.data.DataTable.prototype.updateFromDescriptor=function(a){if(this.totalRowCount==null){this.descriptor.update(a)}if(this.mode=="paging"){this.setRemoteRowCount(a.numRowsReturned)}else{if(this.totalRowCount!=null){this.setRemoteRowCount(this.getTotalRowCount())}else{this.setRemoteRowCount(this.descriptor.estimatedRowCount)}}this.setRowCountKnown(this.descriptor.isAtEndOfTable)};nitobi.data.DataTable.prototype.setRowCountKnown=function(a){var b=this.rowCountKnown;this.rowCountKnown=a;if(a&&this.rowCountKnown!=b){this.fire("RowCountKnown",this.remoteRowCount)}};nitobi.data.DataTable.prototype.getRowCountKnown=function(){return this.rowCountKnown};nitobi.data.DataTable.prototype.configureFromData=function(a){this.version=this.inferDataVersion(a);if(this.mode=="unbound"){}if(this.mode=="static"){}if(this.mode=="paging"){}if(this.mode=="caching"){}};nitobi.data.DataTable.prototype.mergeData=function(f){if(this.xmlDoc.xml==""){this.initializeXml(f);return}var g=nitobi.xml.nsPrefix;var e="//"+g+"datasource[@id = '"+this.id+"']/"+g+"data";var d=f.selectNodes(e+"//"+g+"e");var c=this.xmlDoc.selectSingleNode(e);var a=d.length;for(var b=0;b<a;b++){if(this.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xi='"+d[b].getAttribute("xi")+"']")){continue}c.appendChild(nitobi.xml.importNode(c.ownerDocument,d[b],true))}};nitobi.data.DataTable.prototype.assignRowIds=function(a){nitobi.data.addXidXslProc.addParameter("guid",nitobi.component.getUniqueId(),"");var b=nitobi.xml.loadXml(a,nitobi.xml.transformToString(a,nitobi.data.addXidXslProc,"xml"));return b};nitobi.data.DataTable.prototype.inferDataVersion=function(a){if(a.selectSingleNode("/root")){return 2.8}return 3};nitobi.data.DataTable.prototype.parseResponse=function(b,a){if(this.version==2.8){return this.parseLegacyResponse(b,a)}else{return this.parseStructuredResponse(b,a)}};nitobi.data.DataTable.prototype.parseLegacyResponse=function(e,c){var b=this.mode=="paging"?0:c.startXi;nitobi.data.dataTranslatorXslProc.addParameter("start",b,"");nitobi.data.dataTranslatorXslProc.addParameter("id",this.id,"");var a=e.selectSingleNode("/root").getAttribute("fields");var g=a.split("|");var d=g.length;var f=(d>25?String.fromCharCode(Math.floor(d/26)+96):"")+(String.fromCharCode(d%26+97));nitobi.data.dataTranslatorXslProc.addParameter("xkField",f,"");e=nitobi.xml.transformToXml(e,nitobi.data.dataTranslatorXslProc);return e};nitobi.data.DataTable.prototype.parseStructuredResponse=function(d,c){d=nitobi.xml.loadXml(d,'<ntb:grid xmlns:ntb="http://www.nitobi.com"><ntb:datasources>'+d.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']").xml+"</ntb:datasources></ntb:grid>");var b=d.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.id+"']/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e");var a=this.mode=="paging"?0:c.startXi;if(b){ntbAssert(Boolean(b.getAttribute("xi")),"No xi was returned in the data from the server. Server must return xi's in the new format.","",EBA_THROW);ntbAssert(a>=0,"startXI is incorrect.");if(b.getAttribute("xi")!=a){nitobi.data.adjustXiXslProc.addParameter("startingIndex","0","");nitobi.data.adjustXiXslProc.addParameter("adjustment",a,"");d=nitobi.xml.loadXml(d,nitobi.xml.transformToString(d,nitobi.data.adjustXiXslProc,"xml"))}}return d};nitobi.data.DataTable.prototype.forceGet=function(h,g,f,e,d,b){this.errorCallback=d;this.successCallback=b;this.context=f;var c=this.getGetHandler();(c.indexOf("?")==-1)?c+="?":c+="&";c+="StartRecordIndex=0&start=0&PageSize="+g+"&SortColumn="+(this.sortColumn||"")+"&SortDirection="+this.sortDir+"&TableId="+this.id+"&uid="+(new Date().getTime());var a=this.ajaxCallbackPool.reserve();ntbAssert(Boolean(a),"The datasource is serving too many connections. Please try again later. # current connections: "+this.ajaxCallbackPool.inUse.length);a.handler=c;a.responseType="xml";a.context=this;a.completeCallback=nitobi.lang.close(this,this.getComplete);a.params=new nitobi.data.GetCompleteEventArgs(0,g-1,0,g,a,this,f,e);a.get();return};nitobi.data.DataTable.prototype.getPage=function(l,k,h,f,d,c){ntbAssert(this.getHandler.indexOf("GridId")!=-1,"The gethandler has not gridId specified on it.");var b=l+k-1;var a=this.dataCache.gaps(0,k-1);var j=a.length;if(j){var g=this.requestCache.gaps(l,b);if(g.length==0){var e=nitobi.lang.close(this,this.get,arguments);this.requestQueue.push(e);return}this.getFromServer(l,b,l,b,h,f,d)}else{this.getFromCache(l,k,h,f,d)}};nitobi.data.DataTable.prototype.get=function(f,d,b,e,c){this.errorCallback=c;var a=null;if(this.mode=="caching"){a=this.getCached(f,d,b,e,c)}if(this.mode=="local"||this.mode=="static"){a=this.getTable(b,e,c)}if(this.mode=="paging"){a=this.getPage(f,d,b,e,c)}return a};nitobi.data.DataTable.prototype.inCache=function(e,d){if(this.mode=="local"){return true}var c=e,b=e+d-1;var a=this.getRemoteRowCount()-1;if(this.getRowCountKnown()&&a<b){b=a}var g=this.dataCache.gaps(c,b);var f=g.length;return !(f>0)};nitobi.data.DataTable.prototype.cachedRanges=function(b,a){return this.dataCache.ranges(b,a)};nitobi.data.DataTable.prototype.getCached=function(o,n,m,l,k,j){if(n==null){return this.getFromServer(h,null,o,null,m,l,k)}var h=o,f=o+n-1;var e=this.dataCache.gaps(h,f);var d=e.length;ntbAssert(d==e.length,"numCacheGaps != gaps.length despite setting it so. Concurrency problem has arisen.");if(this.mode!="unbound"&&d>0){var g=e[d-1].low;var a=e[d-1].high;var c=this.requestCache.gaps(g,a);if(c.length==0){var b=nitobi.lang.close(this,this.get,arguments);this.requestQueue.push(b);return}return this.getFromServer(h,f,g,a,m,l,k)}else{this.getFromCache(o,n,m,l,k)}};nitobi.data.DataTable.prototype.getFromServer=function(k,j,l,d,h,f,g){ntbAssert(this.getHandler!=null&&typeof(this.getHandler)!="undefined","getHandler not defined in table eba.datasource",EBA_THROW);this.requestCache.insert(l,d);var e=(j==null?null:(d-l+1));var c=(e==null?"":e);var b=this.getGetHandler();(b.indexOf("?")==-1)?b+="?":b+="&";b+="StartRecordIndex="+l+"&start="+l+"&PageSize="+(c)+"&SortColumn="+(this.sortColumn||"")+"&SortDirection="+this.sortDir+"&uid="+(new Date().getTime());var a=this.ajaxCallbackPool.reserve();ntbAssert(Boolean(a),"The datasource is serving too many connections. Please try again later. # current connections: "+this.ajaxCallbackPool.inUse.length);a.handler=b;a.responseType="xml";a.context=this;a.completeCallback=nitobi.lang.close(this,this.getComplete);a.async=this.async;a.params=new nitobi.data.GetCompleteEventArgs(k,j,l,e,a,this,h,f);return a.get()};nitobi.data.DataTable.prototype.getFromCache=function(h,f,d,b,a){var g=h,e=h+f-1;if(g>0||e>0){if(typeof(b)=="function"){var c=new nitobi.data.GetCompleteEventArgs(g,e,g,e-g+1,null,this,d,b);c.callback.call(c.context,c)}}};nitobi.data.DataTable.prototype.mergeFromXml=function(e,d){var b=Number(e.documentElement.firstChild.getAttribute("xi"));var c=Number(e.documentElement.lastChild.getAttribute("xi"));var a=this.dataCache.gaps(b,c);if(this.mode=="local"&&a.length==1){this.dataCache.insert(a[0].low,a[0].high);this.mergeFromXmlGetComplete(e,d,b,c);this.batchInsertRowCount=(a[0].high-a[0].low+1);this.commitBatchInsert();return}if(a.length==0){this.mergeFromXmlGetComplete(e,d,b,c)}else{if(a.length==1){this.get(a[0].low,a[0].high-a[0].low+1,this,nitobi.lang.close(this,this.mergeFromXmlGetComplete,[e,d,b,c]))}else{this.forceGet(b,c,this,nitobi.lang.close(this,this.mergeFromXmlGetComplete,[e,d,b,c]))}}};nitobi.data.DataTable.prototype.mergeFromXmlGetComplete=function(a,h,g,f){var e=nitobi.xml.createElement(this.xmlDoc,"newdata");e.appendChild(a.documentElement.cloneNode(true));this.xmlDoc.documentElement.appendChild(nitobi.xml.importNode(this.xmlDoc,e,true));nitobi.data.mergeEbaXmlXslProc.addParameter("startRowIndex",g,"");nitobi.data.mergeEbaXmlXslProc.addParameter("endRowIndex",f,"");nitobi.data.mergeEbaXmlXslProc.addParameter("guid",nitobi.component.getUniqueId(),"");this.xmlDoc=nitobi.xml.loadXml(this.xmlDoc,nitobi.xml.transformToString(this.xmlDoc,nitobi.data.mergeEbaXmlXslProc,"xml"));e=nitobi.xml.createElement(this.log,"newdata");var d=a.selectNodes("//"+nitobi.xml.nsPrefix+"e");var c=0;for(var b=0;b<d.length;b++){c=d[b].attributes.getNamedItem("xi").value;e.appendChild(this.xmlDoc.selectSingleNode("/"+nitobi.xml.nsPrefix+"grid/"+nitobi.xml.nsPrefix+"datasources/"+nitobi.xml.nsPrefix+"datasource/"+nitobi.xml.nsPrefix+"data/"+nitobi.xml.nsPrefix+"e[@xi="+c+"]").cloneNode(true))}this.log.documentElement.appendChild(nitobi.xml.importNode(this.log,e,true));nitobi.data.mergeEbaXmlToLogXslProc.addParameter("defaultAction","u","");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"));h.call()};nitobi.data.DataTable.prototype.fillColumn=function(d,c){nitobi.data.fillColumnXslProc.addParameter("column",this.fieldMap[d].substring(1));nitobi.data.fillColumnXslProc.addParameter("value",c);this.xmlDoc.loadXML(nitobi.xml.transformToString(this.xmlDoc,nitobi.data.fillColumnXslProc,"xml"));var b=parseFloat((new Date()).getTime());var a=nitobi.xml.createElement(this.log,"newdata");this.log.documentElement.appendChild(nitobi.xml.importNode(this.log,a,true));a.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.getTotalRowCount=function(){return this.totalRowCount};nitobi.data.DataTable.prototype.setHandlerError=function(a){this.handlerError=a};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(a,b){return nitobi.event.notify(a+this.uid,b)};nitobi.data.DataTable.prototype.subscribe=function(b,c,a){if(typeof(a)=="undefined"){a=this}return nitobi.event.subscribe(b+this.uid,nitobi.lang.close(a,c))};nitobi.lang.defineNs("nitobi.data");nitobi.data.DataTableDescriptor=function(a,c,b){this.disposal=[];this.estimatedRowCount=0;this.leapMultiplier=2;this.estimateRowCount=(b==null?true:b);this.lastKnownRow=0;this.isAtEndOfTable=false;this.table=a;this.lowestEmptyRow=0;this.tableProjectionUpdatedEvent=c;this.disposal.push(this.tableProjectionUpdatedEvent)};nitobi.data.DataTableDescriptor.prototype.startPeek=function(){this.enablePeek=true;this.peek()};nitobi.data.DataTableDescriptor.prototype.peek=function(){var b;if(this.lowestEmptyRow>0){var a=this.lowestEmptyRow-this.lastKnownRow;b=this.lastKnownRow+Math.round(a/2)}else{b=(this.estimatedRowCount*this.leapMultiplier)}this.table.get(Math.round(b),1,this,this.peekComplete)};nitobi.data.DataTableDescriptor.prototype.peekComplete=function(a){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(c,b){if(this.lowestEmptyRow>0){var a=this.lowestEmptyRow-this.lastKnownRow;this.estimatedRowCount=this.lastKnownRow+Math.round(a/2)}else{if(c==null||b==null){this.estimatedRowCount=0}else{if(this.estimateRowCount){this.estimatedRowCount=(this.estimatedRowCount*c)+b}}}this.fireProjectionUpdatedEvent()};nitobi.data.DataTableDescriptor.prototype.update=function(e,d){if(null==d){d=false}if(this.isAtEndOfTable&&!d){return false}var b=(e!=null&&e.numRowsReturned==0&&e.startXi==0);var c=(e!=null&&e.lastRow!=e.lastRowReturned);if(null==e){e={lastPage:false,pageSize:1,firstRow:0,lastRow:0,startXi:0}}var a=(b)||(c)||(this.isAtEndOfTable)||((this.lastKnownRow==this.estimatedRowCount-1)&&(this.estimatedRowCount==this.lowestEmptyRow));if(e.pageSize==0&&!a){this.lowestEmptyRow=this.lowestEmptyRow>0?Math.min(e.startXi,this.lowestEmptyRow):e.startXi;this.leap();return true}this.lastKnownRow=Math.max(e.lastRowReturned,this.lastKnownRow);if(a&&!d){if(e.lastRowReturned>=0){this.estimatedRowCount=e.lastRowReturned+1;this.isAtEndOfTable=true}else{if(b){this.estimatedRowCount=0;this.isAtEndOfTable=true}else{this.estimatedRowCount=this.lastKnownRow+Math.ceil((e.lastRow-this.lastKnownRow)/2)}}this.fireProjectionUpdatedEvent();this.stopPeek();return true}if(!this.estimateRowCount){this.estimatedRowCount=this.lastKnownRow+1}if(this.estimatedRowCount==0){this.estimatedRowCount=(e.lastRow+1)*(this.estimateRowCount?2:1)}if((this.estimatedRowCount>(e.lastRow+1)&&!d)||!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(a){if(this.tableProjectionUpdatedEvent!=null){this.tableProjectionUpdatedEvent(a)}};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(a){this.source=a;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(d,c,b,h,g,f,e,a){this.firstRow=d;this.lastRow=c;this.callback=a;this.dataSource=f;this.context=e;this.ajaxCallback=g;this.startXi=b;this.pageSize=h;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(a){this.callback=a};nitobi.data.SaveCompleteEventArgs.prototype.initialize=function(){};nitobi.data.OnAfterSaveEventArgs=function(c,b,a){nitobi.data.OnAfterSaveEventArgs.baseConstructor.call(this,c);this.success=a;this.responseData=b};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 b=nitobi.html.createElement("div");b.innerHTML="<table border='0' cellpadding='0' cellspacing='0' class='ntb-input-border'><tr><td></td></tr></table>";var a=this.placeholder=b.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(a){if(this.ignoreBlur){return false}this.ignoreBlur=true};nitobi.form.Control.prototype.bind=function(b,a){this.owner=b;this.cell=a;this.ignoreBlur=false};nitobi.form.Control.prototype.hide=function(){this.placeholder.style.left="-2000px"};nitobi.form.Control.prototype.attachToParent=function(a){a.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 a=1,b=1,d=1,c=1;if(nitobi.browser.MOZ&&!nitobi.browser.FF3){var f=this.owner.getScrollSurface();var e=this.owner.getActiveView().region;if(e==3||e==4){a=f.scrollTop-nitobi.form.EDITOR_OFFSETY}if(e==1||e==4){b=f.scrollLeft-nitobi.form.EDITOR_OFFSETX}}nitobi.drawing.align(this.placeholder,this.cell.getDomNode(),286265344,d,c,-a,-b)};nitobi.form.Control.prototype.selectText=function(){this.focus();if(this.control&&this.control.createTextRange){var a=this.control.createTextRange();a.collapse(false);a.select()}};nitobi.form.Control.prototype.checkValidity=function(a){var b=this.deactivate(a);if(b==false){nitobi.html.cancelBubble(a);return false}return true};nitobi.form.Control.prototype.handleKey=function(c){var d=c.keyCode;if(this.onKeyDown.notify(c)==false){return}var b=nitobi.form.Keys;var e=0;var a=0;if(d==b.UP){e=-1}else{if(d==b.DOWN){e=1}else{if(d==b.TAB){a=1;if(c.shiftKey){a=-1}if(nitobi.browser.IE){c.keyCode=""}}else{if(d==b.ENTER){e=1}else{if(d==b.ESC){this.ignoreBlur=true;this.hide();this.owner.focus();this.onCancel.notify(this)}return}}}}if(!this.checkValidity(c)){return}this.owner.move(a,e);nitobi.html.cancelBubble(c)};nitobi.form.Control.prototype.handleKeyUp=function(a){this.onKeyUp.notify(a)};nitobi.form.Control.prototype.handleKeyPress=function(a){this.onKeyPress.notify(a)};nitobi.form.Control.prototype.handleChange=function(a){this.onChange.notify(a)};nitobi.form.Control.prototype.setEditCompleteHandler=function(a){this.editCompleteHandler=a};nitobi.form.Control.prototype.eSET=function(e,d){var b=d[0];var a=b;var f=e.substr(2);f=f.substr(0,f.length-5);if(typeof(b)=="string"){a=function(){return nitobi.event.evaluate(b,arguments[0])}}if(this[f]!=null){this[e].unSubscribe(this[f])}var c=this[e].subscribe(a);this.jSET(f,[c]);return c};nitobi.form.Control.prototype.afterDeactivate=function(d,b){b=b||d;if(this.editCompleteHandler!=null){var c=new nitobi.grid.EditCompleteEventArgs(this,d,b,this.cell);var a=this.editCompleteHandler.call(this.owner,c);if(!a){this.ignoreBlur=false}return a}};nitobi.form.Control.prototype.jSET=function(a,b){this[a]=b[0]};nitobi.form.Control.prototype.dispose=function(){for(var a in this){}};nitobi.form.IBlurable=function(b,a){this.selfBlur=false;this.elements=b;var d=nitobi.html;for(var c=0;c<this.elements.length;c++){var f=this.elements[c];d.attachEvent(f,"mousedown",this.handleMouseDown,this);d.attachEvent(f,"blur",this.handleBlur,this);d.attachEvent(f,"focus",this.handleFocus,this);d.attachEvent(f,"mouseup",this.handleMouseUp,this)}this.blurFunc=a;this.lastFocus=null};nitobi.form.IBlurable.prototype.removeBlurable=function(){for(var a=0;a<elems.length;a++){nitobi.html.detachEvent(elems[a],"mousedown",this.handleMouseDown,this)}};nitobi.form.IBlurable.prototype.handleMouseDown=function(a){if(this.lastFocus!=a.srcElement){this.selfBlur=true}else{this.selfBlur=false}this.lastFocus=a.srcElement};nitobi.form.IBlurable.prototype.handleBlur=function(a){if(!this.selfBlur){this.blurFunc(a)}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 b=this.placeholder;b.setAttribute("id","text_span");b.style.top="0px";b.style.left="-5000px";var a=this.control=nitobi.html.createElement("input",{id:"ntb-textbox"},{style:"width: 100px;"});a.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 a=this.placeholder.rows[0].cells[0];a.appendChild(this.control);nitobi.html.attachEvents(this.control,this.events,this)};nitobi.form.Text.prototype.bind=function(d,a,c){nitobi.form.Text.base.bind.apply(this,arguments);if(c!=null&&c!=""){this.control.value=c}else{this.control.value=a.getValue()}var b=this.cell.getColumnObject().getModel();this.eSET("onKeyPress",[b.getAttribute("OnKeyPressEvent")]);this.eSET("onKeyDown",[b.getAttribute("OnKeyDownEvent")]);this.eSET("onKeyUp",[b.getAttribute("OnKeyUpEvent")]);this.eSET("onChange",[b.getAttribute("OnChangeEvent")]);this.control.setAttribute("maxlength",b.getAttribute("MaxLength"));nitobi.html.Css.addClass(this.control,"ntb-column-data"+this.owner.uid+"_"+(this.cell.getColumn()+1))};nitobi.form.Text.prototype.mimic=function(){if(nitobi.browser.MOZ||nitobi.browser.SAFARI){var a=this.cell.getDomNode();this.control.style.width=a.clientWidth+"px"}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(a){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 a=this.placeholder.parentNode;a.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 c=this.cell.getColumnObject();var b=c.getModel();var a=b.getAttribute("CheckedValue");if(a==""||a==null){a=1}var d=b.getAttribute("UnCheckedValue");if(d==""||d==null){d=0}this.value=(this.cell.getData().value==a)?d:a};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=0;nitobi.form.EDITOR_OFFSETY=0;nitobi.form.ControlFactory=function(){this.editors={}};nitobi.form.ControlFactory.prototype.getEditor=function(g,f,e){var d=null;if(null==f){ebaErrorReport("getEditor: column parameter is null","",EBA_DEBUG);return d}var b=f.getType();var c=f.getType();var a="nitobi.Grid"+b+c+"Editor";d=this.editors[a];if(d==null||d.control==null){switch(b){case"LINK":case"HYPERLINK":d=new nitobi.form.Link;break;case"IMAGE":return null;case"BUTTON":return null;case"LOOKUP":d=new nitobi.form.Lookup();break;case"LISTBOX":d=new nitobi.form.ListBox();break;case"PASSWORD":d=new nitobi.form.Password();break;case"TEXTAREA":d=new nitobi.form.TextArea();break;case"CHECKBOX":d=new nitobi.form.Checkbox();break;default:if(c=="DATE"){if(f.isCalendarEnabled()){d=new nitobi.form.Calendar()}else{d=new nitobi.form.Date()}}else{if(c=="NUMBER"){d=new nitobi.form.Number()}else{d=new nitobi.form.Text()}}break}d.initialize()}this.editors[a]=d;return d};nitobi.form.ControlFactory.prototype.dispose=function(){for(var a in this.editors){this.editors[a].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(b,a){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 a=this.placeholder;a.setAttribute("id","listbox_span");a.style.top="0px";a.style.left="-5000px";this.metadata=null;this.keypress=false;this.typedString=null;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(d,a){nitobi.form.ListBox.base.bind.apply(this,arguments);var c=a.getColumnObject().getModel();var b=c.getAttribute("DatasourceId");this.dataTable=this.owner.data.getTable(b);this.eSET("onKeyPress",[c.getAttribute("OnKeyPressEvent")]);this.eSET("onKeyDown",[c.getAttribute("OnKeyDownEvent")]);this.eSET("onKeyUp",[c.getAttribute("OnKeyUpEvent")]);this.eSET("onChange",[c.getAttribute("OnChangeEvent")]);this.bindComplete(a.getValue())};nitobi.form.ListBox.prototype.bindComplete=function(h){var g=this.dataTable.xmlDoc.selectSingleNode("//"+nitobi.xml.nsPrefix+"datasource[@id='"+this.dataTable.id+"']");var f=this.cell.getColumnObject();var e=f.getModel();var c=e.getAttribute("DisplayFields");var b=e.getAttribute("ValueField");var d=nitobi.form.listboxXslProc;d.addParameter("DisplayFields",c,"");d.addParameter("ValueField",b,"");d.addParameter("val",h,"");this.listXml=nitobi.xml.transformToXml(nitobi.xml.createXmlDoc(g.xml),d);this.placeholder.rows[0].cells[0].innerHTML=nitobi.xml.serialize(this.listXml);var a=this.control=nitobi.html.getFirstChild(this.placeholder.rows[0].cells[0]);a.style.width="100%";a.style.height=(this.cell.DomNode.offsetHeight-2)+"px";nitobi.html.attachEvents(a,this.events,this);nitobi.html.Css.addClass(a.className,this.cell.getDomNode().className);this.align();this.focus();if(typeof(h)!="undefined"&&h!=null&&h!=""){return this.searchComplete(h)}};nitobi.form.ListBox.prototype.deactivate=function(d){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 g=this.control;var f="",e="";if(d||d==null){f=g.options[g.selectedIndex].text;e=g.options[g.selectedIndex].value}else{e=this.cell.getValue();var a=g.options.length;for(var b=0;b<a;b++){if(g.options[b].value==e){f=g.options[b].text}}}this.typedString=null;return this.afterDeactivate(nitobi.html.encode(f),e)};nitobi.form.ListBox.prototype.handleKey=function(b){var c=b.keyCode;this.keypress=false;var a=nitobi.form.Keys;switch(c){case a.DOWN:if(this.control.selectedIndex<this.control.options.length-1){this.keypress=true}break;case a.UP:if(this.control.selectedIndex>0){this.keypress=true}break;case a.ENTER:case a.TAB:case a.ESC:return nitobi.form.ListBox.base.handleKey.call(this,b);default:nitobi.html.cancelEvent(b);return this.searchComplete(String.fromCharCode(c))}};nitobi.form.ListBox.prototype.searchComplete=function(f,e){if(typeof(e)!="undefined"&&e!=""){this.typedString=e;this.maxLinearSearch=500}else{this.typedString=this.typedString+f}var g=this.control;var d=g.options.length;if(d>this.maxLinearSearch){var a=this.searchBinary(this.typedString,0,(d-1));if(a){for(i=a;i>0;i--){if(g.options[i].text.toLowerCase().substr(0,this.typedString.length)!=this.typedString.toLowerCase()){g.selectedIndex=i+1;break}}}}else{for(i=1;i<d;i++){if(g.options[i].text.toLowerCase().substr(0,this.typedString.length)==this.typedString.toLowerCase()){g.selectedIndex=i;break}}}clearTimeout(this.timerid);var b=this;this.timerid=setTimeout(function(){b.typedString=""},1000);return false};nitobi.form.ListBox.prototype.searchBinary=function(d,a,e){if(a>e){return null}var h=this.control;var b=Math.floor((e+a)/2);var g=h.options[b].text.toLowerCase().substr(0,d.length);var f=d.toLowerCase();if(f==g){return b}else{if(f<g){return this.searchBinary(d,a,(b-1))}else{if(f>g){return this.searchBinary(d,(b+1),e)}else{return null}}}};nitobi.form.ListBox.prototype.dispose=function(){nitobi.html.detachEvents(this.control,this.events);this.placeholder=null;this.control=null;this.listXml=null;this.element=null;this.metadata=null;this.owner=null};nitobi.form.Lookup=function(){nitobi.form.Lookup.baseConstructor.call(this);this.selectClicked=false;this.bVisible=false;var e=nitobi.html.createElement("div");e.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 d=this.placeholder=e.firstChild;d.setAttribute("id","lookup_span");d.style.top="-0px";d.style.left="-5000px";var a=this.control=nitobi.html.createElement("input",{autocomplete:"off"},{zIndex:"2000",width:"100px"});a.setAttribute("id","ntb-lookup-text");this.textEvents=[{type:"keydown",handler:this.handleKey},{type:"keyup",handler:this.filter},{type:"keypress",handler:this.handleKeyPress},{type:"change",handler:this.handleChange},{type:"blur",handler:function(){}},{type:"focus",handler:function(){}}];d.rows[0].cells[0].appendChild(a);this.selectPlaceholder=d.rows[1].cells[0].firstChild;this.selectEvents=[{type:"click",handler:this.handleSelectClicked}];this.firstKeyup=false;this.autocompleted=false;this.referenceColumn=null;this.autoComplete=null;this.autoClear=null;this.getOnEnter=null;this.listXml=null;this.listXmlLower=null;this.editCompleteHandler=null;this.delay=0;this.timeoutId=null;var b='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">';b+='<xsl:output method="text" version="4.0"/><xsl:param name=\'searchValue\'/>';b+="<xsl:template match=\"/\"><xsl:apply-templates select='//option[starts-with(.,$searchValue)][1]' /></xsl:template>";b+="<xsl:template match=\"option\"><xsl:value-of select='@rn' /></xsl:template></xsl:stylesheet>";var c=nitobi.xml.createXslDoc(b);this.searchXslProc=nitobi.xml.createXslProcessor(c);c=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.control,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(f,a,e){nitobi.form.Lookup.base.bind.apply(this,arguments);var b=this.column=this.cell.getColumnObject();var d=this.column.getModel();this.datasourceId=b.getDatasourceId();this.getHandler=b.getGetHandler();this.delay=b.getDelay();this.size=b.getSize();this.referenceColumn=b.getReferenceColumn();this.autoComplete=b.isAutoComplete();this.autoClear=b.isAutoClear();this.getOnEnter=b.isGetOnEnter();this.displayFields=b.getDisplayFields();this.valueField=b.getValueField();this.eSET("onKeyPress",[b.getOnKeyPressEvent()]);this.eSET("onKeyDown",[b.getOnKeyDownEvent()]);this.eSET("onKeyUp",[b.getOnKeyUpEvent()]);this.eSET("onChange",[b.getOnChangeEvent()]);var c=nitobi.form.listboxXslProc;c.addParameter("DisplayFields",this.displayFields,"");c.addParameter("ValueField",this.valueField,"");this.dataTable=this.owner.data.getTable(this.datasourceId);this.dataTable.setGetHandler(this.getHandler);this.dataTable.async=false;if(e.length<=0){e=this.cell.getValue()}this.get(e,true)};nitobi.form.Lookup.prototype.getComplete=function(d){var c=this.dataTable.getXmlDoc();var b=nitobi.form.listboxXslProc;b.addParameter("DisplayFields",this.displayFields,"");b.addParameter("ValueField",this.valueField,"");b.addParameter("val",nitobi.xml.constructValidXpathQuery(this.cell.getValue(),false),"");if(nitobi.browser.IE&&document.compatMode=="CSS1Compat"){b.addParameter("size",6,"")}this.listXml=nitobi.xml.transformToXml(nitobi.xml.createXmlDoc(c.xml),nitobi.form.listboxXslProc);this.listXmlLower=nitobi.xml.createXmlDoc(this.listXml.xml.toLowerCase());if(nitobi.browser.IE&&document.compatMode=="CSS1Compat"){b.addParameter("size","","")}this.selectPlaceholder.innerHTML=nitobi.xml.serialize(this.listXml);var a=this.control;var g=this.selectControl=nitobi.html.getFirstChild(this.selectPlaceholder);g.setAttribute("id","ntb-lookup-options");g.setAttribute("size",this.size);g.style.display="none";if(nitobi.browser.IE6&&document.compatMode!="CSS1Compat"){g.style.height="100%"}nitobi.form.IBlurable.call(this,[a,g],this.deactivate);this.selectClicked=false;this.bVisible=false;this.align();nitobi.html.fitWidth(this.placeholder,this.control);if(this.autoComplete){var e=this.search(d);if(e>0){g.selectedIndex=e-1;a.value=g[g.selectedIndex].text;nitobi.html.highlight(a,a.value.length-(a.value.length-d.length));this.autocompleted=true}else{var f=c.selectSingleNode("//"+nitobi.xml.nsPrefix+"e[@"+this.valueField+"='"+d+"']");if(f!=null){a.value=f.getAttribute(this.displayFields);var e=this.search(a.value);g.selectedIndex=parseInt(e)-1}else{a.value=d;g.selectedIndex=-1}}}else{a.value=d;g.selectedIndex=-1}a.parentNode.style.height=nitobi.html.getHeight(this.cell.getDomNode())+"px";g.style.display="inline";a.focus()};nitobi.form.Lookup.prototype.handleSelectClicked=function(a){this.control.value=this.selectControl.selectedIndex!=-1?this.selectControl.options[this.selectControl.selectedIndex].text:"";this.deactivate(a)};nitobi.form.Lookup.prototype.focus=function(a){this.control.focus()};nitobi.form.Lookup.prototype.deactivate=function(c){if(nitobi.form.Lookup.base.deactivate.apply(this,arguments)==false){return}var h=this.selectControl;var b=this.control;var g="",f="";if(c!=null&&c!=false){if(h.selectedIndex>=0){f=h.options[h.selectedIndex].value;g=h.options[h.selectedIndex].text}else{if(this.column.getModel().getAttribute("ForceValidOption")!="true"){f=b.value;g=f}else{if(this.autoClear){f="";g=""}else{f=this.cell.getValue();var a=h.options.length;for(var d=0;d<a;d++){if(h.options[d].value==f){g=h.options[d].text}}}}}}else{f=this.cell.getValue();var a=h.options.length;var e=false;for(var d=0;d<a;d++){if(h.options[d].value==f){g=h.options[d].text;e=true;break}}if(!e&&this.autoClear){f="";g=""}}nitobi.html.detachEvents(h,this.textEvents);window.clearTimeout(this.timeoutId);return this.afterDeactivate(nitobi.html.encode(g),f)};nitobi.form.Lookup.prototype.handleKey=function(a,c){var b=a.keyCode;if(b!=40&&b!=38){nitobi.form.Lookup.base.handleKey.call(this,a)}};nitobi.form.Lookup.prototype.search=function(b){b=nitobi.xml.constructValidXpathQuery(b,false);this.searchXslProc.addParameter("searchValue",b.toLowerCase(),"");var a=nitobi.xml.transformToString(this.listXmlLower,this.searchXslProc);if(""==a){a=0}else{a=parseInt(a)}return a};nitobi.form.Lookup.prototype.filter=function(c,f){var d=c.keyCode;if(this.onKeyUp.notify(c)==false){return}if(!this.firstKeyup&&d!=38&&d!=40){this.firstKeyup=true;return}var b=this.control;var e=this.selectControl;switch(d){case 38:if(e.selectedIndex==-1){e.selectedIndex=0}if(e.selectedIndex>0){e.selectedIndex--}b.value=e.options[e.selectedIndex].text;nitobi.html.highlight(b,b.value.length);b.select();break;case 40:if(e.selectedIndex<(e.length-1)){e.selectedIndex++}b.value=e.options[e.selectedIndex].text;nitobi.html.highlight(b,b.value.length);b.select();break;default:if((!this.getOnEnter&&((d<193&&d>46)||d==8||d==32))||(this.getOnEnter&&d==13)){var a=b.value;this.get(a)}}};nitobi.form.Lookup.prototype.get=function(b,a){if(this.getHandler!=null&&this.getHandler!=""){if(a||!this.delay){this.doGet(b)}else{if(this.timeoutId){window.clearTimeout(this.timeoutId);this.timeoutId=null}this.timeoutId=window.setTimeout(nitobi.lang.close(this,this.doGet,[b]),this.delay)}}else{this.getComplete(b)}};nitobi.form.Lookup.prototype.doGet=function(b){if(b){this.dataTable.setGetHandlerParameter("SearchString",b)}if(this.referenceColumn!=null&&this.referenceColumn!=""){var a=this.owner.getCellValue(this.cell.row,this.referenceColumn);this.dataTable.setGetHandlerParameter("ReferenceColumn",a)}this.dataTable.get(null,this.pageSize,this);this.timeoutId=null;this.getComplete(b)};nitobi.form.Lookup.prototype.dispose=function(){this.placeholder=null;nitobi.html.detachEvents(this.textEvents,this);this.selectControl=null;this.control=null;this.dataTable=null;this.owner=null};nitobi.form.Number=function(){nitobi.form.Number.baseConstructor.call(this);this.defaultValue=0};nitobi.lang.extend(nitobi.form.Number,nitobi.form.Text);nitobi.form.Number.prototype.handleKey=function(a){nitobi.form.Number.base.handleKey.call(this,a);var b=a.keyCode;if(!this.isValidKey(b)){nitobi.html.cancelEvent(a);return false}};nitobi.form.Number.prototype.isValidKey=function(a){if((a<48||a>57)&&(a<37||a>40)&&(a<96||a>105)&&a!=190&&a!=110&&a!=189&&a!=109&&a!=9&&a!=45&&a!=46&&a!=8){return false}return true};nitobi.form.Number.prototype.bind=function(e,a,d){var c=d.charCodeAt(0);if(c>=97){c=c-32}var b=this.isValidKey(c)?d:"";nitobi.form.Number.base.bind.call(this,e,a,b)};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 b=nitobi.html.createElement("div");b.innerHTML="<table border='0' cellpadding='0' cellspacing='0' class='ntb-input-border'><tr><td></td></table>";var a=this.placeholder=b.firstChild;a.style.top="-3000px";a.style.left="-3000px";this.control=nitobi.html.createElement("textarea",{},{width:"100px"})};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 a=this.placeholder.style};nitobi.form.TextArea.prototype.handleKey=function(a){var b=a.keyCode;if(b==40||b==38||b==37||b==39||(b==13&&a.shiftKey)){}else{nitobi.form.TextArea.base.handleKey.call(this,a)}};nitobi.form.Calendar=function(){nitobi.form.Calendar.baseConstructor.call(this);var c=nitobi.html.createElement("div");c.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=c.getElementsByTagName("input")[0];var b=this.placeholder=c.firstChild;b.setAttribute("id","calendar_span");b.style.top="-3000px";b.style.left="-3000px";var a=this.pickerDiv=nitobi.html.createElement("div",{},{position:"absolute"});this.isPickerVisible=false;nitobi.html.Css.addClass(a,NTB_CSS_HIDE);b.rows[1].cells[0].appendChild(a)};nitobi.lang.extend(nitobi.form.Calendar,nitobi.form.Control);nitobi.form.Calendar.prototype.initialize=function(){var e=this.datePicker=new nitobi.calendar.DatePicker(nitobi.component.getUniqueId());e.setAttribute("theme","flex");e.setObject(new nitobi.calendar.Calendar());e.onDateSelected.subscribe(this.handlePick,this);e.setContainer(this.pickerDiv);var b=this.control;var d=nitobi.html;d.attachEvent(b,"keydown",this.handleKey,this,false);d.attachEvent(b,"blur",this.deactivate,this,false);d.attachEvent(this.pickerDiv,"mousedown",this.handleCalendarMouseDown,this);d.attachEvent(this.pickerDiv,"mouseup",this.handleCalendarMouseUp,this);var c=this.placeholder.getElementsByTagName("a")[0];d.attachEvent(c,"mousedown",this.handleClick,this);d.attachEvent(c,"mouseup",this.handleMouseUp,this)};nitobi.form.Calendar.prototype.bind=function(c,a,b){this.isPickerVisible=false;nitobi.html.Css.addClass(this.pickerDiv,NTB_CSS_HIDE);nitobi.form.Calendar.base.bind.apply(this,arguments);if(b!=null&&b!=""){this.control.value=b}else{this.control.value=a.getValue()}this.column=this.cell.getColumnObject();this.control.maxlength=this.column.getModel().getAttribute("MaxLength")};nitobi.form.Calendar.prototype.mimic=function(){this.align();var b=this.placeholder.offsetWidth;var a=this.placeholder.rows[0].cells[1].offsetWidth;this.control.style.width=b-a-(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(a){if(!this.isPickerVisible){var b=this.datePicker;b.setSelectedDate(nitobi.base.DateMath.parseIso8601(this.control.value));b.render();b.getCalendar().getHtmlNode().style.width="";nitobi.html.Css.setStyle(b.getCalendar().getHtmlNode(),"position","absolute")}this.ignoreBlur=true;nitobi.ui.Effects.setVisible(this.pickerDiv,!this.isPickerVisible,"none",this.setVisibleComplete,this)};nitobi.form.Calendar.prototype.handleMouseUp=function(a){this.control.focus();this.ignoreBlur=false};nitobi.form.Calendar.prototype.handleCalendarMouseDown=function(a){this.ignoreBlur=true};nitobi.form.Calendar.prototype.handleCalendarMouseUp=function(a){this.handleMouseUp(a)};nitobi.form.Calendar.prototype.setVisibleComplete=function(){this.isPickerVisible=!this.isPickerVisible};nitobi.form.Calendar.prototype.handlePick=function(){var b=this.datePicker.getSelectedDate();var a=nitobi.base.DateMath.toIso8601(b);this.control.value=a;this.datePicker.hide()};nitobi.form.Calendar.prototype.dispose=function(){nitobi.html.detachEvent(this.control,"keydown",this.handleKey);nitobi.html.detachEvent(this.control,"blur",this.deactivate);var a=this.placeholder.parentNode;a.removeChild(this.placeholder);this.control=null;this.placeholder=null;this.owner=null;this.cell=null};nitobi.lang.defineNs("nitobi.form");nitobi.form.Keys={UP:38,DOWN:40,ENTER:13,TAB:9,ESC:27,RIGHT:39,LEFT:37};nitobi.ui.UiElement=function(a,b,c){if(arguments.length>0){this.initialize(a,b,c)}};nitobi.ui.UiElement.prototype.initialize=function(a,b,c){this.m_Xml=a;this.m_Xsl=b;this.m_Id=c;this.m_HtmlElementHandle=null};nitobi.ui.UiElement.prototype.getHeight=function(){return this.getHtmlElementHandle().style.height};nitobi.ui.UiElement.prototype.setHeight=function(a){this.getHtmlElementHandle().style.height=a+"px"};nitobi.ui.UiElement.prototype.getId=function(){return this.m_Id};nitobi.ui.UiElement.prototype.setId=function(a){this.m_Id=a};nitobi.ui.UiElement.prototype.getWidth=function(){return this.getHtmlElementHandle().style.width};nitobi.ui.UiElement.prototype.setWidth=function(a){if(a>0){this.getHtmlElementHandle().style.width=a+"px"}};nitobi.ui.UiElement.prototype.getXml=function(){return this.m_Xml};nitobi.ui.UiElement.prototype.setXml=function(a){this.m_Xml=a};nitobi.ui.UiElement.prototype.getXsl=function(){return this.m_Xsl};nitobi.ui.UiElement.prototype.setXsl=function(a){this.m_Xsl=a};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(a){this.m_HtmlElementHandle=a};nitobi.ui.UiElement.prototype.hide=function(){var a=this.getHtmlElementHandle();a.style.visibility="hidden";a.style.position="absolute"};nitobi.ui.UiElement.prototype.show=function(){var a=this.getHtmlElementHandle();a.style.visibility="visible"};nitobi.ui.UiElement.prototype.isVisible=function(){var a=this.getHtmlElementHandle();return a.style.visibility=="visible"};nitobi.ui.UiElement.prototype.beginFloatMode=function(){var a=this.getHtmlElementHandle();a.style.position="absolute"};nitobi.ui.UiElement.prototype.isFloating=function(){var a=this.getHtmlElementHandle();return a.style.position=="absolute"};nitobi.ui.UiElement.prototype.setX=function(b){var a=this.getHtmlElementHandle();a.style.left=b+"px"};nitobi.ui.UiElement.prototype.getX=function(){var a=this.getHtmlElementHandle();return a.style.left};nitobi.ui.UiElement.prototype.setY=function(b){var a=this.getHtmlElementHandle();a.style.top=b+"px"};nitobi.ui.UiElement.prototype.getY=function(){var a=this.getHtmlElementHandle();return a.style.top};nitobi.ui.UiElement.prototype.render=function(b,a,e){var d=this.m_Xsl;if(d!=null&&d.indexOf("xsl:stylesheet")==-1){d='<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="html" version="4.0" />'+d+"</xsl:stylesheet>"}if(null==a){a=nitobi.xml.createXslDoc(d)}if(null==e){e=nitobi.xml.createXmlDoc(this.m_Xml)}Eba.Error.assert(nitobi.xml.isValidXml(e),"Tried to render invalid XML according to Mozilla. The XML is "+e.xml);var c=nitobi.xml.transform(e,a);if(c.xml){c=c.xml}if(null==b){nitobi.html.insertAdjacentHTML(document.body,"beforeEnd",c)}else{b.innerHTML=c}this.attachToTag()};nitobi.ui.UiElement.prototype.attachToTag=function(){var a=this.getHtmlElementHandle();if(a!=null){a.object=this;a.jsobject=this;a.javascriptObject=this}};nitobi.ui.UiElement.prototype.dispose=function(){var a=this.getHtmlElementHandle();if(a!=null){a.object=null}this.m_Xml=null;this.m_Xsl=null;this.m_HtmlElementHandle=null};nitobi.ui.InteractiveUiElement=function(a){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 and not(starts-with(@image_disabled,\'/\'))"><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 and not(starts-with(@image,\'/\'))"><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 and not(starts-with(@image,\'/\'))"><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(a,b){this.initialize(a,nitobi.ui.ButtonXsl,b);this.enable()};nitobi.lang.extend(nitobi.ui.Button,nitobi.ui.InteractiveUiElement);nitobi.ui.Button.prototype.onClickHandler=function(_7d5){if(this.m_Enabled){eval(_7d5)}};nitobi.ui.Button.prototype.disable=function(){nitobi.ui.Button.base.disable.call(this);var a=this.getHtmlElementHandle();a.childNodes[0].src=a.getAttribute("image_disabled")};nitobi.ui.Button.prototype.enable=function(){nitobi.ui.Button.base.enable.call(this);var a=this.getHtmlElementHandle();a.childNodes[0].src=a.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(a,b){this.initialize(a,nitobi.ui.BinaryStateButtonXsl,b);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 a=this.getHtmlElementHandle();a.className="ntb-button-checked";this.m_Checked=true};nitobi.ui.BinaryStateButton.prototype.uncheck=function(){var a=this.getHtmlElementHandle();a.className="ntb-button";this.m_Checked=false};nitobi.ui.BinaryStateButton.prototype.toggle=function(){var a=this.getHtmlElementHandle();if(a.className=="ntb-button-checked"){this.uncheck()}else{this.check()}};nitobi.ui.ToolbarDivItemXsl='<xsl:template match="div"><xsl:copy-of select="."/></xsl:template>';nitobi.ui.ToolbarXsl='<xsl:template match="//toolbar"><div 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(\'height:\',@height,\'px\')" /></xsl:attribute><xsl:apply-templates /></div></xsl:template>'+nitobi.ui.ToolbarDivItemXsl+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.pagingToolbarXsl='<xsl:template match="//toolbar"><div style="z-index:800"><xsl:attribute name="id"><xsl:value-of select="@id" /></xsl:attribute><xsl:attribute name="style">float:right;position:relative;<xsl:value-of select="concat(\'height:\',@height,\'px\')" /></xsl:attribute><xsl:apply-templates /></div></xsl:template>'+nitobi.ui.ToolbarDivItemXsl+nitobi.ui.ButtonXsl+nitobi.ui.BinaryStateButtonXsl+'<xsl:template match="separator"><div align=\'center\'><xsl:attribute name="style"><xsl:value-of select="concat(\'float:right;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(a,b){nitobi.ui.Toolbar.baseConstructor.call(this);this.initialize(a,nitobi.ui.ToolbarXsl,b)};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(a){this.m_UiElements=a};nitobi.ui.Toolbar.prototype.attachButtonObjects=function(){if(!this.m_UiElements){this.m_UiElements=new Array();var a=this.getHtmlElementHandle();var e=a.childNodes;for(var b=0;b<e.length;b++){var d=e[b];if(d.nodeType!=3){var c;switch(d.className){case ("ntb-button"):c=new nitobi.ui.Button(null,d.id);break;case ("ntb-binarybutton"):c=new nitobi.ui.BinaryStateButton(null,d.id);break;default:c=new nitobi.ui.UiElement(null,null,d.id);break}c.attachToTag();this.m_UiElements[d.id]=c}}}};nitobi.ui.Toolbar.prototype.render=function(a){nitobi.ui.Toolbar.base.base.render.call(this,a);this.attachButtonObjects()};nitobi.ui.Toolbar.prototype.disableAllElements=function(){for(var a in this.m_UiElements){if(this.m_UiElements[a].disable){this.m_UiElements[a].disable()}}};nitobi.ui.Toolbar.prototype.enableAllElements=function(){for(var a in this.m_UiElements){if(this.m_UiElements[a].enable){this.m_UiElements[a].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 a in this.m_UiElements){this.m_UiElements[a].dispose()}this.m_UiElements=null}nitobi.ui.Toolbar.base.dispose.call(this)};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.prepare=function(){};nitobi.lang.defineNs("nitobi.calendar");nitobi.calendar.Calendar=function(a){nitobi.calendar.Calendar.baseConstructor.call(this,a);this.selectedDate;this.renderer=new nitobi.calendar.CalRenderer();this.onHide=new nitobi.base.Event();this.eventMap.hide=this.onHide;this.onShow=new nitobi.base.Event();this.eventMap.show=this.onShow;this.onDateClicked=new nitobi.base.Event();this.eventMap.dateclicked=this.onDateClicked;this.onMonthChanged=new nitobi.base.Event();this.eventMap.monthchanged=this.onMonthChanged;this.onYearChanged=new nitobi.base.Event();this.eventMap.yearchanged=this.onYearChanged;this.onRenderComplete=new nitobi.base.Event();this.onSetVisible.subscribe(this.handleToggle,this);this.showEffect=(this.isEffectEnabled()?nitobi.effects.families.shade.show:null);this.hideEffect=(this.isEffectEnabled()?nitobi.effects.families.shade.hide:null);this.htmlEvents={body:[],nav:[],navconfirm:[],navcancel:[],navpanel:[],nextmonth:[],prevmonth:[]};this.subscribeDeclarationEvents()};nitobi.lang.extend(nitobi.calendar.Calendar,nitobi.ui.Element);nitobi.calendar.Calendar.profile=new nitobi.base.Profile("nitobi.calendar.Calendar",null,false,"ntb:calendar");nitobi.base.Registry.getInstance().register(nitobi.calendar.Calendar.profile);nitobi.calendar.Calendar.prototype.render=function(){this.detachEvents();this.setContainer(this.getHtmlNode());nitobi.calendar.Calendar.base.render.call(this);this.selectedDate=this.getParentObject().getSelectedDate();var e=this.htmlEvents;var m=nitobi.html;var l=this.getHtmlNode("body");m.attachEvent(l,"click",this.handleBodyClick,this);m.attachEvent(l,"mousedown",this.handleMouseDown,this);e.body.push({type:"click",handler:this.handleBodyClick});e.body.push({type:"mousedown",handle:this.handleMouseDown});var a=this.getHtmlNode("nav");var k=this.getHtmlNode("navconfirm");var j=this.getHtmlNode("navcancel");m.attachEvent(a,"click",this.showNav,this);m.attachEvent(j,"click",this.handleNavCancel,this);m.attachEvent(k,"click",this.handleNavConfirm,this);m.attachEvent(this.getHtmlNode("navpanel"),"keypress",this.handleNavKey,this);e.nav.push({type:"click",handler:this.showNav});e.navcancel.push({type:"click",handler:this.handleNavCancel});e.navconfirm.push({type:"click",handler:this.handleNavConfirm});e.navpanel.push({type:"keypress",handler:this.handleNavKey});m.attachEvent(this.getHtmlNode("nextmonth"),"click",this.nextMonth,this);m.attachEvent(this.getHtmlNode("prevmonth"),"click",this.prevMonth,this);e.nextmonth.push({type:"click",handler:this.nextMonth});e.prevmonth.push({type:"click",handler:this.prevMonth});var h=this.getHtmlNode();var b=this.getHtmlNode("shim");var g=nitobi.html.Css;if(b){var f=g.hasClass(h,"nitobi-hide");if(f){g.removeClass(h,"nitobi-hide");h.style.top="-1000px"}var d=h.offsetWidth;var c=h.offsetHeight;b.style.height=c+"px";b.style.width=d-1+"px";if(f){g.addClass(h,"nitobi-hide");h.style.top=""}}this.onRenderComplete.notify(new nitobi.ui.ElementEventArgs(this,this.onRenderComplete))};nitobi.calendar.Calendar.prototype.detachEvents=function(){var d=this.htmlEvents;for(var a in d){var b=d[a];var c=this.getHtmlNode(a);nitobi.html.detachEvents(c,b)}};nitobi.calendar.Calendar.prototype.handleMouseDown=function(c){var b=this.getParentObject();var a=this.findActiveDate(c.srcElement);if(a&&nitobi.html.Css.hasClass(a,"ntb-calendar-thismonth")){b.blurInput=false}else{b.blurInput=true}};nitobi.calendar.Calendar.prototype.handleBodyClick=function(f){var d=this.findActiveDate(f.srcElement);if(!d||nitobi.html.Css.hasClass(d,"ntb-calendar-lastmonth")||nitobi.html.Css.hasClass(d,"ntb-calendar-nextmonth")){return}var c=this.getParentObject();var a=d.getAttribute("ebadate");var h=d.getAttribute("ebamonth");var e=d.getAttribute("ebayear");var b=new Date(e,h,a);var g=c.getEventsManager();if(g.isDisabled(b)){return}c._setSelectedDate(b);this.onDateClicked.notify(new nitobi.ui.ElementEventArgs(this,this.onDateClicked));this.toggle()};nitobi.calendar.Calendar.prototype.handleNavKey=function(b){var a=b.keyCode;if(a==27){this.handleNavCancel()}if(a==13){this.handleNavConfirm()}};nitobi.calendar.Calendar.prototype.handleToggleClick=function(a){this.toggle()};nitobi.calendar.Calendar.prototype.clearHighlight=function(){if(this.selectedDate){var a=this.findDateElement(this.selectedDate);if(a){nitobi.html.Css.removeClass(a,"ntb-calendar-currentday")}this.selectedDate=null}};nitobi.calendar.Calendar.prototype.highlight=function(a){this.selectedDate=a;var b=this.findDateElement(a);if(b){nitobi.html.Css.addClass(b,"ntb-calendar-currentday")}};nitobi.calendar.Calendar.prototype.findDateElement=function(e){var f=this.getHtmlNode(e.getMonth()+"."+e.getFullYear());var c=nitobi.base.DateMath;if(f){var b=c.getMonthStart(c.clone(e));b=c.subtract(b,"d",b.getDay());var h=c.getNumberOfDays(b,e)-1;if(h>=0&&h<42){var g=1+Math.floor(h/7);var d=h%7;var a=nitobi.html.getFirstChild(f.rows[g].cells[d]);return a}}return null};nitobi.calendar.Calendar.prototype.showNav=function(){var h=this.getParentObject();var g=h.getStartDate();var f=this.getHtmlNode("months");f.selectedIndex=g.getMonth();this.getHtmlNode("year").value=g.getFullYear();this.getHtmlNode("warning").style.display="none";var d=this.getHtmlNode("overlay");var c=this.getHtmlNode("navpanel");var b=new nitobi.effects.BlindDown(c,{duration:0.3});var a=this.getHtmlNode("nav");this.fitOverlay();d.style.display="block";var e=nitobi.drawing;e.align(c,a,e.align.ALIGNMIDDLEHORIZ);e.align(c,this.getHtmlNode("body"),e.align.ALIGNTOP);e.align(d,this.getHtmlNode("body"),e.align.ALIGNTOP|e.align.ALIGNLEFT);b.callback=function(){f.focus()};b.start()};nitobi.calendar.Calendar.prototype.hideNav=function(c){var b=this.getHtmlNode("navpanel");var a=new nitobi.effects.BlindUp(b,{duration:0.2});a.callback=c||nitobi.lang.noop();a.start()};nitobi.calendar.Calendar.prototype.hideOverlay=function(){var a=this.getHtmlNode("overlay");a.style.display="none"};nitobi.calendar.Calendar.prototype.fitOverlay=function(){var c=this.getHtmlNode("body");var d=this.getHtmlNode("overlay");var b=c.offsetWidth;var a=c.offsetHeight;d.style.height=a+"px";d.style.width=b+"px"};nitobi.calendar.Calendar.prototype.handleNavConfirm=function(l){var j=this.getParentObject();var f=this.getHtmlNode("months");var d=f.options[f.selectedIndex].value;var g=this.getHtmlNode("year").value;if(isNaN(g)){var b=this.getHtmlNode("warning");b.style.display="block";b.innerHTML=j.getNavInvalidYearText();return}g=parseInt(g);var a=new Date(g,d,1);if(j.isOutOfRange(a)){var b=this.getHtmlNode("warning");b.style.display="block";b.innerHTML=j.getNavOutOfRangeText();return}var k=j.getStartDate();var h=false;var e=false;if(g!=k.getFullYear()){e=true}if(parseInt(d)!=k.getMonth()){h=true}j.setStartDate(a);var c=nitobi.lang.close(this,this.render);this.onRenderComplete.subscribeOnce(nitobi.lang.close(this,function(){if(h){this.onMonthChanged.notify(new nitobi.ui.ElementEventArgs(this,this.onMonthChanged))}if(e){this.onYearChanged.notify(new nitobi.ui.ElementEventArgs(this,this.onYearChanged))}}));this.hideNav(c)};nitobi.calendar.Calendar.prototype.handleNavCancel=function(b){var a=nitobi.lang.close(this,this.hideOverlay);this.hideNav(a)};nitobi.calendar.Calendar.prototype.findActiveDate=function(d){var c=5;for(var b=0;b<c&&d.getAttribute;b++){var a=d.getAttribute("ebatype");if(a=="date"){return d}d=d.parentNode}return null};nitobi.calendar.Calendar.prototype.getState=function(){return this};nitobi.calendar.Calendar.prototype.nextMonth=function(){var b=this.getParentObject();if(!b.disNext){var a=this.getMonthColumns()*this.getMonthRows();this.changeMonth(a)}};nitobi.calendar.Calendar.prototype.prevMonth=function(){if(!this.getParentObject().disPrev){var a=this.getMonthColumns()*this.getMonthRows();this.changeMonth(0-a)}};nitobi.calendar.Calendar.prototype.changeMonth=function(d){var e=this.getParentObject();var c=e.getStartDate();var b=nitobi.base.DateMath;c=b._add(b.clone(c),"m",d);var a=e.getStartDate();var f=false;if(a.getFullYear()!=c.getFullYear()){f=true}e.setStartDate(c);this.render();this.onMonthChanged.notify(new nitobi.ui.ElementEventArgs(this,this.onMonthChanged));if(f){this.onYearChanged.notify(new nitobi.ui.ElementEventArgs(this,this.onYearChanged))}};nitobi.calendar.Calendar.prototype.toggle=function(b){var a=this.getParentObject();if(a.getInput()){this.setVisible(!this.isVisible(),(this.isVisible()?this.hideEffect:this.showEffect),b,{duration:0.3})}};nitobi.calendar.Calendar.prototype.show=function(a){var b=this.getParentObject();if(b.getInput()){this.setVisible(true,this.showEffect,a,{duration:0.3})}};nitobi.calendar.Calendar.prototype.hide=function(b){var a=this.getParentObject();if(a.getInput()){this.setVisible(false,this.hideEffect,b,{duration:0.3})}};nitobi.calendar.Calendar.prototype.handleToggle=function(){if(this.isVisible()){this.onShow.notify(new nitobi.ui.ElementEventArgs(this,this.onShow))}else{this.onHide.notify(new nitobi.ui.ElementEventArgs(this,this.onHide))}};nitobi.calendar.Calendar.prototype.getMonthColumns=function(){return this.getIntAttribute("monthcolumns",1)};nitobi.calendar.Calendar.prototype.setMonthColumns=function(a){this.setAttribute("monthcolumns",a)};nitobi.calendar.Calendar.prototype.getMonthRows=function(){return this.getIntAttribute("monthrows",1)};nitobi.calendar.Calendar.prototype.setMonthRows=function(a){this.setAttribute("monthrows",a)};nitobi.calendar.Calendar.prototype.isEffectEnabled=function(){return this.getBoolAttribute("effectenabled",true)};nitobi.calendar.Calendar.prototype.setEffectEnabled=function(a){this.setAttribute("effectenabled",isEffectEnabled)};nitobi.lang.defineNs("nitobi.calendar");if(false){nitobi.calendar={}}nitobi.calendar.DatePicker=function(d){nitobi.calendar.DatePicker.baseConstructor.call(this,d);this.renderer.setTemplate(nitobi.calendar.datePickerTemplate);this.blurInput=true;this.onDateSelected=new nitobi.base.Event();this.eventMap.dateselected=this.onDateSelected;this.onSetInvalidDate=new nitobi.base.Event();this.eventMap.setinvaliddate=this.onSetInvalidDate;this.onSetDisabledDate=new nitobi.base.Event();this.eventMap.setdisableddate=this.onSetDisabledDate;this.onSetOutOfRangeDate=new nitobi.base.Event();this.eventMap.setoutofrangedate=this.onSetOutOfRangeDate;this.onEventDateSelected=new nitobi.base.Event();this.eventMap.eventdateselected=this.onEventDateSelected;this.eventsManager=new nitobi.calendar.EventsManager(this.getEventsUrl());this.eventsManager.onDataReady.subscribe(this.renderChildren,this);var b=this.getSelectedDate();if(b&&!this.isOutOfRange(b)&&!nitobi.base.DateMath.invalid(b)){this.setStartDate(nitobi.base.DateMath.getMonthStart(b))}else{this.setDateAttribute("selecteddate",null);var a=this.getMinDate();var c;if(a){c=a}else{c=new Date()}this.setStartDate(nitobi.base.DateMath.getMonthStart(c))}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.render=function(){var c=this.getInput();if(c){c.detachEvents()}nitobi.calendar.DatePicker.base.render.call(this);if(c){c.attachEvents()}if(nitobi.browser.IE&&c){var b=c.getHtmlNode("input");var a=nitobi.html.Css.getStyle(b,"height");nitobi.html.Css.setStyle(b,"height",parseInt(a)-2+"px")}if(this.eventsManager){this.eventsManager.getFromServer()}else{this.renderChildren()}};nitobi.calendar.DatePicker.prototype.renderChildren=function(){var c=this.getCalendar();var f=this.getInput();if(c){c.render();if(!f){var d=nitobi.html.Css;var e=c.getHtmlNode();var a=c.getHtmlNode("body");d.swapClass(e,"nitobi-hide",NTB_CSS_SMALL);c.getHtmlNode().style.width=a.offsetWidth+"px";d.removeClass(e,NTB_CSS_SMALL)}}if(this.getSelectedDate()&&f){f.setValue(this.formatDate(this.getSelectedDate(),f.getDisplayMask()))}if(this.getSelectedDate()){var b=this.getHtmlNode("value");if(b){b.value=this.formatDate(this.getSelectedDate(),this.getSubmitMask())}}this.enableButton()};nitobi.calendar.DatePicker.prototype.getCalendar=function(){return this.getObject(nitobi.calendar.Calendar.profile)};nitobi.calendar.DatePicker.prototype.getInput=function(){return this.getObject(nitobi.calendar.DateInput.profile)};nitobi.calendar.DatePicker.prototype.getSelectedDate=function(){return this.getDateAttr("selecteddate")};nitobi.calendar.DatePicker.prototype.getDateAttr=function(a){var b=this.getAttribute(a,null);if(b){if(typeof(b)=="string"){return this.parseLanguage(b)}else{return new Date(b)}}return null};nitobi.calendar.DatePicker.prototype.setSelectedDate=function(a){if(typeof(a)!="object"){a=new Date(a)}if(this.validate(a)){this._setSelectedDate(a)}};nitobi.calendar.DatePicker.prototype._setSelectedDate=function(a,k){this.setDateAttribute("selecteddate",a);var h=this.getHtmlNode("value");if(h){h.value=this.formatDate(a,this.getSubmitMask())}var e=this.getInput();if(e){var n=e.getDisplayMask();var m=this.formatDate(a,n);e.setValue(m);e.setInvalidStyle(false)}var l=this.getCalendar();if(l){l.clearHighlight(a);var d=nitobi.base.DateMath;var j=d.getMonthStart(this.getStartDate());var g=l.getMonthColumns()*l.getMonthRows()-1;var f=d.getMonthEnd(d.add(d.clone(j),"m",g));if(d.between(a,j,f)){l.highlight(a)}if(k){this.setStartDate(d.getMonthStart(d.clone(a)));l.render()}}var c=this.getEventsManager();if(c.isEvent(a)){var j=c.eventsCache[a.valueOf()];var b=this.eventsManager.getEventInfo(j);this.onEventDateSelected.notify({events:b})}this.onDateSelected.notify(new nitobi.ui.ElementEventArgs(this,this.onDateSelected))};nitobi.calendar.DatePicker.prototype.validate=function(b){var a=nitobi.ui.ElementEventArgs;if(nitobi.base.DateMath.invalid(b)){this.onSetInvalidDate.notify(new a(this,this.onSetInvalidDate));return false}if(this.isOutOfRange(b)){this.onSetOutOfRangeDate.notify(new a(this,this.onSetOutOfRangeDate));return false}if(this.isDisabled(b)){this.onSetDisabledDate.notify(new a(this,this.onSetDisabledDate));return false}return true};nitobi.calendar.DatePicker.prototype.isDisabled=function(a){return this.getEventsManager().isDisabled(a)};nitobi.calendar.DatePicker.prototype.disableButton=function(){var a=this.getHtmlNode("button");var b=this.getCalendar();if(a){nitobi.html.Css.swapClass(a,"ntb-calendar-button","ntb-calendar-button-disabled");nitobi.html.detachEvent(a,"click",b.handleToggleClick,b)}};nitobi.calendar.DatePicker.prototype.enableButton=function(){var a=this.getHtmlNode("button");var b=this.getCalendar();if(a){nitobi.html.Css.swapClass(a,"ntb-calendar-button-disabled","ntb-calendar-button");nitobi.html.attachEvent(a,"click",b.handleToggleClick,b)}};nitobi.calendar.DatePicker.prototype.isOutOfRange=function(c){var a=nitobi.base.DateMath;var e=this.getMinDate();var d=this.getMaxDate();var b=false;if(e&&d){b=!a.between(c,e,d)}else{if(e&&d==null){b=a.before(c,e)}else{if(e==null&&d){b=a.after(c,d)}}}return b};nitobi.calendar.DatePicker.prototype.clear=function(){var a=this.getHtmlNode("value");if(a){a.value=""}this.setDateAttribute("selecteddate",null)};nitobi.calendar.DatePicker.prototype.getTheme=function(){return this.getAttribute("theme","")};nitobi.calendar.DatePicker.prototype.getSubmitMask=function(){return this.getAttribute("submitmask","yyyy-MM-dd")};nitobi.calendar.DatePicker.prototype.setSubmitMask=function(a){this.setAttribute("submitmask",a)};nitobi.calendar.DatePicker.prototype.getStartDate=function(){return this.getDateAttribute("startdate")};nitobi.calendar.DatePicker.prototype.setStartDate=function(a){this.setDateAttribute("startdate",a)};nitobi.calendar.DatePicker.prototype.getEventsUrl=function(){return this.getAttribute("eventsurl","")};nitobi.calendar.DatePicker.prototype.setEventsUrl=function(a){this.setAttribute("eventsurl",a)};nitobi.calendar.DatePicker.prototype.getEventsManager=function(){return this.eventsManager};nitobi.calendar.DatePicker.prototype.isShimEnabled=function(){return this.getBoolAttribute("shimenabled",false)};nitobi.calendar.DatePicker.prototype.getMinDate=function(){return this.getDateAttr("mindate")};nitobi.calendar.DatePicker.prototype.setMinDate=function(a){this.setAttribute("mindate",a)};nitobi.calendar.DatePicker.prototype.getMaxDate=function(){return this.getDateAttr("maxdate")};nitobi.calendar.DatePicker.prototype.setMaxDate=function(a){this.setAttribute("maxdate",a)};nitobi.calendar.DatePicker.prototype.parseLanguage=function(b){var a=nitobi.base.DateMath;var d=Date.parse(b);if(d&&typeof(d)=="object"&&!isNaN(d)&&!a.invalid(d)){return d}if(b==""||b==null){return null}b=b.toLowerCase();var c=a.resetTime(new Date());switch(b){case"today":b=c;break;case"tomorrow":b=a.add(c,"d",1);break;case"yesterday":b=a.subtract(c,"d",1);break;case"last week":b=a.subtract(c,"d",7);break;case"next week":b=a.add(c,"d",7);break;case"last year":b=a.subtract(c,"y",1);break;case"last month":b=a.subtract(c,"m",1);break;case"next month":b=a.add(c,"m",1);break;case"next year":b=a.add(c,"y",1);break;default:b=a.resetTime(new Date(b));break}if(a.invalid(b)){return null}else{return b}};nitobi.calendar.DatePicker.longDayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];nitobi.calendar.DatePicker.shortDayNames=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];nitobi.calendar.DatePicker.minDayNames=["S","M","T","W","T","F","S"];nitobi.calendar.DatePicker.longMonthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];nitobi.calendar.DatePicker.shortMonthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];nitobi.calendar.DatePicker.navConfirmText="OK";nitobi.calendar.DatePicker.navCancelText="Cancel";nitobi.calendar.DatePicker.navOutOfRangeText="That date is out of range.";nitobi.calendar.DatePicker.navInvalidYearText="You must enter a valid year.";nitobi.calendar.DatePicker.quickNavTooltip="Click to change month and/or year";nitobi.calendar.DatePicker.navSelectMonthText="Choose Month";nitobi.calendar.DatePicker.navSelectYearText="Enter Year";nitobi.calendar.DatePicker.prototype.getQuickNavTooltip=function(){return this.initLocaleAttr("quickNavTooltip")};nitobi.calendar.DatePicker.prototype.getMinDayNames=function(){return this.initJsAttr("minDayNames")};nitobi.calendar.DatePicker.prototype.getLongDayNames=function(){return this.initJsAttr("longDayNames")};nitobi.calendar.DatePicker.prototype.getShortDayNames=function(){return this.initJsAttr("shortDayNames")};nitobi.calendar.DatePicker.prototype.getLongMonthNames=function(){return this.initJsAttr("longMonthNames")};nitobi.calendar.DatePicker.prototype.getShortMonthNames=function(){return this.initJsAttr("shortMonthNames")};nitobi.calendar.DatePicker.prototype.getNavConfirmText=function(){return this.initLocaleAttr("navConfirmText")};nitobi.calendar.DatePicker.prototype.getNavCancelText=function(){return this.initLocaleAttr("navCancelText")};nitobi.calendar.DatePicker.prototype.getNavOutOfRangeText=function(){return this.initLocaleAttr("navOutOfRangeText")};nitobi.calendar.DatePicker.prototype.getNavInvalidYearText=function(){return this.initLocaleAttr("navInvalidYearText")};nitobi.calendar.DatePicker.prototype.getNavSelectMonthText=function(){return this.initLocaleAttr("navSelectMonthText")};nitobi.calendar.DatePicker.prototype.getNavSelectYearText=function(){return this.initLocaleAttr("navSelectYearText")};nitobi.calendar.DatePicker.prototype.initJsAttr=function(_879){if(this[_879]){return this[_879]}var attr=this.getAttribute(_879.toLowerCase(),"");if(attr!=""){attr=eval("("+attr+")");return this[_879]=attr}return this[_879]=nitobi.calendar.DatePicker[_879]};nitobi.calendar.DatePicker.prototype.initLocaleAttr=function(a){if(this[a]){return this[a]}var b=this.getAttribute(a.toLowerCase(),"");if(b!=""){return this[a]=b}else{return this[a]=nitobi.calendar.DatePicker[a]}};nitobi.calendar.DatePicker.prototype.parseDate=function(a,k){var j={};while(k.length>0){var e=k.charAt(0);var h=new RegExp(e+"+");var g=h.exec(k)[0];if(e!="d"&&e!="y"&&e!="M"&&e!="N"&&e!="E"){k=k.substring(g.length);a=a.substring(g.length)}else{var f=k.charAt(g.length);var d=(f==""?a:a.substring(0,a.indexOf(f)));var b=this.validateFormat(d,g);if(b.valid){j[b.unit]=b.value}else{return null}k=k.substring(g.length);a=a.substring(d.length)}}var a=new Date(j.y,j.m,j.d);return a};nitobi.calendar.DatePicker.prototype.validateFormat=function(h,f){var e={valid:false,unit:"",value:""};switch(f){case"d":case"dd":var c=parseInt(h);var a;if(f=="d"){a=!isNaN(h)&&h.charAt(0)!="0"&&h.length<=2}else{a=!isNaN(h)&&h.length==2}if(a){e.valid=true;e.unit="d";e.value=h}else{e.valid=false}break;case"y":case"yyyy":if(isNaN(h)){e.valid=false}else{e.valid=true;e.unit="y";e.value=h}break;case"M":case"MM":var c=parseInt(h,10);var a;if(f=="M"){a=!isNaN(h)&&h.charAt(0)!="0"&&h.length<=2&&c>=1&&c<=12}else{a=!isNaN(h)&h.length==2&&c>=1&&c<=12}if(a){e.valid=true;e.unit="m";e.value=c-1}else{e.valid=false}break;case"MMM":case"NNN":case"E":case"EE":var g;if(f=="MMM"){g=this.getLongMonthNames()}else{if(f=="NNN"){g=this.getShortMonthNames()}else{if(f=="E"){g=this.getShortDayNames()}else{g=this.getLongDayNames()}}}var b;for(b=0;b<g.length;b++){var d=g[b];if(h.toLowerCase()==d.toLowerCase()){break}}if(b<g.length){e.valid=true;if(f=="MMM"||f=="NNN"){e.unit="m"}else{e.unit="dl"}e.value=b}else{e.valid=false}break}return e};nitobi.calendar.DatePicker.prototype.formatDate=function(d,m){var h={};var k=d.getFullYear()+"";var g=d.getMonth()+1+"";var f=d.getDate()+"";var l=d.getDay();h.y=h.yyyy=k;h.yy=k.substring(2,4);h.M=g+"";h.MM=nitobi.lang.padZeros(g,2);h.MMM=this.getLongMonthNames()[g-1];h.NNN=this.getShortMonthNames()[g-1];h.d=f;h.dd=nitobi.lang.padZeros(f,2);h.EE=this.getLongDayNames()[l];h.E=this.getShortDayNames()[l];var e="";while(m.length>0){var j=m.charAt(0);var b=new RegExp(j+"+");var a=b.exec(m)[0];e+=h[a]||a;m=m.substring(a.length)}return e};nitobi.lang.defineNs("nitobi.calendar");nitobi.calendar.DateInput=function(a){nitobi.calendar.DateInput.baseConstructor.call(this,a);this.onBlur=new nitobi.base.Event();this.eventMap.blur=this.onBlur;this.onFocus=new nitobi.base.Event();this.eventMap.focus=this.onFocus;this.htmlEvents=[];this.subscribeDeclarationEvents()};nitobi.lang.extend(nitobi.calendar.DateInput,nitobi.ui.Element);nitobi.calendar.DateInput.profile=new nitobi.base.Profile("nitobi.calendar.DateInput",null,false,"ntb:dateinput");nitobi.base.Registry.getInstance().register(nitobi.calendar.DateInput.profile);nitobi.calendar.DateInput.prototype.attachEvents=function(){var a=this.htmlEvents;a.push({type:"focus",handler:this.handleOnFocus});a.push({type:"blur",handler:this.handleOnBlur});a.push({type:"keydown",handler:this.handleOnKeyDown});nitobi.html.attachEvents(this.getHtmlNode("input"),a,this)};nitobi.calendar.DateInput.prototype.detachEvents=function(){nitobi.html.detachEvents(this.getHtmlNode("input"),this.htmlEvents)};nitobi.calendar.DateInput.prototype.setValue=function(b){var a=this.getHtmlNode("input");a.value=b};nitobi.calendar.DateInput.prototype.getValue=function(){var a=this.getHtmlNode("input");return a.value};nitobi.calendar.DateInput.prototype.handleOnFocus=function(){var c=this.getEditMask();var a=this.getParentObject();var d=a.getSelectedDate();if(d){var b=a.formatDate(d,c);this.setValue(b);var a=this.getParentObject();a.blurInput=true}this.onFocus.notify(new nitobi.ui.ElementEventArgs(this,this.onFocus))};nitobi.calendar.DateInput.prototype.handleOnBlur=function(){var d=this.getParentObject();var c=d.getCalendar();if(d.blurInput){var b=this.getEditMask();var a=this.getValue();a=d.parseDate(a,b);if(d.validate(a)){d._setSelectedDate(a,true);if(c){c.hide()}}else{if(c){c.clearHighlight()}d.clear();this.setInvalidStyle(true)}}this.onBlur.notify(new nitobi.ui.ElementEventArgs(this,this.onBlur))};nitobi.calendar.DateInput.prototype.handleOnKeyDown=function(b){var a=b.keyCode;if(a==13){this.getHtmlNode("input").blur()}};nitobi.calendar.DateInput.prototype.setInvalidStyle=function(b){var a=nitobi.html.Css;var e=this.getHtmlNode("container");if(b){a.swapClass(e,"ntb-inputcontainer","ntb-invalid")}else{a.swapClass(this.getHtmlNode("container"),"ntb-invalid","ntb-inputcontainer")}var d=a.getStyle(e,"backgroundColor");var c=this.getHtmlNode("input");a.setStyle(c,"backgroundColor",d)};nitobi.calendar.DateInput.prototype.getEditMask=function(){return this.getAttribute("editmask",this.getDisplayMask())};nitobi.calendar.DateInput.prototype.setEditMask=function(a){this.setAttribute("editmask",a)};nitobi.calendar.DateInput.prototype.getDisplayMask=function(){return this.getAttribute("displaymask","MMM dd yyyy")};nitobi.calendar.DateInput.prototype.setDisplayMask=function(a){this.setAttribute("displaymask",a)};nitobi.calendar.DateInput.prototype.isEditable=function(){this.getBoolAttribute("editable",true)};nitobi.calendar.DateInput.prototype.setEditable=function(a){this.setBoolAttribute("editable",a);this.getHtmlNode("input").disabled=a};nitobi.calendar.DateInput.prototype.getWidth=function(){this.getIntAttribute("width")};nitobi.calendar.DateInput.prototype.setWidth=function(a){this.setAttribute("width",a)};nitobi.lang.defineNs("nitobi.calendar");nitobi.calendar.CalRenderer=function(){nitobi.html.IRenderer.call(this)};nitobi.lang.implement(nitobi.calendar.CalRenderer,nitobi.html.IRenderer);nitobi.calendar.CalRenderer.prototype.renderToString=function(b){var a=b.getParentObject();var S=a.getEventsManager();var g=nitobi.base.DateMath;var q=new nitobi.lang.StringBuilder();var F=b.getId();var R=b.getMonthColumns();var Q=b.getMonthRows();var P=R>1||Q>1;var w=g.resetTime(g.clone(a.getStartDate()));var v=a.getSelectedDate();if(v!=null){v=g.resetTime(a.getSelectedDate())}var u=g.resetTime(new Date());var t=a.getMinDate();var s=a.getMaxDate();var r=g.subtract(g.clone(w),"d",1);var H=g.add(g.clone(w),"m",R*Q);a.disPrev=(t&&g.before(r,t)?true:false);a.disNext=(s&&g.after(H,s)?true:false);var G=a.getLongMonthNames();var E=a.getLongDayNames();var D=a.getMinDayNames();var C=a.getQuickNavTooltip();var B=(((nitobi.browser.MOZ&&!document.getElementsByClassName&&navigator.platform.indexOf("Mac")>=0)||nitobi.browser.IE6)&&a.isShimEnabled())?true:false;if(B){q.append('<iframe id="'+F+".shim\" style='position:absolute;top:0px;z-index:19999;'><!-- dummy --></iframe>")}q.append('<div id="'+F+'.calendar" style="'+(B?"position:relative;z-index:20000;":"")+'">');q.append('<table cellspacing="0" cellpadding="0" border="0"><tbody>');if(P){q.append('<tr id="'+F+'.header"><td>');var A=G[w.getMonth()];var z=w.getFullYear();var y=g.add(g.clone(w),"m",(R*Q)-1);var x=G[y.getMonth()];var f=y.getFullYear();q.append('<div class="ntb-calendar-header">');q.append('<table cellspacing="0" cellpadding="0" border="0" style="height:100%;width:100%;"><tbody>');q.append('<tr><td><a id="'+F+'.prevmonth" onclick="return false;" href="#" class="ntb-calendar-prev'+(a.disPrev?" ntb-calendar-prevdis":"")+'"></a</td>');q.append('<td style="width:70%;"><span class="ntb-calendar-title" title="'+C+'" id="'+F+'.nav">'+A+" "+z+" - "+x+" "+f+"</span></td>");q.append('<td><a id="'+F+'.nextmonth" onclick="return false;" href="#" class="ntb-calendar-next'+(a.disNext?" ntb-calendar-nextdis":"")+'"></a></td></tr>');q.append("</tbody></table></div></td></tr>")}q.append('<tr id="'+F+'.body"><td>');q.append('<table cellspacing="0" cellpadding="0" border="0"><tbody>');for(var O=0;O<Q;O++){q.append("<tr>");for(var N=0;N<R;N++){var e=g.subtract(g.clone(w),"d",w.getDay());var d=w.getMonth();var c=w.getFullYear();q.append("<td>");q.append('<div class="ntb-calendar">');q.append('<div><table cellspacing="0" cellpadding="0" border="0" style="width:100%;"><tbody>');q.append('<tr class="ntb-calendar-monthheader">');if(!P){q.append('<td><a id="'+F+'.prevmonth" onclick="return false;" href="#" class="ntb-calendar-prev'+(a.disPrev?" ntb-calendar-prevdis":"")+'"></a></td>')}q.append('<td style="width:70%;"><span title="'+C+'" '+(!P?'id="'+F+'.nav"':"")+'><a onclick="return false;" href="#" style="'+(P?"cursor:default;":"")+'" class="ntb-calendar-month">'+G[d]+"</a>");q.append('<a onclick="return false;" href="#" style="'+(P?"cursor:default;":"")+'" class="ntb-calendar-year"> '+c+"</a></span></td>");if(!P){q.append('<td><a id="'+F+'.nextmonth" onclick="return false;" href="#" class="ntb-calendar-next'+(a.disNext?" ntb-calendar-nextdis":"")+'"></a></td>')}q.append("</tbody></table></div>");q.append('<div><table id="'+F+"."+d+"."+c+'" cellspacing="0" cellpadding="0" border="0" style="width: 100%;"><tbody>');q.append("<tr>");for(var L=0;L<7;L++){q.append('<th class="ntb-calendar-dayheader">'+D[L]+"</th>")}q.append("</tr>");for(var K=0;K<6;K++){q.append("<tr>");for(var J=0;J<7;J++){q.append("<td>");var o=E[e.getDay()]+", "+G[e.getMonth()]+" "+e.getDate()+", "+e.getFullYear();var l=null;var h="";if(S&&e.getMonth()==w.getMonth()){var l=S.dates.events[e.valueOf()];if(l!=null){var M="";for(var I=0;I<l.length;I++){if(l[I].tooltip!=null){M+=l[I].tooltip+"\n"}else{if(l[I].location!=null){M+=l[I].location+"\n";if(l[I].description!=null){M+=l[I].description}}}if(l[I].cssStyle!=null){h+=l[I].cssStyle}}if(M.length!=0){o=M}}}q.append('<a ebatype="date" ebamonth="'+e.getMonth()+'" ebadate="'+e.getDate()+'" ebayear="'+e.getFullYear()+'" title="'+o+'" href="#" onclick="return false;" style="display:block;text-decoration:none;'+h+'" class="');if(v&&e.valueOf()==v.valueOf()&&e.getMonth()==w.getMonth()){q.append("ntb-calendar-currentday ")}if(e.getMonth()<w.getMonth()||(t&&e.valueOf()<t.valueOf())){q.append("ntb-calendar-lastmonth ")}else{if(e.getMonth()>w.getMonth()||(s&&e.valueOf()>s.valueOf())){q.append("ntb-calendar-nextmonth ")}else{if(e.getMonth()==w.getMonth()){q.append("ntb-calendar-thismonth ")}}}if(S&&S.isDisabled(e)&&e.getMonth()==w.getMonth()){q.append("ntb-calendar-disabled ")}else{if(S&&S.isEvent(e)&&e.getMonth()==w.getMonth()){q.append("ntb-calendar-event ")}}if(u.valueOf()==e.valueOf()){q.append("ntb-calendar-today")}q.append(" ntb-calendar-day");if(l!=null){for(var I=0;I<l.length;I++){if(l[I].cssClass!=null){q.append(" "+l[I].cssClass+" ")}}}q.append('">'+e.getDate()+"</a></td>");e=g.add(e,"d",1)}q.append("</tr>")}q.append("</tbody></table></div></div></td>");w=g.resetTime(g.add(w,"m",1))}q.append("</tr>")}q.append("</tbody></table></td></tr></tbody></table></div></div>");q.append('</tbody><colgroup span="7" style="width:17%"></colgroup></table></div>');q.append('<div id="'+F+'.overlay" class="ntb-calendar-overlay" style="'+(B?"z-index:20001;":"")+'top:0px;left:0px;display:none;position:absolute;background-color:gray;filter:alpha(opacity=40);-moz-opacity:.50;opacity:.50;"></div>');q.append(this.renderNavPanel(b));q.append("</div></div>");return q.toString()};nitobi.calendar.CalRenderer.prototype.renderNavPanel=function(d){var g=new nitobi.lang.StringBuilder();var a=d.getParentObject();var f=a.getLongMonthNames();var e=d.getId();var c=(nitobi.browser.MOZ&&!nitobi.browser.MOZ3)||(nitobi.browser.IE6&&!nitobi.browser.IE7)?true:false;g.append('<div id="'+e+'.navpanel" style="'+(c?"z-index:20002;":"")+'position:absolute;top:0px;left:0px;overflow:hidden;" class="ntb-calendar-navcontainer nitobi-hide">');g.append('<div class="ntb-calendar-monthcontainer">');g.append('<label style="display:block;" for="'+e+'.months">'+a.getNavSelectMonthText()+"</label>");g.append('<select id="'+e+'.months" class="ntb-calendar-navms" style="" tabindex="1">');for(var b=0;b<f.length;b++){g.append('<option value="'+b+'">'+f[b]+"</option>")}g.append("</select>");g.append("</div>");g.append('<div class="ntb-calendar-yearcontainer">');g.append('<label style="display:block;" for="'+e+'.year">'+a.getNavSelectYearText()+"</label>");g.append('<input size="4" maxlength="4" id="'+e+'.year" class="ntb-calendar-navinput" style="-moz-user-select: normal;" tabindex="2"/>');g.append("</div>");g.append('<div class="ntb-calendar-controls">');g.append('<button id="'+e+'.navconfirm" type="button">'+a.getNavConfirmText()+"</button>");g.append('<button id="'+e+'.navcancel" type="button">'+a.getNavCancelText()+"</button>");g.append("</div>");g.append('<div id="'+e+'.warning" style="display:none;" class="ntb-calendar-navwarning">You must enter a valid year.</div>');g.append("</div>");return g.toString()};nitobi.lang.defineNs("nitobi.calendar");nitobi.calendar.EventsManager=function(a){this.connector=new nitobi.data.UrlConnector(a);this.onDataReady=new nitobi.base.Event();this.dates={events:{},disabled:{}};this.eventsCache={};this.disabledCache={}};nitobi.calendar.EventsManager.prototype.isEvent=function(a){return(this.eventsCache[a.valueOf()]?true:false)};nitobi.calendar.EventsManager.prototype.isDisabled=function(a){return(this.disabledCache[a.valueOf()]?true:false)};nitobi.calendar.EventsManager.prototype.getFromServer=function(){if(this.connector.url!=null){this.connector.get({},nitobi.lang.close(this,this.getComplete))}else{this.onDataReady.notify()}};nitobi.calendar.EventsManager.prototype.getComplete=function(b){var c=b.result;var e=nitobi.base.DateMath;var g=c.documentElement;var k=nitobi.xml.getChildNodes(g);for(var d=0;d<k.length;d++){var h=k[d];var f=h.getAttribute("e");var a={};if(f=="event"){var m=h.getAttribute("a");m=e.parseIso8601(m);a.startDate=m;var l=h.getAttribute("b");if(l){l=e.parseIso8601(l)}else{l=null}a.endDate=l;a.location=h.getAttribute("c");a.description=h.getAttribute("d");a.tooltip=h.getAttribute("f");a.cssClass=h.getAttribute("g");a.cssStyle=h.getAttribute("h");var j=this.dates.events[e.resetTime(e.clone(m)).valueOf()];if(j){j.push(a)}else{j=[a];this.dates.events[e.resetTime(e.clone(m)).valueOf()]=j}this.addEventDate(m,l)}else{var m=e.parseIso8601(h.getAttribute("a"));a.date=m;this.addDisabledDate(e.clone(m))}}this.onDataReady.notify()};nitobi.calendar.EventsManager.prototype.addEventDate=function(d,a){var b=nitobi.base.DateMath;var c=b.clone(d);c=b.resetTime(c);if(!a){return this.eventsCache[c.valueOf()]=d}a=b.clone(a);a=b.resetTime(a);while(c.valueOf()<=a.valueOf()){this.eventsCache[c.valueOf()]=d;c=b.add(c,"d",1)}};nitobi.calendar.EventsManager.prototype.addDisabledDate=function(a){a=nitobi.base.DateMath.resetTime(a);return this.disabledCache[a.valueOf()]=true};nitobi.calendar.EventsManager.prototype.getEventInfo=function(b){var a=nitobi.base.DateMath;var c=this.dates.events;b=a.resetTime(b);return c[b.valueOf()]};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="25"				top="23"    left="100"    bottom="23"		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"    	DragFillEnabled="1"		RightClickCopyEnabled="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" AutoComplete="1" AutoClear="0" GetOnEnter="0" ReferenceColumn="" 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" AutoComplete="1" AutoClear="0" GetOnEnter="0" ReferenceColumn="" 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" AutoComplete="1" AutoClear="0" GetOnEnter="0" ReferenceColumn="" 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="25" 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="25" 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 i="1" l="31" a="Jan">January</d:m> <d:m i="2" l="28" a="Feb">February</d:m> <d:m i="3" l="31" a="Mar">March</d:m> <d:m i="4" l="30" a="Apr">April</d:m> <d:m i="5" l="31" a="May">May</d:m> <d:m i="6" l="30" a="Jun">June</d:m> <d:m i="7" l="31" a="Jul">July</d:m> <d:m i="8" l="31" a="Aug">August</d:m> <d:m i="9" l="30" a="Sep">September</d:m> <d:m i="10" l="31" a="Oct">October</d:m> <d:m i="11" l="30" a="Nov">November</d:m> <d:m i="12" 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:p-x:n-date-year" /> <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:wh- test="substring($dt, 2, 1) = \'-\' or substring($dt, 3, 1) = \'-\'"> <x:c-> <x:wh- test="$dt-length = 5 or $dt-length = 6"> <!--D-MMM,DD-MMM--> <x:va-x:n-year"x:s-$date-year" /> <x:va-x:n-month"x:s-document(\'\')/*/d:ms/d:m[@a = substring-after($dt,\'-\')]/@i" /> <x:va-x:n-day"x:s-substring-before($dt,\'-\')" /> <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="$dt-length = 8 or $dt-length = 9"> <!--D-MMM-YY,DD-MMM-YY--> <x:va-x:n-year"x:s-concat(\'20\',substring-after(substring-after($dt,\'-\'),\'-\'))" /> <x:va-x:n-month"x:s-document(\'\')/*/d:ms/d:m[@a = substring-before(substring-after($dt,\'-\'),\'-\')]/@i" /> <x:va-x:n-day"x:s-substring-before($dt,\'-\')" /> <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:o-> <!--D-MMM-YYYY,DD-MMM-YYYY--> <x:va-x:n-year"x:s-substring-after(substring-after($dt,\'-\'),\'-\')" /> <x:va-x:n-month"x:s-document(\'\')/*/d:ms/d:m[@a = substring-before(substring-after($dt,\'-\'),\'-\')]/@i" /> <x:va-x:n-day"x:s-substring-before($dt,\'-\')" /> <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:o-> </x:c-> </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 i="1" l="31" a="Jan">January</d:m> <d:m i="2" l="28" a="Feb">February</d:m> <d:m i="3" l="31" a="Mar">March</d:m> <d:m i="4" l="30" a="Apr">April</d:m> <d:m i="5" l="31" a="May">May</d:m> <d:m i="6" l="30" a="Jun">June</d:m> <d:m i="7" l="31" a="Jul">July</d:m> <d:m i="8" l="31" a="Aug">August</d:m> <d:m i="9" l="30" a="Sep">September</d:m> <d:m i="10" l="31" a="Oct">October</d:m> <d:m i="11" l="30" a="Nov">November</d:m> <d:m i="12" 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:p-x:n-date-year" /> <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:wh- test="substring($dt, 2, 1) = \'-\' or substring($dt, 3, 1) = \'-\'"> <x:c-> <x:wh- test="$dt-length = 5 or $dt-length = 6"> <!--D-MMM,DD-MMM--> <x:va-x:n-year"x:s-$date-year" /> <x:va-x:n-month"x:s-document(\'\')/*/d:ms/d:m[@a = substring-after($dt,\'-\')]/@i" /> <x:va-x:n-day"x:s-substring-before($dt,\'-\')" /> <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="$dt-length = 8 or $dt-length = 9"> <!--D-MMM-YY,DD-MMM-YY--> <x:va-x:n-year"x:s-concat(\'20\',substring-after(substring-after($dt,\'-\'),\'-\'))" /> <x:va-x:n-month"x:s-document(\'\')/*/d:ms/d:m[@a = substring-before(substring-after($dt,\'-\'),\'-\')]/@i" /> <x:va-x:n-day"x:s-substring-before($dt,\'-\')" /> <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:o-> <!--D-MMM-YYYY,DD-MMM-YYYY--> <x:va-x:n-year"x:s-substring-after(substring-after($dt,\'-\'),\'-\')" /> <x:va-x:n-month"x:s-document(\'\')/*/d:ms/d:m[@a = substring-before(substring-after($dt,\'-\'),\'-\')]/@i" /> <x:va-x:n-day"x:s-substring-before($dt,\'-\')" /> <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:o-> </x:c-> </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-date-year"x:s-//year" /> <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, x:-moz-any-link, x:default {display: -moz-box;} .<x:v-x:s-$t"/> .ntb-column-indicator, x:-moz-any-link, x:default {display: -moz-box;} .<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;<xsl:if test="not($g/@ColumnIndicatorsEnabled=1)">display:none;</xsl:if>} .ntb-grid-vscrollshow<x:v-x:s-$u" /> {padding:0px;<xsl:if test="not($g/@VScrollbarEnabled=1)">display:none;</xsl:if>} #ntb-grid-hscrollshow<x:v-x:s-$u" /> {padding: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; -webkit-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;} .ntb-scrollcorner {padding:0px;} .ntb-hscrollbar<x:v-x:s-$u" /> {<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; display:none; top:-1000px; left:-5000px; 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;line-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-> <x:va-x:n-colw"><x:v-x:s-number($w)-number($g/@CellBorder)"/></x:va-> <x:va-x:n-coldataw"><x:v-x:s-number($w)-number($g/@InnerCellBorder)"/></x:va-> #grid<x:v-x:s-$u" /> .ntb-column<x:v-x:s-$u" />_<xsl:number value="$p" /> {width:<x:v-x:s-$colw" />px;} #grid<x:v-x:s-$u" /> .ntb-column-data<x:v-x:s-$u" />_<xsl:number value="$p" /> {width:<x:v-x:s-$coldataw" />px;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-browser"x:s-\'IE\'"/><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-frozenLeft"x:s-state/nitobi.grid.Grid/@FrozenLeftColumnCount" /><x:va-x:n-offset"> <x:c-> <x:wh- test="$browser=\'IE\'">1</x:wh-> <x:o->0</x:o-> </x:c-></x:va-> &lt;div id="grid<x:v-x:s-$u" />" class="ntb-grid ntb-grid-reset <x:v-x:s-state/nitobi.grid.Grid/@Theme" />" style="overflow:visible;"&gt; &lt;div style="height:0px;width:0px;position:relative;"&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; <!-- Firefox or IE just uses a hidden div for keynav since on Mac at least it doesn\'t capture the paste event on an input --> <xsl:if test="not($browser=\'SAFARI\')">&lt;div id="ntb-grid-keynav<x:v-x:s-$u" />" tabindex="1" style="position:absolute;left:-3000px;width:1px;height:1px;border:0px;background-color:transparent;"&gt;&lt;/div&gt;</xsl:if> <!-- Safari can\'t capture key events on divs so need to use an input --> <xsl:if test="$browser=\'SAFARI\'">&lt;input type="text" id="ntb-grid-keynav<x:v-x:s-$u" />" tabindex="1" style="position:absolute;left:-3000px;width:1px;height:1px;border:0px;background-color:transparent;"&gt;&lt;/input&gt;</xsl:if> &lt;/div&gt; &lt;table cellpadding="0" cellspacing="0" border="0"&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" /> ntb-grid-leftwidth<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" /> ntb-grid-header"&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 ntb-grid-leftwidth<x:v-x:s-$u" />" &gt; &lt;div style="position:relative;"&gt; <xsl:if test="not($browser=\'IE\') and not($frozenLeft=\'0\')"> &lt;div style="z-index:100;position:absolute;height:100%;top:0px;overflow:hidden;" id="ntb-frozenshadow<x:v-x:s-$u" />" class="ntb-frozenshadow"&gt;&lt;/div&gt; </xsl:if> &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<x:v-x:s-$u" />" 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;/table&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" /> ntb-toolbar<x:v-x:s-$u" /> ntb-toolbar"&gt;&lt;/div&gt; &lt;div id="ntb-grid-toolscontainer<x:v-x:s-$u"/>" style="height:0px;position:relative;"&gt; <!-- In IE quirks the textarea has a forced height so need it to have a relative positioned container --> &lt;div style="position:relative;overflow:hidden;height:0px;"&gt; &lt;textarea id="ntb-clipboard<x:v-x:s-$u"/>" class="ntb-clipboard" &gt;&lt;/textarea&gt; &lt;/div&gt; &lt;div style="position:relative;"&gt; &lt;div id="ntb-column-resizeline<x:v-x:s-$u" />" class="ntb-column-resizeline"&gt;&lt;/div&gt; &lt;div id="ntb-grid-resizebox<x:v-x:s-$u" />" class="ntb-grid-resizebox"&gt;&lt;/div&gt; &lt;/div&gt; &lt;/div&gt; <xsl:if test="$resizeEnabled = 1"> &lt;div id="ntb-grid-resizecontainer<x:v-x:s-$u"/>" style="height:0px;position:relative;"&gt; &lt;div id="ntb-grid-resizeright<x:v-x:s-$u" />" class="ntb-resize-indicator-right"&gt;&lt;/div&gt; &lt;div id="ntb-grid-resizebottom<x:v-x:s-$u" />" class="ntb-resize-indicator-bottom"&gt;&lt;/div&gt; &lt;/div&gt; </xsl:if> &lt;/div&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: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: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-toolTipsEnabled"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" /><xsl:keyx:n-group" match="ntb:e" use="@a" /><!-- <xsl:for-eachx:s-ntb:e[count(. | key(\'group\', @a)[1]) = 1]"> <xsl:sortx:s-@a" /> <x:v-x:s-@a" />,<br /> <xsl:for-eachx:s-key(\'group\', @a)"> <xsl:sortx:s-@b" /> <x:v-x:s-@b" /> (<x:v-x:s-@c" />)<br /> </xsl:for-each> </xsl:for-each>--><!--This is an incude for the date fromatting XSLT that gets replaced at compile time--> <!-- http://java.sun.com/j2se/1.3/docs/api/java/text/SimpleDateFormat.html --><d:ms> <d:m i="1" l="31" a="Jan">January</d:m> <d:m i="2" l="28" a="Feb">February</d:m> <d:m i="3" l="31" a="Mar">March</d:m> <d:m i="4" l="30" a="Apr">April</d:m> <d:m i="5" l="31" a="May">May</d:m> <d:m i="6" l="30" a="Jun">June</d:m> <d:m i="7" l="31" a="Jul">July</d:m> <d:m i="8" l="31" a="Aug">August</d:m> <d:m i="9" l="30" a="Sep">September</d:m> <d:m i="10" l="31" a="Oct">October</d:m> <d:m i="11" l="30" a="Nov">November</d:m> <d:m i="12" 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:p-x:n-date-year" /> <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:wh- test="substring($dt, 2, 1) = \'-\' or substring($dt, 3, 1) = \'-\'"> <x:c-> <x:wh- test="$dt-length = 5 or $dt-length = 6"> <!--D-MMM,DD-MMM--> <x:va-x:n-year"x:s-$date-year" /> <x:va-x:n-month"x:s-document(\'\')/*/d:ms/d:m[@a = substring-after($dt,\'-\')]/@i" /> <x:va-x:n-day"x:s-substring-before($dt,\'-\')" /> <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="$dt-length = 8 or $dt-length = 9"> <!--D-MMM-YY,DD-MMM-YY--> <x:va-x:n-year"x:s-concat(\'20\',substring-after(substring-after($dt,\'-\'),\'-\'))" /> <x:va-x:n-month"x:s-document(\'\')/*/d:ms/d:m[@a = substring-before(substring-after($dt,\'-\'),\'-\')]/@i" /> <x:va-x:n-day"x:s-substring-before($dt,\'-\')" /> <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:o-> <!--D-MMM-YYYY,DD-MMM-YYYY--> <x:va-x:n-year"x:s-substring-after(substring-after($dt,\'-\'),\'-\')" /> <x:va-x:n-month"x:s-document(\'\')/*/d:ms/d:m[@a = substring-before(substring-after($dt,\'-\'),\'-\')]/@i" /> <x:va-x:n-day"x:s-substring-before($dt,\'-\')" /> <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:o-> </x:c-> </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-><!--This is an incude for the number fromatting XSLT that gets replaced at compile time--> <!--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 = 1"> <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" xi="{position()-1}" col="{position()-1}"> <x:a-x:n-id">columnheader_<x:v-x:s-position()-1"/>_<x:v-x:s-$uniqueId" /></x:a-> <x:a-x:n-onmouseover">$ntb(\'grid<x:v-x:s-$uniqueId" />\').jsObject.handleHeaderMouseOver(this);</x:a-> <x:a-x:n-onmouseout">$ntb(\'grid<x:v-x:s-$uniqueId" />\').jsObject.handleHeaderMouseOut(this);</x:a-> <!-- note that the ntb-columnUID_POSITION class is for a safari bug --> <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-><xsl:text> </xsl:text>ntb-column<x:v-x:s-$uniqueId"/>_<x:v-x:s-position()" /></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" style="vertical-align:middle;" id="cell_{$xi}_{$pos}_{$uniqueId}" xi="{$xi}" col="{$pos}"> <x:a-x:n-style"><x:ct-x:n-CssStyle"><x:w-x:n-row"x:s-$row"/></x:ct-></x:a-> <!-- note the use of the ntb-column<x:v-x:s-$uniqueId"/>_<x:v-x:s-position()" /> class ... that is for a safari bug --> <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><xsl:text> </xsl:text>ntb-column<x:v-x:s-$uniqueId"/>_<x:v-x:s-position()" /></x:a-> <div style="overflow:hidden;white-space:nowrap;"> <x:a-x:n-class">ntb-row<x:v-x:s-$uniqueId"/><xsl:text> </xsl:text>ntb-column-data<x:v-x:s-$uniqueId"/>_<x:v-x:s-position()" /><xsl:text> </xsl:text>ntb-cell</x:a-> <xsl:if test="$toolTipsEnabled=\'1\'"> <x:a-x:n-title"> <x:v-x:s-$value" /> </x:a-> </xsl:if> <x:at-x:s-."> <x:w-x:n-value"x:s-$value"/> </x:at-> </div> </td> </x:t-> <x:t- match="*[@type=\'TEXT\' or @type=\'\']"> <x:p-x:n-value" /> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$value" /> </x:ct-> </x:t-> <x:t- match="*[@type=\'NUMBER\']"> <x:p-x:n-value" /> <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-number-mask"> <x:c-> <x:wh- test="@NegativeMask and not(@NegativeMask=\'\')"><x:v-x:s-@NegativeMask" /></x:wh-> <x:o-><x:v-x:s-@NegativeMask" /></x:o-> </x:c-> </x:va-> <x:va-x:n-number"> <x:c-> <x:wh- 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-number-mask" /> <x:w-x:n-group"x:s-@GroupingSeparator" /> <x:w-x:n-decimal"x:s-@DecimalSeparator" /> </x:ct-> </x:wh-> <x:o-> <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-@GroupingSeparator" /> <x:w-x:n-decimal"x:s-@DecimalSeparator" /> </x:ct-> </x:o-> </x:c-> </x:va-> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$number" /> </x:ct-> </x:t-> <x:t- match="*[@type=\'LOOKUP\']"> <x:p-x:n-value" /> <x:va-x:n-valueField"x:s-@ValueField" /> <x:va-x:n-displayFields"x:s-@DisplayFields" /> <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="@DatasourceId"> <x:va-x:n-preset-value" > <xsl:for-eachx:s-key(\'data-source\',@DatasourceId)//*"> <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:t-> <x:t- match="*[@type=\'LISTBOX\']"> <x:p-x:n-value" /> <x:va-x:n-valueField"x:s-@ValueField" /> <x:va-x:n-displayFields"x:s-@DisplayFields" /> <x:c-> <x:wh- test="@DatasourceId"> <x:va-x:n-temp-value"> <xsl:for-eachx:s-key(\'data-source\',@DatasourceId)//*"> <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:va-> <x:c-> <x:wh- test="not($temp-value = \'\')"> <x:v-x:s-$temp-value"/> </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:o-> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$value" /> </x:ct-> </x:o-> </x:c-> </x:t-> <x:t- match="*[@type=\'CHECKBOX\']"> <x:p-x:n-value" /> <x:va-x:n-valueField"x:s-@ValueField" /> <x:va-x:n-displayFields"x:s-@DisplayFields" /> <x:va-x:n-checkedValue"x:s-@CheckedValue" /> <xsl:for-eachx:s-key(\'data-source\',@DatasourceId)//*"> <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 class="ntb-checkbox ntb-checkbox-{$checkString}" checked="{$value}" width="10" >ATOKENTOREPLACE</div> <div class="ntb-checkbox-text"><x:v-x:s-@*[name(.)=$displayFields]" /></div> </div> </xsl:if> </xsl:for-each> </x:t-> <x:t- match="*[@type=\'IMAGE\']"> <x:p-x:n-value" /> <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 --> <div style="background-image:url(\'{$url}\');background-repeat:no-repeat;" class="ntb-image"> <img border="0" src="{$url}" align="middle" style="visibility:hidden;" /> </div> </x:t-> <x:t- match="*[@type=\'DATE\']"> <x:p-x:n-value" /> <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:t-> <x:t- match="*[@type=\'TEXTAREA\']"> <x:p-x:n-value" /> <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:t-> <x:t- match="*[@type=\'PASSWORD\']">********</x:t-> <x:t- match="*[@type=\'LINK\']"> <x:p-x:n-value" /> <span class="ntb-hyperlink-editor"> <x:ct-x:n-replaceblank"> <x:w-x:n-value"x:s-$value" /> </x:ct-> </span> </x:t-> <x:t-x:n-placeholder"/><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-><x:t-x:n-CssStyle"> <x:p-x:n-row"/> <x:va-x:n-style"x:s-@CssStyle"/> <x:va-x:n-value"x:s-$row/@*[name()=$style]"/> <x:c-> <x:wh- test="$value"><x:v-x:s-$value"/></x:wh-> <x:o-><x:v-x:s-$style"/></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));var temp_ntb_datePickerTemplate='<?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" /> <xsl:strip-space elements="*"/> <x:t- match="ntb:datepicker"> <div id="{@id}"> <x:a-x:n-class"> ntb-calendar-reset <x:v-x:s-@theme"/> </x:a-> <x:at-x:s-ntb:dateinput"/> <xsl:if test="ntb:calendar and ntb:dateinput"> <div id="{@id}.button" style="float:left;" class="ntb-calendar-button"> <x:ct-x:n-dummy"></x:ct-> </div> </xsl:if> <div style="display:block;clear:both;float:none;height:0px;width:auto;overflow:hidden;"><xsl:comment>dummy</xsl:comment></div> <x:at-x:s-ntb:calendar"/> <input id="{@id}.value" type="hidden" value=""x:n-{@id}"/> </div> </x:t-> <x:t- match="ntb:dateinput"> <x:va-x:n-width"> <x:c-> <x:wh- test="contains(@width, \'px\')"> <x:v-x:s-substring-before(@width, \'px\')"/> </x:wh-> <x:o-> <x:v-x:s-@width" /> </x:o-> </x:c-> </x:va-> <div id="{@id}" style="float:left;"> <div id="{@id}.container" class="ntb-inputcontainer"> <x:a-x:n-style"> <xsl:if test="@width">width:<x:v-x:s-$width"/>px;</xsl:if> </x:a-> <input id="{@id}.input" type="text" class="ntb-dateinput"> <x:a-x:n-style"> font-size:100%;<xsl:if test="@cssstyle"><x:v-x:s-@cssstyle"/></xsl:if>; <xsl:if test="@width">width: <x:v-x:s-number($width) - 10"/>px;</xsl:if> </x:a-> <xsl:if test="@editable = \'false\'"> <x:a-x:n-disabled">true</x:a-> </xsl:if> </input> </div> </div> </x:t-> <x:t- match="ntb:calendar"> <div id="{@id}" onselectstart="return false;"> <x:a-x:n-style"> <xsl:if test="../ntb:dateinput">position:absolute;z-index:1000;</xsl:if>overflow:hidden; </x:a-> <x:a-x:n-class"> ntb-calendar-container nitobi-hide </x:a-> <x:ct-x:n-dummy"/> </div> </x:t-> <x:t-x:n-dummy"> <xsl:comment>dummy</xsl:comment> </x:t-></xsl:stylesheet>';nitobi.lang.defineNs("nitobi.calendar");nitobi.calendar.datePickerTemplate=nitobi.xml.createXslProcessor(nitobiXmlDecodeXslt(temp_ntb_datePickerTemplate));