[ Index ]
 

Code source de TinyMCE 2.1.0

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

title

Body

[fermer]

/jscripts/tiny_mce/plugins/inlinepopups/ -> editor_plugin_src.js (source)

   1  /**
   2   * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
   3   *
   4   * Moxiecode DHTML Windows script.
   5   *
   6   * @author Moxiecode
   7   * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
   8   */
   9  
  10  // Patch openWindow, closeWindow TinyMCE functions
  11  
  12  var TinyMCE_InlinePopupsPlugin = {
  13      getInfo : function() {
  14          return {
  15              longname : 'Inline Popups',
  16              author : 'Moxiecode Systems AB',
  17              authorurl : 'http://tinymce.moxiecode.com',
  18              infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',
  19              version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
  20          };
  21      }
  22  };
  23  
  24  tinyMCE.addPlugin("inlinepopups", TinyMCE_InlinePopupsPlugin);
  25  
  26  // Patch openWindow, closeWindow TinyMCE functions
  27  
  28  TinyMCE_Engine.prototype.orgOpenWindow = TinyMCE_Engine.prototype.openWindow;
  29  TinyMCE_Engine.prototype.orgCloseWindow = TinyMCE_Engine.prototype.closeWindow;
  30  
  31  TinyMCE_Engine.prototype.openWindow = function(template, args) {
  32      // Does the caller support inline
  33      if (args['inline'] != "yes" || tinyMCE.isOpera || tinyMCE.getParam("plugins").indexOf('inlinepopups') == -1) {
  34          mcWindows.selectedWindow = null;
  35          args['mce_inside_iframe'] = false;
  36          this.orgOpenWindow(template, args);
  37          return;
  38      }
  39  
  40      var url, resizable, scrollbars;
  41  
  42      args['mce_inside_iframe'] = true;
  43      tinyMCE.windowArgs = args;
  44  
  45      if (template['file'].charAt(0) != '/' && template['file'].indexOf('://') == -1)
  46          url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template['file'];
  47      else
  48          url = template['file'];
  49  
  50      if (!(width = parseInt(template['width'])))
  51          width = 320;
  52  
  53      if (!(height = parseInt(template['height'])))
  54          height = 200;
  55  
  56      if (!(minWidth = parseInt(template['minWidth'])))
  57          minWidth = 100;
  58  
  59      if (!(minHeight = parseInt(template['minHeight'])))
  60          minHeight = 100;
  61  
  62      resizable = (args && args['resizable']) ? args['resizable'] : "no";
  63      scrollbars = (args && args['scrollbars']) ? args['scrollbars'] : "no";
  64  
  65      height += 18;
  66  
  67      // Replace all args as variables in URL
  68      for (var name in args) {
  69          if (typeof(args[name]) == 'function')
  70              continue;
  71  
  72          url = tinyMCE.replaceVar(url, name, escape(args[name]));
  73      }
  74  
  75      var elm = document.getElementById(this.selectedInstance.editorId + '_parent');
  76  
  77      if (tinyMCE.hasPlugin('fullscreen') && this.selectedInstance.getData('fullscreen').enabled)
  78          pos = { absLeft: 0, absTop: 0 };
  79      else
  80          pos = tinyMCE.getAbsPosition(elm);
  81  
  82      // Center div in editor area
  83      pos.absLeft += Math.round((elm.firstChild.clientWidth / 2) - (width / 2));
  84      pos.absTop += Math.round((elm.firstChild.clientHeight / 2) - (height / 2));
  85  
  86      mcWindows.open(url, mcWindows.idCounter++, "modal=yes,width=" + width+ ",height=" + height + ",resizable=" + resizable + ",scrollbars=" + scrollbars + ",statusbar=" + resizable + ",left=" + pos.absLeft + ",top=" + pos.absTop + ",minWidth=" + minWidth + ",minHeight=" + minHeight );
  87  };
  88  
  89  TinyMCE_Engine.prototype.closeWindow = function(win) {
  90      var gotit = false, n, w;
  91      for (n in mcWindows.windows) {
  92          w = mcWindows.windows[n];
  93          if (typeof(w) == 'function') continue;
  94          if (win.name == w.id + '_iframe') {
  95              w.close();
  96              gotit = true;
  97          }
  98      }
  99      if (!gotit)
 100          this.orgCloseWindow(win);
 101  
 102      tinyMCE.selectedInstance.getWin().focus(); 
 103  };
 104  
 105  TinyMCE_Engine.prototype.setWindowTitle = function(win_ref, title) {
 106      for (var n in mcWindows.windows) {
 107          var win = mcWindows.windows[n];
 108          if (typeof(win) == 'function')
 109              continue;
 110  
 111          if (win_ref.name == win.id + "_iframe")
 112              window.frames[win.id + "_iframe"].document.getElementById(win.id + '_title').innerHTML = title;
 113      }
 114  };
 115  
 116  // * * * * * TinyMCE_Windows classes below
 117  
 118  // Windows handler
 119  function TinyMCE_Windows() {
 120      this.settings = new Array();
 121      this.windows = new Array();
 122      this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
 123      this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
 124      this.isSafari = navigator.userAgent.indexOf('Safari') != -1;
 125      this.isMac = navigator.userAgent.indexOf('Mac') != -1;
 126      this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1);
 127      this.action = "none";
 128      this.selectedWindow = null;
 129      this.lastSelectedWindow = null;
 130      this.zindex = 1001;
 131      this.mouseDownScreenX = 0;
 132      this.mouseDownScreenY = 0;
 133      this.mouseDownLayerX = 0;
 134      this.mouseDownLayerY = 0;
 135      this.mouseDownWidth = 0;
 136      this.mouseDownHeight = 0;
 137      this.idCounter = 0;
 138  };
 139  
 140  TinyMCE_Windows.prototype.init = function(settings) {
 141      this.settings = settings;
 142  
 143      if (this.isMSIE)
 144          this.addEvent(document, "mousemove", mcWindows.eventDispatcher);
 145      else
 146          this.addEvent(window, "mousemove", mcWindows.eventDispatcher);
 147  
 148      this.addEvent(document, "mouseup", mcWindows.eventDispatcher);
 149  
 150      this.addEvent(window, "resize", mcWindows.eventDispatcher);
 151      this.addEvent(document, "scroll", mcWindows.eventDispatcher);
 152  
 153      this.doc = document;
 154  };
 155  
 156  TinyMCE_Windows.prototype.getBounds = function() {
 157      if (!this.bounds) {
 158          var vp = tinyMCE.getViewPort(window);
 159          var top, left, bottom, right, docEl = this.doc.documentElement;
 160  
 161          top    = vp.top;
 162          left   = vp.left;
 163          bottom = vp.height + top - 2;
 164          right  = vp.width  + left - 22; // TODO this number is platform dependant
 165          // x1, y1, x2, y2
 166          this.bounds = [left, top, right, bottom];
 167      }
 168      return this.bounds;
 169  };
 170  
 171  TinyMCE_Windows.prototype.clampBoxPosition = function(x, y, w, h, minW, minH) {
 172      var bounds = this.getBounds();
 173  
 174      x = Math.max(bounds[0], Math.min(bounds[2], x + w) - w);
 175      y = Math.max(bounds[1], Math.min(bounds[3], y + h) - h);
 176  
 177      return this.clampBoxSize(x, y, w, h, minW, minH);
 178  };
 179  
 180  TinyMCE_Windows.prototype.clampBoxSize = function(x, y, w, h, minW, minH) {
 181      var bounds = this.getBounds();
 182  
 183      return [
 184          x, y,
 185          Math.max(minW, Math.min(bounds[2], x + w) - x),
 186          Math.max(minH, Math.min(bounds[3], y + h) - y)
 187      ];
 188  };
 189  
 190  TinyMCE_Windows.prototype.getParam = function(name, default_value) {
 191      var value = null;
 192  
 193      value = (typeof(this.settings[name]) == "undefined") ? default_value : this.settings[name];
 194  
 195      // Fix bool values
 196      if (value == "true" || value == "false")
 197          return (value == "true");
 198  
 199      return value;
 200  };
 201  
 202  TinyMCE_Windows.prototype.eventDispatcher = function(e) {
 203      e = typeof(e) == "undefined" ? window.event : e;
 204  
 205      if (mcWindows.selectedWindow == null)
 206          return;
 207  
 208      // Switch focus
 209      if (mcWindows.isGecko && e.type == "mousedown") {
 210          var elm = e.currentTarget;
 211  
 212          for (var n in mcWindows.windows) {
 213              var win = mcWindows.windows[n];
 214  
 215              if (win.headElement == elm || win.resizeElement == elm) {
 216                  win.focus();
 217                  break;
 218              }
 219          }
 220      }
 221  
 222      switch (e.type) {
 223          case "mousemove":
 224              mcWindows.selectedWindow.onMouseMove(e);
 225              break;
 226  
 227          case "mouseup":
 228              mcWindows.selectedWindow.onMouseUp(e);
 229              break;
 230  
 231          case "mousedown":
 232              mcWindows.selectedWindow.onMouseDown(e);
 233              break;
 234  
 235          case "focus":
 236              mcWindows.selectedWindow.onFocus(e);
 237              break;
 238          case "scroll":
 239          case "resize":
 240              if (mcWindows.clampUpdateTimeout)
 241                  clearTimeout(mcWindows.clampUpdateTimeout);
 242              mcWindows.clampEventType = e.type;
 243              mcWindows.clampUpdateTimeout =
 244                  setTimeout(function () {mcWindows.updateClamping()}, 100);
 245              break;
 246      }
 247  };
 248  
 249  TinyMCE_Windows.prototype.updateClamping = function () {
 250      var clamp, oversize, etype = mcWindows.clampEventType;
 251  
 252      this.bounds = null; // Recalc window bounds on resize/scroll
 253      this.clampUpdateTimeout = null;
 254  
 255      for (var n in this.windows) {
 256          win = this.windows[n];
 257          if (typeof(win) == 'function' || ! win.winElement) continue;
 258  
 259          clamp = mcWindows.clampBoxPosition(
 260              win.left, win.top,
 261              win.winElement.scrollWidth,
 262              win.winElement.scrollHeight,
 263              win.features.minWidth,
 264              win.features.minHeight
 265          );
 266          oversize = (
 267              clamp[2] != win.winElement.scrollWidth ||
 268              clamp[3] != win.winElement.scrollHeight
 269          ) ? true : false;
 270  
 271          if (!oversize || win.features.resizable == "yes" || etype != "scroll")
 272              win.moveTo(clamp[0], clamp[1]);
 273          if (oversize && win.features.resizable == "yes")
 274              win.resizeTo(clamp[2], clamp[3]);
 275      }
 276  };
 277  
 278  TinyMCE_Windows.prototype.addEvent = function(obj, name, handler) {
 279      if (this.isMSIE)
 280          obj.attachEvent("on" + name, handler);
 281      else
 282          obj.addEventListener(name, handler, false);
 283  };
 284  
 285  TinyMCE_Windows.prototype.cancelEvent = function(e) {
 286      if (this.isMSIE) {
 287          e.returnValue = false;
 288          e.cancelBubble = true;
 289      } else
 290          e.preventDefault();
 291  };
 292  
 293  TinyMCE_Windows.prototype.parseFeatures = function(opts) {
 294      // Cleanup the options
 295      opts = opts.toLowerCase();
 296      opts = opts.replace(/;/g, ",");
 297      opts = opts.replace(/[^0-9a-z=,]/g, "");
 298  
 299      var optionChunks = opts.split(',');
 300      var options = new Array();
 301  
 302      options['left'] = "10";
 303      options['top'] = "10";
 304      options['width'] = "300";
 305      options['height'] = "300";
 306      options['minwidth'] = "100";
 307      options['minheight'] = "100";
 308      options['resizable'] = "yes";
 309      options['minimizable'] = "yes";
 310      options['maximizable'] = "yes";
 311      options['close'] = "yes";
 312      options['movable'] = "yes";
 313      options['statusbar'] = "yes";
 314      options['scrollbars'] = "auto";
 315      options['modal'] = "no";
 316  
 317      if (opts == "")
 318          return options;
 319  
 320      for (var i=0; i<optionChunks.length; i++) {
 321          var parts = optionChunks[i].split('=');
 322  
 323          if (parts.length == 2)
 324              options[parts[0]] = parts[1];
 325      }
 326  
 327      options['left'] = parseInt(options['left']);
 328      options['top'] = parseInt(options['top']);
 329      options['width'] = parseInt(options['width']);
 330      options['height'] = parseInt(options['height']);
 331      options['minWidth'] = parseInt(options['minwidth']);
 332      options['minHeight'] = parseInt(options['minheight']);
 333  
 334      return options;
 335  };
 336  
 337  TinyMCE_Windows.prototype.open = function(url, name, features) {
 338      this.lastSelectedWindow = this.selectedWindow;
 339  
 340      var win = new TinyMCE_Window();
 341      var winDiv, html = "", id;
 342      var imgPath = this.getParam("images_path");
 343  
 344      features = this.parseFeatures(features);
 345  
 346      // Clamp specified dimensions
 347      var clamp = mcWindows.clampBoxPosition(
 348          features['left'], features['top'],
 349          features['width'], features['height'],
 350          features['minWidth'], features['minHeight']
 351      );
 352  
 353      features['left'] = clamp[0];
 354      features['top'] = clamp[1];
 355  
 356      if (features['resizable'] == "yes") {
 357          features['width'] = clamp[2];
 358          features['height'] = clamp[3];
 359      }
 360  
 361      // Create div
 362      id = "mcWindow_" + name;
 363      win.deltaHeight = 18;
 364  
 365      if (features['statusbar'] == "yes") {
 366          win.deltaHeight += 13;
 367  
 368          if (this.isMSIE)
 369              win.deltaHeight += 1;
 370      }
 371  
 372      width = parseInt(features['width']);
 373      height = parseInt(features['height'])-win.deltaHeight;
 374  
 375      if (this.isMSIE)
 376          width -= 2;
 377  
 378      // Setup first part of window
 379      win.id = id;
 380      win.url = url;
 381      win.name = name;
 382      win.features = features;
 383      this.windows[name] = win;
 384  
 385      iframeWidth = width;
 386      iframeHeight = height;
 387  
 388      // Create inner content
 389      html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
 390      html += '<html>';
 391      html += '<head>';
 392      html += '<title>Wrapper iframe</title>';
 393      html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
 394      html += '<link href="' + this.getParam("css_file") + '" rel="stylesheet" type="text/css" />';
 395      html += '</head>';
 396      html += '<body onload="parent.mcWindows.onLoad(\'' + name + '\');">';
 397  
 398      html += '<div id="' + id + '_container" class="mceWindow">';
 399      html += '<div id="' + id + '_head" class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
 400      html += '  <div id="' + id + '_title" class="mceWindowTitle"';
 401      html += '  onselectstart="return false;" unselectable="on" style="-moz-user-select: none !important;"></div>';
 402      html += '    <div class="mceWindowHeadTools">';
 403      html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].close();" target="_self" onmousedown="return false;" class="mceWindowClose"><img border="0" src="' + imgPath + '/window_close.gif" /></a>';
 404      if (features['resizable'] == "yes" && features['maximizable'] == "yes")
 405          html += '      <a href="javascript:parent.mcWindows.windows[\'' + name + '\'].maximize();" target="_self" onmousedown="return false;" class="mceWindowMaximize"><img border="0" src="' + imgPath + '/window_maximize.gif" /></a>';
 406      // html += '      <a href="javascript:mcWindows.windows[\'' + name + '\'].minimize();" target="_self" onmousedown="return false;" class="mceWindowMinimize"></a>';
 407      html += '    </div>';
 408      html += '</div><div id="' + id + '_body" class="mceWindowBody" style="width: ' + width + 'px; height: ' + height + 'px;">';
 409      html += '<iframe id="' + id + '_iframe" name="' + id + '_iframe" frameborder="0" width="' + iframeWidth + '" height="' + iframeHeight + '" src="' + url + '" class="mceWindowBodyIframe" scrolling="' + features['scrollbars'] + '"></iframe></div>';
 410  
 411      if (features['statusbar'] == "yes") {
 412          html += '<div id="' + id + '_statusbar" class="mceWindowStatusbar" onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();">';
 413  
 414          if (features['resizable'] == "yes") {
 415              if (this.isGecko)
 416                  html += '<div id="' + id + '_resize" class="mceWindowResize"><div style="background-image: url(\'' + imgPath + '/window_resize.gif\'); width: 12px; height: 12px;"></div></div>';
 417              else
 418                  html += '<div id="' + id + '_resize" class="mceWindowResize"><img onmousedown="parent.mcWindows.windows[\'' + name + '\'].focus();" border="0" src="' + imgPath + '/window_resize.gif" /></div>';
 419          }
 420  
 421          html += '</div>';
 422      }
 423  
 424      html += '</div>';
 425  
 426      html += '</body>';
 427      html += '</html>';
 428  
 429      // Create iframe
 430      this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html);
 431  };
 432  
 433  // Blocks the document events by placing a image over the whole document
 434  TinyMCE_Windows.prototype.setDocumentLock = function(state) {
 435      var elm = document.getElementById('mcWindowEventBlocker');
 436  
 437      if (state) {
 438          if (elm == null) {
 439              elm = document.createElement("div");
 440  
 441              elm.id = "mcWindowEventBlocker";
 442              elm.style.position = "absolute";
 443              elm.style.left = "0";
 444              elm.style.top = "0";
 445  
 446              document.body.appendChild(elm);
 447          }
 448  
 449          elm.style.display = "none";
 450  
 451          var imgPath = this.getParam("images_path");
 452          var width = document.body.clientWidth;
 453          var height = document.body.clientHeight;
 454  
 455          elm.style.width = width;
 456          elm.style.height = height;
 457          elm.innerHTML = '<img src="' + imgPath + '/spacer.gif" width="' + width + '" height="' + height + '" />';
 458  
 459          elm.style.zIndex = mcWindows.zindex-1;
 460          elm.style.display = "block";
 461      } else if (elm != null) {
 462          if (mcWindows.windows.length == 0)
 463              elm.parentNode.removeChild(elm);
 464          else
 465              elm.style.zIndex = mcWindows.zindex-1;
 466      }
 467  };
 468  
 469  // Gets called when wrapper iframe is initialized
 470  TinyMCE_Windows.prototype.onLoad = function(name) {
 471      var win = mcWindows.windows[name];
 472      var id = "mcWindow_" + name;
 473      var wrapperIframe = window.frames[id + "_iframe"].frames[0];
 474      var wrapperDoc = window.frames[id + "_iframe"].document;
 475      var doc = window.frames[id + "_iframe"].document;
 476      var winDiv = document.getElementById("mcWindow_" + name + "_div");
 477      var realIframe = window.frames[id + "_iframe"].frames[0];
 478  
 479      // Set window data
 480      win.id = "mcWindow_" + name;
 481      win.winElement = winDiv;
 482      win.bodyElement = doc.getElementById(id + '_body');
 483      win.iframeElement = doc.getElementById(id + '_iframe');
 484      win.headElement = doc.getElementById(id + '_head');
 485      win.titleElement = doc.getElementById(id + '_title');
 486      win.resizeElement = doc.getElementById(id + '_resize');
 487      win.containerElement = doc.getElementById(id + '_container');
 488      win.left = win.features['left'];
 489      win.top = win.features['top'];
 490      win.frame = window.frames[id + '_iframe'].frames[0];
 491      win.wrapperFrame = window.frames[id + '_iframe'];
 492      win.wrapperIFrameElement = document.getElementById(id + "_iframe");
 493  
 494      // Add event handlers
 495      mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher);
 496  
 497      if (win.resizeElement != null)
 498          mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher);
 499  
 500      if (mcWindows.isMSIE) {
 501          mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher);
 502          mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher);
 503      } else {
 504          mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher);
 505          mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher);
 506          mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher);
 507      }
 508  
 509      for (var i=0; i<window.frames.length; i++) {
 510          if (!window.frames[i]._hasMouseHandlers) {
 511              if (mcWindows.isMSIE) {
 512                  mcWindows.addEvent(window.frames[i].document, "mousemove", mcWindows.eventDispatcher);
 513                  mcWindows.addEvent(window.frames[i].document, "mouseup", mcWindows.eventDispatcher);
 514              } else {
 515                  mcWindows.addEvent(window.frames[i], "mousemove", mcWindows.eventDispatcher);
 516                  mcWindows.addEvent(window.frames[i], "mouseup", mcWindows.eventDispatcher);
 517              }
 518  
 519              window.frames[i]._hasMouseHandlers = true;
 520          }
 521      }
 522  
 523      if (mcWindows.isMSIE) {
 524          mcWindows.addEvent(win.frame.document, "mousemove", mcWindows.eventDispatcher);
 525          mcWindows.addEvent(win.frame.document, "mouseup", mcWindows.eventDispatcher);
 526      } else {
 527          mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
 528          mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
 529          mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
 530      }
 531  
 532      // Dispatch open window event
 533      var func = this.getParam("on_open_window", "");
 534      if (func != "")
 535          eval(func + "(win);");
 536  
 537      win.focus();
 538  
 539      if (win.features['modal'] == "yes")
 540          mcWindows.setDocumentLock(true);
 541  };
 542  
 543  TinyMCE_Windows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height, html) {
 544      var iframe = document.createElement("iframe");
 545      var div = document.createElement("div"), doc;
 546  
 547      width = parseInt(width);
 548      height = parseInt(height)+1;
 549  
 550      // Create wrapper div
 551      div.setAttribute("id", id_prefix + "_div");
 552      div.setAttribute("width", width);
 553      div.setAttribute("height", (height));
 554      div.style.position = "absolute";
 555  
 556      div.style.left = left + "px";
 557      div.style.top = top + "px";
 558      div.style.width = width + "px";
 559      div.style.height = (height) + "px";
 560      div.style.backgroundColor = "white";
 561      div.style.display = "none";
 562  
 563      if (this.isGecko) {
 564          iframeWidth = width + 2;
 565          iframeHeight = height + 2;
 566      } else {
 567          iframeWidth = width;
 568          iframeHeight = height + 1;
 569      }
 570  
 571      // Create iframe
 572      iframe.setAttribute("id", id_prefix + "_iframe");
 573      iframe.setAttribute("name", id_prefix + "_iframe");
 574      iframe.setAttribute("border", "0");
 575      iframe.setAttribute("frameBorder", "0");
 576      iframe.setAttribute("marginWidth", "0");
 577      iframe.setAttribute("marginHeight", "0");
 578      iframe.setAttribute("leftMargin", "0");
 579      iframe.setAttribute("topMargin", "0");
 580      iframe.setAttribute("width", iframeWidth);
 581      iframe.setAttribute("height", iframeHeight);
 582      // iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
 583      // iframe.setAttribute("allowtransparency", "false");
 584      iframe.setAttribute("scrolling", "no");
 585      iframe.style.width = iframeWidth + "px";
 586      iframe.style.height = iframeHeight + "px";
 587      iframe.style.backgroundColor = "white";
 588      div.appendChild(iframe);
 589  
 590      document.body.appendChild(div);
 591  
 592      // Fixed MSIE 5.0 issue
 593      div.innerHTML = div.innerHTML;
 594  
 595      if (this.isSafari) {
 596          // Give Safari some time to setup
 597          window.setTimeout(function() {
 598              var doc = window.frames[id_prefix + '_iframe'].document;
 599              doc.open();
 600              doc.write(html);
 601              doc.close();
 602          }, 10);
 603      } else {
 604          doc = window.frames[id_prefix + '_iframe'].window.document;
 605          doc.open();
 606          doc.write(html);
 607          doc.close();
 608      }
 609  
 610      div.style.display = "block";
 611  
 612      return div;
 613  };
 614  
 615  // Window instance
 616  function TinyMCE_Window() {
 617  };
 618  
 619  TinyMCE_Window.prototype.focus = function() {
 620      if (this != mcWindows.selectedWindow) {
 621          this.winElement.style.zIndex = ++mcWindows.zindex;
 622          mcWindows.lastSelectedWindow = mcWindows.selectedWindow;
 623          mcWindows.selectedWindow = this;
 624      }
 625  };
 626  
 627  TinyMCE_Window.prototype.minimize = function() {
 628  };
 629  
 630  TinyMCE_Window.prototype.maximize = function() {
 631      if (this.restoreSize) {
 632          this.moveTo(this.restoreSize[0], this.restoreSize[1]);
 633          this.resizeTo(this.restoreSize[2], this.restoreSize[3]);
 634          this.updateClamping();
 635          this.restoreSize = null;
 636      } else {
 637          var bounds = mcWindows.getBounds();
 638          this.restoreSize = [
 639              this.left, this.top,
 640              this.winElement.scrollWidth,
 641              this.winElement.scrollHeight
 642          ];
 643          this.moveTo(bounds[0], bounds[1]);
 644          this.resizeTo(
 645              bounds[2] - bounds[0],
 646              bounds[3] - bounds[1]
 647          );
 648      }
 649  };
 650  
 651  TinyMCE_Window.prototype.startResize = function() {
 652      mcWindows.action = "resize";
 653  };
 654  
 655  TinyMCE_Window.prototype.startMove = function(e) {
 656      mcWindows.action = "move";
 657  };
 658  
 659  TinyMCE_Window.prototype.close = function() {
 660      if (this.frame && this.frame['tinyMCEPopup'])
 661          this.frame['tinyMCEPopup'].restoreSelection();
 662  
 663      if (mcWindows.lastSelectedWindow != null)
 664          mcWindows.lastSelectedWindow.focus();
 665  
 666      var mcWindowsNew = new Array();
 667      for (var n in mcWindows.windows) {
 668          var win = mcWindows.windows[n];
 669          if (typeof(win) == 'function')
 670              continue;
 671  
 672          if (win.name != this.name)
 673              mcWindowsNew[n] = win;
 674      }
 675  
 676      mcWindows.windows = mcWindowsNew;
 677  
 678      // alert(mcWindows.doc.getElementById(this.id + "_iframe"));
 679  
 680      var e = mcWindows.doc.getElementById(this.id + "_iframe");
 681      e.parentNode.removeChild(e);
 682  
 683      var e = mcWindows.doc.getElementById(this.id + "_div");
 684      e.parentNode.removeChild(e);
 685  
 686      mcWindows.setDocumentLock(false);
 687  };
 688  
 689  TinyMCE_Window.prototype.onMouseMove = function(e) {
 690      var clamp;
 691      // Calculate real X, Y
 692      var dx = e.screenX - mcWindows.mouseDownScreenX;
 693      var dy = e.screenY - mcWindows.mouseDownScreenY;
 694  
 695      switch (mcWindows.action) {
 696          case "resize":
 697              clamp = mcWindows.clampBoxSize(
 698                  this.left, this.top,
 699                  mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX),
 700                  mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY),
 701                  this.features.minWidth, this.features.minHeight
 702              );
 703  
 704              this.resizeTo(clamp[2], clamp[3]);
 705  
 706              mcWindows.cancelEvent(e);
 707              break;
 708  
 709          case "move":
 710              this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
 711              this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
 712              this.updateClamping();
 713  
 714              mcWindows.cancelEvent(e);
 715              break;
 716      }
 717  };
 718  
 719  TinyMCE_Window.prototype.moveTo = function (x, y) {
 720      this.left = x;
 721      this.top = y;
 722  
 723      this.winElement.style.left = this.left + "px";
 724      this.winElement.style.top = this.top + "px";
 725  };
 726  
 727  TinyMCE_Window.prototype.resizeTo = function (width, height) {
 728      this.wrapperIFrameElement.style.width = (width+2) + 'px';
 729      this.wrapperIFrameElement.style.height = (height+2) + 'px';
 730      this.wrapperIFrameElement.width = width+2;
 731      this.wrapperIFrameElement.height = height+2;
 732      this.winElement.style.width = width + 'px';
 733      this.winElement.style.height = height + 'px';
 734  
 735      height = height - this.deltaHeight;
 736  
 737      this.containerElement.style.width = width + 'px';
 738      this.iframeElement.style.width = width + 'px';
 739      this.iframeElement.style.height = height + 'px';
 740      this.bodyElement.style.width = width + 'px';
 741      this.bodyElement.style.height = height + 'px';
 742      this.headElement.style.width = width + 'px';
 743      //this.statusElement.style.width = width + 'px';
 744  };
 745  
 746  TinyMCE_Window.prototype.updateClamping = function () {
 747      var clamp, oversize;
 748  
 749      clamp = mcWindows.clampBoxPosition(
 750          this.left, this.top,
 751          this.winElement.scrollWidth,
 752          this.winElement.scrollHeight,
 753          this.features.minWidth, this.features.minHeight
 754      );
 755      oversize = (
 756          clamp[2] != this.winElement.scrollWidth ||
 757          clamp[3] != this.winElement.scrollHeight
 758      ) ? true : false;
 759  
 760      this.moveTo(clamp[0], clamp[1]);
 761      if (this.features.resizable == "yes" && oversize)
 762          this.resizeTo(clamp[2], clamp[3]);
 763  };
 764  
 765  function debug(msg) {
 766      document.getElementById('debug').value += msg + "\n";
 767  }
 768  
 769  TinyMCE_Window.prototype.onMouseUp = function(e) {
 770      mcWindows.action = "none";
 771  };
 772  
 773  TinyMCE_Window.prototype.onFocus = function(e) {
 774      // Gecko only handler
 775      var winRef = e.currentTarget;
 776  
 777      for (var n in mcWindows.windows) {
 778          var win = mcWindows.windows[n];
 779          if (typeof(win) == 'function')
 780              continue;
 781  
 782          if (winRef.name == win.id + "_iframe") {
 783              win.focus();
 784              return;
 785          }
 786      }
 787  };
 788  
 789  TinyMCE_Window.prototype.onMouseDown = function(e) {
 790      var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
 791  
 792      mcWindows.mouseDownScreenX = e.screenX;
 793      mcWindows.mouseDownScreenY = e.screenY;
 794      mcWindows.mouseDownLayerX = this.left;
 795      mcWindows.mouseDownLayerY = this.top;
 796      mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
 797      mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
 798  
 799      if (this.resizeElement != null && elm == this.resizeElement.firstChild)
 800          this.startResize(e);
 801      else
 802          this.startMove(e);
 803  
 804      mcWindows.cancelEvent(e);
 805  };
 806  
 807  // Global instance
 808  var mcWindows = new TinyMCE_Windows();
 809  
 810  // Initialize windows
 811  mcWindows.init({
 812      images_path : tinyMCE.baseURL + "/plugins/inlinepopups/images",
 813      css_file : tinyMCE.baseURL + "/plugins/inlinepopups/css/inlinepopup.css"
 814  });


Généré le : Sun Feb 25 15:23:03 2007 par Balluche grâce à PHPXref 0.7