[ Index ]
 

Code source de eGroupWare 1.2.106-2

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/phpgwapi/js/dhtmlxtree/src/ -> dhtmlXCommon.js (source)

   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  


Généré le : Sun Feb 25 17:20:01 2007 par Balluche grâce à PHPXref 0.7