[ Index ]
 

Code source de WordPress 2.1.2

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

title

Body

[fermer]

/wp-includes/js/tinymce/plugins/inlinepopups/jscripts/ -> mcwindows.js (source)

   1  /**
   2   * $Id: mcwindows.js 18 2006-06-29 14:11:23Z spocke $
   3   *
   4   * Moxiecode DHTML Windows script.
   5   *
   6   * @author Moxiecode
   7   * @copyright Copyright © 2004, Moxiecode Systems AB, All rights reserved.
   8   */
   9  
  10  // Windows handler
  11  function MCWindows() {
  12      this.settings = new Array();
  13      this.windows = new Array();
  14      this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
  15      this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
  16      this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
  17      this.isMac = navigator.userAgent.indexOf('Mac') != -1;
  18      this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
  19      this.action = "none";
  20      this.selectedWindow = null;
  21      this.zindex = 100;
  22      this.mouseDownScreenX = 0;
  23      this.mouseDownScreenY = 0;
  24      this.mouseDownLayerX = 0;
  25      this.mouseDownLayerY = 0;
  26      this.mouseDownWidth = 0;
  27      this.mouseDownHeight = 0;
  28  };
  29  
  30  MCWindows.prototype.init = function(settings) {
  31      this.settings = settings;
  32  
  33      if (this.isMSIE)
  34          this.addEvent(document, "mousemove", mcWindows.eventDispatcher);
  35      else
  36          this.addEvent(window, "mousemove", mcWindows.eventDispatcher);
  37  
  38      this.addEvent(document, "mouseup", mcWindows.eventDispatcher);
  39  };
  40  
  41  MCWindows.prototype.getParam = function(name, default_value) {
  42      var value = null;
  43  
  44      value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
  45  
  46      // Fix bool values
  47      if (value == "true" || value == "false")
  48          return (value == "true");
  49  
  50      return value;
  51  };
  52  
  53  MCWindows.prototype.eventDispatcher = function(e) {
  54      e = typeof(e) == "undefined" ? window.event : e;
  55  
  56      if (mcWindows.selectedWindow == null)
  57          return;
  58  
  59      // Switch focus
  60      if (mcWindows.isGecko && e.type == "mousedown") {
  61          var elm = e.currentTarget;
  62  
  63          for (var n in mcWindows.windows) {
  64              var win = mcWindows.windows[n];
  65              if (typeof(win) == 'function')
  66                  continue;
  67  
  68              if (win.headElement == elm || win.resizeElement == elm) {
  69                  win.focus();
  70                  break;
  71              }
  72          }
  73      }
  74  
  75      switch (e.type) {
  76          case "mousemove":
  77              mcWindows.selectedWindow.onMouseMove(e);
  78              break;
  79  
  80          case "mouseup":
  81              mcWindows.selectedWindow.onMouseUp(e);
  82              break;
  83  
  84          case "mousedown":
  85              mcWindows.selectedWindow.onMouseDown(e);
  86              break;
  87  
  88          case "focus":
  89              mcWindows.selectedWindow.onFocus(e);
  90              break;
  91      }
  92  }
  93  
  94  MCWindows.prototype.addEvent = function(obj, name, handler) {
  95      if (this.isMSIE)
  96          obj.attachEvent("on" + name, handler);
  97      else
  98          obj.addEventListener(name, handler, true);
  99  };
 100  
 101  MCWindows.prototype.cancelEvent = function(e) {
 102      if (this.isMSIE) {
 103          e.returnValue = false;
 104          e.cancelBubble = true;
 105      } else
 106          e.preventDefault();
 107  };
 108  
 109  MCWindows.prototype.parseFeatures = function(opts) {
 110      // Cleanup the options
 111      opts = opts.toLowerCase();
 112      opts = opts.replace(/;/g, ",");
 113      opts = opts.replace(/[^0-9a-z=,]/g, "");
 114  
 115      var optionChunks = opts.split(',');
 116      var options = new Array();
 117  
 118      options['left'] = 10;
 119      options['top'] = 10;
 120      options['width'] = 300;
 121      options['height'] = 300;
 122      options['resizable'] = true;
 123      options['minimizable'] = true;
 124      options['maximizable'] = true;
 125      options['close'] = true;
 126      options['movable'] = true;
 127  
 128      if (opts == "")
 129          return options;
 130  
 131      for (var i=0; i<optionChunks.length; i++) {
 132          var parts = optionChunks[i].split('=');
 133  
 134          if (parts.length == 2)
 135              options[parts[0]] = parts[1];
 136      }
 137  
 138      return options;
 139  };
 140  
 141  MCWindows.prototype.open = function(url, name, features) {
 142      var win = new MCWindow();
 143      var winDiv, html = "", id;
 144  
 145      features = this.parseFeatures(features);
 146  
 147      // Create div
 148      id = "mcWindow_" + name;
 149  
 150      width = parseInt(features['width']);
 151      height = parseInt(features['height'])-12-19;
 152  
 153      if (this.isMSIE)
 154          width -= 2;
 155  
 156      // Setup first part of window
 157      win.id = id;
 158      win.url = url;
 159      win.name = name;
 160      win.features = features;
 161      this.windows[name] = win;
 162  
 163      iframeWidth = width;
 164      iframeHeight = height;
 165  
 166      // Create inner content
 167      html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
 168      html += '<html>';
 169      html += '<head>';
 170      html += '<title>Wrapper iframe</title>';
 171      html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
 172      html += '<link href="../jscripts/tiny_mce/themes/advanced/css/editor_ui.css" rel="stylesheet" type="text/css" />';
 173      html += '</head>';
 174      html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';
 175  
 176      html += '<div id="' + id + '_container" class="mceWindow">';
 177      html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
 178      html += '  <div id="' + id + '_title" class="mceWindowTitle"';
 179      html += '  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;">No name window</div>';
 180      html += '    <div class="mceWindowHeadTools">';
 181      html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" onmousedown="return false;" class="mceWindowClose"><img border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_close.gif" /></a>';
 182  //    html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].maximize();" onmousedown="return false;" class="mceWindowMaximize"></a>';
 183  //    html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" onmousedown="return false;" class="mceWindowMinimize"></a>';
 184      html += '    </div>';
 185      html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';
 186      html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" onfocus="parent.mcWindows.windows[\'' + name + '\'].focus();" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe"></iframe></div>';
 187      html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
 188      html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="../jscripts/tiny_mce/themes/advanced/images/window_resize.gif" /></div>';
 189      html += '</div>';
 190      html += '</div>';
 191  
 192      html += '</body>';
 193      html += '</html>';
 194  
 195      // Create iframe
 196      this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);
 197  };
 198  
 199  // Gets called when wrapper iframe is initialized
 200  MCWindows.prototype.onLoad = function(name) {
 201      var win = mcWindows.windows[name];
 202      var id = "mcWindow_" + name;
 203      var wrapperIframe = window.frames[id + "_iframe"].frames[0];
 204      var wrapperDoc = window.frames[id + "_iframe"].document;
 205      var doc = window.frames[id + "_iframe"].document;
 206      var winDiv = document.getElementById("mcWindow_" + name + "_div");
 207      var realIframe = window.frames[id + "_iframe"].frames[0];
 208  
 209      // Set window data
 210      win.id = "mcWindow_" + name + "_iframe";
 211      win.winElement = winDiv;
 212      win.bodyElement = doc.getElementById(id + '_body');
 213      win.iframeElement = doc.getElementById(id + '_iframe');
 214      win.headElement = doc.getElementById(id + '_head');
 215      win.titleElement = doc.getElementById(id + '_title');
 216      win.resizeElement = doc.getElementById(id + '_resize');
 217      win.containerElement = doc.getElementById(id + '_container');
 218      win.left = win.features['left'];
 219      win.top = win.features['top'];
 220      win.frame = window.frames[id + '_iframe'].frames[0];
 221      win.wrapperFrame = window.frames[id + '_iframe'];
 222      win.wrapperIFrameElement = document.getElementById(id + "_iframe");
 223  
 224      // Add event handlers
 225      mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
 226      mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
 227  
 228      if (mcWindows.isMSIE) {
 229          mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
 230          mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
 231      } else {
 232          mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
 233          mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
 234          mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
 235      }
 236  
 237      for (var i=0; i<window.frames.length; i++) {
 238          if (!window.frames[i]._hasMouseHandlers) {
 239              if (mcWindows.isMSIE) {
 240                  mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);
 241                  mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);
 242              } else {
 243                  mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);
 244                  mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);
 245              }
 246  
 247              window.frames[i]._hasMouseHandlers = true;
 248          }
 249      }
 250  
 251      if (mcWindows.isMSIE) {
 252          mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);
 253          mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);
 254      } else {
 255          mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
 256          mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
 257          mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
 258      }
 259  
 260      this.selectedWindow = win;
 261  };
 262  
 263  MCWindows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {
 264      var iframe = document.createElement("iframe");
 265      var div = document.createElement("div");
 266  
 267      width = parseInt(width);
 268      height = parseInt(height)+1;
 269  
 270      // Create wrapper div
 271      div.setAttribute("id", id_prefix + "_div");
 272      div.setAttribute("width", width);
 273      div.setAttribute("height", (height));
 274      div.style.position = "absolute";
 275      div.style.left = left + "px";
 276      div.style.top = top + "px";
 277      div.style.width = width + "px";
 278      div.style.height = (height) + "px";
 279      div.style.backgroundColor = "white";
 280      div.style.display = "none";
 281  
 282      if (this.isGecko) {
 283          iframeWidth = width + 2;
 284          iframeHeight = height + 2;
 285      } else {
 286          iframeWidth = width;
 287          iframeHeight = height + 1;
 288      }
 289  
 290      // Create iframe
 291      iframe.setAttribute("id", id_prefix + "_iframe");
 292      iframe.setAttribute("name", id_prefix + "_iframe");
 293      iframe.setAttribute("border", "0");
 294      iframe.setAttribute("frameBorder", "0");
 295      iframe.setAttribute("marginWidth", "0");
 296      iframe.setAttribute("marginHeight", "0");
 297      iframe.setAttribute("leftMargin", "0");
 298      iframe.setAttribute("topMargin", "0");
 299      iframe.setAttribute("width", iframeWidth);
 300      iframe.setAttribute("height", iframeHeight);
 301  //    iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
 302      // iframe.setAttribute("allowtransparency", "false");
 303      iframe.setAttribute("scrolling", "no");
 304      iframe.style.width = iframeWidth + "px";
 305      iframe.style.height = iframeHeight + "px";
 306      iframe.style.backgroundColor = "white";
 307      div.appendChild(iframe);
 308  
 309      document.body.appendChild(div);
 310  
 311      // Fixed MSIE 5.0 issue
 312      div.innerHTML = div.innerHTML;
 313  
 314      if (this.isSafari) {
 315          // Give Safari some time to setup
 316          window.setTimeout(function() {
 317              doc = window.frames[id_prefix + '_iframe'].document;
 318              doc.open();
 319              doc.write(html);
 320              doc.close();
 321          }, 10);
 322      } else {
 323          doc = window.frames[id_prefix + '_iframe'].window.document
 324          doc.open();
 325          doc.write(html);
 326          doc.close();
 327      }
 328  
 329      div.style.display = "block";
 330  
 331      return div;
 332  };
 333  
 334  // Window instance
 335  function MCWindow() {
 336  };
 337  
 338  MCWindow.prototype.focus = function() {
 339      this.winElement.style.zIndex = mcWindows.zindex++;
 340      mcWindows.selectedWindow = this;
 341  };
 342  
 343  MCWindow.prototype.minimize = function() {
 344  };
 345  
 346  MCWindow.prototype.maximize = function() {
 347      
 348  };
 349  
 350  MCWindow.prototype.startResize = function() {
 351      mcWindows.action = "resize";
 352  };
 353  
 354  MCWindow.prototype.startMove = function(e) {
 355      mcWindows.action = "move";
 356  };
 357  
 358  MCWindow.prototype.close = function() {
 359      document.body.removeChild(this.winElement);
 360      mcWindows.windows[this.name] = null;
 361  };
 362  
 363  MCWindow.prototype.onMouseMove = function(e) {
 364      var scrollX = 0;//this.doc.body.scrollLeft;
 365      var scrollY = 0;//this.doc.body.scrollTop;
 366  
 367      // Calculate real X, Y
 368      var dx = e.screenX - mcWindows.mouseDownScreenX;
 369      var dy = e.screenY - mcWindows.mouseDownScreenY;
 370  
 371      switch (mcWindows.action) {
 372          case "resize":
 373              width = mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX);
 374              height = mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY);
 375  
 376              width = width < 100 ? 100 : width;
 377              height = height < 100 ? 100 : height;
 378  
 379              this.wrapperIFrameElement.style.width = width+2;
 380              this.wrapperIFrameElement.style.height = height+2;
 381              this.wrapperIFrameElement.width = width+2;
 382              this.wrapperIFrameElement.height = height+2;
 383              this.winElement.style.width = width;
 384              this.winElement.style.height = height;
 385  
 386              height = height-12-19;
 387  
 388              this.containerElement.style.width = width;
 389  
 390              this.iframeElement.style.width = width;
 391              this.iframeElement.style.height = height;
 392              this.bodyElement.style.width = width;
 393              this.bodyElement.style.height = height;
 394              this.headElement.style.width = width;
 395              //this.statusElement.style.width = width;
 396  
 397              mcWindows.cancelEvent(e);
 398              break;
 399  
 400          case "move":
 401              this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
 402              this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
 403              this.winElement.style.left = this.left + "px";
 404              this.winElement.style.top = this.top + "px";
 405  
 406              mcWindows.cancelEvent(e);
 407              break;
 408      }
 409  };
 410  
 411  MCWindow.prototype.onMouseUp = function(e) {
 412      mcWindows.action = "none";
 413  };
 414  
 415  MCWindow.prototype.onFocus = function(e) {
 416      // Gecko only handler
 417      var winRef = e.currentTarget;
 418  
 419      for (var n in mcWindows.windows) {
 420          var win = mcWindows.windows[n];
 421          if (typeof(win) == 'function')
 422              continue;
 423  
 424          if (winRef.name == win.id) {
 425              win.focus();
 426              return;
 427          }
 428      }
 429  };
 430  
 431  MCWindow.prototype.onMouseDown = function(e) {
 432      var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
 433  
 434      var scrollX = 0;//this.doc.body.scrollLeft;
 435      var scrollY = 0;//this.doc.body.scrollTop;
 436  
 437      mcWindows.mouseDownScreenX = e.screenX;
 438      mcWindows.mouseDownScreenY = e.screenY;
 439      mcWindows.mouseDownLayerX = this.left;
 440      mcWindows.mouseDownLayerY = this.top;
 441      mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
 442      mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
 443  
 444      if (elm == this.resizeElement.firstChild)
 445          this.startResize(e);
 446      else
 447          this.startMove(e);
 448  
 449      mcWindows.cancelEvent(e);
 450  };
 451  
 452  // Global instance
 453  var mcWindows = new MCWindows();


Généré le : Fri Mar 30 19:41:27 2007 par Balluche grâce à PHPXref 0.7