Changeset 1119


Ignore:
Timestamp:
11/12/08 23:00:49 (6 years ago)
Author:
ray
Message:

fixed loads of stuff JSlint complained about

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/XinhaCore.js

    r1117 r1119  
    3232    --  $LastChangedBy$ 
    3333    --------------------------------------------------------------------------*/ 
     34/*jslint regexp: false, rhino: false, browser: true, bitwise: false, forin: true, adsafe: false, evil: true, nomen: false,  
     35glovar: false, debug: false, eqeqeq: false, passfail: false, sidebar: false, laxbreak: false, on: false, cap: true,  
     36white: false, widget: false, undef: true, plusplus: false*/ 
     37/*global  Dialog , _editor_css , _editor_icons, _editor_lang , _editor_skin , _editor_url, dumpValues, ActiveXObject, HTMLArea, _editor_lcbackend*/ 
    3438 
    3539Xinha.version = 
     
    3741  'Release'   : 'Trunk', 
    3842  'Head'      : '$HeadURL$'.replace(/^[^:]*:\s*(.*)\s*\$$/, '$1'), 
    39   'Date'      : '$LastChangedDate$'.replace(/^[^:]*:\s*([0-9-]*) ([0-9:]*) ([+0-9]*) \((.*)\)\s*\$/, '$4 $2 $3'), 
     43  'Date'      : '$LastChangedDate$'.replace(/^[^:]*:\s*([0-9\-]*) ([0-9:]*) ([+0-9]*) \((.*)\)\s*\$/, '$4 $2 $3'), 
    4044  'Revision'  : '$LastChangedRevision$'.replace(/^[^:]*:\s*(.*)\s*\$$/, '$1'), 
    4145  'RevisionBy': '$LastChangedBy$'.replace(/^[^:]*:\s*(.*)\s*\$$/, '$1') 
     
    5256  { 
    5357    var b = base.split("/"); 
    54     if(b[b.length - 1] == "") 
     58    if(b[b.length - 1] === "") 
    5559    { 
    5660      b.pop(); 
     
    6872    return b.join("/") + "/" + p.join("/"); 
    6973  } 
    70 } 
     74}; 
    7175 
    7276if ( typeof _editor_url == "string" ) 
     
    8084    Xinha.tmpPath.pop(); 
    8185    _editor_url = Xinha._resolveRelativeUrl(Xinha.tmpPath.join("/"), _editor_url); 
    82     delete(Xinha.tmpPath) 
     86    delete Xinha.tmpPath 
    8387  } 
    8488} 
     
    156160*/ 
    157161Xinha.is_webkit  = (Xinha.agt.indexOf("applewebkit") != -1); 
    158 Xinha.webkit_version = parseInt(navigator.appVersion.replace(/.*?AppleWebKit\/([\d]).*?/,'$1')); 
     162Xinha.webkit_version = parseInt(navigator.appVersion.replace(/.*?AppleWebKit\/([\d]).*?/,'$1'), 10); 
    159163 
    160164/** Browser is Safari 
     
    180184Xinha.is_gecko  = (navigator.product == "Gecko") || Xinha.is_opera; 
    181185Xinha.is_real_gecko = (navigator.product == "Gecko" && !Xinha.is_webkit); 
    182 Xinha.is_ff3 = Xinha.is_real_gecko && parseInt(navigator.productSub) >= 2007121016; 
    183 Xinha.is_ff2 = Xinha.is_real_gecko && parseInt(navigator.productSub) < 2007121016; 
     186Xinha.is_ff3 = Xinha.is_real_gecko && parseInt(navigator.productSub, 10) >= 2007121016; 
     187Xinha.is_ff2 = Xinha.is_real_gecko && parseInt(navigator.productSub, 10) < 2007121016; 
    184188 
    185189/** File is opened locally opened ("file://" protocol) 
     
    221225function Xinha(textarea, config) 
    222226{  
    223   if ( !Xinha.isSupportedBrowser ) return; 
     227  if ( !Xinha.isSupportedBrowser ) 
     228  { 
     229    return; 
     230  } 
    224231   
    225232  if ( !textarea ) 
     
    427434   
    428435  //hook in config.Events as as a "plugin" 
    429   this.plugins['Events'] =  
     436  this.plugins.Events =  
    430437  { 
    431438    name: 'Events', 
     
    433440    instance: config.Events 
    434441  }; 
    435 } 
    436  
     442}; 
     443// ray: What is this for? Do we need it? 
    437444Xinha.onload = function() { }; 
    438445Xinha.init = function() { Xinha.onload(); }; 
     
    459466* @type RegExp 
    460467*/ 
    461 Xinha.RE_Specials = /([\/\^$*+?.()|{}[\]])/g; 
     468Xinha.RE_Specials = /([\/\^$*+?.()|{}\[\]])/g; 
    462469/** When dynamically creating a RegExp from an arbtrary string, some charactes that have special meanings in regular expressions have to be escaped. 
    463470*   Run any string through this function to escape reserved characters. 
     
    468475{ 
    469476  return string.replace(Xinha.RE_Specials, '\\$1'); 
    470 } 
     477}; 
    471478/** Identifies email addresses 
    472479* @type RegExp 
     
    476483* @type RegExp 
    477484*/ 
    478 Xinha.RE_url      = /(https?:\/\/)?(([a-z0-9_]+:[a-z0-9_]+@)?[a-z0-9_-]{2,}(\.[a-z0-9_-]{2,}){2,}(:[0-9]+)?(\/\S+)*)/i; 
     485Xinha.RE_url      = /(https?:\/\/)?(([a-z0-9_]+:[a-z0-9_]+@)?[a-z0-9_\-]{2,}(\.[a-z0-9_\-]{2,}){2,}(:[0-9]+)?(\/\S+)*)/i; 
    479486 
    480487 
     
    728735   * @return {String} The processed HTML  
    729736   */ 
    730   this.inwardHtml = function (html) { return html } 
     737  this.inwardHtml = function (html) { return html; }; 
    731738   
    732739  /** A filter function for the generated HTML<br /> 
     
    736743   * @return {String} The processed HTML  
    737744   */ 
    738   this.outwardHtml = function (html) { return html } 
     745  this.outwardHtml = function (html) { return html; }; 
    739746 
    740747 /** Set to true if you want Word code to be cleaned upon Paste. This only works if  
     
    11161123    dialogCaption : _editor_url + 'images/xinha-small-icon.gif', 
    11171124    wysiwygmode : [_editor_url + 'images/ed_buttons_main.png',7,1] 
    1118   } 
     1125  }; 
    11191126  // initialize tooltips from the I18N module and generate correct image path 
    11201127  for ( var i in this.btnList ) 
     
    11361143    btn[0] = Xinha._lc(btn[0]); //initialize tooltip 
    11371144  } 
    1138  
    11391145}; 
    11401146/** A plugin may require more than one icon for one button, this has to be registered in order to work with the iconsets (see FullScreen) 
     
    11461152{ 
    11471153  this.iconList[id] = icon; 
    1148 } 
     1154}; 
    11491155/** ADDING CUSTOM BUTTONS 
    11501156*   --------------------- 
     
    11871193Xinha.Config.prototype.registerButton = function(id, tooltip, image, textMode, action, context) 
    11881194{ 
    1189   var the_id; 
    11901195  if ( typeof id == "string" ) 
    11911196  { 
     
    14471452  var tas = document.getElementsByTagName("textarea"); 
    14481453  // @todo: weird syntax, doesnt help to read the code, doesnt obfuscate it and doesnt make it quicker, better rewrite this part 
    1449   for ( var i = tas.length; i > 0; (new Xinha(tas[--i], config)).generate() ) 
     1454  for ( var i = tas.length; i > 0; new Xinha(tas[--i], config).generate() ) 
    14501455  { 
    14511456    // NOP 
     
    14601465{ 
    14611466  var ta = Xinha.getElementById("textarea", id); 
    1462   return ta ? (new Xinha(ta, config)).generate() : null; 
     1467  return ta ? new Xinha(ta, config).generate() : null; 
    14631468}; 
    14641469  
     
    16851690      { 
    16861691        // prevent iterating over wrong type 
    1687         if ( typeof(options[i]) != 'string' ) 
     1692        if ( typeof options[i] != 'string' ) 
    16881693        { 
    16891694          continue; 
     
    19701975      { 
    19711976        img = doc.createElement("span"); 
    1972         with (img.style) 
     1977        /*with (img.style) 
    19731978        { 
    19741979          display = 'block'; 
     
    19761981          height = '18px'; 
    19771982          filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+imgDef+'")'; 
    1978         } 
     1983        }*/ 
     1984       
     1985        img.style.display = 'block'; 
     1986        img.style.width = '18px'; 
     1987        img.style.height = '18px'; 
     1988        img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+imgDef+'")'; 
     1989 
    19791990      } 
    19801991      else 
     
    19962007      { 
    19972008        img = doc.createElement("span"); 
    1998         with (img.style) 
    1999         { 
    2000           display='block'; 
    2001           width = '18px'; 
    2002           height = '18px'; 
    2003           filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+imgDef[0]+'")'; 
    2004         } 
     2009        img.style.display = 'block'; 
     2010        img.style.width = '18px'; 
     2011        img.style.height = '18px'; 
     2012        img.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+imgDef+'")'; 
    20052013      } 
    20062014      else 
     
    20632071Xinha.prototype.generate = function () 
    20642072{ 
    2065   if ( !Xinha.isSupportedBrowser ) return; 
     2073  if ( !Xinha.isSupportedBrowser ) 
     2074  { 
     2075    return; 
     2076  } 
    20662077   
    20672078  var i; 
     
    20992110    if ( !found ) 
    21002111    { 
    2101       Xinha.loadStyle('skins/' + _editor_skin + '/skin.css',null,"XinhaSkin") 
    2102     } 
    2103   } 
    2104    
     2112      Xinha.loadStyle('skins/' + _editor_skin + '/skin.css',null,"XinhaSkin"); 
     2113    } 
     2114  } 
     2115  var callback = function() { editor.generate(); }; 
    21052116  // Now load a specific browser plugin which will implement the above for us. 
    21062117  if (Xinha.is_ie) 
    21072118  { 
    21082119    url = _editor_url + 'modules/InternetExplorer/InternetExplorer.js'; 
    2109     if ( !Xinha.loadPlugins([{plugin:"InternetExplorer",url:url}], function() { editor.generate(); } ) ) 
     2120    if ( !Xinha.loadPlugins([{plugin:"InternetExplorer",url:url}], callback ) ) 
    21102121    {             
    21112122      return false; 
    21122123    } 
    2113     if (!this.plugins['InternetExplorer']) editor._browserSpecificPlugin = editor.registerPlugin('InternetExplorer'); 
     2124    if (!this.plugins.InternetExplorer) 
     2125    { 
     2126      editor._browserSpecificPlugin = editor.registerPlugin('InternetExplorer'); 
     2127    } 
    21142128  } 
    21152129  else if (Xinha.is_webkit) 
    21162130  { 
    21172131    url = _editor_url + 'modules/WebKit/WebKit.js'; 
    2118     if ( !Xinha.loadPlugins([{plugin:"WebKit",url:url}], function() { editor.generate(); } ) ) 
    2119     {             
    2120    
     2132    if ( !Xinha.loadPlugins([{plugin:"WebKit",url:url}], callback ) ) 
     2133    { 
    21212134      return false; 
    21222135    } 
    2123     if (!this.plugins['Webkit']) editor._browserSpecificPlugin = editor.registerPlugin('WebKit'); 
     2136    if (!this.plugins.Webkit) 
     2137    { 
     2138      editor._browserSpecificPlugin = editor.registerPlugin('WebKit'); 
     2139    } 
    21242140  } 
    21252141  else if (Xinha.is_opera) 
    21262142  { 
    21272143    url = _editor_url + 'modules/Opera/Opera.js'; 
    2128     if ( !Xinha.loadPlugins([{plugin:"Opera",url:url}], function() { editor.generate(); } ) ) 
     2144    if ( !Xinha.loadPlugins([{plugin:"Opera",url:url}], callback ) ) 
    21292145    {             
    21302146      return false; 
    21312147    } 
    2132     if (!this.plugins['Opera']) editor._browserSpecificPlugin = editor.registerPlugin('Opera'); 
     2148    if (!this.plugins.Opera) 
     2149    { 
     2150      editor._browserSpecificPlugin = editor.registerPlugin('Opera'); 
     2151    } 
    21332152  } 
    21342153  else if (Xinha.is_gecko) 
    21352154  { 
    21362155    url = _editor_url + 'modules/Gecko/Gecko.js'; 
    2137     if ( !Xinha.loadPlugins([{plugin:"Gecko",url:url}], function() { editor.generate(); } ) ) 
     2156    if ( !Xinha.loadPlugins([{plugin:"Gecko",url:url}], callback ) ) 
    21382157    {             
    21392158      return false; 
    21402159    } 
    2141     if (!this.plugins['Gecko']) editor._browserSpecificPlugin = editor.registerPlugin('Gecko'); 
    2142   } 
    2143  
    2144   if ( typeof Dialog == 'undefined' && !Xinha._loadback( _editor_url + 'modules/Dialogs/dialog.js', this.generate, this ) ) 
     2160    if (!this.plugins.Gecko)  
     2161    { 
     2162      editor._browserSpecificPlugin = editor.registerPlugin('Gecko'); 
     2163    } 
     2164  } 
     2165 
     2166  if ( typeof Dialog == 'undefined' && !Xinha._loadback( _editor_url + 'modules/Dialogs/dialog.js', callback, this ) ) 
    21452167  {     
    21462168    return false; 
    21472169  } 
    21482170 
    2149   if ( typeof Xinha.Dialog == 'undefined' &&  !Xinha._loadback( _editor_url + 'modules/Dialogs/XinhaDialog.js' , this.generate, this ) ) 
     2171  if ( typeof Xinha.Dialog == 'undefined' &&  !Xinha._loadback( _editor_url + 'modules/Dialogs/XinhaDialog.js' , callback, this ) ) 
    21502172  {     
    21512173    return false; 
     
    21532175   
    21542176  url = _editor_url + 'modules/FullScreen/full-screen.js'; 
    2155   if ( !Xinha.loadPlugins([{plugin:"FullScreen",url:url}], function() { editor.generate(); } )) 
     2177  if ( !Xinha.loadPlugins([{plugin:"FullScreen",url:url}], callback )) 
    21562178  { 
    21572179    return false; 
     
    21592181   
    21602182  url = _editor_url + 'modules/ColorPicker/ColorPicker.js'; 
    2161   if ( !Xinha.loadPlugins([{plugin:"ColorPicker",url:url}], function() { editor.generate(); } ) ) 
     2183  if ( !Xinha.loadPlugins([{plugin:"ColorPicker",url:url}], callback ) ) 
    21622184  { 
    21632185    return false; 
    21642186  } 
    2165   else if ( typeof Xinha.getPluginConstructor('ColorPicker') != 'undefined' && !this.plugins['colorPicker']) editor.registerPlugin('ColorPicker'); 
     2187  else if ( typeof Xinha.getPluginConstructor('ColorPicker') != 'undefined' && !this.plugins.colorPicker) 
     2188  { 
     2189    editor.registerPlugin('ColorPicker'); 
     2190  } 
    21662191 
    21672192  var toolbar = editor.config.toolbar; 
     
    21732198      { 
    21742199        case "popupeditor": 
    2175           if (!this.plugins['FullScreen']) editor.registerPlugin('FullScreen'); 
     2200          if (!this.plugins.FullScreen)  
     2201          { 
     2202            editor.registerPlugin('FullScreen'); 
     2203          } 
    21762204        break; 
    21772205        case "insertimage": 
    21782206          url = _editor_url + 'modules/InsertImage/insert_image.js'; 
    2179           if ( typeof Xinha.prototype._insertImage == 'undefined' && !Xinha.loadPlugins([{plugin:"InsertImage",url:url}], function() { editor.generate(); } ) ) 
     2207          if ( typeof Xinha.prototype._insertImage == 'undefined' && !Xinha.loadPlugins([{plugin:"InsertImage",url:url}], callback ) ) 
    21802208          { 
    21812209            return false; 
    21822210          } 
    2183           else if ( typeof Xinha.getPluginConstructor('InsertImage') != 'undefined' && !this.plugins['InsertImage']) editor.registerPlugin('InsertImage'); 
     2211          else if ( typeof Xinha.getPluginConstructor('InsertImage') != 'undefined' && !this.plugins.InsertImage) 
     2212          { 
     2213            editor.registerPlugin('InsertImage'); 
     2214          } 
    21842215        break; 
    21852216        case "createlink": 
    21862217          url = _editor_url + 'modules/CreateLink/link.js'; 
    2187           if ( typeof Xinha.getPluginConstructor('Linker') == 'undefined' && !Xinha.loadPlugins([{plugin:"CreateLink",url:url}], function() { editor.generate(); } )) 
     2218          if ( typeof Xinha.getPluginConstructor('Linker') == 'undefined' && !Xinha.loadPlugins([{plugin:"CreateLink",url:url}], callback )) 
    21882219          { 
    21892220            return false; 
    21902221          } 
    2191           else if ( typeof Xinha.getPluginConstructor('CreateLink') != 'undefined' && !this.plugins['CreateLink']) editor.registerPlugin('CreateLink'); 
     2222          else if ( typeof Xinha.getPluginConstructor('CreateLink') != 'undefined' && !this.plugins.CreateLink)  
     2223          { 
     2224            editor.registerPlugin('CreateLink'); 
     2225          } 
    21922226        break; 
    21932227        case "inserttable": 
    21942228          url = _editor_url + 'modules/InsertTable/insert_table.js'; 
    2195           if ( !Xinha.loadPlugins([{plugin:"InsertTable",url:url}], function() { editor.generate(); } ) ) 
     2229          if ( !Xinha.loadPlugins([{plugin:"InsertTable",url:url}], callback ) ) 
    21962230          { 
    21972231            return false; 
    21982232          } 
    2199           else if ( typeof Xinha.getPluginConstructor('InsertTable') != 'undefined' && !this.plugins['InsertTable']) editor.registerPlugin('InsertTable'); 
     2233          else if ( typeof Xinha.getPluginConstructor('InsertTable') != 'undefined' && !this.plugins.InsertTable) 
     2234          { 
     2235            editor.registerPlugin('InsertTable'); 
     2236          } 
    22002237        break; 
    22012238        case "about": 
    22022239          url = _editor_url + 'modules/AboutBox/AboutBox.js'; 
    2203           if ( !Xinha.loadPlugins([{plugin:"AboutBox",url:url}], function() { editor.generate(); } ) ) 
     2240          if ( !Xinha.loadPlugins([{plugin:"AboutBox",url:url}], callback ) ) 
    22042241          { 
    22052242            return false; 
    22062243          } 
    2207           else if ( typeof Xinha.getPluginConstructor('AboutBox') != 'undefined' && !this.plugins['AboutBox']) editor.registerPlugin('AboutBox'); 
     2244          else if ( typeof Xinha.getPluginConstructor('AboutBox') != 'undefined' && !this.plugins.AboutBox) 
     2245          { 
     2246            editor.registerPlugin('AboutBox'); 
     2247          } 
    22082248        break; 
    22092249      } 
     
    22142254  if ( Xinha.is_gecko &&  editor.config.mozParaHandler != 'built-in' ) 
    22152255  { 
    2216     if (  !Xinha.loadPlugins([{plugin:"EnterParagraphs",url: _editor_url + 'modules/Gecko/paraHandlerBest.js'}], function() { editor.generate(); } ) ) 
     2256    if (  !Xinha.loadPlugins([{plugin:"EnterParagraphs",url: _editor_url + 'modules/Gecko/paraHandlerBest.js'}], callback ) ) 
    22172257    { 
    22182258      return false; 
    22192259    } 
    2220     if (!this.plugins['EnterParagraphs']) editor.registerPlugin('EnterParagraphs'); 
    2221   } 
    2222  
    2223   switch (this.config.getHtmlMethod) 
    2224   { 
    2225     case 'TransformInnerHTML': 
    2226       var getHtmlMethodPlugin = _editor_url + 'modules/GetHtml/TransformInnerHTML.js'; 
    2227     break; 
    2228     default: 
    2229       var getHtmlMethodPlugin = _editor_url + 'modules/GetHtml/DOMwalk.js'; 
    2230     break; 
    2231   } 
    2232    
    2233   if ( !Xinha.loadPlugins([{plugin:"GetHtmlImplementation",url:getHtmlMethodPlugin}], function() { editor.generate(); })) 
    2234   { 
    2235     return false;         
    2236   } 
    2237   else if (!this.plugins['GetHtmlImplementation']) editor.registerPlugin('GetHtmlImplementation'); 
    2238    
     2260    if (!this.plugins.EnterParagraphs)  
     2261    { 
     2262      editor.registerPlugin('EnterParagraphs'); 
     2263    } 
     2264  } 
     2265  var getHtmlMethodPlugin = this.config.getHtmlMethod == 'TransformInnerHTML' ? _editor_url + 'modules/GetHtml/TransformInnerHTML.js' :  _editor_url + 'modules/GetHtml/DOMwalk.js'; 
     2266 
     2267  if ( !Xinha.loadPlugins([{plugin:"GetHtmlImplementation",url:getHtmlMethodPlugin}], callback)) 
     2268  { 
     2269    return false; 
     2270  } 
     2271  else if (!this.plugins.GetHtmlImplementation) 
     2272  { 
     2273    editor.registerPlugin('GetHtmlImplementation'); 
     2274  } 
     2275  function getTextContent(node) 
     2276  { 
     2277    return node.textContent || node.text; 
     2278  } 
    22392279  if (_editor_skin) 
    22402280  { 
     
    22442284    { 
    22452285      var meta = skinXML.getElementsByTagName('meta'); 
    2246       for (var i=0;i<meta.length;i++) 
     2286      for (i=0;i<meta.length;i++) 
    22472287      { 
    22482288        this.skinInfo[meta[i].getAttribute('name')] = meta[i].getAttribute('value'); 
    22492289      } 
    22502290      var recommendedIcons = skinXML.getElementsByTagName('recommendedIcons'); 
    2251       if (!_editor_icons && recommendedIcons.length && recommendedIcons[0].textContent) 
    2252       { 
    2253         _editor_icons = recommendedIcons[0].textContent; 
     2291      if (!_editor_icons && recommendedIcons.length && getTextContent(recommendedIcons[0])) 
     2292      { 
     2293        _editor_icons = getTextContent(recommendedIcons[0]); 
    22542294      } 
    22552295    } 
     
    22582298  { 
    22592299    var iconsXML = Xinha._geturlcontent(_editor_url + 'iconsets/' + _editor_icons + '/iconset.xml', true); 
     2300 
    22602301    if (iconsXML) 
    22612302    { 
    22622303      var icons = iconsXML.getElementsByTagName('icon'); 
    22632304      var icon, id, path, type, x, y; 
    2264       function getTextContent(node) 
    2265       { 
    2266         return node.textContent || node.text; 
    2267       } 
    2268       for (var i=0;i<icons.length;i++) 
     2305 
     2306      for (i=0;i<icons.length;i++) 
    22692307      { 
    22702308        icon = icons[i]; 
     
    22862324          x = parseInt(getTextContent(icon.getElementsByTagName('x')[0]), 10); 
    22872325          y = parseInt(getTextContent(icon.getElementsByTagName('y')[0]), 10); 
    2288           if (this.config.btnList[id]) this.config.btnList[id][1] = [path, x, y]; 
    2289           if (this.config.iconList[id]) this.config.iconList[id] = [path, x, y]; 
     2326          if (this.config.btnList[id])  
     2327          { 
     2328            this.config.btnList[id][1] = [path, x, y]; 
     2329          } 
     2330          if (this.config.iconList[id])  
     2331          { 
     2332            this.config.iconList[id] = [path, x, y]; 
     2333          } 
    22902334           
    22912335        } 
    22922336        else 
    22932337        { 
    2294           if (this.config.btnList[id]) this.config.btnList[id][1] = path; 
    2295           if (this.config.iconList[id]) this.config.iconList[id] = path; 
     2338          if (this.config.btnList[id])  
     2339          { 
     2340            this.config.btnList[id][1] = path; 
     2341          } 
     2342          if (this.config.iconList[id])  
     2343          { 
     2344            this.config.iconList[id] = path; 
     2345          } 
    22962346        } 
    22972347      } 
     
    24542504          this.onsubmit(); 
    24552505          this.xinha_submit(); 
    2456         } 
     2506        }; 
    24572507      } catch(ex) {} 
    24582508    } 
     
    24852535  // Add an event to initialize the iframe once loaded. 
    24862536  editor._iframeLoadDone = false; 
    2487   if (Xinha.is_opera) 
    2488     {        
    2489       editor.initIframe(); 
    2490     } 
    2491   else 
     2537  if (Xinha.is_opera)  
     2538  { 
     2539    editor.initIframe(); 
     2540  } 
     2541  else  
     2542  { 
    24922543    Xinha._addEvent( 
    24932544      this._iframe, 
     
    25032554      } 
    25042555    ); 
     2556  } 
    25052557}; 
    25062558 
     
    25472599    break; 
    25482600  } 
    2549  
    2550   switch ( this.config.height ) 
    2551   { 
    2552     case 'auto': 
    2553       height = this._initial_ta_size.h; 
    2554     break; 
    2555  
    2556     default : 
    25572601      // @todo: check if this is better : 
    25582602      // height = (parseInt(this.config.height, 10) == this.config.height)? this.config.height + 'px' : this.config.height; 
    2559       height = /[^0-9]/.test(this.config.height) ? this.config.height : this.config.height + 'px'; 
    2560     break; 
    2561   } 
    2562  
     2603  height = this.config.height == 'auto' ? this._initial_ta_size.h : /[^0-9]/.test(this.config.height) ? this.config.height : this.config.height + 'px'; 
     2604   
    25632605  this.sizeEditor(width, height, this.config.sizeIncludesBars, this.config.sizeIncludesPanels); 
    25642606 
     
    25772619Xinha.prototype.sizeEditor = function(width, height, includingBars, includingPanels) 
    25782620{ 
    2579   if (this._risizing) return; 
     2621  if (this._risizing)  
     2622  { 
     2623    return; 
     2624  } 
    25802625  this._risizing = true; 
    25812626   
     
    27672812    edcellwidth -= parseInt(this.config.panel_dimensions.right, 10);     
    27682813  } 
    2769   var iframeWidth = (this.config.iframeWidth)? parseInt(this.config.iframeWidth,10): null;  
    2770   this._iframe.style.width = (iframeWidth && iframeWidth < edcellwidth)? iframeWidth + "px": edcellwidth + "px";  
     2814  var iframeWidth = this.config.iframeWidth ? parseInt(this.config.iframeWidth,10) : null;  
     2815  this._iframe.style.width = (iframeWidth && iframeWidth < edcellwidth) ? iframeWidth + "px": edcellwidth + "px";  
    27712816 
    27722817  this._textArea.style.height = this._iframe.style.height; 
     
    28062851  { 
    28072852    div.style.width  = this.config.panel_dimensions[side]; 
    2808     if(this._iframe) div.style.height = this._iframe.style.height;      
     2853    if (this._iframe)  
     2854    { 
     2855      div.style.height = this._iframe.style.height; 
     2856    } 
    28092857  } 
    28102858  Xinha.addClasses(div, 'panel'); 
     
    28452893    this.notifyOf('panel_change', {'action':'hide','panel':panel}); 
    28462894    this.firePluginEvent('onPanelChange','hide',panel); 
    2847     try { this._iframe.contentWindow.scrollTo(pos.x,pos.y)} catch(e) { } 
     2895    try { this._iframe.contentWindow.scrollTo(pos.x,pos.y); } catch(e) { } 
    28482896  } 
    28492897}; 
     
    28592907    this.notifyOf('panel_change', {'action':'show','panel':panel}); 
    28602908    this.firePluginEvent('onPanelChange','show',panel); 
    2861     try { this._iframe.contentWindow.scrollTo(pos.x,pos.y)} catch(e) { } 
     2909    try { this._iframe.contentWindow.scrollTo(pos.x,pos.y); } catch(e) { } 
    28622910  } 
    28632911}; 
     
    29593007Xinha.prototype.activateEditor = function() 
    29603008{ 
    2961   if (this.currentModal) return; 
    2962  
     3009  if (this.currentModal)  
     3010  { 
     3011    return; 
     3012  } 
    29633013  // We only want ONE editor at a time to be active 
    29643014  if ( Xinha._currentlyActiveEditor ) 
     
    30713121 
    30723122  doc.open("text/html","replace"); 
    3073   var html = ''; 
     3123  var html = '', doctype; 
    30743124  if ( editor.config.browserQuirksMode === false ) 
    30753125  { 
    3076     var doctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; 
     3126    doctype = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">'; 
    30773127  } 
    30783128  else if ( editor.config.browserQuirksMode === true ) 
    30793129  { 
    3080      var doctype = ''; 
     3130    doctype = ''; 
    30813131  } 
    30823132  else 
    30833133  { 
    3084      var doctype = Xinha.getDoctype(document); 
    3085   } 
     3134    doctype = Xinha.getDoctype(document); 
     3135  } 
     3136   
    30863137  if ( !editor.config.fullPage ) 
    30873138  { 
     
    31323183    var match = html.match(/<link\s+[\s\S]*?["']\s*\/?>/gi); 
    31333184    html = html.replace(/<link\s+[\s\S]*?["']\s*\/?>\s*/gi, ''); 
    3134     match ? html = html.replace(/<\/head>/i, match.join('\n') + "\n</head>") : null;     
     3185    if (match) 
     3186    { 
     3187      html = html.replace(/<\/head>/i, match.join('\n') + "\n</head>"); 
     3188    } 
    31353189  } 
    31363190  doc.write(html); 
     
    33133367            { 
    33143368               var r = editor._doc.body.createTextRange(); 
    3315                r.collapse();   
    3316                r.select() 
     3369               r.collapse(); 
     3370               r.select(); 
    33173371               //setTimeout (function () { r.collapse();  r.select();},100); // won't do without timeout, dunno why 
    33183372             } 
     
    33673421{ 
    33683422  return Xinha.plugins[pluginName] || window[pluginName]; 
    3369 } 
     3423}; 
    33703424 
    33713425/** Create the specified plugin and register it with this Xinha 
     
    33753429Xinha.prototype.registerPlugin = function() 
    33763430{ 
    3377   if ( !Xinha.isSupportedBrowser ) return;  
    3378    
     3431  if (!Xinha.isSupportedBrowser) 
     3432  { 
     3433    return; 
     3434  } 
    33793435  var plugin = arguments[0]; 
    33803436 
     
    34093465    return false; 
    34103466  } 
    3411   if (!plugin._pluginInfo) plugin._pluginInfo =  {name:pluginName}; 
     3467  if (!plugin._pluginInfo)  
     3468  { 
     3469    plugin._pluginInfo =  
     3470    { 
     3471      name: pluginName 
     3472    }; 
     3473  } 
    34123474  var obj = new plugin(this, args); 
    34133475  if ( obj ) 
     
    34523514  } 
    34533515  return _editor_url + "plugins/" + plugin ; 
    3454 } 
     3516}; 
    34553517/** Static function that loads the given plugin 
    34563518 * @param {String} pluginName 
     
    34613523Xinha.loadPlugin = function(pluginName, callback, url) 
    34623524{ 
    3463   if ( !Xinha.isSupportedBrowser ) return; 
    3464    
     3525  if (!Xinha.isSupportedBrowser)  
     3526  { 
     3527    return; 
     3528  } 
    34653529  Xinha.setLoadingMessage (Xinha._lc("Loading plugin $plugin="+pluginName+"$")); 
    34663530 
     
    34763540  Xinha._pluginLoadStatus[pluginName] = 'loading'; 
    34773541   
    3478   if(!url) 
    3479   { 
    3480     if (Xinha.externalPlugins[pluginName]) 
    3481     { 
    3482       Xinha._loadback(Xinha.externalPlugins[pluginName][0]+Xinha.externalPlugins[pluginName][1], callback, this, pluginName); 
    3483     } 
    3484     else 
    3485     { 
    3486       var editor = this; 
    3487       multiStageLoader('start',pluginName); 
    3488     } 
    3489   } 
    3490    
    3491   return false; 
    3492  
    34933542  // This function will try to load a plugin in multiple passes.  It tries to 
    34943543  // load the plugin from either the plugin or unsupported directory, using 
     
    35013550  function multiStageLoader(stage,pluginName) 
    35023551  { 
     3552    var nextstage, dir, file, success_message; 
    35033553    switch (stage) 
    35043554    { 
    35053555      case 'start': 
    3506         var nextstage = 'old_naming'; 
    3507         var dir = editor.getPluginDir(pluginName); 
    3508         var file = pluginName + ".js"; 
     3556        nextstage = 'old_naming'; 
     3557        dir = Xinha.getPluginDir(pluginName); 
     3558        file = pluginName + ".js"; 
    35093559        break; 
    35103560      case 'old_naming': 
    3511         var nextstage = 'unsupported'; 
    3512         var dir = editor.getPluginDir(pluginName); 
    3513         var file = pluginName.replace(/([a-z])([A-Z])([a-z])/g, function (str, l1, l2, l3) { return l1 + "-" + l2.toLowerCase() + l3; }).toLowerCase() + ".js"; 
    3514         var success_message = 'You are using an obsolete naming scheme for the Xinha plugin '+pluginName+'. Please rename '+file+' to '+pluginName+'.js'; 
     3561        nextstage = 'unsupported'; 
     3562        dir = Xinha.getPluginDir(pluginName); 
     3563        file = pluginName.replace(/([a-z])([A-Z])([a-z])/g, function (str, l1, l2, l3) { return l1 + "-" + l2.toLowerCase() + l3; }).toLowerCase() + ".js"; 
     3564        success_message = 'You are using an obsolete naming scheme for the Xinha plugin '+pluginName+'. Please rename '+file+' to '+pluginName+'.js'; 
    35153565        break; 
    35163566      case 'unsupported': 
    3517         var nextstage = 'unsupported_old_name'; 
    3518         var dir = editor.getPluginDir(pluginName, true); 
    3519         var file = pluginName + ".js"; 
    3520         var success_message = 'You are using the unsupported Xinha plugin '+pluginName+'. If you wish continued support, please see http://trac.xinha.org/ticket/1297'; 
     3567        nextstage = 'unsupported_old_name'; 
     3568        dir = Xinha.getPluginDir(pluginName, true); 
     3569        file = pluginName + ".js"; 
     3570        success_message = 'You are using the unsupported Xinha plugin '+pluginName+'. If you wish continued support, please see http://trac.xinha.org/ticket/1297'; 
    35213571        break; 
    35223572      case 'unsupported_old_name': 
    3523         var nextstage = ''; 
    3524         var dir = editor.getPluginDir(pluginName, true); 
    3525         var file = pluginName.replace(/([a-z])([A-Z])([a-z])/g, function (str, l1, l2, l3) { return l1 + "-" + l2.toLowerCase() + l3; }).toLowerCase() + ".js"; 
    3526         var success_message = 'You are using the unsupported Xinha plugin '+pluginName+'. If you wish continued support, please see http://trac.xinha.org/ticket/1297'; 
     3573        nextstage = ''; 
     3574        dir = Xinha.getPluginDir(pluginName, true); 
     3575        file = pluginName.replace(/([a-z])([A-Z])([a-z])/g, function (str, l1, l2, l3) { return l1 + "-" + l2.toLowerCase() + l3; }).toLowerCase() + ".js"; 
     3576        success_message = 'You are using the unsupported Xinha plugin '+pluginName+'. If you wish continued support, please see http://trac.xinha.org/ticket/1297'; 
    35273577        break; 
    35283578      default: 
    35293579        Xinha._pluginLoadStatus[pluginName] = 'failed'; 
    3530         Xinha.debugMsg('Xinha was not able to find the plugin '+pluginName+'. Please make sure the plugin exists.', 'warn') 
     3580        Xinha.debugMsg('Xinha was not able to find the plugin '+pluginName+'. Please make sure the plugin exists.', 'warn'); 
    35313581        return; 
    35323582    } 
     
    35373587    function statusCallback(pluginName) 
    35383588    { 
    3539       Xinha.getPluginConstructor(pluginName).supported = stage.indexOf('unsupported') != 0; 
     3589      Xinha.getPluginConstructor(pluginName).supported = stage.indexOf('unsupported') !== 0; 
    35403590      callback(pluginName); 
    35413591    } 
     
    35493599               function() 
    35503600               { 
    3551                  if (success_message) Xinha.debugMsg(success_message); 
     3601                 if (success_message)  
     3602                 { 
     3603                   Xinha.debugMsg(success_message); 
     3604                 } 
    35523605               }, 
    35533606               // On failure, we'll clean up the failed load and try the next stage 
     
    35583611               }); 
    35593612  } 
     3613   
     3614  if(!url) 
     3615  { 
     3616    if (Xinha.externalPlugins[pluginName]) 
     3617    { 
     3618      Xinha._loadback(Xinha.externalPlugins[pluginName][0]+Xinha.externalPlugins[pluginName][1], callback, this, pluginName); 
     3619    } 
     3620    else 
     3621    { 
     3622      var editor = this; 
     3623      multiStageLoader('start',pluginName); 
     3624    } 
     3625  } 
     3626   
     3627  return false; 
    35603628}; 
    35613629/** Stores a status for each loading plugin that may be one of "loading","ready", or "failed" 
     
    35833651Xinha.loadPlugins = function(plugins, callbackIfNotReady,url) 
    35843652{ 
    3585   if ( !Xinha.isSupportedBrowser ) return; 
     3653  if (!Xinha.isSupportedBrowser)  
     3654  { 
     3655    return; 
     3656  } 
    35863657  //Xinha.setLoadingMessage (Xinha._lc("Loading plugins")); 
    3587   var m; 
    3588   for (var i=0;i<plugins.length;i++) 
     3658  var m,i; 
     3659  for (i=0;i<plugins.length;i++) 
    35893660  { 
    35903661    if (typeof plugins[i] == 'object') 
     
    35993670  var retVal = true; 
    36003671  var nuPlugins = Xinha.cloneObject(plugins); 
    3601   for ( var i=0;i<nuPlugins.length;i++ ) 
     3672  for (i=0;i<nuPlugins.length;i++ ) 
    36023673  { 
    36033674    var p = nuPlugins[i]; 
    36043675     
    3605     if (p == 'FullScreen' && !Xinha.externalPlugins['FullScreen'] ) continue; //prevent trying to load FullScreen plugin from the plugins folder 
     3676    if (p == 'FullScreen' && !Xinha.externalPlugins.FullScreen) 
     3677    { 
     3678      continue; //prevent trying to load FullScreen plugin from the plugins folder 
     3679    }  
    36063680    
    36073681    if ( typeof Xinha._pluginLoadStatus[p] == 'undefined') 
     
    36213695            Xinha._pluginLoadStatus[plugin] = 'failed'; 
    36223696          } 
    3623         }, url 
    3624       ); 
     3697        }, url); 
    36253698      retVal = false; 
    36263699    } 
     
    37093782  } 
    37103783   
    3711   for ( var i in this.plugins ) 
     3784  for ( i in this.plugins ) 
    37123785  { 
    37133786    var plugin = this.plugins[i].instance; 
    37143787 
    37153788    // Skip the browser specific plugin 
    3716     if ( plugin == this._browserSpecificPlugin) continue; 
    3717      
     3789    if (plugin == this._browserSpecificPlugin)  
     3790    { 
     3791      continue; 
     3792    } 
    37183793    if ( plugin && typeof plugin[methodName] == "function" ) 
    37193794    { 
     
    37273802   
    37283803  // Now the browser speific 
    3729   var plugin = this._browserSpecificPlugin; 
     3804  plugin = this._browserSpecificPlugin; 
    37303805  if ( plugin && typeof plugin[methodName] == "function" ) 
    37313806  { 
     
    37363811  } 
    37373812  return false; 
    3738 } 
     3813}; 
    37393814/** Adds a stylesheet to the document 
    37403815 * @param {String} style name of the stylesheet file 
     
    37653840  link.href = url; 
    37663841  link.type = "text/css"; 
    3767   if (id) link.id = id; 
     3842  if (id) 
     3843  { 
     3844    link.id = id; 
     3845  } 
    37683846  if (prepend && head.getElementsByTagName('link')[0]) 
    37693847  { 
     
    38483926    mso_xmlel  : 0, 
    38493927    orig_len   : this._doc.body.innerHTML.length, 
    3850     T          : (new Date()).getTime() 
     3928    T          : new Date().getTime() 
    38513929  }; 
    38523930  var stats_txt = 
     
    38723950    txt += "\nInitial document length: " + stats.orig_len + "\n"; 
    38733951    txt += "Final document length: " + editor._doc.body.innerHTML.length + "\n"; 
    3874     txt += "Clean-up took " + (((new Date()).getTime() - stats.T) / 1000) + " seconds"; 
     3952    txt += "Clean-up took " + ((new Date().getTime() - stats.T) / 1000) + " seconds"; 
    38753953    alert(txt); 
    38763954  } 
     
    38823960    { 
    38833961      node.className = newc; 
    3884       if ( ! ( /\S/.test(node.className) ) ) 
     3962      if ( !/\S/.test(node.className)) 
    38853963      { 
    38863964        node.removeAttribute("className"); 
     
    38953973    for ( var i = declarations.length; --i >= 0; ) 
    38963974    { 
    3897       if ( ( /^mso|^tab-stops/i.test(declarations[i]) ) || ( /^margin\s*:\s*0..\s+0..\s+0../i.test(declarations[i]) ) ) 
     3975      if ( /^mso|^tab-stops/i.test(declarations[i]) || /^margin\s*:\s*0..\s+0..\s+0../i.test(declarations[i]) ) 
    38983976      { 
    38993977        ++stats.mso_style; 
     
    39063984  function removeElements(el) 
    39073985  { 
    3908     if ((('link' == el.tagName.toLowerCase()) && 
    3909         (el.attributes && /File-List|Edit-Time-Data|themeData|colorSchemeMapping/.test(el.attributes['rel'].nodeValue))) || 
    3910         (/^(style|meta)$/i.test(el.tagName))) 
     3986    if (('link' == el.tagName.toLowerCase() && 
     3987        (el.attributes && /File-List|Edit-Time-Data|themeData|colorSchemeMapping/.test(el.attributes.rel.nodeValue))) || 
     3988        /^(style|meta)$/i.test(el.tagName)) 
    39113989    { 
    39123990      Xinha.removeFromParent(el); 
     
    39344012    clearClass(root); 
    39354013    clearStyle(root); 
    3936  
     4014    var next; 
    39374015    for (var i = root.firstChild; i; i = next ) 
    39384016    { 
    3939       var next = i.nextSibling; 
     4017      next = i.nextSibling; 
    39404018      if ( i.nodeType == 1 && parseTree(i) ) 
    39414019      { 
     
    40184096  { 
    40194097    D = D.replace(/color="[^"]*"/gi, ''); 
    4020     D = D.replace(/([^-])color:[^;}"']+;?/gi, '$1'); 
     4098    D = D.replace(/([^\-])color:[^;}"']+;?/gi, '$1'); 
    40214099  } 
    40224100 
     
    41634241    } 
    41644242    // prevent iterating over wrong type 
    4165     if ( typeof(btn.state) != 'function' ) 
     4243    if ( typeof btn.state != 'function' ) 
    41664244    { 
    41674245      continue; 
     
    41864264Xinha.prototype.updateToolbar = function(noStatus) 
    41874265{ 
    4188   if (this.suspendUpdateToolbar) return; 
    4189    
     4266  if (this.suspendUpdateToolbar) 
     4267  { 
     4268    return; 
     4269  } 
    41904270  var doc = this._doc; 
    41914271  var text = (this._editMode == "textmode"); 
     
    42034283        item.onclick = null; 
    42044284        item.oncontextmenu = null; 
    4205         item._xinha_dom0Events['click'] = null; 
    4206         item._xinha_dom0Events['contextmenu'] = null; 
     4285        item._xinha_dom0Events.click = null; 
     4286        item._xinha_dom0Events.contextmenu = null; 
    42074287        item = null; 
    42084288      } 
     
    42214301        } 
    42224302        var a = document.createElement("a"); 
    4223         a.href = "javascript:void(0)"; 
     4303        a.href = "javascript:void(0);"; 
    42244304        a.el = el; 
    42254305        a.editor = this; 
     
    42494329        ); 
    42504330        var txt = el.tagName.toLowerCase(); 
    4251         if (typeof el.style != 'undefined') a.title = el.style.cssText; 
     4331        if (typeof el.style != 'undefined') 
     4332        { 
     4333          a.title = el.style.cssText; 
     4334        } 
    42524335        if ( el.id ) 
    42534336        { 
     
    42744357    var inContext = true; 
    42754358    // prevent iterating over wrong type 
    4276     if ( typeof(btn.state) != 'function' ) 
     4359    if ( typeof btn.state != 'function' ) 
    42774360    { 
    42784361      continue; 
     
    44984581    return this.plugins[plugin].instance; 
    44994582  } 
    4500   else return null; 
     4583  else 
     4584  { 
     4585    return null; 
     4586  } 
    45014587}; 
    45024588/** Returns an array with all the ancestor nodes of the selection or current cursor position. 
     
    48894975    case 'justifyleft'  : 
    48904976    case 'justifyright' : 
    4891     { 
    48924977      cmdID.match(/^justify(.*)$/); 
    48934978      var ae = this.activeElement(this.getSelection());       
     
    49004985        this._doc.execCommand(cmdID, UI, param); 
    49014986      } 
    4902     }     
    49034987    break; 
    49044988     
     
    50525136  { 
    50535137    e = this.getParentElement(); 
    5054     if(!e) return; 
     5138    if(!e) 
     5139    { 
     5140      return; 
     5141    } 
    50555142  } 
    50565143   
     
    50685155{ 
    50695156  return this.outwardHtml(this.getHTML()); 
    5070 } 
     5157}; 
    50715158 
    50725159/** Completely change the HTML inside the editor 
     
    50785165{ 
    50795166  this.setHTML(this.inwardHtml(html)); 
    5080 } 
     5167}; 
    50815168 
    50825169/** Get the raw edited HTML, should not be used without Xinha.prototype.outwardHtml() 
     
    52935380{ 
    52945381  if ( typeof this.config.expandRelativeUrl != 'undefined' && this.config.expandRelativeUrl )  
    5295   var src = html.match(/(src|href)="([^"]*)"/gi); 
    5296   var b = document.location.href; 
    5297   if ( src ) 
    5298   { 
    5299     var url,url_m,relPath,base_m,absPath 
    5300     for ( var i=0;i<src.length;++i ) 
    5301     { 
    5302       url = src[i].match(/(src|href)="([^"]*)"/i); 
    5303       url_m = url[2].match( /\.\.\//g ); 
    5304       if ( url_m ) 
    5305       { 
    5306         relPath = new RegExp( "(.*?)(([^\/]*\/){"+ url_m.length+"})[^\/]*$" ); 
    5307         base_m = b.match( relPath ); 
    5308         absPath = url[2].replace(/(\.\.\/)*/,base_m[1]); 
    5309         html = html.replace( new RegExp(Xinha.escapeStringForRegExp(url[2])),absPath ); 
     5382  { 
     5383    var src = html.match(/(src|href)="([^"]*)"/gi); 
     5384    var b = document.location.href; 
     5385    if ( src ) 
     5386    { 
     5387      var url,url_m,relPath,base_m,absPath; 
     5388      for ( var i=0;i<src.length;++i ) 
     5389      { 
     5390        url = src[i].match(/(src|href)="([^"]*)"/i); 
     5391        url_m = url[2].match( /\.\.\//g ); 
     5392        if ( url_m ) 
     5393        { 
     5394          relPath = new RegExp( "(.*?)(([^\/]*\/){"+ url_m.length+"})[^\/]*$" ); 
     5395          base_m = b.match( relPath ); 
     5396          absPath = url[2].replace(/(\.\.\/)*/,base_m[1]); 
     5397          html = html.replace( new RegExp(Xinha.escapeStringForRegExp(url[2])),absPath ); 
     5398        } 
    53105399      } 
    53115400    } 
     
    53145403  if ( typeof this.config.stripSelfNamedAnchors != 'undefined' && this.config.stripSelfNamedAnchors ) 
    53155404  { 
    5316     var stripRe = new RegExp("((href|src|background)=\")("+Xinha.escapeStringForRegExp(unescape(document.location.href.replace(/&/g,'&amp;'))) + ')([#?][^\'" ]*)', 'g'); 
     5405    var stripRe = new RegExp("((href|src|background)=\")("+Xinha.escapeStringForRegExp(window.unescape(document.location.href.replace(/&/g,'&amp;'))) + ')([#?][^\'" ]*)', 'g'); 
    53175406    html = html.replace(stripRe, '$1$4'); 
    53185407  } 
     
    54275516    return null; 
    54285517  } 
    5429   var newObj = (obj.isArray ) ? [] : {}; 
     5518  var newObj = obj.isArray ? [] : {}; 
    54305519 
    54315520  // check for function and RegExp objects (as usual, IE is fucked up) 
     
    56505739 { 
    56515740   // quit if this function has already been called 
    5652    if (arguments.callee.done) return; 
     5741   if (arguments.callee.done)  
     5742   { 
     5743     return; 
     5744   } 
    56535745   // flag this function so we don't do the same thing twice 
    56545746   arguments.callee.done = true; 
    56555747   // kill the timer 
    5656    if (Xinha.onloadTimer) clearInterval(Xinha.onloadTimer); 
     5748   if (Xinha.onloadTimer) 
     5749   { 
     5750     clearInterval(Xinha.onloadTimer); 
     5751   } 
    56575752 
    56585753   func(); 
    5659  } 
     5754 }; 
    56605755 if (Xinha.is_ie) 
    56615756 { 
     
    57395834{ 
    57405835  return ev || window.event; 
    5741 } 
     5836}; 
    57425837/** 
    57435838 * Prepares an element to receive more than one DOM-0 event handler 
     
    58755970Xinha.htmlEncode = function(str) 
    58765971{ 
    5877   if (!str) return ''; 
    5878   if ( typeof str.replace == 'undefined' ) 
     5972  if (!str) 
     5973  { 
     5974    return ''; 
     5975  }  if ( typeof str.replace == 'undefined' ) 
    58795976  { 
    58805977    str = str.toString(); 
     
    60316128    var plugin = RegExp.$1; 
    60326129    var popup = RegExp.$2; 
    6033     if ( ! ( /\.(html?|php)$/.test(popup) ) ) 
     6130    if ( !/\.(html?|php)$/.test(popup) ) 
    60346131    { 
    60356132      popup += ".html"; 
     
    61136210Xinha.addCoreCSS = function(html) 
    61146211{ 
    6115     var coreCSS =  
    6116     "<style title=\"XinhaInternalCSS\" type=\"text/css\">" 
    6117     + ".htmtableborders, .htmtableborders td, .htmtableborders th {border : 1px dashed lightgrey ! important;}\n" 
    6118     + "html, body { border: 0px; } \n" 
    6119     + "body { background-color: #ffffff; } \n" 
    6120         + "img, hr { cursor: default } \n"   
    6121     +"</style>\n"; 
     6212    var coreCSS = "<style title=\"XinhaInternalCSS\" type=\"text/css\">" + 
     6213    ".htmtableborders, .htmtableborders td, .htmtableborders th {border : 1px dashed lightgrey ! important;}\n" + 
     6214    "html, body { border: 0px; } \n" + 
     6215    "body { background-color: #ffffff; } \n" + 
     6216    "img, hr { cursor: default } \n" + 
     6217    "</style>\n"; 
    61226218     
    61236219    if( html && /<head>/i.test(html)) 
     
    61336229      return coreCSS; 
    61346230    } 
    6135 } 
     6231}; 
    61366232/** Allows plugins to add a stylesheet for internal use to the edited document that won't appear in the HTML output 
    61376233 *   
     
    61456241    style.type = 'text/css'; 
    61466242    style.title = 'XinhaInternalCSS'; 
    6147         style.href = stylesheet; 
     6243    style.href = stylesheet; 
    61486244    this._doc.getElementsByTagName("HEAD")[0].appendChild(style); 
    6149 } 
     6245}; 
    61506246/** Remove internal styles 
    61516247 *   
     
    61586254{ 
    61596255  return html.replace(/<style[^>]+title="XinhaInternalCSS"(.|\n)*?<\/style>/ig, '').replace(/<link[^>]+title="XinhaInternalCSS"(.|\n)*?>/ig, '');  
    6160 } 
     6256}; 
    61616257/** Removes one CSS class (that is one of possible more parts  
    61626258 *   separated by spaces) from a given element 
     
    63396435    if ( req.readyState == 4 ) 
    63406436    { 
    6341       if ( ((req.status / 100) == 2) || Xinha.isRunLocally && req.status == 0 ) 
     6437      if ( ((req.status / 100) == 2) || Xinha.isRunLocally && req.status === 0 ) 
    63426438      { 
    63436439        if ( typeof success == 'function' ) 
     
    63886484    if ( req.readyState == 4 ) 
    63896485    { 
    6390       if ( ((req.status / 100) == 2) || Xinha.isRunLocally && req.status == 0 ) 
     6486      if ( ((req.status / 100) == 2) || Xinha.isRunLocally && req.status === 0 ) 
    63916487      { 
    63926488        success(req.responseText, req); 
     
    64176513    if ( req.readyState == 4 ) 
    64186514    { 
    6419       if ( ((req.status / 100) == 2) || Xinha.isRunLocally && req.status == 0 ) 
    6420       { 
    6421         if (successHandler) successHandler(req); 
     6515      if ( ((req.status / 100) == 2) || Xinha.isRunLocally && req.status === 0 ) 
     6516      { 
     6517        if (successHandler)  
     6518        { 
     6519          successHandler(req); 
     6520        } 
    64226521      } 
    64236522      else 
    64246523      { 
    6425         if (failHandler) failHandler(req) 
     6524        if (failHandler)  
     6525        { 
     6526          failHandler(req); 
     6527        } 
    64266528      } 
    64276529    } 
     
    64486550  req.open('GET', url, false); 
    64496551  req.send(null); 
    6450   if ( ((req.status / 100) == 2) || Xinha.isRunLocally && req.status == 0 ) 
     6552  if ( ((req.status / 100) == 2) || Xinha.isRunLocally && req.status === 0 ) 
    64516553  { 
    64526554    return (returnXML) ? req.responseXML : req.responseText; 
     
    64626564if (typeof dumpValues == 'undefined')  
    64636565{ 
    6464   function dumpValues(o) 
     6566  dumpValues = function(o) 
    64656567  { 
    64666568    var s = ''; 
     
    64706572      { 
    64716573        if (typeof console.firebug != 'undefined')  
     6574        { 
    64726575          console.log(o); 
     6576        } 
    64736577        else  
     6578        { 
    64746579          console.log(prop + ' = ' + o[prop] + '\n'); 
     6580        } 
    64756581      } 
    64766582      else 
     
    64926598 
    64936599    } 
    6494   } 
     6600  }; 
    64956601} 
    64966602if ( !Array.prototype.contains ) 
     
    65596665    var len = this.length; 
    65606666    if (typeof fn != "function") 
     6667    { 
    65616668      throw new TypeError(); 
     6669    } 
    65626670 
    65636671    var thisObject = arguments[1]; 
     
    65656673    { 
    65666674      if (i in this) 
     6675      { 
    65676676        fn.call(thisObject, this[i], i, this); 
     6677      } 
    65686678    } 
    65696679  }; 
     
    65836693    { 
    65846694      classNames = els[i].className.split(' '); 
    6585       if (classNames.contains(className)) result.push(els[i]); 
     6695      if (classNames.contains(className))  
     6696      { 
     6697        result.push(els[i]); 
     6698      } 
    65866699    } 
    65876700    return result; 
    65886701  } 
    6589 } 
     6702}; 
    65906703 
    65916704/** Returns true if all elements of <em>a2</em> are also contained in <em>a1</em> (at least I think this is what it does) 
     
    67416854 
    67426855  var m = null; 
    6743   if (typeof string == 'string') m = string.match(/\$(.*?)=(.*?)\$/g); 
     6856  if (typeof string == 'string')  
     6857  { 
     6858    m = string.match(/\$(.*?)=(.*?)\$/g); 
     6859  } 
    67446860  if (m)  
    67456861  { 
    6746     if (!replace) replace = {}; 
     6862    if (!replace)  
     6863    { 
     6864      replace = {}; 
     6865    } 
    67476866    for (var i = 0;i<m.length;i++) 
    67486867    { 
     
    68266945  if ( typeof replace != "undefined" ) 
    68276946  { 
    6828     for ( var i in replace ) 
     6947    for ( i in replace ) 
    68296948    { 
    68306949      ret = ret.replace('$'+i, replace[i]); 
     
    68806999    s[t] = function() 
    68817000    {       
    6882       if ( Xinha.is_ie && ( ! ( /loaded|complete/.test(window.event.srcElement.readyState) ) ) ) 
     7001      if (Xinha.is_ie && (!/loaded|complete/.test(window.event.srcElement.readyState))) 
    68837002      { 
    68847003        return; 
     
    69017020Xinha.makeEditors = function(editor_names, default_config, plugin_names) 
    69027021{ 
    6903   if ( !Xinha.isSupportedBrowser ) return; 
     7022  if (!Xinha.isSupportedBrowser)  
     7023  { 
     7024    return; 
     7025  } 
    69047026   
    69057027  if ( typeof default_config == 'function' ) 
     
    69417063Xinha.startEditors = function(editors) 
    69427064{ 
    6943   if ( !Xinha.isSupportedBrowser ) return; 
     7065  if (!Xinha.isSupportedBrowser)  
     7066  { 
     7067    return; 
     7068  } 
    69447069   
    69457070  for ( var i in editors ) 
     
    69577082Xinha.prototype.registerPlugins = function(plugin_names) 
    69587083{ 
    6959   if ( !Xinha.isSupportedBrowser ) return; 
     7084  if (!Xinha.isSupportedBrowser)  
     7085  { 
     7086    return; 
     7087  } 
    69607088   
    69617089  if ( plugin_names ) 
     
    71687296  if (element.offsetParent)  
    71697297  { 
    7170     curleft = element.offsetLeft 
    7171     curtop = element.offsetTop 
     7298    curleft = element.offsetLeft; 
     7299    curtop = element.offsetTop; 
    71727300    while (element = element.offsetParent)  
    71737301    { 
    7174       curleft += element.offsetLeft 
    7175       curtop += element.offsetTop 
     7302      curleft += element.offsetLeft; 
     7303      curtop += element.offsetTop; 
    71767304    } 
    71777305  } 
    71787306  return { top:curtop, left:curleft }; 
    7179 } 
     7307}; 
    71807308/** Find left pixel position of an element in the DOM. 
    71817309 *  @param  {DomNode} element HTML Element 
     
    71877315  if ( obj.offsetParent ) 
    71887316  { 
    7189     return Xinha.getElementTopLeft(obj).left;     
     7317    return Xinha.getElementTopLeft(obj).left; 
    71907318  } 
    71917319  else if ( obj.x ) 
     
    72237351  for (var i=0;i<xinha_editors.length;i++) 
    72247352  { 
    7225      if (!document.getElementById(xinha_editors[i])) continue; 
    7226          Xinha.loadingMessages.push(Xinha.createLoadingMessage(Xinha.getElementById('textarea', xinha_editors[i]))); 
     7353    if (!document.getElementById(xinha_editors[i]))  
     7354    { 
     7355      continue; 
     7356    } 
     7357    Xinha.loadingMessages.push(Xinha.createLoadingMessage(Xinha.getElementById('textarea', xinha_editors[i]))); 
    72277358  } 
    72287359}; 
     
    72767407Xinha.setLoadingMessage = function(string) 
    72777408{ 
    7278   if (!Xinha.loadingMessages) return;   
     7409  if (!Xinha.loadingMessages)  
     7410  { 
     7411    return; 
     7412  } 
    72797413  for ( var i = 0; i < Xinha.loadingMessages.length; i++ ) 
    72807414  { 
     
    72957429  for (var i=0;i< xinha_editors.length;i++) 
    72967430  { 
    7297      if (!document.getElementById(xinha_editors[i])) continue; 
     7431     if (!document.getElementById(xinha_editors[i]))  
     7432     { 
     7433       continue; 
     7434     } 
    72987435     var main = document.getElementById("loading_" + document.getElementById(xinha_editors[i]).id); 
    72997436     main.parentNode.removeChild(main); 
     
    73747511 */ 
    73757512 
    7376 Xinha.prototype.insertNodeAtSelection = function(toBeInserted) { Xinha.notImplemented("insertNodeAtSelection"); } 
     7513Xinha.prototype.insertNodeAtSelection = function(toBeInserted) { Xinha.notImplemented("insertNodeAtSelection"); }; 
    73777514 
    73787515/** Get the parent element of the supplied or current selection.  
     
    73817518 */ 
    73827519   
    7383 Xinha.prototype.getParentElement      = function(sel) { Xinha.notImplemented("getParentElement"); } 
     7520Xinha.prototype.getParentElement      = function(sel) { Xinha.notImplemented("getParentElement"); }; 
    73847521 
    73857522/** 
     
    73917528 */ 
    73927529  
    7393 Xinha.prototype.activeElement         = function(sel) { Xinha.notImplemented("activeElement"); } 
     7530Xinha.prototype.activeElement         = function(sel) { Xinha.notImplemented("activeElement"); }; 
    73947531 
    73957532/**  
     
    73997536 */ 
    74007537  
    7401 Xinha.prototype.selectionEmpty        = function(sel) { Xinha.notImplemented("selectionEmpty"); } 
     7538Xinha.prototype.selectionEmpty        = function(sel) { Xinha.notImplemented("selectionEmpty"); }; 
    74027539/**  
    74037540 * Returns a range object to be stored  
     
    74067543 */ 
    74077544 
    7408 Xinha.prototype.saveSelection = function() { Xinha.notImplemented("saveSelection"); } 
     7545Xinha.prototype.saveSelection = function() { Xinha.notImplemented("saveSelection"); }; 
    74097546 
    74107547/** Restores a selection previously stored 
    74117548 * @param {Range} savedSelection Range object as returned by Xinha.prototype.restoreSelection() 
    74127549 */ 
    7413 Xinha.prototype.restoreSelection = function(savedSelection)  { Xinha.notImplemented("restoreSelection"); } 
     7550Xinha.prototype.restoreSelection = function(savedSelection)  { Xinha.notImplemented("restoreSelection"); }; 
    74147551 
    74157552/** 
     
    74207557 * @param {Integer} pos  Set to a numeric position inside the node to collapse the cursor here if possible.  
    74217558 */ 
    7422 Xinha.prototype.selectNodeContents    = function(node,pos) { Xinha.notImplemented("selectNodeContents"); } 
     7559Xinha.prototype.selectNodeContents    = function(node,pos) { Xinha.notImplemented("selectNodeContents"); }; 
    74237560 
    74247561/** Insert HTML at the current position, deleting the selection if any.  
     
    74277564 */ 
    74287565  
    7429 Xinha.prototype.insertHTML            = function(html) { Xinha.notImplemented("insertHTML"); } 
     7566Xinha.prototype.insertHTML            = function(html) { Xinha.notImplemented("insertHTML"); }; 
    74307567 
    74317568/** Get the HTML of the current selection.  HTML returned has not been passed through outwardHTML. 
     
    74337570 * @returns {String} 
    74347571 */ 
    7435 Xinha.prototype.getSelectedHTML       = function() { Xinha.notImplemented("getSelectedHTML"); } 
     7572Xinha.prototype.getSelectedHTML       = function() { Xinha.notImplemented("getSelectedHTML"); }; 
    74367573 
    74377574/** Get a Selection object of the current selection.  Note that selection objects are browser specific. 
     
    74407577 */ 
    74417578  
    7442 Xinha.prototype.getSelection          = function() { Xinha.notImplemented("getSelection"); } 
     7579Xinha.prototype.getSelection          = function() { Xinha.notImplemented("getSelection"); }; 
    74437580 
    74447581/** Create a Range object from the given selection.  Note that range objects are browser specific. 
     
    74477584 *  @returns {Range} 
    74487585 */ 
    7449 Xinha.prototype.createRange           = function(sel) { Xinha.notImplemented("createRange"); } 
     7586Xinha.prototype.createRange           = function(sel) { Xinha.notImplemented("createRange"); }; 
    74507587 
    74517588/** Determine if the given event object is a keydown/press event. 
     
    74557592 */ 
    74567593  
    7457 Xinha.prototype.isKeyEvent            = function(event) { Xinha.notImplemented("isKeyEvent"); } 
     7594Xinha.prototype.isKeyEvent            = function(event) { Xinha.notImplemented("isKeyEvent"); }; 
    74587595 
    74597596/** Determines if the given key event object represents a combination of CTRL-<key>, 
     
    74727609   
    74737610  return false; 
    7474 } 
     7611}; 
    74757612 
    74767613/** Return the character (as a string) of a keyEvent  - ie, press the 'a' key and 
     
    74817618 */ 
    74827619                                    
    7483 Xinha.prototype.getKey = function(keyEvent) { Xinha.notImplemented("getKey"); } 
     7620Xinha.prototype.getKey = function(keyEvent) { Xinha.notImplemented("getKey"); }; 
    74847621 
    74857622/** Return the HTML string of the given Element, including the Element. 
     
    74897626 */ 
    74907627  
    7491 Xinha.getOuterHTML = function(element) { Xinha.notImplemented("getOuterHTML"); } 
     7628Xinha.getOuterHTML = function(element) { Xinha.notImplemented("getOuterHTML"); }; 
    74927629 
    74937630/** Get a new XMLHTTPRequest Object ready to be used.  
     
    75137650    Xinha.notImplemented('getXMLHTTPRequestObject'); 
    75147651  } 
    7515 } 
     7652}; 
    75167653  
    75177654// Compatability - all these names are deprecated and will be removed in a future version 
     
    75217658 * @returns {DomNode|null} 
    75227659 */ 
    7523 Xinha.prototype._activeElement  = function(sel) { return this.activeElement(sel); } 
     7660Xinha.prototype._activeElement  = function(sel) { return this.activeElement(sel); }; 
    75247661/** Alias of selectionEmpty() 
    75257662 * @see Xinha#selectionEmpty 
     
    75287665 * @returns {Boolean} 
    75297666 */ 
    7530 Xinha.prototype._selectionEmpty = function(sel) { return this.selectionEmpty(sel); } 
     7667Xinha.prototype._selectionEmpty = function(sel) { return this.selectionEmpty(sel); }; 
    75317668/** Alias of getSelection() 
    75327669 * @see Xinha#getSelection 
     
    75347671 * @returns {Selection} 
    75357672 */ 
    7536 Xinha.prototype._getSelection   = function() { return this.getSelection(); } 
     7673Xinha.prototype._getSelection   = function() { return this.getSelection(); }; 
    75377674/** Alias of createRange() 
    75387675 * @see Xinha#createRange 
     
    75417678 * @returns {Range} 
    75427679 */ 
    7543 Xinha.prototype._createRange    = function(sel) { return this.createRange(sel); } 
     7680Xinha.prototype._createRange    = function(sel) { return this.createRange(sel); }; 
    75447681HTMLArea = Xinha; 
    75457682 
     7683//what is this for? Do we need it? 
    75467684Xinha.init(); 
    75477685 
     
    75577695Xinha.debugMsg = function(text, level) 
    75587696{ 
    7559   if (typeof console != 'undefined' && typeof console.log == 'function') 
    7560   { 
    7561     if (level && level == 'warn' && typeof console.warn == 'function') 
    7562     { 
    7563       console.warn(text) 
    7564     } 
    7565     else if (level && level == 'info' && typeof console.info == 'function') 
    7566     { 
    7567       console.info(text) 
    7568     } 
    7569     else console.log(text); 
    7570   } 
    7571   else if (typeof opera != 'undefined' && typeof opera.postError == 'function') opera.postError(text); 
    7572    
    7573 } 
     7697  if (typeof console != 'undefined' && typeof console.log == 'function')  
     7698  { 
     7699    if (level && level == 'warn' && typeof console.warn == 'function')  
     7700    { 
     7701      console.warn(text); 
     7702    } 
     7703    else  
     7704      if (level && level == 'info' && typeof console.info == 'function')  
     7705      { 
     7706        console.info(text); 
     7707      } 
     7708      else  
     7709      { 
     7710        console.log(text); 
     7711      } 
     7712  } 
     7713  else if (typeof opera != 'undefined' && typeof opera.postError == 'function')  
     7714  { 
     7715    opera.postError(text); 
     7716  } 
     7717}; 
    75747718Xinha.notImplemented = function(methodName)  
    75757719{ 
    75767720  throw new Error("Method Not Implemented", "Part of Xinha has tried to call the " + methodName + " method which has not been implemented."); 
    7577 } 
     7721}; 
  • trunk/modules/Dialogs/XinhaDialog.js

    r1117 r1119  
    2020    --  $LastChangedBy$ 
    2121    --------------------------------------------------------------------------*/ 
     22/*jslint regexp: false, rhino: false, browser: true, bitwise: false, forin: false, adsafe: false, evil: true, nomen: false,  
     23glovar: false, debug: false, eqeqeq: false, passfail: false, sidebar: false, laxbreak: false, on: false, cap: true,  
     24white: false, widget: false, undef: true, plusplus: false*/ 
     25/*global  Xinha */ 
    2226 
    2327/** Xinha Dialog 
     
    5054    undefined, the options passed in above will be used. 
    5155  */ 
    52   var globalOptions = editor.config.dialogOptions 
    53   if (globalOptions) { 
    54     if (typeof(globalOptions.centered) != 'undefined') { 
     56  var globalOptions = editor.config.dialogOptions; 
     57  if (globalOptions)  
     58  { 
     59    if (typeof globalOptions.centered != 'undefined')  
     60    { 
    5561      this.centered = globalOptions.centered; 
    5662    } 
    57     if (typeof(globalOptions.resizable) != 'undefined') { 
     63    if (typeof globalOptions.resizable != 'undefined')  
     64    { 
    5865      this.resizable = globalOptions.resizable; 
    5966    } 
    60     if (typeof(globalOptions.closable) != 'undefined') { 
     67    if (typeof globalOptions.closable != 'undefined')  
     68    { 
    6169      this.closable = globalOptions.closable; 
    6270    } 
    63     if (typeof(globalOptions.greyout) != 'undefined') { 
     71    if (typeof globalOptions.greyout != 'undefined')  
     72    { 
    6473      this.greyout = globalOptions.greyout; 
    6574    } 
    66     if (typeof(globalOptions.closeOnEscape) != 'undefined') { 
     75    if (typeof globalOptions.closeOnEscape != 'undefined')  
     76    { 
    6777      this.closeOnEscape = globalOptions.closeOnEscape; 
    6878    } 
    6979  } 
    70  
     80  var backG; 
    7181  if (Xinha.is_ie) 
    7282  { // IE6 needs the iframe to hide select boxes 
    73     var backG = document.createElement("iframe"); 
     83    backG = document.createElement("iframe"); 
    7484    backG.src = "about:blank"; 
    7585    backG.onreadystatechange = function ()  
     
    8494        for (var i=0;i<stylesheets.length;i++) 
    8595        { 
    86           if (stylesheets[i].id.indexOf('Xinha') != -1 && stylesheets[i].cssText)  
     96          if (stylesheets[i].id.indexOf('Xinha') != -1 && stylesheets[i].cssText) 
     97          { 
    8798            styles += stylesheets[i].cssText; 
     99          } 
    88100        } 
    89101        div.innerHTML = '<br><style type="text/css">\n'+styles+'\n</style>'; // strange way, but didn't work otherwise 
    90102        doc.getElementsByTagName('body')[0].appendChild(div); 
    91103        doc.body.className = 'xinha_dialog_background'; 
    92         if (dialog.modal) doc.body.className += ' modal'; 
    93         if (dialog.greyout) doc.body.className += ' greyout'; 
     104        if (dialog.modal)  
     105        { 
     106          doc.body.className += ' modal'; 
     107        } 
     108        if (dialog.greyout)  
     109        { 
     110          doc.body.className += ' greyout'; 
     111        } 
    94112      } 
    95     } 
     113    }; 
    96114  } 
    97115  else 
    98116  { // Mozilla (<FF3) can't have the iframe, because it hides the caret in text fields 
    99117    // see https://bugzilla.mozilla.org/show_bug.cgi?id=226933 
    100     var backG = document.createElement("div"); 
     118    backG = document.createElement("div"); 
    101119  } 
    102120  backG.className = "xinha_dialog_background"; 
    103   if (this.modal) backG.className += ' modal'; 
    104   if (this.greyout) backG.className += ' greyout'; 
     121  if (this.modal)  
     122  { 
     123    backG.className += ' modal'; 
     124  } 
     125  if (this.greyout)  
     126  { 
     127    backG.className += ' greyout'; 
     128  } 
    105129  var z = 1000; 
    106130  if (!Xinha.Dialog.initialZ) 
     
    109133    while (p) 
    110134    { 
    111       if (p.style && parseInt(p.style.zIndex, 10) > z) z = parseInt(p.style.zIndex, 10); 
     135      if (p.style && parseInt(p.style.zIndex, 10) > z)  
     136      { 
     137        z = parseInt(p.style.zIndex, 10); 
     138      } 
    112139      p = p.parentNode; 
    113140    } 
     
    115142  } 
    116143  z = Xinha.Dialog.initialZ; 
    117   with (backG.style) 
    118   { 
    119     position = "absolute"; 
    120     top = 0; 
    121     left = 0; 
    122     border = 'none'; 
    123     overflow = "hidden"; 
    124     display = "none"; 
    125     zIndex = (this.modal ? z + 25 : z +1 ) + this.layer; 
    126   } 
     144  var s = backG.style; 
     145  s.position = "absolute"; 
     146  s.top = 0; 
     147  s.left = 0; 
     148  s.border = 'none'; 
     149  s.overflow = "hidden"; 
     150  s.display = "none"; 
     151  s.zIndex = (this.modal ? z + 25 : z +1 ) + this.layer; 
     152 
    127153  document.body.appendChild(backG); 
    128154  this.background = backG; 
     
    166192  } 
    167193 
    168   html = this.translateHtml(html,localizer) 
     194  html = this.translateHtml(html,localizer); 
    169195 
    170196  var main = document.createElement('div'); 
     
    183209 
    184210  this.buttons = document.createElement('div'); 
    185   with (this.buttons.style) 
    186   { 
    187     position = "absolute"; 
    188     top = "0"; 
    189     right = "2px"; 
    190   } 
     211  s = this.buttons.style; 
     212  s.position = "absolute"; 
     213  s.top = "0"; 
     214  s.right = "2px"; 
     215 
    191216  rootElem.appendChild(this.buttons); 
    192217 
     
    233258   
    234259  this.icon = document.createElement('img'); 
    235   with (this.icon) 
    236   { 
    237     className = 'icon'; 
    238     src = editor.config.iconList.dialogCaption; 
    239     style.position = 'absolute'; 
    240     style.top = '3px'; 
    241     style.left = '2px'; 
    242     ondrag = function () {return false;}; 
    243   } 
     260  var icon = this.icon; 
     261  icon.className = 'icon'; 
     262  icon.src = editor.config.iconList.dialogCaption; 
     263  icon.style.position = 'absolute'; 
     264  icon.style.top = '3px'; 
     265  icon.style.left = '2px'; 
     266  icon.ondrag = function () {return false;}; 
     267 
    244268  captionBar.style.paddingLeft = '22px'; 
    245269  rootElem.appendChild(this.icon); 
     
    266290    this.resizer = document.createElement('div'); 
    267291    this.resizer.className = "resizeHandle"; 
    268     with (this.resizer.style) 
    269     { 
    270       position = "absolute"; 
    271       bottom = "0px"; 
    272       right= "0px"; 
    273       MozUserSelect = 'none'; 
    274     } 
     292    s = this.resizer.style; 
     293    s.position = "absolute"; 
     294    s.bottom = "0px"; 
     295    s.right= "0px"; 
     296    s.MozUserSelect = 'none'; 
     297 
    275298    Xinha._addEvent(this.resizer, 'mousedown', function(ev) { dialog.resizeStart(ev); }); 
    276299    rootElem.appendChild(this.resizer); 
     
    309332  var rootElemStyle = rootElem.style; 
    310333  var modal = this.modal; 
    311   var scrollPos = this.scrollPos = this.editor.scrollPos(); 
     334  var scrollPos = this.editor.scrollPos(); 
     335  this.scrollPos = scrollPos; 
    312336  var dialog = this; 
    313337  //dialog.main.style.height = ''; 
     
    347371  if ( !this.attached ) 
    348372  { 
    349     if ( modal ) 
    350     { 
    351       this.showBackground() 
    352       this.posBackground({top:0, left:0});  
     373    if (modal)  
     374    { 
     375      this.showBackground(); 
     376      this.posBackground({ 
     377        top: 0, 
     378        left: 0 
     379      }); 
    353380      this.resizeBackground(Xinha.Dialog.calcFullBgSize()); 
    354381    } 
    355     else this.background.style.display = ''; 
     382    else  
     383    { 
     384      this.background.style.display = ''; 
     385    } 
    356386 
    357387    //this.onResizeWin = function () {dialog.sizeBackground()}; 
     
    581611  dialog.mouseMove = function(ev) { dialog.dragIt(ev); }; 
    582612  Xinha._addEvent(document,"mousemove", dialog.mouseMove ); 
    583   if (Xinha.is_ie) Xinha._addEvent(this.background.contentWindow.document,"mousemove", dialog.mouseMove ); 
     613  if (Xinha.is_ie)  
     614  { 
     615    Xinha._addEvent(this.background.contentWindow.document, "mousemove", dialog.mouseMove); 
     616  } 
    584617   
    585618  dialog.mouseUp = function (ev) { dialog.dragEnd(ev); }; 
    586619  Xinha._addEvent(document,"mouseup",  dialog.mouseUp); 
    587   if (Xinha.is_ie) Xinha._addEvent(this.background.contentWindow.document,"mouseup",  dialog.mouseUp); 
     620  if (Xinha.is_ie)  
     621  { 
     622    Xinha._addEvent(this.background.contentWindow.document, "mouseup", dialog.mouseUp); 
     623  } 
    588624}; 
    589625 
     
    596632    return false; 
    597633  } 
    598  
     634  var posY, posX, newPos; 
    599635  if (dialog.rootElem.style.position == 'absolute') 
    600636  { 
    601     var posY = (ev.clientY + this.scrollPos.y) - dialog.yOffs + "px"; 
    602     var posX = (ev.clientX + this.scrollPos.x) - dialog.xOffs + "px"; 
    603  
    604     var newPos = {top: posY,left: posX}; 
     637    posY = (ev.clientY + this.scrollPos.y) - dialog.yOffs + "px"; 
     638    posX = (ev.clientX + this.scrollPos.x) - dialog.xOffs + "px"; 
     639 
     640    newPos = {top: posY,left: posX}; 
    605641  } 
    606642  else if (dialog.rootElem.style.position == 'fixed') 
    607643  { 
    608     var posY = ev.clientY  - dialog.yOffs + "px"; 
    609     var posX = ev.clientX - dialog.xOffs + "px"; 
    610  
    611     var newPos = {top: posY,left: posX}; 
     644    posY = ev.clientY  - dialog.yOffs + "px"; 
     645    posX = ev.clientX - dialog.xOffs + "px"; 
     646 
     647    newPos = {top: posY,left: posX}; 
    612648  } 
    613649   
     
    631667 
    632668  Xinha._removeEvent(document, "mousemove", dialog.mouseMove ); 
    633   if (Xinha.is_ie) Xinha._removeEvent(this.background.contentWindow.document, "mousemove", dialog.mouseMove ); 
     669  if (Xinha.is_ie)  
     670  { 
     671    Xinha._removeEvent(this.background.contentWindow.document, "mousemove", dialog.mouseMove); 
     672  } 
    634673  Xinha._removeEvent(document, "mouseup", dialog.mouseUp); 
    635   if (Xinha.is_ie) Xinha._removeEvent(this.background.contentWindow.document, "mouseup",  dialog.mouseUp); 
     674  if (Xinha.is_ie)  
     675  { 
     676    Xinha._removeEvent(this.background.contentWindow.document, "mouseup", dialog.mouseUp); 
     677  } 
    636678 
    637679  var rootElemStyle = dialog.rootElem.style; 
     
    670712  dialog.mouseMove = function(ev) { dialog.resizeIt(ev); }; 
    671713  Xinha._addEvent(document,"mousemove", dialog.mouseMove ); 
    672   if (Xinha.is_ie) Xinha._addEvent(this.background.contentWindow.document,"mousemove", dialog.mouseMove ); 
     714  if (Xinha.is_ie)  
     715  { 
     716    Xinha._addEvent(this.background.contentWindow.document, "mousemove", dialog.mouseMove); 
     717  } 
    673718  dialog.mouseUp = function (ev) { dialog.resizeEnd(ev); }; 
    674719  Xinha._addEvent(document,"mouseup",  dialog.mouseUp);  
    675   if (Xinha.is_ie) Xinha._addEvent(this.background.contentWindow.document,"mouseup", dialog.mouseUp ); 
     720  if (Xinha.is_ie)  
     721  { 
     722    Xinha._addEvent(this.background.contentWindow.document, "mouseup", dialog.mouseUp); 
     723  } 
    676724}; 
    677725 
     
    683731    return false; 
    684732  } 
    685  
     733  var posY, posX; 
    686734  if (dialog.rootElem.style.position == 'absolute') 
    687735  { 
    688     var posY = ev.clientY + dialog.scrollPos.y; 
    689     var posX = ev.clientX + dialog.scrollPos.x; 
     736    posY = ev.clientY + dialog.scrollPos.y; 
     737    posX = ev.clientX + dialog.scrollPos.x; 
    690738  } 
    691739  else 
    692740  { 
    693     var posY = ev.clientY; 
    694     var posX = ev.clientX; 
     741    posY = ev.clientY; 
     742    posX = ev.clientX; 
    695743  } 
    696744 
     
    722770 
    723771  Xinha._removeEvent(document, "mousemove", dialog.mouseMove ); 
    724   if (Xinha.is_ie) Xinha._removeEvent(this.background.contentWindow.document, "mouseup",  dialog.mouseUp); 
     772  if (Xinha.is_ie)  
     773  { 
     774    Xinha._removeEvent(this.background.contentWindow.document, "mouseup", dialog.mouseUp); 
     775  } 
    725776  Xinha._removeEvent(document, "mouseup",  dialog.mouseUp); 
    726   if (Xinha.is_ie) Xinha._removeEvent(this.background.contentWindow.document, "mouseup",  dialog.mouseUp); 
     777  if (Xinha.is_ie)  
     778  { 
     779    Xinha._removeEvent(this.background.contentWindow.document, "mouseup", dialog.mouseUp); 
     780  } 
    727781   
    728782  dialog.size.width  = dialog.rootElem.offsetWidth; 
     
    752806  this.captionBar.style.paddingLeft = "3px"; 
    753807  this.resizer.style.display = 'none'; 
    754   if ( this.closable ) this.closer.style.display = 'none'; 
     808  if (this.closable)  
     809  { 
     810    this.closer.style.display = 'none'; 
     811  } 
    755812  this.icon.style.display = 'none'; 
    756813   
     
    789846  dialog.captionBar.style.paddingLeft = "22px"; 
    790847  dialog.resizer.style.display = ''; 
    791   if ( dialog.closable ) dialog.closer.style.display = ''; 
     848  if (dialog.closable)  
     849  { 
     850    dialog.closer.style.display = ''; 
     851  } 
    792852  dialog.icon.style.display = ''; 
    793853   
    794   if ( dialog.size.width ) rootElem.style.width  = dialog.size.width + 'px'; 
     854  if (dialog.size.width)  
     855  { 
     856    rootElem.style.width = dialog.size.width + 'px'; 
     857  } 
    795858 
    796859  Xinha.removeClasses(rootElem, 'panel'); 
     
    807870  var viewport = Xinha.viewportSize(); 
    808871  return {width:(page.x > viewport.x  ? page.x : viewport.x )  + "px",height:(page.x > viewport.y ? page.y : viewport.y ) + "px"}; 
    809 } 
     872}; 
    810873 
    811874Xinha.Dialog.prototype.sizeBgToDialog = function() 
     
    817880  bgStyle.width = rootElemStyle.width; 
    818881  bgStyle.height = rootElemStyle.height; 
    819 } 
     882}; 
    820883Xinha.Dialog.prototype.hideBackground = function() 
    821884{ 
    822885  //this.background.style.display = 'none'; 
    823886  Xinha.Dialog.fadeOut(this.background); 
    824 } 
     887}; 
    825888Xinha.Dialog.prototype.showBackground = function() 
    826889{ 
    827890  //this.background.style.display = ''; 
    828891  Xinha.Dialog.fadeIn(this.background,70); 
    829 } 
     892}; 
    830893Xinha.Dialog.prototype.posBackground = function(pos) 
    831894{ 
     
    835898    this.background.style.left = pos.left; 
    836899  } 
    837 } 
     900}; 
    838901Xinha.Dialog.prototype.resizeBackground = function(size) 
    839902{ 
     
    843906    this.background.style.height = size.height; 
    844907  } 
    845 } 
     908}; 
    846909Xinha.Dialog.prototype.posDialog = function(pos) 
    847910{ 
     
    849912  st.left = pos.left; 
    850913  st.top  = pos.top; 
    851 } 
     914}; 
    852915Xinha.Dialog.prototype.sizeDialog = function(size) 
    853916{ 
     
    859922  this.main.style.height = (height > 20) ? height : 20 + "px"; 
    860923  this.main.style.width = (width > 10) ? width : 10 + 'px'; 
    861 } 
     924}; 
    862925Xinha.Dialog.prototype.setValues = function(values) 
    863926{ 
    864927  for(var i in values) 
    865928  { 
    866     var elems = this.getElementsByName(i); 
    867     if(!elems) continue; 
    868     for(var x = 0; x < elems.length; x++) 
    869     { 
    870       var e = elems[x]; 
    871       switch(e.tagName.toLowerCase()) 
     929    if (typeof i == 'string')  
     930    { 
     931      var elems = this.getElementsByName(i); 
     932      if (!elems)  
    872933      { 
    873         case 'select'  : 
     934        continue; 
     935      } 
     936      for(var x = 0; x < elems.length; x++) 
     937      { 
     938        var e = elems[x]; 
     939        switch(e.tagName.toLowerCase()) 
    874940        { 
    875           for(var j = 0; j < e.options.length; j++) 
    876           { 
    877             if(typeof values[i] == 'object') 
    878             { 
    879               for(var k = 0; k < values[i].length; k++) 
    880               { 
    881                 if(values[i][k] == e.options[j].value) 
    882                 { 
    883                   e.options[j].selected = true; 
    884                 } 
    885               } 
    886             } 
    887             else if(values[i] == e.options[j].value) 
    888             { 
    889               e.options[j].selected = true; 
    890             } 
    891           } 
    892           break; 
    893         } 
    894  
    895         case 'textarea': 
    896         case 'input'   : 
    897         { 
    898           switch(e.getAttribute('type')) 
    899           { 
    900             case 'radio'   : 
    901             { 
    902               if(e.value == values[i]) 
    903               { 
    904                 e.checked = true; 
    905               } 
    906               break; 
    907             } 
    908  
    909             case 'checkbox': 
     941          case 'select'  : 
     942            for(var j = 0; j < e.options.length; j++) 
    910943            { 
    911944              if(typeof values[i] == 'object') 
    912945              { 
    913                 for(var j in values[i]) 
     946                for(var k = 0; k < values[i].length; k++) 
    914947                { 
    915                   if(values[i][j] == e.value) 
     948                  if(values[i][k] == e.options[j].value) 
     949                  { 
     950                    e.options[j].selected = true; 
     951                  } 
     952                } 
     953              } 
     954              else if(values[i] == e.options[j].value) 
     955              { 
     956                e.options[j].selected = true; 
     957              } 
     958            } 
     959          break; 
     960          case 'textarea': 
     961          case 'input'   : 
     962            switch(e.getAttribute('type')) 
     963            { 
     964              case 'radio'   : 
     965                if(e.value == values[i]) 
     966                { 
     967                  e.checked = true; 
     968                } 
     969              break; 
     970              case 'checkbox': 
     971                if(typeof values[i] == 'object') 
     972                { 
     973                  for(j in values[i]) 
     974                  { 
     975                    if(values[i][j] == e.value) 
     976                    { 
     977                      e.checked = true; 
     978                    } 
     979                  } 
     980                } 
     981                else 
     982                { 
     983                  if(values[i] == e.value) 
    916984                  { 
    917985                    e.checked = true; 
    918986                  } 
    919987                } 
    920               } 
    921               else 
    922               { 
    923                 if(values[i] == e.value) 
    924                 { 
    925                   e.checked = true; 
    926                 } 
    927               } 
     988              break; 
     989              default: 
     990                e.value = values[i]; 
    928991              break; 
    929992            } 
    930  
    931             default    : 
    932             { 
    933               e.value = values[i]; 
    934             } 
    935           } 
    936           break; 
    937993        } 
    938  
    939         default        : 
    940         break; 
    941994      } 
    942995    } 
     
    9541007  { 
    9551008    var i = inputs[x]; 
    956     if(!(i.name && this.r_id[i.name])) continue; 
     1009    if (!(i.name && this.r_id[i.name]))  
     1010    { 
     1011      continue; 
     1012    } 
    9571013 
    9581014    if(typeof values[this.r_id[i.name]] == 'undefined') 
     
    9651021    { 
    9661022      case 'select': 
    967       { 
    9681023        if(i.multiple) 
    9691024        { 
    9701025          if(!v.push) 
    9711026          { 
    972             if(v != null) 
     1027            if(v !== null) 
    9731028            { 
    9741029              v = [v]; 
     
    9761031            else 
    9771032            { 
    978               v = new Array(); 
     1033              v = []; 
    9791034            } 
    9801035          } 
     
    9951050        } 
    9961051        break; 
    997       } 
    998  
     1052/* 
    9991053      case 'textarea': 
    10001054      case 'input'   : 
    1001       default        : 
    1002       { 
     1055*/ 
     1056      default: 
    10031057        switch(i.type.toLowerCase()) 
    10041058        { 
    10051059          case  'radio': 
    1006           { 
    10071060            if(i.checked) 
    10081061            { 
    10091062              v = i.value; 
    1010               break; 
    10111063            } 
    1012           } 
    1013  
     1064          break; 
    10141065          case 'checkbox': 
    1015           { 
    1016             if(v == null) 
     1066            if(v === null) 
    10171067            { 
    10181068              if(this.getElementsByName(this.r_id[i.name]).length > 1) 
    10191069              { 
    1020                 v = new Array(); 
     1070                v = []; 
    10211071              } 
    10221072            } 
    1023  
    10241073            if(i.checked) 
    10251074            { 
    1026               if(v != null && typeof v == 'object' && v.push) 
     1075              if(v !== null && typeof v == 'object' && v.push) 
    10271076              { 
    10281077                v.push(i.value); 
     
    10331082              } 
    10341083            } 
    1035             break; 
    1036           } 
    1037  
    1038           default   : 
    1039           { 
     1084          break; 
     1085          default: 
    10401086            v = i.value; 
    1041             break; 
    1042           } 
     1087          break; 
    10431088        } 
    1044       } 
    1045  
    1046     } 
    1047  
     1089    } 
    10481090    values[this.r_id[i.name]] = v; 
    10491091  } 
     
    10841126      return dialog._lc(translate) ; 
    10851127    } 
    1086     ).replace(/="_\((.*?)\)"/g, 
     1128    ).replace(/\="_\((.*?)\)"/g, 
    10871129    function(fullString, translate) 
    10881130    { 
     
    10911133  ); 
    10921134  return html; 
    1093 } 
     1135}; 
    10941136 
    10951137/** Use this function when adding an element with a new ID/name to a  
     
    11301172  if (Xinha.Dialog.activeModeless ) 
    11311173  { 
    1132     Xinha.Dialog.activeModeless.rootElem.style.zIndex = parseInt(Xinha.Dialog.activeModeless.rootElem.style.zIndex) -10; 
     1174    Xinha.Dialog.activeModeless.rootElem.style.zIndex = parseInt(Xinha.Dialog.activeModeless.rootElem.style.zIndex, 10) -10; 
    11331175  } 
    11341176  Xinha.Dialog.activeModeless = dialog; 
    11351177 
    1136   Xinha.Dialog.activeModeless.rootElem.style.zIndex = parseInt(Xinha.Dialog.activeModeless.rootElem.style.zIndex) + 10; 
    1137 } 
     1178  Xinha.Dialog.activeModeless.rootElem.style.zIndex = parseInt(Xinha.Dialog.activeModeless.rootElem.style.zIndex, 10) + 10; 
     1179}; 
    11381180/** Set opacity cross browser  
    11391181 *  
     
    11511193        el.style.opacity = value/100; 
    11521194    } 
    1153 } 
     1195}; 
    11541196/** Fade in an element 
    11551197 *  
     
    11821224        el.op = endOpacity; 
    11831225        el.timeOut = null; 
    1184         if (typeof callback == 'function') callback.call(); 
    1185     } 
    1186 } 
     1226        if (typeof callback == 'function')  
     1227        { 
     1228          callback.call(); 
     1229        } 
     1230    } 
     1231}; 
    11871232/** Fade out an element 
    11881233 *  
     
    11951240    delay = delay || 1; 
    11961241    step = step || 30; 
    1197     if (typeof el.op == 'undefined') el.op = 100; 
     1242    if (typeof el.op == 'undefined')  
     1243    { 
     1244      el.op = 100; 
     1245    } 
    11981246    var op = el.op; 
    11991247 
     
    12111259        el.timeOut = null; 
    12121260    } 
    1213 } 
     1261}; 
Note: See TracChangeset for help on using the changeset viewer.