[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 /** 2 * @desc: xmlLoader object 3 * @type: private 4 * @param: funcObject - xml parser function 5 * @param: object - jsControl object 6 * @topic: 0 7 */ 8 function dtmlXMLLoaderObject(funcObject, dhtmlObject,async){ 9 this.xmlDoc=""; 10 if(arguments.length==2) 11 this.async=true; 12 else 13 this.async=async; 14 this.onloadAction=funcObject||null; 15 this.mainObject=dhtmlObject||null; 16 return this; 17 }; 18 /** 19 * @desc: xml loading handler 20 * @type: private 21 * @param: dtmlObject - xmlLoader object 22 * @topic: 0 23 */ 24 dtmlXMLLoaderObject.prototype.waitLoadFunction=function(dhtmlObject){ 25 this.check=function (){ 26 if(dhtmlObject.onloadAction!=null){ 27 if (!dhtmlObject.xmlDoc.readyState) dhtmlObject.onloadAction(dhtmlObject.mainObject); 28 else { 29 if (dhtmlObject.xmlDoc.readyState != 4) return false; 30 else dhtmlObject.onloadAction(dhtmlObject.mainObject,null,null,null,dhtmlObject); } 31 } 32 }; 33 return this.check; 34 }; 35 36 /** 37 * @desc: return XML top node 38 * @param: tagName - top XML node tag name (not used in IE, required for Safari and Mozilla) 39 * @type: private 40 * @returns: top XML node 41 * @topic: 0 42 */ 43 dtmlXMLLoaderObject.prototype.getXMLTopNode=function(tagName){ 44 if (this.xmlDoc.responseXML) { var temp=this.xmlDoc.responseXML.getElementsByTagName(tagName); var z=temp[0]; } 45 else var z=this.xmlDoc.documentElement; 46 if (z) return z; 47 dhtmlxError.throwError("LoadXML","Incorrect XML",[this.xmlDoc]) 48 return document.createElement("DIV"); 49 }; 50 51 /** 52 * @desc: load XML 53 * @type: private 54 * @param: filePath - xml file path 55 * @topic: 0 56 */ 57 dtmlXMLLoaderObject.prototype.loadXMLString=function(xmlString){ 58 try 59 { 60 var parser = new DOMParser(); 61 this.xmlDoc = parser.parseFromString(xmlString,"text/xml"); 62 } 63 catch(e){ 64 this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 65 this.xmlDoc.async=this.async 66 this.xmlDoc.loadXML(xmlString); 67 } 68 this.onloadAction(this.mainObject); 69 } 70 dtmlXMLLoaderObject.prototype.loadXML=function(filePath){ 71 try 72 { 73 this.xmlDoc = new XMLHttpRequest(); 74 this.xmlDoc.open("GET",filePath,this.async); 75 this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this); 76 this.xmlDoc.send(null); 77 } 78 catch(e){ 79 80 if (document.implementation && document.implementation.createDocument) 81 { 82 this.xmlDoc = document.implementation.createDocument("", "", null); 83 this.xmlDoc.onload = new this.waitLoadFunction(this); 84 } 85 else 86 { 87 this.xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 88 this.xmlDoc.async=this.async 89 this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this); 90 } 91 this.xmlDoc.load(filePath); 92 } 93 }; 94 95 /** 96 * @desc: Call wrapper 97 * @type: private 98 * @param: funcObject - action handler 99 * @param: dhtmlObject - user data 100 * @returns: function handler 101 * @topic: 0 102 */ 103 function callerFunction(funcObject,dhtmlObject){ 104 this.handler=function(e){ 105 if (!e) e=event; 106 funcObject(e,dhtmlObject); 107 return true; 108 }; 109 return this.handler; 110 }; 111 112 /** 113 * @desc: Calculate absolute position of html object 114 * @type: private 115 * @param: htmlObject - html object 116 * @topic: 0 117 */ 118 function getAbsoluteLeft(htmlObject){ 119 var xPos = htmlObject.offsetLeft; 120 var temp = htmlObject.offsetParent; 121 while (temp != null) { 122 xPos += temp.offsetLeft; 123 temp = temp.offsetParent; 124 } 125 return xPos; 126 } 127 /** 128 * @desc: Calculate absolute position of html object 129 * @type: private 130 * @param: htmlObject - html object 131 * @topic: 0 132 */ 133 function getAbsoluteTop(htmlObject) { 134 var yPos = htmlObject.offsetTop; 135 var temp = htmlObject.offsetParent; 136 while (temp != null) { 137 yPos += temp.offsetTop; 138 temp = temp.offsetParent; 139 } 140 return yPos; 141 } 142 143 144 /** 145 * @desc: Convert string to it boolean representation 146 * @type: private 147 * @param: inputString - string for covertion 148 * @topic: 0 149 */ 150 function convertStringToBoolean(inputString){ if (typeof(inputString)=="string") inputString=inputString.toLowerCase(); 151 switch(inputString){ 152 case "1": 153 case "true": 154 case "yes": 155 case "y": 156 case 1: 157 case true: 158 return true; 159 break; 160 default: return false; 161 } 162 } 163 164 /** 165 * @desc: find out what symbol to use as url param delimiters in further params 166 * @type: private 167 * @param: str - current url string 168 * @topic: 0 169 */ 170 function getUrlSymbol(str){ 171 if(str.indexOf("?")!=-1) 172 return "&" 173 else 174 return "?" 175 } 176 177 178 function dhtmlDragAndDropObject(){ 179 this.lastLanding=0; 180 this.dragNode=0; 181 this.dragStartNode=0; 182 this.dragStartObject=0; 183 this.tempDOMU=null; 184 this.tempDOMM=null; 185 this.waitDrag=0; 186 if (window.dhtmlDragAndDrop) return window.dhtmlDragAndDrop; 187 window.dhtmlDragAndDrop=this; 188 189 return this; 190 }; 191 192 dhtmlDragAndDropObject.prototype.removeDraggableItem=function(htmlNode){ 193 htmlNode.onmousedown=null; 194 htmlNode.dragStarter=null; 195 htmlNode.dragLanding=null; 196 } 197 dhtmlDragAndDropObject.prototype.addDraggableItem=function(htmlNode,dhtmlObject){ 198 htmlNode.onmousedown=this.preCreateDragCopy; 199 htmlNode.dragStarter=dhtmlObject; 200 this.addDragLanding(htmlNode,dhtmlObject); 201 } 202 dhtmlDragAndDropObject.prototype.addDragLanding=function(htmlNode,dhtmlObject){ 203 htmlNode.dragLanding=dhtmlObject; 204 } 205 dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(e) 206 { 207 if (window.dhtmlDragAndDrop.waitDrag) { 208 window.dhtmlDragAndDrop.waitDrag=0; 209 document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU; 210 document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM; 211 return false; 212 } 213 214 window.dhtmlDragAndDrop.waitDrag=1; 215 window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup; 216 window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove; 217 window.dhtmlDragAndDrop.dragStartNode=this; 218 window.dhtmlDragAndDrop.dragStartObject=this.dragStarter; 219 document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy; 220 document.body.onmousemove=window.dhtmlDragAndDrop.callDrag; 221 222 if ((e)&&(e.preventDefault)) { e.preventDefault(); return false; } 223 return false; 224 }; 225 dhtmlDragAndDropObject.prototype.callDrag=function(e){ 226 if (!e) e=window.event; 227 dragger=window.dhtmlDragAndDrop; 228 229 if ((e.button==0)&&(isIE())) return dragger.stopDrag(); 230 if (!dragger.dragNode) { 231 dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode); 232 if (!dragger.dragNode) return dragger.stopDrag(); 233 dragger.gldragNode=dragger.dragNode; 234 document.body.appendChild(dragger.dragNode); 235 document.body.onmouseup=dragger.stopDrag; 236 dragger.waitDrag=0; 237 dragger.dragNode.pWindow=window; 238 dragger.initFrameRoute(); 239 } 240 241 242 if (dragger.dragNode.parentNode!=window.document.body){ 243 var grd=dragger.gldragNode; 244 if (dragger.gldragNode.old) grd=dragger.gldragNode.old; 245 246 //if (!document.all) dragger.calculateFramePosition(); 247 grd.parentNode.removeChild(grd); 248 var oldBody=dragger.dragNode.pWindow; 249 if (isIE()){ 250 var div=document.createElement("Div"); 251 div.innerHTML=dragger.dragNode.outerHTML; 252 dragger.dragNode=div.childNodes[0]; } 253 else dragger.dragNode=dragger.dragNode.cloneNode(true); 254 dragger.dragNode.pWindow=window; 255 dragger.gldragNode.old=dragger.dragNode; 256 document.body.appendChild(dragger.dragNode); 257 oldBody.dhtmlDragAndDrop.dragNode=dragger.dragNode; 258 } 259 dragger.dragNode.style.left=e.clientX+15+(dragger.fx?dragger.fx*(-1):0)+document.body.scrollLeft+"px"; 260 dragger.dragNode.style.top=e.clientY+3+(dragger.fy?(-1)*dragger.fy:0)+document.body.scrollTop+"px"; 261 if (!e.srcElement) var z=e.target; else z=e.srcElement; 262 dragger.checkLanding(z,e.clientX, e.clientY ); 263 } 264 265 dhtmlDragAndDropObject.prototype.calculateFramePosition=function(n){ 266 //this.fx = 0, this.fy = 0; 267 if (window.name) { 268 var el =parent.frames[window.name].frameElement.offsetParent; 269 var fx=0; 270 var fy=0; 271 while (el) { fx += el.offsetLeft; fy += el.offsetTop; el = el.offsetParent; } 272 if ((parent.dhtmlDragAndDrop)) { var ls=parent.dhtmlDragAndDrop.calculateFramePosition(1); fx+=ls.split('_')[0]*1; fy+=ls.split('_')[1]*1; } 273 if (n) return fx+"_"+fy; 274 else this.fx=fx; this.fy=fy; 275 } 276 return "0_0"; 277 } 278 dhtmlDragAndDropObject.prototype.checkLanding=function(htmlObject,x,y){ 279 280 if ((htmlObject)&&(htmlObject.dragLanding)) { if (this.lastLanding) this.lastLanding.dragLanding._dragOut(this.lastLanding); 281 this.lastLanding=htmlObject; this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding,this.dragStartNode,x,y); } 282 else { 283 if ((htmlObject)&&(htmlObject.tagName!="BODY")) this.checkLanding(htmlObject.parentNode,x,y); 284 else { if (this.lastLanding) this.lastLanding.dragLanding._dragOut(this.lastLanding,x,y); this.lastLanding=0; } 285 } 286 } 287 dhtmlDragAndDropObject.prototype.stopDrag=function(e,mode){ 288 dragger=window.dhtmlDragAndDrop; 289 if (!mode) 290 { 291 dragger.stopFrameRoute(); 292 var temp=dragger.lastLanding; 293 dragger.lastLanding=null; 294 if (temp) temp.dragLanding._drag(dragger.dragStartNode,dragger.dragStartObject,temp); 295 } 296 dragger.lastLanding=null; 297 if ((dragger.dragNode)&&(dragger.dragNode.parentNode==document.body)) dragger.dragNode.parentNode.removeChild(dragger.dragNode); 298 dragger.dragNode=0; 299 dragger.gldragNode=0; 300 dragger.fx=0; 301 dragger.fy=0; 302 dragger.dragStartNode=0; 303 dragger.dragStartObject=0; 304 document.body.onmouseup=dragger.tempDOMU; 305 document.body.onmousemove=dragger.tempDOMM; 306 dragger.tempDOMU=null; 307 dragger.tempDOMM=null; 308 dragger.waitDrag=0; 309 } 310 311 dhtmlDragAndDropObject.prototype.stopFrameRoute=function(win){ 312 if (win) 313 window.dhtmlDragAndDrop.stopDrag(1,1); 314 315 for (var i=0; i<window.frames.length; i++) 316 if ((window.frames[i]!=win)&&(window.frames[i].dhtmlDragAndDrop)) 317 window.frames[i].dhtmlDragAndDrop.stopFrameRoute(window); 318 if ((parent.dhtmlDragAndDrop)&&(parent!=window)&&(parent!=win)) 319 parent.dhtmlDragAndDrop.stopFrameRoute(window); 320 } 321 dhtmlDragAndDropObject.prototype.initFrameRoute=function(win,mode){ 322 if (win) { 323 324 325 window.dhtmlDragAndDrop.preCreateDragCopy(); 326 window.dhtmlDragAndDrop.dragStartNode=win.dhtmlDragAndDrop.dragStartNode; 327 window.dhtmlDragAndDrop.dragStartObject=win.dhtmlDragAndDrop.dragStartObject; 328 window.dhtmlDragAndDrop.dragNode=win.dhtmlDragAndDrop.dragNode; 329 window.dhtmlDragAndDrop.gldragNode=win.dhtmlDragAndDrop.dragNode; 330 window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag; 331 window.waitDrag=0; 332 if ((!isIE())&&(mode)) window.dhtmlDragAndDrop.calculateFramePosition(); 333 } 334 if ((parent.dhtmlDragAndDrop)&&(parent!=window)&&(parent!=win)) 335 parent.dhtmlDragAndDrop.initFrameRoute(window); 336 for (var i=0; i<window.frames.length; i++) 337 if ((window.frames[i]!=win)&&(window.frames[i].dhtmlDragAndDrop)) 338 window.frames[i].dhtmlDragAndDrop.initFrameRoute(window,((!win||mode)?1:0)); 339 340 } 341 342 var _isFF=false; var _isIE=false; var _isOpera=false; var _isSafari=false; 343 if (navigator.userAgent.indexOf('Safari') != -1 || navigator.userAgent.indexOf('Konqueror') != -1) 344 _isSafari=true; 345 else if (navigator.userAgent.indexOf('Opera') != -1) 346 _isOpera=true; 347 else if(navigator.appName.indexOf("Microsoft")!=-1) 348 _isIE=true; 349 else _isFF=true; 350 351 //deprecated, use global constant instead 352 //determines if current browser is IE 353 function isIE(){ 354 if(navigator.appName.indexOf("Microsoft")!=-1) 355 if (navigator.userAgent.indexOf('Opera') == -1) 356 return true; 357 return false; 358 } 359 360 //multibrowser Xpath processor 361 dtmlXMLLoaderObject.prototype.doXPath = function(xpathExp,docObj){ 362 if ((_isOpera)||(_isSafari)) return this.doXPathOpera(xpathExp,docObj); 363 if(isIE()){//IE 364 if(arguments.length==1){ 365 docObj = this.xmlDoc 366 } 367 return docObj.selectNodes(xpathExp); 368 }else{//Mozilla 369 var nodeObj = docObj; 370 if(!docObj){ 371 if(!this.xmlDoc.nodeName){ 372 docObj = this.xmlDoc.responseXML 373 }else{ 374 docObj = this.xmlDoc; 375 } 376 } 377 if(docObj.nodeName.indexOf("document")!=-1){ 378 nodeObj = docObj; 379 }else{ 380 nodeObj = docObj; 381 docObj = docObj.ownerDocument; 382 383 } 384 var rowsCol = new Array(); 385 var col = docObj.evaluate(xpathExp, nodeObj, null, XPathResult.ANY_TYPE,null); 386 var thisColMemb = col.iterateNext(); 387 while (thisColMemb) { 388 rowsCol[rowsCol.length] = thisColMemb; 389 thisColMemb = col.iterateNext(); 390 } 391 return rowsCol; 392 } 393 } 394 395 if (( window.Node )&&(!_isSafari)) 396 Node.prototype.removeNode = function( removeChildren ) 397 { 398 var self = this; 399 if ( Boolean( removeChildren ) ) 400 { 401 return this.parentNode.removeChild( self ); 402 } 403 else 404 { 405 var range = document.createRange(); 406 range.selectNodeContents( self ); 407 return this.parentNode.replaceChild( range.extractContents(), self ); 408 } 409 } 410 411 function _dhtmlxError(type,name,params){ 412 if (!this.catches) 413 this.catches=new Array(); 414 415 return this; 416 } 417 418 _dhtmlxError.prototype.catchError=function(type,func_name){ 419 this.catches[type]=func_name; 420 } 421 _dhtmlxError.prototype.throwError=function(type,name,params){ 422 if (this.catches[type]) return this.catches[type](type,name,params); 423 if (this.catches["ALL"]) return this.catches["ALL"](type,name,params); 424 alert("Error type: " + arguments[0]+"\nDescription: " + arguments[1] ); 425 return null; 426 } 427 428 window.dhtmlxError=new _dhtmlxError(); 429 430 431 //opera fake, while 9.0 not released 432 //multibrowser Xpath processor 433 dtmlXMLLoaderObject.prototype.doXPathOpera = function(xpathExp,docObj){ 434 //this is fake for Opera 435 var z=xpathExp.replace(/[\/]+/gi,"/").split('/'); 436 var obj=null; 437 var i=1; 438 439 if (!z.length) return []; 440 if (z[0]==".") 441 obj=[docObj]; 442 else if (z[0]=="") 443 { 444 obj=this.xmlDoc.responseXML.getElementsByTagName(z[i]); 445 i++; 446 } 447 else return []; 448 449 for (i; i<z.length; i++) 450 obj=this._getAllNamedChilds(obj,z[i]); 451 452 return obj; 453 } 454 455 dtmlXMLLoaderObject.prototype._getAllNamedChilds = function(a,b){ 456 var c=new Array(); 457 for (var i=0; i<a.length; i++) 458 for (var j=0; j<a[i].childNodes.length; j++) 459 if (a[i].childNodes[j].tagName==b) c[c.length]=a[i].childNodes[j]; 460 461 return c; 462 } 463
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |