//v.1.5 build 71114

/*
Copyright DHTMLX LTD. http://www.dhtmlx.com
You allowed to use this component or parts of it under GPL terms
To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com
*/

 
 dhtmlXGridObject.prototype.enableSmartRenderingSorting = function(mode){this._srndsort=convertStringToBoolean(mode)};dhtmlXGridObject.prototype.enableSmartRendering = function(mode,totalRows,bufferSize,renderSize){this._dload=convertStringToBoolean(mode)
 
 this.attachEvent("onBeforeSorting",function(){return this._srndsort});if (!this._dload){this.xmlLoader = new dtmlXMLLoaderObject(this.doLoadDetails,window,true,this.no_cashe);window.clearTimeout(this._dLoadTimer);if (this.deleteRow_WSRD){this.deleteRow=this.deleteRow_WSRD;this._insertRowAt=this._insertRowAt_WSRD;this._initDrF=false};return};if (!this._srdh)this._srdh=20;if (!this.deleteRow_WSRD){this.deleteRow_WSRD=this.deleteRow;this.deleteRow=this.deleteRow_WSRDA;this._insertRowAt_WSRD=this._insertRowAt;this._insertRowAt=this._insertRowAt_WSRDA};this._dInc=12;this._dl_start=new Array();this._limitC=this.limit=totalRows;this.multiLine=false;this._dloadSize=Math.floor(parseInt(this.entBox.offsetHeight)/this._srdh)+2;this.renderSize=renderSize;this.obj.className+=" row20px";if (this.hdr.childNodes[1])this._initD();else
 this._initDrF=true};dhtmlXGridObject.prototype.getStateOfView = function(){if (!this._srdh)this._srdh=20;return [
 Math.floor(this.objBox.scrollTop/this._srdh),
 Math.ceil(parseInt(this.objBox.offsetHeight)/this._srdh),
 this.limit
 ]};dhtmlXGridObject.prototype.setAwaitedRowHeight = function(height) {this._srdh=parseInt(height)};dhtmlXGridObject.prototype._initD = function(){if (this.limit)this._fastAddRowSpacer(0,this.limit*this._srdh);this._initDrF=false};dhtmlXGridObject.prototype.enableDOMLimit = function(mode,limit){if (!convertStringToBoolean(mode)) return;this._dom_limit=limit||1000};dhtmlXGridObject.prototype._addFromBufferSR=function(j){if ((!this.rowsCol[j])||(this.rowsCol[j]._sRow))
 this._splitRowAt(j);else
 if ((this.rowsBuffer[1][j])&&(this.rowsBuffer[1][j].tagName=="TR")){this.rowsCol[j].parentNode.insertBefore(this.rowsBuffer[1][j],this.rowsCol[j]);this.rowsCol[j].parentNode.removeChild(this.rowsCol[j]);this.rowsCol[j].grid=null;this.rowsCol[j]=this.rowsBuffer[1][j]};if (this.rowsBuffer[1][j].tagName=="row"){if (this._cssEven){if (j%2==1)this.rowsCol[j].className=this._cssUnEven;else this.rowsCol[j].className=this._cssEven};this.changeRowId(this.rowsCol[j].idd,this.rowsBuffer[1][j].getAttribute("id"));this._fillRowFromXML(this.rowsCol[j],this.rowsBuffer[1][j],-1)}else {this.rowsAr[this.rowsBuffer[1][j].idd]=this.rowsBuffer[1][j];this.rowsBuffer[1][j]._sRow=this.rowsBuffer[1][j]._rLoad=false};this.rowsCol[j]._rLoad=false;this.rowsBuffer[1][j]=null};dhtmlXGridObject.prototype._askRealRows=function(pos,afterCall){if ((this.renderSize)&&(this.renderSize>this._dloadSize))
 var cdload=this.renderSize;else
 var cdload=this._dloadSize;if (!this.limit){this._dl_start[0]=[0,cdload];this.xmlLoader = new dtmlXMLLoaderObject(this._askRealRows2,this);this.xmlLoader.waitCall=afterCall;this.callEvent("onXLS",[this]);if (this._dloadStr)this.xmlLoader.loadXMLString(this._dloadStr);else
 this.xmlLoader.loadXML(this._dload+((this._dload.indexOf("?")!=-1)?"&":"?")+"posStart="+0+"&sn="+(new Date()).valueOf());return true};var gi=pos||Math.floor(this.objBox.scrollTop/this._srdh);if ((this._dom_limit)&&(this.obj._rowslength()>this._dom_limit))
 {};if (gi>(this.limit-cdload)) gi=this.limit-cdload;if (gi<0)gi=0;var size=gi+cdload;if (size>this.limit)size=this.limit;for (var j=gi;j<size;j++)if ((!this.rowsCol[j])||(this.rowsCol[j]._rLoad)||(this.rowsCol[j]._sRow)) {if (this.rowsBuffer[1][j]){this._addFromBufferSR(j)}else
 {{ count=size-j;start=j};this._dl_start[start]=[gi-start,size-gi];this.xmlLoader = new dtmlXMLLoaderObject(this._askRealRows2,this);this.xmlLoader.waitCall=afterCall;this.callEvent("onXLS",[this]);this.xmlLoader.loadXML(this._dload+((this._dload.indexOf("?")!=-1)?"&":"?")+"posStart="+start+"&count="+count+"&sn="+(new Date()).valueOf());return}};if (afterCall)afterCall()};dhtmlXGridObject.prototype._askRealRows2=function(obj,xml,c,d,e){var top=e.getXMLTopNode("rows");var inmd=obj._initDrF;if (inmd){obj._parseHead(top);if (obj.limit && obj.rowsCol.length)inmd=false};var rows=e.doXPath("//rows/row",top);var z_t=top.getAttribute("total_count");if ((z_t)&&(!obj._limitC)){obj._limitC=obj.limit=parseInt(z_t)};if (inmd)obj._initD();var j=parseInt(top.getAttribute("pos"))||0;var llim=(obj._dl_start[j]||[0])[0];var tlim=llim+(obj._dl_start[j]||[0,rows.length])[1];for (var i=0;i<rows.length;i++){{
 obj.rowsBuffer[0][j+i]=null;if ((!obj.rowsCol[i+j])||(obj.rowsCol[i+j]._sRow))
 obj._splitRowAt(i+j);if (obj.rowsCol[i+j]._rLoad){if (obj._cssEven){if ((j+i)%2==1) obj.rowsCol[i+j].className=obj._cssUnEven;else obj.rowsCol[i+j].className=obj._cssEven;if (obj._fake)obj._fake.rowsCol[i+j].className=obj.rowsCol[i+j].className};obj.changeRowId(obj.rowsCol[i+j].idd,rows[i].getAttribute("id"));obj._fillRowFromXML(obj.rowsCol[i+j],rows[i],-1);obj.rowsCol[i+j]._rLoad=false;if (obj._fake)obj._fake.rowsCol[i+j]._rLoad=false}}};obj.callEvent("onXLE",[this,tlim-llim])};dhtmlXGridObject.prototype._splitRowAt=function(ind){var id='temp_dLoad_'+this._dInc;this._dInc++;var z=this.rowsCol[ind];if (!z){var ind2=this._findSParent(ind);var delta=ind2[1]-(ind-ind2[0])*this._srdh;this._fixHeight(this.rowsCol[ind2[0]],delta);var z2=this._fastAddRow(id,ind,true,ind2[0])
 z2._sRow=true;this._fixHeight(z2,-1*((ind2[1]-(ind-ind2[0])*this._srdh)-this._srdh));return this._splitRowAt(ind)}else
 if (z._sRow){if ((this.rowsBuffer[1][ind])&&(this.rowsBuffer[1][ind].tagName=="TR"))
 (this._fastAddRow(id,ind,true,null,this.rowsBuffer[1][ind]))._rLoad=false;else
 (this._fastAddRow(id,ind,true))._rLoad=true;if ((!z.style.height)||(parseInt(z.style.height)==this._srdh))
 z.parentNode.removeChild(z);else{this.rowsCol[ind+1]=z;this._fixHeight(z,this._srdh)};if (ind==0)this.setSizes()}};dhtmlXGridObject.prototype._findSParent=function(ind){for (var i=ind-1;i>=0;i--){if (this.rowsCol[i]){return [i,(parseInt(this.rowsCol[i].style.height))]}}};dhtmlXGridObject.prototype._fixHeight=function(z,delta){var x=parseInt(z.style.height||this._srdh)-delta;if (x==this._srdh){z._sRow=false;z._rLoad=true};z.style.height=x+"px";var n=z.childNodes.length;for (var i=0;i<n;i++)z.childNodes[i].style.height=x+"px"};dhtmlXGridObject.prototype._fastAddRowSpacer=function(ind,height){var id='temp_dLoad_'+this._dInc;this._dInc++;var z=this._fastAddRow(id,ind);z.style.height=height+"px";var n=z.childNodes.length;for (var i=0;i<n;i++)z.childNodes[i].style.height=height+"px";z._sRow=true};dhtmlXGridObject.prototype._fastAddRow=function(id,ind,nonshift,ind2,z){var z=z||this._prepareRow(id);if (((ind2)||(ind2=="0"))&&(this.rowsCol[ind2].nextSibling))
 this.rowsCol[ind2].parentNode.insertBefore(z,this.rowsCol[ind2].nextSibling);else
 {if ((ind==this.limit)||(this.obj._rowslength()==0)||(!this.rowsCol[ind])){if (_isKHTML)this.obj.appendChild(z);else{if (!this.obj.firstChild)this.obj.appendChild(document.createElement("TBODY"));this.obj.childNodes[0].appendChild(z)}}else
 this.rowsCol[ind2||ind].parentNode.insertBefore(z,this.rowsCol[ind])};this.rowsAr[id] = z;if (!nonshift)this.rowsCol._dhx_insertAt(ind,z);else
 this.rowsCol[ind]=z;return z};dhtmlXGridObject.prototype._insertRowAt_WSRDA = function(r,ind,skip){if (ind<0)ind=this.rowsBuffer[0].length;if ((arguments.length<2)||(ind===window.undefined))
 ind = this.rowsBuffer[0].length
 else{if(ind>this.rowsBuffer[0].length)ind = this.rowsBuffer[0].length};var ind2=this.rowsBuffer[0][ind]||(this.rowsCol[ind]?this.rowsCol[ind].idd:null);if (ind2)this.getRowById(ind2);if (!skip)if (ind==this.rowsBuffer[0].length){if (_isKHTML)this.obj.appendChild(r);else{this.obj.firstChild.appendChild(r)};this.rowsBuffer[0][ind]=r.idd;this.rowsBuffer[1][ind]=null;ind2=ind}else
 {if (!this.rowsCol[ind])ind2=(this._findSParent(ind)[0]);else ind2=ind;this.rowsCol[ind2].parentNode.insertBefore(r,this.rowsCol[ind2]);this.rowsBuffer[0]._dhx_insertAt(ind,r.idd);this.rowsBuffer[1]._dhx_insertAt(ind,null)};this.limit+=1;this.rowsAr[r.idd] = r;this.rowsCol._dhx_insertAt(ind2,r);if (this._cssEven){if (ind%2==1)r.className+=" "+this._cssUnEven;else r.className+=" "+this._cssEven;if (ind!=(this.rowsCol.length-1))
 this._fixAlterCss(ind+1)};this.doOnRowAdded(r);if ((this.math_req)&&(!this._parsing_)){for(var i=0;i<this.hdr.rows[0].cells.length;i++)this._checkSCL(r.childNodes[i]);this.math_req=false};return r};dhtmlXGridObject.prototype.deleteRow_WSRDA = function(row_id,node){var ind=-1;var fixind=null;if (this.rowsAr[row_id]){ind=this.rowsCol._dhx_find(this.rowsAr[row_id]);if (this.deleteRow_WSRD(row_id,node)==false) return false};if (ind<0){var ind=this.rowsBuffer[0]._dhx_find(row_id);if (ind>-1)fixind=this.rowsCol[this._findSParent(ind)[0]]};if (ind>-1){this.rowsBuffer[0]._dhx_delAt(ind);this.rowsBuffer[1]._dhx_delAt(ind);this.limit-=1;if (fixind)this._fixHeight(fixind,this._srdh)};return true};//(c)dhtmlx ltd. www.dhtmlx.com
//v.1.5 build 71114

/*
Copyright DHTMLX LTD. http://www.dhtmlx.com
You allowed to use this component or parts of it under GPL terms
To use it on other terms or get Professional edition of the component please contact us at sales@dhtmlx.com
*/
