/** * @desc: xmlLoader object * @type: private * @param: funcObject - xml parser function * @param: object - jsControl object * @topic: 0 */ function dtmlXMLLoaderObject(funcObject, dhtmlObject,async){ this.xmlDoc=""; if(arguments.length==2) this.async=true; else this.async=async; this.onloadAction=funcObject||null; this.mainObject=dhtmlObject||null; return this; }; /** * @desc: xml loading handler * @type: private * @param: dtmlObject - xmlLoader object * @topic: 0 */ dtmlXMLLoaderObject.prototype.waitLoadFunction=function(dhtmlObject){ this.check=function (){ if(dhtmlObject.onloadAction!=null){ if (!dhtmlObject.xmlDoc.readyState) dhtmlObject.onloadAction(dhtmlObject.mainObject); else { if (dhtmlObject.xmlDoc.readyState != 4) return false; else dhtmlObject.onloadAction(dhtmlObject.mainObject,null,null,null,dhtmlObject); } } }; 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){ if (this.xmlDoc.responseXML) { var temp=this.xmlDoc.responseXML.getElementsByTagName(tagName); var z=temp[0]; } else var z=this.xmlDoc.documentElement; if (z) return z; dhtmlxError.throwError("LoadXML","Incorrect XML",[this.xmlDoc]) return document.createElement("DIV"); }; /** * @desc: load XML * @type: private * @param: filePath - xml file path * @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.loadXML(xmlString); } this.onloadAction(this.mainObject); } dtmlXMLLoaderObject.prototype.loadXML=function(filePath){ try { this.xmlDoc = new XMLHttpRequest(); this.xmlDoc.open("GET",filePath,this.async); this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this); this.xmlDoc.send(null); } catch(e){ if (document.implementation && document.implementation.createDocument) { this.xmlDoc = document.implementation.createDocument("", "", null); this.xmlDoc.onload = new this.waitLoadFunction(this); } else { this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); this.xmlDoc.async=this.async this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this); } this.xmlDoc.load(filePath); } }; /** * @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=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(){ this.lastLanding=0; this.dragNode=0; this.dragStartNode=0; this.dragStartObject=0; this.tempDOMU=null; this.tempDOMM=null; this.waitDrag=0; if (window.dhtmlDragAndDrop) return window.dhtmlDragAndDrop; 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 (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.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode); if (!dragger.dragNode) return dragger.stopDrag(); 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; 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.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+"px"; dragger.dragNode.style.top=e.clientY+3+(dragger.fy?(-1)*dragger.fy:0)+document.body.scrollTop+"px"; if (!e.srcElement) var z=e.target; else z=e.srcElement; dragger.checkLanding(z,e.clientX, e.clientY ); } 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,x,y){ 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,x,y); } else { if ((htmlObject)&&(htmlObject.tagName!="BODY")) this.checkLanding(htmlObject.parentNode,x,y); else { if (this.lastLanding) this.lastLanding.dragLanding._dragOut(this.lastLanding,x,y); this.lastLanding=0; } } } 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); } 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