Incorrect XML error in htmlx scheduler

Hi

i have implemented sample dhtmlx scheduler in java with mysql database connection .But when the page load events are not loaded from the database.Instead it show an error message : “Error Type :Load XML Description :Incorrect XML”



/$Rev$/

dhtmlxAjax={

    get:function(url,callback){

        var t=new dtmlXMLLoaderObject(true);

        t.async=(arguments.length<3);

        t.waitCall=callback;

alert(url);

        t.loadXML(url)



        return t;

    },

    post:function(url,post,callback){

        var t=new dtmlXMLLoaderObject(true);

        t.async=(arguments.length<4);

        t.waitCall=callback;

t.loadXML(url,true,post)

return t;

    },

    getSync:function(url){

        return this.get(url,null,true)

    },

    postSync:function(url,post){

        return this.post(url,post,null,true);        

    }

}



/**

* @desc: xmlLoader object

* @type: private

* @param: funcObject - xml parser function

* @param: object - jsControl object

* @param: async - sync/async mode (async by default)

* @param: rSeed - enable/disable random seed ( prevent IE caching)

* @topic: 0

/

function dtmlXMLLoaderObject(funcObject, dhtmlObject, async, rSeed){

    this.xmlDoc="";



    if (typeof (async) != “undefined”)

        this.async=async;

    else

        this.async=true;



    this.onloadAction=funcObject||null;

    this.mainObject=dhtmlObject||null;

    this.waitCall=null;

    this.rSeed=rSeed||false;

    return this;

};

/
*

* @desc: xml loading handler

* @type: private

* @param: dtmlObject - xmlLoader object

* @topic: 0

/

dtmlXMLLoaderObject.prototype.waitLoadFunction=function(dhtmlObject){

    var once = true;

    this.check=function (){

        if ((dhtmlObject)&&(dhtmlObject.onloadAction != null)){

            if ((!dhtmlObject.xmlDoc.readyState)||(dhtmlObject.xmlDoc.readyState == 4)){

                if (!once)

                    return;



                once=false; //IE 5 fix

                if (typeof dhtmlObject.onloadAction == “function”)

                    dhtmlObject.onloadAction(dhtmlObject.mainObject, null, null, null, dhtmlObject);



                if (dhtmlObject.waitCall){

                    dhtmlObject.waitCall.call(this,dhtmlObject);

                    dhtmlObject.waitCall=null;

                }

            }

        }

    };

    return this.check;

};



/
*

* @desc: return XML top node

* @param: tagName - top XML node tag name (not used in IE, required for Safari and Mozilla)

* @type: private

* @returns: top XML node

* @topic: 0

/

dtmlXMLLoaderObject.prototype.getXMLTopNode=function(tagName, oldObj){

    if (this.xmlDoc.responseXML){

        var temp = this.xmlDoc.responseXML.getElementsByTagName(tagName);

        if(temp.length==0 && tagName.indexOf(":")!=-1)

            var temp = this.xmlDoc.responseXML.getElementsByTagName((tagName.split(":"))[1]);

        var z = temp[0];

    } else

        var z = this.xmlDoc.documentElement;



    if (z){

        this._retry=false;

        return z;

    }



    if ((_isIE)&&(!this._retry)){

        //fall back to MS.XMLDOM

        var xmlString = this.xmlDoc.responseText;

        var oldObj = this.xmlDoc;

        this.retry=true;

        this.xmlDoc=new ActiveXObject(“Microsoft.XMLDOM”);

        this.xmlDoc.async=false;

        this.xmlDoc"loadXM"+“L”;

alert(“xmlString…”+xmlString);

        return this.getXMLTopNode(tagName, oldObj);

    }

    dhtmlxError.throwError(“LoadXML”, “Incorrect XML”, [

        (oldObj||this.xmlDoc),

        this.mainObject

    ]);



    return document.createElement(“DIV”);

};



/
*

* @desc: load XML from string

* @type: private

* @param: xmlString - xml string

* @topic: 0

/

dtmlXMLLoaderObject.prototype.loadXMLString=function(xmlString){

    {

        try{

            var parser = new DOMParser();

            this.xmlDoc=parser.parseFromString(xmlString, “text/xml”);

        }

        catch (e){

            this.xmlDoc=new ActiveXObject(“Microsoft.XMLDOM”);

            this.xmlDoc.async=this.async;

            this.xmlDoc"loadXM"+“L”;

        }

    }



    this.onloadAction(this.mainObject, null, null, null, this);



    if (this.waitCall){

        this.waitCall();

        this.waitCall=null;

    }

}

/
*

* @desc: load XML

* @type: private

* @param: filePath - xml file path

* @param: postMode - send POST request

* @param: postVars - list of vars for post request

* @topic: 0

/

dtmlXMLLoaderObject.prototype.loadXML=function(filePath, postMode, postVars, rpc){



    if (this.rSeed)

        filePath+=((filePath.indexOf("?") != -1) ? “&” : “?”)+“a_dhx_rSeed=”+(new Date()).valueOf();

    this.filePath=filePath;



    if ((!isIE)&&(window.XMLHttpRequest))

        this.xmlDoc=new XMLHttpRequest();

    else {

        if (document.implementation&&document.implementation.createDocument){

            this.xmlDoc=document.implementation.createDocument("", “”, null);

            this.xmlDoc.onload=new this.waitLoadFunction(this);

            this.xmlDoc.load(filePath);

return;

        } else

            this.xmlDoc=new ActiveXObject(“Microsoft.XMLHTTP”);

    }



    if (this.async)

        this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this);

    this.xmlDoc.open(postMode ? “POST” : “GET”, filePath, this.async);



    if (rpc){

        this.xmlDoc.setRequestHeader(“User-Agent”, “dhtmlxRPC v0.1 (”+navigator.userAgent+")");

        this.xmlDoc.setRequestHeader(“Content-type”, “text/xml”);

    }



    else if (postMode)

        this.xmlDoc.setRequestHeader(‘Content-type’, ‘application/x-www-form-urlencoded’);

        

    this.xmlDoc.setRequestHeader(“X-Requested-With”,“XMLHttpRequest”);

    this.xmlDoc.send(null||postVars);



    if (!this.async)

        (new this.waitLoadFunction(this))();

};

/
*

* @desc: destructor, cleans used memory

* @type: private

* @topic: 0

/

dtmlXMLLoaderObject.prototype.destructor=function(){

    this.onloadAction=null;

    this.mainObject=null;

    this.xmlDoc=null;

    return null;

}



dtmlXMLLoaderObject.prototype.xmlNodeToJSON = function(node){

var t={};

for (var i=0; i<node.attributes.length; i++)

t[node.attributes[i].name]=node.attributes[i].value;

t["tagvalue"]=node.firstChild?node.firstChild.nodeValue:"";

for (var i=0; i<node.childNodes.length; i++){

var name=node.childNodes[i].tagName;

if (name){

if (!t[name]) t[name]=[];

t[name].push(this.xmlNodeToJSON(node.childNodes[i]));

}

}

return t;

}



/
*

* @desc: Call wrapper

* @type: private

* @param: funcObject - action handler

* @param: dhtmlObject - user data

* @returns: function handler

* @topic: 0

/

function callerFunction(funcObject, dhtmlObject){

    this.handler=function(e){

        if (!e)

            e=window.event;

        funcObject(e, dhtmlObject);

        return true;

    };

    return this.handler;

};



/
*

* @desc: Calculate absolute position of html object

* @type: private

* @param: htmlObject - html object

* @topic: 0

/

function getAbsoluteLeft(htmlObject){

    var xPos = htmlObject.offsetLeft;

    var temp = htmlObject.offsetParent;



    while (temp != null){

        xPos+=temp.offsetLeft;

        temp=temp.offsetParent;

    }

    return xPos;

}

/
*

* @desc: Calculate absolute position of html object

* @type: private

* @param: htmlObject - html object

* @topic: 0

/

function getAbsoluteTop(htmlObject){

    var yPos = htmlObject.offsetTop;

    var temp = htmlObject.offsetParent;



    while (temp != null){

        yPos+=temp.offsetTop;

        temp=temp.offsetParent;

    }

    return yPos;

}





/
*

* @desc: Convert string to it boolean representation

* @type: private

* @param: inputString - string for covertion

* @topic: 0

/

function convertStringToBoolean(inputString){

    if (typeof (inputString) == “string”)

        inputString=inputString.toLowerCase();



    switch (inputString){

        case “1”:

        case “true”:

        case “yes”:

        case “y”:

        case 1:

        case true:

            return true;

            break;



        default: return false;

    }

}



/**

@desc: find out what symbol to use as url param delimiters in further params

* @type: private

* @param: str - current url string

* @topic: 0

/

function getUrlSymbol(str){

    if (str.indexOf("?") != -1)

        return “&”

    else

        return “?”

}



function dhtmlDragAndDropObject(){

    if (window.dhtmlDragAndDrop)

        return window.dhtmlDragAndDrop;



    this.lastLanding=0;

    this.dragNode=0;

    this.dragStartNode=0;

    this.dragStartObject=0;

    this.tempDOMU=null;

    this.tempDOMM=null;

    this.waitDrag=0;

    window.dhtmlDragAndDrop=this;



    return this;

};



dhtmlDragAndDropObject.prototype.removeDraggableItem=function(htmlNode){

    htmlNode.onmousedown=null;

    htmlNode.dragStarter=null;

    htmlNode.dragLanding=null;

}

dhtmlDragAndDropObject.prototype.addDraggableItem=function(htmlNode, dhtmlObject){

    htmlNode.onmousedown=this.preCreateDragCopy;

    htmlNode.dragStarter=dhtmlObject;

    this.addDragLanding(htmlNode, dhtmlObject);

}

dhtmlDragAndDropObject.prototype.addDragLanding=function(htmlNode, dhtmlObject){

    htmlNode.dragLanding=dhtmlObject;

}

dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(e){

    if (e&&(e||event).button == 2)

        return;



    if (window.dhtmlDragAndDrop.waitDrag){

        window.dhtmlDragAndDrop.waitDrag=0;

        document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU;

        document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM;

        return false;

    }



    window.dhtmlDragAndDrop.waitDrag=1;

    window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup;

    window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove;

    window.dhtmlDragAndDrop.dragStartNode=this;

    window.dhtmlDragAndDrop.dragStartObject=this.dragStarter;

    document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy;

    document.body.onmousemove=window.dhtmlDragAndDrop.callDrag;



    if ((e)&&(e.preventDefault)){

        e.preventDefault();

        return false;

    }

    return false;

};

dhtmlDragAndDropObject.prototype.callDrag=function(e){

    if (!e)

        e=window.event;

    dragger=window.dhtmlDragAndDrop;



    if ((e.button == 0)&&(_isIE))

        return dragger.stopDrag();



    if (!dragger.dragNode&&dragger.waitDrag){

        dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode, e);



        if (!dragger.dragNode)

            return dragger.stopDrag();



        dragger.dragNode.onselectstart=function(){return false;}

        dragger.gldragNode=dragger.dragNode;

        document.body.appendChild(dragger.dragNode);

        document.body.onmouseup=dragger.stopDrag;

        dragger.waitDrag=0;

        dragger.dragNode.pWindow=window;

        dragger.initFrameRoute();

    }



    if (dragger.dragNode.parentNode != window.document.body){

        var grd = dragger.gldragNode;



        if (dragger.gldragNode.old)

            grd=dragger.gldragNode.old;



        //if (!document.all) dragger.calculateFramePosition();

        grd.parentNode.removeChild(grd);

        var oldBody = dragger.dragNode.pWindow;



        //        var oldp=dragger.dragNode.parentObject;

        if (_isIE){

            var div = document.createElement(“Div”);

            div.innerHTML=dragger.dragNode.outerHTML;

            dragger.dragNode=div.childNodes[0];

        } else

            dragger.dragNode=dragger.dragNode.cloneNode(true);



        dragger.dragNode.pWindow=window;

        //        dragger.dragNode.parentObject=oldp;



        dragger.gldragNode.old=dragger.dragNode;

        document.body.appendChild(dragger.dragNode);

        oldBody.dhtmlDragAndDrop.dragNode=dragger.dragNode;

    }



    dragger.dragNode.style.left=e.clientX+15+(dragger.fx

        ? dragger.fx
(-1)

        : 0)

        +(document.body.scrollLeft||document.documentElement.scrollLeft)+“px”;

    dragger.dragNode.style.top=e.clientY+3+(dragger.fy

        ? dragger.fy*(-1)

        : 0)

        +(document.body.scrollTop||document.documentElement.scrollTop)+“px”;



    if (!e.srcElement)

        var z = e.target;

    else

        z=e.srcElement;

    dragger.checkLanding(z, e);

}



dhtmlDragAndDropObject.prototype.calculateFramePosition=function(n){

    //this.fx = 0, this.fy = 0;

    if (window.name){

        var el = parent.frames[window.name].frameElement.offsetParent;

        var fx = 0;

        var fy = 0;



        while (el){

            fx+=el.offsetLeft;

            fy+=el.offsetTop;

            el=el.offsetParent;

        }



        if ((parent.dhtmlDragAndDrop)){

            var ls = parent.dhtmlDragAndDrop.calculateFramePosition(1);

            fx+=ls.split(’
’)[0]*1;

            fy+=ls.split(’
’)[1]*1;

        }



        if (n)

            return fx+"
"+fy;

        else

            this.fx=fx;

        this.fy=fy;

    }

    return “0_0”;

}

dhtmlDragAndDropObject.prototype.checkLanding=function(htmlObject, e){

    if ((htmlObject)&&(htmlObject.dragLanding)){

        if (this.lastLanding)

            this.lastLanding.dragLanding._dragOut(this.lastLanding);

        this.lastLanding=htmlObject;

        this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding, this.dragStartNode, e.clientX,

            e.clientY, e);

        this.lastLanding_scr=(_isIE ? e.srcElement : e.target);

    } else {

        if ((htmlObject)&&(htmlObject.tagName != “BODY”))

            this.checkLanding(htmlObject.parentNode, e);

        else {

            if (this.lastLanding)

                this.lastLanding.dragLanding._dragOut(this.lastLanding, e.clientX, e.clientY, e);

            this.lastLanding=0;



            if (this._onNotFound)

                this._onNotFound();

        }

    }

}

dhtmlDragAndDropObject.prototype.stopDrag=function(e, mode){

    dragger=window.dhtmlDragAndDrop;



    if (!mode){

        dragger.stopFrameRoute();

        var temp = dragger.lastLanding;

        dragger.lastLanding=null;



        if (temp)

            temp.dragLanding._drag(dragger.dragStartNode, dragger.dragStartObject, temp, (_isIE

                ? event.srcElement

                : e.target));

    }

    dragger.lastLanding=null;



    if ((dragger.dragNode)&&(dragger.dragNode.parentNode == document.body))

        dragger.dragNode.parentNode.removeChild(dragger.dragNode);

    dragger.dragNode=0;

    dragger.gldragNode=0;

    dragger.fx=0;

    dragger.fy=0;

    dragger.dragStartNode=0;

    dragger.dragStartObject=0;

    document.body.onmouseup=dragger.tempDOMU;

    document.body.onmousemove=dragger.tempDOMM;

    dragger.tempDOMU=null;

    dragger.tempDOMM=null;

    dragger.waitDrag=0;

}



dhtmlDragAndDropObject.prototype.stopFrameRoute=function(win){

    if (win)

        window.dhtmlDragAndDrop.stopDrag(1, 1);



    for (var i = 0; i < window.frames.length; i++)

        if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))

            window.frames[i].dhtmlDragAndDrop.stopFrameRoute(window);



    if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))

        parent.dhtmlDragAndDrop.stopFrameRoute(window);

}

dhtmlDragAndDropObject.prototype.initFrameRoute=function(win, mode){

    if (win){

        window.dhtmlDragAndDrop.preCreateDragCopy();

        window.dhtmlDragAndDrop.dragStartNode=win.dhtmlDragAndDrop.dragStartNode;

        window.dhtmlDragAndDrop.dragStartObject=win.dhtmlDragAndDrop.dragStartObject;

        window.dhtmlDragAndDrop.dragNode=win.dhtmlDragAndDrop.dragNode;

        window.dhtmlDragAndDrop.gldragNode=win.dhtmlDragAndDrop.dragNode;

        window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag;

        window.waitDrag=0;



        if (((!_isIE)&&(mode))&&((!_isFF)||(_FFrv < 1.8)))

            window.dhtmlDragAndDrop.calculateFramePosition();

    }



    if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))

        parent.dhtmlDragAndDrop.initFrameRoute(window);



    for (var i = 0; i < window.frames.length; i++)

        if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))

            window.frames[i].dhtmlDragAndDrop.initFrameRoute(window, ((!win||mode) ? 1 : 0));

}



var _isFF = false;

var _isIE = false;

var _isOpera = false;

var _isKHTML = false;

var _isMacOS = false;



if (navigator.userAgent.indexOf(‘Macintosh’) != -1)

    _isMacOS=true;



if ((navigator.userAgent.indexOf(‘Safari’) != -1)||(navigator.userAgent.indexOf(‘Konqueror’) != -1)){

    var _KHTMLrv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf(‘Safari’)+7, 5));



    if (_KHTMLrv > 525){ //mimic FF behavior for Safari 3.1+

        _isFF=true;

        var _FFrv = 1.9;

    } else

        _isKHTML=true;

} else if (navigator.userAgent.indexOf(‘Opera’) != -1){

    _isOpera=true;

    _OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf(‘Opera’)+6, 3));

}





else if (navigator.appName.indexOf(“Microsoft”) != -1){

    _isIE=true;

    if (navigator.appVersion.indexOf(“MSIE 8.0”)!= -1 && document.compatMode != “BackCompat”) _isIE=8;

} else {

    _isFF=true;

    var _FFrv = parseFloat(navigator.userAgent.split(“rv:”)[1])

}





//multibrowser Xpath processor

dtmlXMLLoaderObject.prototype.doXPath=function(xpathExp, docObj, namespace, result_type){

    if ((_isKHTML))

        return this.doXPathOpera(xpathExp, docObj);



    if (_isIE){ //IE

        if (!docObj)

            if (!this.xmlDoc.nodeName)

                docObj=this.xmlDoc.responseXML

            else

                docObj=this.xmlDoc;



        if (!docObj)

            dhtmlxError.throwError(“LoadXML”, “Incorrect XML”, [

                (docObj||this.xmlDoc),

                this.mainObject

            ]);



        if (namespace != null)

            docObj.setProperty(“SelectionNamespaces”, “xmlns:xsl=’”+namespace+"’"); //



        if (result_type == ‘single’){

            return docObj.selectSingleNode(xpathExp);

        }

        else {

            return docObj.selectNodes(xpathExp)||new Array(0);

        }

    } else { //Mozilla

        var nodeObj = docObj;



        if (!docObj){

            if (!this.xmlDoc.nodeName){

                docObj=this.xmlDoc.responseXML

            }

            else {

                docObj=this.xmlDoc;

            }

        }



        if (!docObj)

            dhtmlxError.throwError(“LoadXML”, “Incorrect XML”, [

                (docObj||this.xmlDoc),

                this.mainObject

            ]);



        if (docObj.nodeName.indexOf(“document”) != -1){

            nodeObj=docObj;

        }

        else {

            nodeObj=docObj;

            docObj=docObj.ownerDocument;

        }

        var retType = XPathResult.ANY_TYPE;



        if (result_type == ‘single’)

            retType=XPathResult.FIRST_ORDERED_NODE_TYPE

        var rowsCol = new Array();

        var col = docObj.evaluate(xpathExp, nodeObj, function(pref){

            return namespace

        }, retType, null);



        if (retType == XPathResult.FIRST_ORDERED_NODE_TYPE){

            return col.singleNodeValue;

        }

        var thisColMemb = col.iterateNext();



        while (thisColMemb){

            rowsCol[rowsCol.length]=thisColMemb;

            thisColMemb=col.iterateNext();

        }

        return rowsCol;

    }

}



function _dhtmlxError(type, name, params){

    if (!this.catches)

        this.catches=new Array();



    return this;

}



dhtmlxError.prototype.catchError=function(type, func_name){

    this.catches[type]=func_name;

}

dhtmlxError.prototype.throwError=function(type, name, params){

    if (this.catches[type])

        return this.catches[type](type, name, params);



    if (this.catches[“ALL”])

        return this.catches[“ALL”](type, name, params);



    alert("Error type: “+arguments[0]+”\nDescription: "+arguments[1]);

    return null;

}



window.dhtmlxError=new dhtmlxError();





//opera fake, while 9.0 not released

//multibrowser Xpath processor

dtmlXMLLoaderObject.prototype.doXPathOpera=function(xpathExp, docObj){

    //this is fake for Opera

    var z = xpathExp.replace(/[/]+/gi, “/”).split(’/’);

    var obj = null;

    var i = 1;



    if (!z.length)

        return [];



    if (z[0] == “.”)

        obj=[docObj]; else if (z[0] == “”){

        obj=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(z[i].replace(/[[^]]]/g, “”));

        i++;

    } else

        return [];



    for (i; i < z.length; i++)obj=this._getAllNamedChilds(obj, z[i]);



    if (z[i-1].indexOf("[") != -1)

        obj=this._filterXPath(obj, z[i-1]);

    return obj;

}



dtmlXMLLoaderObject.prototype._filterXPath=function(a, b){

    var c = new Array();

    var b = b.replace(/[^[]
[@/g, “”).replace(/[[]@]/g, “”);



    for (var i = 0; i < a.length; i++)

        if (a[i].getAttribute(b))

            c[c.length]=a[i];



    return c;

}

dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(a, b){

    var c = new Array();



    if (_isKHTML)

        b=b.toUpperCase();



    for (var i = 0; i < a.length; i++)for (var j = 0; j < a[i].childNodes.length; j++){

        if (_isKHTML){

            if (a[i].childNodes[j].tagName&&a[i].childNodes[j].tagName.toUpperCase() == b)

                c[c.length]=a[i].childNodes[j];

        }



        else if (a[i].childNodes[j].tagName == b)

            c[c.length]=a[i].childNodes[j];

    }



    return c;

}



function dhtmlXHeir(a, b){

    for (var c in b)

        if (typeof (b[c]) == “function”)

            a[c]=b[c];

    return a;

}



function dhtmlxEvent(el, event, handler){

    if (el.addEventListener)

        el.addEventListener(event, handler, false);



    else if (el.attachEvent)

        el.attachEvent(“on”+event, handler);

}



//============= XSL Extension ===================================



dtmlXMLLoaderObject.prototype.xslDoc=null;

dtmlXMLLoaderObject.prototype.setXSLParamValue=function(paramName, paramValue, xslDoc){

    if (!xslDoc)

        xslDoc=this.xslDoc



    if (xslDoc.responseXML)

        xslDoc=xslDoc.responseXML;

    var item =

        this.doXPath("/xsl:stylesheet/xsl:variable[@name=’"+paramName+"’]", xslDoc,

            “http://www.w3.org/1999/XSL/Transform”, “single”);



    if (item != null)

        item.firstChild.nodeValue=paramValue

}

dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(xslDoc, xmlDoc){

    if (!xslDoc)

        xslDoc=this.xslDoc;



    if (xslDoc.responseXML)

        xslDoc=xslDoc.responseXML



    if (!xmlDoc)

        xmlDoc=this.xmlDoc;



    if (xmlDoc.responseXML)

        xmlDoc=xmlDoc.responseXML



    //MOzilla

    if (!_isIE){

        if (!this.XSLProcessor){

            this.XSLProcessor=new XSLTProcessor();

            this.XSLProcessor.importStylesheet(xslDoc);

        }

        var result = this.XSLProcessor.transformToDocument(xmlDoc);

    } else {

        var result = new ActiveXObject(“Msxml2.DOMDocument.3.0”);

        try{

            xmlDoc.transformNodeToObject(xslDoc, result);

        }catch(e){

            result = xmlDoc.transformNode(xslDoc);

        }

    }

    return result;

}



dtmlXMLLoaderObject.prototype.doXSLTransToString=function(xslDoc, xmlDoc){

    var res = this.doXSLTransToObject(xslDoc, xmlDoc);

    if(typeof(res)==“string”)

        return res;

    return this.doSerialization(res);

}



dtmlXMLLoaderObject.prototype.doSerialization=function(xmlDoc){

    if (!xmlDoc)

            xmlDoc=this.xmlDoc;

    if (xmlDoc.responseXML)

            xmlDoc=xmlDoc.responseXML

    if (!_isIE){

        var xmlSerializer = new XMLSerializer();

        return xmlSerializer.serializeToString(xmlDoc);

    } else

        return xmlDoc.xml;

}



/**

@desc:

* @type: private

*/

dhtmlxEventable=function(obj){

        obj.dhx_SeverCatcherPath="";

        obj.attachEvent=function(name, catcher, callObj){

            name='ev
’+name.toLowerCase();

            if (!this[name])

                this[name]=new this.eventCatcher(callObj||this);

                

            return(name+’:’+this[name].addEvent(catcher)); //return ID (event name & event ID)

        }

        obj.callEvent=function(name, arg0){

            name='ev
’+name.toLowerCase();

            if (this[name])

                return this[name].apply(this, arg0);

            return true;

        }

        obj.checkEvent=function(name){

            return (!!this['ev
’+name.toLowerCase()])

        }

        obj.eventCatcher=function(obj){

            var dhx_catch = [];

            var z = function(){

                var res = true;

                for (var i = 0; i < dhx_catch.length; i++){

                    if (dhx_catch[i] != null){

                        var zr = dhx_catch[i].apply(obj, arguments);

                        res=res&&zr;

                    }

                }

                return res;

            }

            z.addEvent=function(ev){

                if (typeof (ev) != “function”)

                    ev=eval(ev);

                if (ev)

                    return dhx_catch.push(ev)-1;

                return false;

            }

            z.removeEvent=function(id){

                dhx_catch[id]=null;

            }

            return z;

        }

        obj.detachEvent=function(id){

            if (id != false){

                var list = id.split(’:’); //get EventName and ID

                this[list[0]].removeEvent(list[1]); //remove event

            }

        }

}





/**

    *     @desc: constructor, data processor object

        @param: serverProcessorURL - url used for update

    
    @type: public

    /

function dataProcessor(serverProcessorURL){

this.serverProcessor = serverProcessorURL;

this.action_param="!nativeeditor_status";



    this.obj = null;

    this.updatedRows = []; //ids of updated rows

    

    this.autoUpdate = true;

    this.updateMode = “cell”;

    this._tMode=“GET”;

    

this._waitMode=0;

this._in_progress={};//?

this._invalid={};

this.mandatoryFields=[];

this.messages=[];



this.styles={

    updated:“font-weight:bold;”,

    inserted:“font-weight:bold;”,

    deleted:“text-decoration : line-through;”,

    invalid:“background-color:FFE0E0;”,

    invalid_cell:“border-bottom:2px solid red;”,

    error:“color:red;”,

    clear:“font-weight:normal;text-decoration:none;”

}



this.enableUTFencoding(true);

dhtmlxEventable(this);



return this;

}



dataProcessor.prototype={

    /**

    
    @desc: select GET or POST transaction model

        @param: mode - GET/POST

    
    @param: total - true/false - send records row by row or all at once (for grid only)

        @type: public

    
/

    setTransactionMode:function(mode,total){

this._tMode=mode;

        this._tSend=total;

},

escape:function(data){

    if (this._utf)

        return encodeURIComponent(data);

    else

    return escape(data);

    },

/**

    *     @desc: allows to set escaping mode

        @param: true - utf based escaping, simple - use current page encoding

    
    @type: public

    /    

    enableUTFencoding:function(mode){

this._utf=convertStringToBoolean(mode);

},

/**

    
    @desc: allows to define, which column may trigger update

        @param: val - array or list of true/false values

    
    @type: public

    /

    setDataColumns:function(val){

        this._columns=(typeof val == “string”)?val.split(","):val;

},

/**

    
    @desc: get state of updating

        @returns: true - all in sync with server, false - some items not updated yet.

    
    @type: public

    /

    getSyncState:function(){

        return !this.updatedRows.length;

    },

    /**

    
    @desc: enable/disable named field for data syncing, will use column ids for grid

        @param: mode - true/false

    
    @type: public

    /

    enableDataNames:function(mode){

        this._endnm=convertStringToBoolean(mode);

    },

    /**

    
    @desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode

        @param: mode - true/false

    
    @type: public

    /

    enablePartialDataSend:function(mode){

        this._changed=convertStringToBoolean(mode);

    },

    /**

    
    @desc: set if rows should be send to server automaticaly

        @param: mode - “row” - based on row selection changed, “cell” - based on cell editing finished, “off” - manual data sending

    
    @type: public

    /

    setUpdateMode:function(mode,dnd){

        this.autoUpdate = (mode==“cell”);

        this.updateMode = mode;

        this.dnd=dnd;

    },

    /**

    
    @desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)

        @param: rowId - id of row to set update-status for

    
    @param: state - true for “updated”, false for “not updated”

        @param: mode - update mode name

    
    @type: public

    /

    setUpdated:function(rowId,state,mode){

        var ind=this.findRow(rowId);

        

        mode=mode||“updated”;

        var existing = this.obj.getUserData(rowId,this.action_param);

        if (existing && mode == “updated”) mode=existing;

            

        if (state){

            this.set_invalid(rowId,false); //clear previous error flag

            this.updatedRows[ind]=rowId;

            this.obj.setUserData(rowId,this.action_param,mode);

        } else{

            if (!this.is_invalid(rowId)){

                this.updatedRows.splice(ind,1);

                this.obj.setUserData(rowId,this.action_param,"");

            }

        }



        //clear changed flag

        if (!state)

            this._clearUpdateFlag(rowId);

            

        this.markRow(rowId,state,mode);

        if (state && this.autoUpdate) this.sendData(rowId);

    },

    _clearUpdateFlag:function(){

        if (this.obj.mytype!=“tree”){

    var row=this.obj.getRowById(rowId);

if (row)

         for (var j=0; j<this.obj._cCount; j++)

        this.obj.cells(rowId,j).cell.wasChanged=false;    //using cells because of split

    }            

    },

    markRow:function(id,state,mode){

        var str="";

        var invalid=this.is_invalid(id)

        if (invalid){

    str=this.styles[invalid]

    state=true;

    }

        if (this.callEvent(“onRowMark”,[id,state,mode,invalid])){

            //default logic

            if (state)

                str+=this.styles[mode];

            else

        str+=this.styles.clear;

    this.objthis._methods[0];



            if (invalid && invalid.details){

                str+=this.styles[invalid+"_cell"];

                for (var i=0; i < invalid.details.length; i++)

                    if (invalid.details[i])

                this.objthis._methods[1];

            }

        }

    },

    getState:function(id){

        return this.obj.getUserData(id,this.action_param);

    },

    is_invalid:function(id){

        return this._invalid[id];

    },

    set_invalid:function(id,mode,details){

        if (details) mode={value:mode, details:details, toString:function(){ return this.value.toString(); }}

        this._invalid[id]=mode;

    },

    /**

    
    @desc: check mandatory fields and varify values of cells, initiate update (if specified)

        @param: rowId - id of row to set update-status for

    
    @type: public

    /

    checkBeforeUpdate:function(rowId){

        var valid=true; var c_invalid=[];

        for (var i=0; i<this.obj._cCount; i++)

            if (this.mandatoryFields[i]){

                var res=this.mandatoryFieldsi;

                if (typeof res == “string”)

                    this.messages.push(res);

                else {

                    valid&=res;

                    c_invalid[i]=!res;

                }

            }

        if (!valid){

            this.set_invalid(rowId,“invalid”,c_invalid);

            this.setUpdated(rowId,false);

        }

        return valid;

    },

    /**

    
    @desc: send row(s) values to server

        @param: rowId - id of row which data to send. If not specified, then all “updated” rows will be send

    
    @type: public

    */

    sendData:function(rowId){

alert(“sendData…”+rowId);

        if (this._waitMode && (this.obj.mytype==“tree” || this.obj._h2)) return;

        if (this.obj.editStop) this.obj.editStop();

        if (this.obj.linked_form) this.obj.linked_form.update();

        
<b

Such error occurs if xml stream is incorrect ( incorrect syntax or encoding problems ) - you can try to load the same URL in separate window of browser, it will provide exta information about reasons of the problem.