r1073 - in xwiki/trunk/src/main/web: templates tiny_mce tiny_mce/plugins/_template tiny_mce/plugins/advimage tiny_mce/plugins/table tiny_mce/plugins/wikiplugin tiny_mce/themes/wikieditor tiny_mce/themes/wikieditor/images tiny_mce/themes/wikieditor/langs wiki_editor wiki_editor/plugins wiki_editor/themes

Ludovic Dubost ludovic at users.forge.objectweb.org
Sun May 28 23:16:23 CEST 2006


Author: ludovic
Date: 2006-05-28 23:16:15 +0200 (Sun, 28 May 2006)
New Revision: 1073

Added:
   xwiki/trunk/src/main/web/templates/macrowysiwyg.vm
   xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/images/macro.gif
   xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/macro.htm
   xwiki/trunk/src/main/web/wiki_editor/plugins/macros.js
Modified:
   xwiki/trunk/src/main/web/templates/edit.vm
   xwiki/trunk/src/main/web/templates/httpheader.vm
   xwiki/trunk/src/main/web/templates/wysiwyg.vm
   xwiki/trunk/src/main/web/tiny_mce/plugins/_template/editor_plugin.js
   xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/editor_plugin.js
   xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/editor_plugin_src.js
   xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/image.htm
   xwiki/trunk/src/main/web/tiny_mce/plugins/table/editor_plugin.js
   xwiki/trunk/src/main/web/tiny_mce/plugins/table/editor_plugin_src.js
   xwiki/trunk/src/main/web/tiny_mce/plugins/table/table.htm
   xwiki/trunk/src/main/web/tiny_mce/plugins/wikiplugin/editor_plugin.js
   xwiki/trunk/src/main/web/tiny_mce/plugins/wikiplugin/editor_plugin_src.js
   xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/attachment.htm
   xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/editor_template.js
   xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/langs/en.js
   xwiki/trunk/src/main/web/tiny_mce/tiny_mce.js
   xwiki/trunk/src/main/web/tiny_mce/tiny_mce_popup.js
   xwiki/trunk/src/main/web/tiny_mce/tiny_mce_src.js
   xwiki/trunk/src/main/web/wiki_editor/plugins/attachments.js
   xwiki/trunk/src/main/web/wiki_editor/plugins/core.js
   xwiki/trunk/src/main/web/wiki_editor/themes/default.js
   xwiki/trunk/src/main/web/wiki_editor/wiki_editor.js
Log:
New version of the wysiwyg editor
Added switch from text to wysiwyg editor
Added browser detector to warn usage of editor in older browsers
Added macros wizard

Modified: xwiki/trunk/src/main/web/templates/edit.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/edit.vm	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/templates/edit.vm	2006-05-28 21:16:15 UTC (rev 1073)
@@ -55,6 +55,8 @@
 #end
 $msg.get("titlefield"):&nbsp;<input type="text" name="title" value="$!tdoc.title" size="60" />
 <br /><br />
+Switch to &nbsp; <span style="color: blue; cursor:pointer;" onclick="document.forms.edit.action='$doc.getURL("edit","xpage=wysiwyg")'; if (document.forms.edit.onsubmit) document.forms.edit.onsubmit();if (checkDocumentContent()) document.forms.edit.submit(); return false;"><u>$msg.get("wysiwygeditor")</u></span>
+<br />
 #includeHelp("EditWikiToolbar")
 $xwiki.getTextArea($tdoc.content)
 <br/>

Modified: xwiki/trunk/src/main/web/templates/httpheader.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/httpheader.vm	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/templates/httpheader.vm	2006-05-28 21:16:15 UTC (rev 1073)
@@ -18,6 +18,7 @@
 <script type="text/javascript" src="$xwiki.getSkinFile("skin.js")"></script>
 <script type="text/javascript" src="$xwiki.getSkinFile("prototype.js")"></script>
 <script type="text/javascript" src="$xwiki.getSkinFile("xwiki.js")"></script>
+<script type="text/javascript" src="$xwiki.getSkinFile("browserdetect.js")"></script>
 </head>
 #if(($context.action=="inline")||($context.action=="edit"))
 <script type="text/javascript">

Added: xwiki/trunk/src/main/web/templates/macrowysiwyg.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/macrowysiwyg.vm	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/templates/macrowysiwyg.vm	2006-05-28 21:16:15 UTC (rev 1073)
@@ -0,0 +1,84 @@
+#set($macros = $xwiki.getXWikiPreference("macros_mapping"))
+#set($macros = $macros.split('\n'))
+<form id="macroform" name="macroform" onsubmit="insertMacro(); return false;" action="">
+    <div>
+        <table width="100%" border="0" cellspacing="4" cellpadding="0">
+            <tr>
+                <td class="title" nowrap="nowrap">$msg.get("choosemacro")</td>
+            </tr>
+            <tr>
+                <td >
+                    <table cellspacing="0" cellpadding="0" width="100%" style="border: 0px">
+                         <tr>
+                            <td>
+                                <select id="selmacro" name="selmacro" style="border: 1px solid #808080; width:100%;" size="5" onchange="inputMacro();">
+                                    #foreach ($macro in $macros)
+                                        #if (!$macro.trim().equals(""))
+                                            #set($macroname = $macro.toString().substring(0,$macro.indexOf("=")))
+                                            <option value="$macroname">$macroname</option>
+                                        #end
+                                    #end
+                                </select>
+                             </td>
+                         </tr>
+                     </table>
+                </td>
+            </tr>
+        </table>
+    </div>
+    <hr />
+    <div id="input">
+    </div>
+    #foreach ($macro in $macros)
+        #if (!$macro.trim().equals(""))
+            #set($macroname = $macro.toString().substring(0,$macro.indexOf("=")).trim())
+            <div id="$macroname" style="display: none;" >
+                #set($index = $macro.indexOf("=") + 1)
+                #set($temp = $macro.substring($index))
+                #set($infoArr = $temp.split(':'))
+                #set($counter = 0)
+                #set($counparam = 0)
+                #set($macroparam = "")
+                <input type="hidden" id="macroname" name="macroname" value="$macroname" />
+                #foreach ($paramnum in $infoArr)
+                    #if($counparam == 2)
+                        #set($macroparam = $paramnum)
+                        <div>
+                        <fieldset>
+                            <legend>$msg.get("macro") $macroname</legend>
+                            <table width="100%" border="0" cellspacing="4" cellpadding="0">
+                                #foreach ($infoMacro in $infoArr)
+                                    #if ($counter == 2)
+                                        #set($params = $infoMacro.split(","))
+                                        #foreach ($param in $params)
+                                            <tr>
+                                                <td nowrap="nowrap">$param :</td>
+                                                <td>
+                                                     <input type="text" id="$param" name="$param" style="width:240px;"/>
+                                                </td>
+                                            </tr>
+                                        #end
+                                    #end
+                                    #if($counter == 3)
+                                        #if (!$infoMacro.equals(""))
+                                            <tr>
+                                                <td nowrap='nowrap'>Content :</td>
+                                                <td>
+                                                    <textarea id="content" name="content" rows='' cols='' style='width:240px;'></textarea>
+                                                </td>
+                                            </tr>
+                                        #end
+                                    #end
+                                    #set($counter = $counter + 1)
+                                #end
+                                </table>
+                            </fieldset>
+                        </div>
+                    #end
+                    #set($counparam = $counparam + 1)
+                #end
+                <input type="hidden" id="macroparam" name="macroparam" value="$macroparam" />
+            </div>
+        #end
+    #end
+</form>

Modified: xwiki/trunk/src/main/web/templates/wysiwyg.vm
===================================================================
--- xwiki/trunk/src/main/web/templates/wysiwyg.vm	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/templates/wysiwyg.vm	2006-05-28 21:16:15 UTC (rev 1073)
@@ -19,19 +19,23 @@
 <script language="javascript" type="text/javascript" src="${request.contextPath}/tiny_mce/tiny_mce.js"></script>
 <script language="javascript" type="text/javascript" src="${request.contextPath}/wiki_editor/wiki_editor.js"></script>
 <script language="javascript" type="text/javascript">
-	wikiEditor.init({
-	    language: "en",
-		elements : "content",
-		mode: "exact",
-		content_css: "$xwiki.getSkinFile("style.css")",
-		debug : false,
-		remove_linebreaks : false,
-		plugins: 'table, contextmenu, paste, searchreplace',
-		wiki_images_path : '${request.contextPath}/bin/download/$doc.web/$doc.name/',
-        	wiki_attach_path : '${request.contextPath}/bin/view/$doc.web/$doc.name',
-        wiki_plugins: 'core,attachments'
-	});
-
+    if ( browser.isIE || browser.isMozilla || browser.isGecko  || browser.isSafari) {
+        wikiEditor.init({
+            language: "en",
+            elements : "content",
+            mode: "exact",
+            content_css: "$xwiki.getSkinFile("style.css")",
+            debug : false,
+            remove_linebreaks : false,
+            plugins: 'table, contextmenu, paste, searchreplace',
+            wiki_images_path : '${request.contextPath}/bin/download/$doc.web/$doc.name/',
+            wiki_attach_path : '${request.contextPath}/bin/view/$doc.web/$doc.name',
+            wiki_macro_path : '${request.contextPath}/bin/view/$doc.web/$doc.name',
+            wiki_plugins: 'core,attachments,macros'
+        });
+   } else {
+        alert("$msg.get('browsernoncompatible')");
+   }
 </script>
 <div id="xwikieditcontent" class="large">
        <div id="columns">
@@ -61,6 +65,8 @@
 #end
 $msg.get("titlefield"):&nbsp;<input type="text" name="title" value="$!tdoc.title" size="60" />
 <br /><br />
+   Switch to &nbsp; <span style="color: blue; cursor:pointer;" onclick="document.forms.edit.action='$doc.getURL("edit")'; if (document.forms.edit.onsubmit) document.forms.edit.onsubmit();if (checkDocumentContent()) document.forms.edit.submit(); return false;"><u>$msg.get("wikieditor")</u></span>
+<br />
 $xwiki.getTextArea($tdoc.content)
 <br/>
 #if ($tdoc.language=="")

Modified: xwiki/trunk/src/main/web/tiny_mce/plugins/_template/editor_plugin.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/plugins/_template/editor_plugin.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/plugins/_template/editor_plugin.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -51,7 +51,6 @@
 				template['height'] = 180;
 
 				tinyMCE.openWindow(template, {editor_id : editor_id, some_custom_arg : "somecustomdata"});
-
 				// Let TinyMCE know that something was modified
 				tinyMCE.triggerNodeChange(false);
 			} else {

Modified: xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/editor_plugin.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/editor_plugin.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/editor_plugin.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -1,2 +1 @@
-/* Import plugin specific language pack */
- tinyMCE.importPluginLanguagePack('advimage','en,de,sv,zh_cn,cs,fa,fr_ca,fr,pl,pt_br,nl');function TinyMCE_advimage_getInsertImageTemplate(){var template=new Array();template['file']='../../plugins/advimage/image.htm';template['width']=430;template['height']=380;template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);return template;}function TinyMCE_advimage_cleanup(type,content){switch(type){case "insert_to_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=tinyMCE.getImageSrc(onmouseover))!=""){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseover',"this.src='"+src+"';");}if((src=tinyMCE.getImageSrc(onmouseout))!=""){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseout',"this.src='"+src+"';");}}break;case "get_from_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=tinyMCE.getImageSrc(onmouseover))!=""){src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseover',"this.src='"+src+"';");}if((src=tinyMCE.getImageSrc(onmouseout))!=""){src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseout',"this.src='"+src+"';");}}break;}return content;}
\ No newline at end of file
+tinyMCE.importPluginLanguagePack('advimage','en,de,sv,zh_cn,cs,fa,fr_ca,fr,pl,pt_br,nl');function TinyMCE_advimage_getInsertImageTemplate(){var template=new Array();template['file']='../../plugins/advimage/image.htm';template['width']=500;template['height']=350;template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);return template;}function TinyMCE_advimage_cleanup(type,content){switch(type){case"insert_to_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=tinyMCE.getImageSrc(onmouseover))!=""){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseover',"this.src='"+src+"';");}if((src=tinyMCE.getImageSrc(onmouseout))!=""){src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseout',"this.src='"+src+"';");}}break;case"get_from_editor_dom":var imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){var onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=tinyMCE.getImageSrc(onmouseover))!=""){src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseover',"this.src='"+src+"';");}if((src=tinyMCE.getImageSrc(onmouseout))!=""){src=eval(tinyMCE.settings['urlconverter_callback']+"(src, null, true);");imgs[i].setAttribute('onmouseout',"this.src='"+src+"';");}}break;}return content;}
\ No newline at end of file

Modified: xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/editor_plugin_src.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/editor_plugin_src.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/editor_plugin_src.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -6,10 +6,9 @@
  */
 function TinyMCE_advimage_getInsertImageTemplate() {
     var template = new Array();
-
     template['file']   = '../../plugins/advimage/image.htm';
-    template['width']  = 430;
-    template['height'] = 380; 
+    template['width']  = 500;
+    template['height'] = 350;
 
     // Language specific width and height addons
     template['width']  += tinyMCE.getLang('lang_insert_image_delta_width', 0);

Modified: xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/image.htm
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/image.htm	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/plugins/advimage/image.htm	2006-05-28 21:16:15 UTC (rev 1073)
@@ -65,7 +65,7 @@
         formObj.width.value  = tinyMCE.getWindowArg('width');
         formObj.height.value = tinyMCE.getWindowArg('height');
 
-		formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
+		formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true);
 
         strOnOver            = tinyMCE.getWindowArg('onmouseover');
         strOnOut             = tinyMCE.getWindowArg('onmouseout');
@@ -99,15 +99,15 @@
 		selectByValue(formObj, "image_list3", strOnOut);
 
 		// Handle preview
-        var htmlprev = ''; 
+        var htmlprev = '';
 
 		var src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], document.forms[0].src.value);
 		if (src == "")
 			src = "about:blank";
 
-        htmlprev += ' <iframe id="preview" name="preview" scrolling="auto" ' 
-        htmlprev += ' marginwidth="0" marginheight="0" frameborder="0" src="' + src + '"' 
-        htmlprev += ' style="margin:0px;border: 1px solid black;width:135px;height:135px"></iframe>'; 
+        htmlprev += ' <iframe id="preview" name="preview" scrolling="auto" '
+        htmlprev += ' marginwidth="0" marginheight="0" frameborder="0" src="' + src + '"'
+        htmlprev += ' style="margin:0px;border: 1px solid black;width:135px;height:135px"></iframe>';
 
         document.getElementById('prev').innerHTML = htmlprev;
 
@@ -168,7 +168,7 @@
 
 	function resetImageData() {
 		var formObj = document.forms[0];
-		formObj.width.value = formObj.height.value = "";	
+		formObj.width.value = formObj.height.value = "";
 	}
 
 	function updateImageData() {
@@ -198,7 +198,7 @@
 		if (src == "")
 			src = "about:blank";
 
-		self.preview.location = src; 
+		self.preview.location = src;
 	}
 
     function changeHeight() {
@@ -223,149 +223,149 @@
 //-->
 </script>
 </head>
-<body onload="init();"> 
-    <form onsubmit="insertImage();return false;"> 
-        <table border="0" cellpadding="0" cellspacing="0" width="300"> 
-            <tr> 
-                <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0"> 
-                    <tr> 
-                        <td colspan="3" class="title">{$lang_insert_image_title}</td> 
-                    </tr> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_src}:</td> 
-                      <td colspan="2"><table border="0" cellspacing="0" cellpadding="0"> 
-                            <tr> 
-                              <td><input name="src" type="text" id="src" value="" style="width: 280px" onchange="resetImageData();getImageData();" /></td> 
-                              <td id="browser1"></td> 
-                            </tr> 
-                          </table></td> 
-                    </tr> 
-                 <!-- Image list --> 
-                 <script language="javascript"> 
-                  if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) { 
-                     var html = ""; 
+<body onload="init();">
+    <form onsubmit="insertImage();return false;">
+        <table border="0" cellpadding="0" cellspacing="0" width="300">
+            <tr>
+                <td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
+                    <tr>
+                        <td colspan="3" class="title">{$lang_insert_image_title}</td>
+                    </tr>
+                    <tr>
+                        <td align="right" nowrap="nowrap">{$lang_insert_image_src}:</td>
+                      <td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
+                            <tr>
+                              <td><input name="src" type="text" id="src" value="" style="width: 280px" onchange="resetImageData();getImageData();" /></td>
+                              <td id="browser1"></td>
+                            </tr>
+                          </table></td>
+                    </tr>
+                 <!-- Image list -->
+                 <script language="javascript">
+                  if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
+                     var html = "";
                      html += '<tr><td align="right" nowrap="nowrap">{$lang_image_list}:</td>'; 
-                     html += '<td colspan="2"><select name="image_list" style="width: 280px" onchange="this.form.alt.value=this.options[this.selectedIndex].text;this.form.title.value=this.options[this.selectedIndex].text;this.form.src.value=this.options[this.selectedIndex].value;resetImageData();getImageData();">'; 
-                     html += '<option value="">---</option>'; 
+                     html += '<td colspan="2"><select name="image_list" style="width: 280px" onchange="this.form.alt.value=this.options[this.selectedIndex].text;this.form.title.value=this.options[this.selectedIndex].text;this.form.src.value=this.options[this.selectedIndex].value;resetImageData();getImageData();">';
+                     html += '<option value="">---</option>';
 
-                     for (var i=0; i<tinyMCEImageList.length; i++) 
-                        html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>'; 
+                     for (var i=0; i<tinyMCEImageList.length; i++)
+                        html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
 
-                     html += '</select></td></tr>'; 
+                     html += '</select></td></tr>';
 
-                     document.write(html); 
-                  } 
-                 </script> 
-                 <!-- /Image list --> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_alt}:</td> 
-                        <td colspan="2"><input name="alt" type="text" id="alt" value="" style="width: 280px" onblur="if(document.forms[0].title.value==''){ document.forms[0].title.value=this.value; }" onfocus="if(document.forms[0].title.value==''){ document.forms[0].title.value=this.value; }" /></td> 
-                    </tr> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_alt2}:</td> 
-                        <td colspan="2"><input name="title" type="text" id="title" value="" style="width: 280px" /></td> 
-                    </tr> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_dimensions}:</td> 
-                        <td nowrap="nowrap"> 
-                            <input name="width" type="text" id="width" value="" size="5" maxlength="5" style="vertical-align: middle; width: 50px; text-align: center;" onChange="changeHeight();" /> x 
-                            <input name="height" type="text" id="height" value="" size="5" maxlength="5" style="vertical-align: middle; width: 50px; text-align: center;" onChange="changeWidth();" /> px 
+                     document.write(html);
+                  }
+                 </script>
+                 <!-- /Image list -->
+                    <tr>
+                        <td align="right" nowrap="nowrap">{$lang_insert_image_alt}:</td>
+                        <td colspan="2"><input name="alt" type="text" id="alt" value="" style="width: 280px" onblur="if(document.forms[0].title.value==''){ document.forms[0].title.value=this.value; }" onfocus="if(document.forms[0].title.value==''){ document.forms[0].title.value=this.value; }" /></td>
+                    </tr>
+                    <tr>
+                        <td align="right" nowrap="nowrap">{$lang_insert_image_alt2}:</td>
+                        <td colspan="2"><input name="title" type="text" id="title" value="" style="width: 280px" /></td>
+                    </tr>
+                    <tr>
+                        <td align="right" nowrap="nowrap">{$lang_insert_image_dimensions}:</td>
+                        <td nowrap="nowrap">
+                            <input name="width" type="text" id="width" value="" size="5" maxlength="5" style="vertical-align: middle; width: 50px; text-align: center;" onChange="changeHeight();" /> x
+                            <input name="height" type="text" id="height" value="" size="5" maxlength="5" style="vertical-align: middle; width: 50px; text-align: center;" onChange="changeWidth();" /> px
                         </td>
-			<td rowspan="6" valign="top"><div id="prev" name="prev" style="margin:0px;border:none;width:135px;height:135px"></div></td> 
-                    </tr> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_border}:</td> 
-                        <td colspan="2"><input name="border" type="text" id="border" value="" size="3" maxlength="3" style="vertical-align: middle; width: 30px; text-align: center;" /></td> 
-                    </tr> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_align}:</td> 
-                        <td><select name="align" style="width: 100px"> 
-                                <option value="">{$lang_insert_image_align_default}</option> 
-                                <option value="baseline">{$lang_insert_image_align_baseline}</option> 
-                                <option value="top">{$lang_insert_image_align_top}</option> 
-                                <option value="middle">{$lang_insert_image_align_middle}</option> 
-                                <option value="bottom">{$lang_insert_image_align_bottom}</option> 
-                                <option value="texttop">{$lang_insert_image_align_texttop}</option> 
-                                <option value="absmiddle">{$lang_insert_image_align_absmiddle}</option> 
-                                <option value="absbottom">{$lang_insert_image_align_absbottom}</option> 
-                                <option value="left">{$lang_insert_image_align_left}</option> 
-                                <option value="right">{$lang_insert_image_align_right}</option> 
-                            </select> 
-                        </td> 
-                    </tr> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_vspace}:</td> 
-                        <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" style="vertical-align: middle; width: 30px; text-align: center;" /></td> 
-                    </tr> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap">{$lang_insert_image_hspace}:</td> 
-                        <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" style="vertical-align: middle; width: 30px; text-align: center;" /></td> 
-                    </tr> 
-                    <tr> 
-                        <td colspan="2" nowrap="nowrap"><input type="checkbox" name="onmousemove" id="onmousemove" style="border: 1px none #000000; background-color: transparent; vertical-align: middle;" onclick="if(this.checked==true){ setOnMouseInput('enabled'); }else{ setOnMouseInput('enable'); }" /><label for="onmousemove"><b>{$lang_insert_image_onmousemove}</b>:</label></td> 
-                    </tr> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap" id="showInput1">{$lang_insert_image_mouseover}:</td> 
-                        <td colspan="2"><table border="0" cellspacing="0" cellpadding="0"> 
-                            <tr> 
-                              <td><input name="onmouseover" type="text" id="onmouseover" value=""  style="width: 280px" /></td> 
-                              <td id="browser2"></td> 
-                            </tr> 
-                          </table></td> 
-                    </tr> 
-                 <!-- Image list --> 
-                 <script language="javascript"> 
-                  if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) { 
-                     var html = ""; 
+			<td rowspan="6" valign="top"><div id="prev" name="prev" style="margin:0px;border:none;width:135px;height:135px"></div></td>
+                    </tr>
+                    <tr>
+                        <td align="right" nowrap="nowrap">{$lang_insert_image_border}:</td>
+                        <td colspan="2"><input name="border" type="text" id="border" value="" size="3" maxlength="3" style="vertical-align: middle; width: 30px; text-align: center;" /></td>
+                    </tr>
+                    <tr>
+                        <td align="right" nowrap="nowrap">{$lang_insert_image_align}:</td>
+                        <td><select name="align" style="width: 100px">
+                                <option value="">{$lang_insert_image_align_default}</option>
+                                <option value="baseline">{$lang_insert_image_align_baseline}</option>
+                                <option value="top">{$lang_insert_image_align_top}</option>
+                                <option value="middle">{$lang_insert_image_align_middle}</option>
+                                <option value="bottom">{$lang_insert_image_align_bottom}</option>
+                                <option value="texttop">{$lang_insert_image_align_texttop}</option>
+                                <option value="absmiddle">{$lang_insert_image_align_absmiddle}</option>
+                                <option value="absbottom">{$lang_insert_image_align_absbottom}</option>
+                                <option value="left">{$lang_insert_image_align_left}</option>
+                                <option value="right">{$lang_insert_image_align_right}</option>
+                            </select>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td align="right" nowrap="nowrap">{$lang_insert_image_vspace}:</td>
+                        <td><input name="vspace" type="text" id="vspace" value="" size="3" maxlength="3" style="vertical-align: middle; width: 30px; text-align: center;" /></td>
+                    </tr>
+                    <tr>
+                        <td align="right" nowrap="nowrap">{$lang_insert_image_hspace}:</td>
+                        <td><input name="hspace" type="text" id="hspace" value="" size="3" maxlength="3" style="vertical-align: middle; width: 30px; text-align: center;" /></td>
+                    </tr>
+                    <tr>
+                        <td colspan="2" nowrap="nowrap"><input type="checkbox" name="onmousemove" id="onmousemove" style="border: 1px none #000000; background-color: transparent; vertical-align: middle;" onclick="if(this.checked==true){ setOnMouseInput('enabled'); }else{ setOnMouseInput('enable'); }" /><label for="onmousemove"><b>{$lang_insert_image_onmousemove}</b>:</label></td>
+                    </tr>
+                    <tr>
+                        <td align="right" nowrap="nowrap" id="showInput1">{$lang_insert_image_mouseover}:</td>
+                        <td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
+                            <tr>
+                              <td><input name="onmouseover" type="text" id="onmouseover" value=""  style="width: 280px" /></td>
+                              <td id="browser2"></td>
+                            </tr>
+                          </table></td>
+                    </tr>
+                 <!-- Image list -->
+                 <script language="javascript">
+                  if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
+                     var html = "";
 
-                     html += '<tr><td align="right" nowrap="nowrap">{$lang_image_list}:</td>'; 
-                     html += '<td colspan="2"><select name="image_list2" style="width: 280px" onchange="this.form.onmouseover.value=this.options[this.selectedIndex].value;">'; 
-                     html += '<option value="">---</option>'; 
+                     html += '<tr><td align="right" nowrap="nowrap">{$lang_image_list}:</tcd>';
+                     html += '<td colspan="2"><select name="image_list2" style="width: 280px" onchange="this.form.onmouseover.value=this.options[this.selectedIndex].value;">';
+                     html += '<option value="">---</option>';
 
-                     for (var i=0; i<tinyMCEImageList.length; i++) 
-                        html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>'; 
+                     for (var i=0; i<tinyMCEImageList.length; i++)
+                        html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
 
-                     html += '</select></td></tr>'; 
+                     html += '</select></td></tr>';
 
-                     document.write(html); 
-                  } 
-                 </script> 
-                 <!-- /Image list --> 
-                    <tr> 
-                        <td align="right" nowrap="nowrap" id="showInput2">{$lang_insert_image_mouseout}:</td> 
-                        <td colspan="2"><table border="0" cellspacing="0" cellpadding="0"> 
-                            <tr> 
-                              <td><input name="onmouseout" type="text" id="onmouseout" value=""  style="width: 280px" /></td> 
-                              <td id="browser3"></td> 
-                            </tr> 
-                          </table></td> 
-                    </tr> 
-                 <!-- Image list --> 
-                 <script language="javascript"> 
-                  if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) { 
-                     var html = ""; 
+                     document.write(html);
+                  }
+                 </script>
+                 <!-- /Image list -->
+                    <tr>
+                        <td align="right" nowrap="nowrap" id="showInput2">{$lang_insert_image_mouseout}:</td>
+                        <td colspan="2"><table border="0" cellspacing="0" cellpadding="0">
+                            <tr>
+                              <td><input name="onmouseout" type="text" id="onmouseout" value=""  style="width: 280px" /></td>
+                              <td id="browser3"></td>
+                            </tr>
+                          </table></td>
+                    </tr>
+                 <!-- Image list -->
+                 <script language="javascript">
+                  if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
+                     var html = "";
 
-                     html += '<tr><td align="right" nowrap="nowrap">{$lang_image_list}:</td>'; 
-                     html += '<td colspan="2"><select name="image_list3" style="width: 280px" onchange="this.form.onmouseout.value=this.options[this.selectedIndex].value;">'; 
-                     html += '<option value="">---</option>'; 
+                     html += '<tr><td align="right" nowrap="nowrap">{$lang_image_list}:</td>';
+                     html += '<td colspan="2"><select name="image_list3" style="width: 280px" onchange="this.form.onmouseout.value=this.options[this.selectedIndex].value;">';
+                     html += '<option value="">---</option>';
 
-                     for (var i=0; i<tinyMCEImageList.length; i++) 
-                        html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>'; 
+                     for (var i=0; i<tinyMCEImageList.length; i++)
+                        html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
 
-                     html += '</select></td></tr>'; 
+                     html += '</select></td></tr>';
 
-                     document.write(html); 
-                  } 
-                 </script> 
-                 <!-- /Image list --> 
-                    <tr> 
-                        <td><input type="button" name="insert" value="{$lang_insert}" onclick="insertImage();" id="insert" /></td> 
-                        <td>&nbsp;</td> 
-                        <td align="right"><input type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" /></td> 
-                    </tr> 
-                </table></td> 
-            </tr> 
-        </table> 
+                     document.write(html);
+                  }
+                 </script>
+                 <!-- /Image list -->
+                    <tr>
+                        <td><input type="button" name="insert" value="{$lang_insert}" onclick="insertImage();" id="insert" /></td>
+                        <td>&nbsp;</td>
+                        <td align="right"><input type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" /></td>
+                    </tr>
+                </table></td>
+            </tr>
+        </table>
     </form>
-</body> 
-</html> 
+</body>
+</html>

Modified: xwiki/trunk/src/main/web/tiny_mce/plugins/table/editor_plugin.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/plugins/table/editor_plugin.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/plugins/table/editor_plugin.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -1 +1 @@
-tinyMCE.importPluginLanguagePack('table','en,ar,cs,da,de,el,es,fi,fr_ca,hu,it,ja,ko,nl,no,pl,pt,sv,tw,zh_cn,fr,de');function TinyMCE_table_initInstance(inst){if(tinyMCE.isGecko)tinyMCE.addEvent(inst.getDoc(),"mouseup",TinyMCE_table_mouseDownHandler);inst.tableRowClipboard=null;}function TinyMCE_table_mouseDownHandler(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual']);},10);}}function TinyMCE_table_getControlHTML(control_name){var controls=new Array(['table','table.gif','{$lang_table_desc}','mceInsertTable',true],['delete_col','table_delete_col.gif','{$lang_table_delete_col_desc}','mceTableDeleteCol'],['delete_row','table_delete_row.gif','{$lang_table_delete_row_desc}','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','{$lang_table_insert_col_after_desc}','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','{$lang_table_insert_col_before_desc}','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','{$lang_table_insert_row_after_desc}','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','{$lang_table_insert_row_before_desc}','mceTableInsertRowBefore'],['row_props','table_row_props.gif','{$lang_table_row_desc}','mceTableRowProps',true],['cell_props','table_cell_props.gif','{$lang_table_cell_desc}','mceTableCellProps',true],['split_cells','table_split_cells.gif','{$lang_table_split_cells_desc}','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','{$lang_table_merge_cells_desc}','mceTableMergeCells',true]);for(var i=0;i<controls.length;i++){var but=controls[i];var safariPatch='" onclick="';if(tinyMCE.isSafari)safariPatch="";if(but[0]==control_name&&(tinyMCE.isMSIE||!tinyMCE.settings['button_tile_map']))return'<img id="{$editor_id}_'+but[0]+'" src="{$pluginurl}/images/'+but[1]+'" title="'+but[2]+'" width="20" height="20" class="mceButtonDisabled" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');'+safariPatch+'tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+')">';else if(but[0]==control_name)return'<img id="{$editor_id}_'+but[0]+'" src="{$themeurl}/images/spacer.gif" style="background-image:url({$pluginurl}/images/buttons.gif); background-position: '+(0-(i*20))+'px 0px" title="'+but[2]+'" width="20" height="20" class="mceButtonDisabled" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');'+safariPatch+'tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+')">';}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html;}return"";}function TinyMCE_table_execCommand(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true;}return false;}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan};}function getCellPos(grid,td){for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y};}}return null;}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null;}function getTableGrid(table){var grid=new Array();var rows=table.rows;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].cells.length;x++){var td=rows[y].cells[x];var sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(var y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new Array();for(var x2=xstart;x2<xstart+sd['colspan'];x2++){grid[y2][x2]=td;}}}}return grid;}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table);var cpos=getCellPos(grid,td);if(new_tr.cells.length!=tr.childNodes.length){var cells=tr.childNodes;var lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true;}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true;}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td;}deleteMarked(tableElm);}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node;}return null;}function nextElm(node,name){while((node=node.nextSibling)!=null){if(node.nodeName==name)return node;}return null;}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue;}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD");if(td._delete)td.parentNode.removeChild(td);}while((td=nexttd)!=null);}}while((tr=next)!=null);}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR");}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break;}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm;}return newTR;}switch(command){case"mceTableRowProps":if(trElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/row.htm';if(tinyMCE.settings['table_color_fields']){template['width']=400;template['height']=220;}else{template['width']=340;template['height']=220;}tinyMCE.openWindow(template,{editor_id:inst.editorId,align:tinyMCE.getAttrib(trElm,'align'),valign:tinyMCE.getAttrib(trElm,'valign'),height:tinyMCE.getAttrib(trElm,'height'),className:tinyMCE.getVisualAidClass(tinyMCE.getAttrib(trElm,'class'),false),bordercolor:tinyMCE.getAttrib(trElm,'bordercolor'),bgcolor:tinyMCE.getAttrib(trElm,'bgcolor')});}else{inst.execCommand("mceAddUndoLevel");trElm.setAttribute('align',value['align']);trElm.setAttribute('vAlign',value['valign']);trElm.setAttribute('height',value['height']);trElm.setAttribute('bordercolor',value['bordercolor']);trElm.setAttribute('bgcolor',value['bgcolor']);tinyMCE.setAttrib(trElm,'class',value['className']);trElm.borderColor=value['bordercolor'];trElm.bgColor=value['bgcolor'];}tinyMCE.triggerNodeChange();return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/cell.htm';if(tinyMCE.settings['table_color_fields']){template['width']=400;template['height']=240;}else{template['width']=340;template['height']=220;}tinyMCE.openWindow(template,{editor_id:inst.editorId,align:tinyMCE.getAttrib(tdElm,'align'),valign:tinyMCE.getAttrib(tdElm,'valign'),width:tinyMCE.getAttrib(tdElm,'width'),height:tinyMCE.getAttrib(tdElm,'height'),className:tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm,'class'),false),bordercolor:tinyMCE.getAttrib(tdElm,'bordercolor'),bgcolor:tinyMCE.getAttrib(tdElm,'bgcolor')});}else{inst.execCommand("mceAddUndoLevel");tdElm.setAttribute('align',value['align']);tdElm.setAttribute('vAlign',value['valign']);tdElm.setAttribute('width',value['width']);tdElm.setAttribute('height',value['height']);tdElm.setAttribute('bordercolor',value['bordercolor']);tdElm.setAttribute('bgcolor',value['bgcolor']);tinyMCE.setAttrib(tdElm,'class',tinyMCE.getVisualAidClass(value['className']));tdElm.borderColor=value['bordercolor'];tdElm.bgColor=value['bgcolor'];}tinyMCE.triggerNodeChange();return true;case"mceInsertTable":if(user_interface){var cols=2,rows=2,border=0,cellpadding="",cellspacing="",align="",width="",height="",bordercolor="",bgcolor="",action="insert",className="";tinyMCE.tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");if(tinyMCE.tableElm&&value!="insert"){var rowsAr=tinyMCE.tableElm.rows;var cols=0;for(var i=0;i<rowsAr.length;i++)if(rowsAr[i].cells.length>cols)cols=rowsAr[i].cells.length;cols=cols;rows=rowsAr.length;border=tinyMCE.getAttrib(tinyMCE.tableElm,'border',border);cellpadding=tinyMCE.getAttrib(tinyMCE.tableElm,'cellpadding',"");cellspacing=tinyMCE.getAttrib(tinyMCE.tableElm,'cellspacing',"");width=tinyMCE.getAttrib(tinyMCE.tableElm,'width',width);height=tinyMCE.getAttrib(tinyMCE.tableElm,'height',height);bordercolor=tinyMCE.getAttrib(tinyMCE.tableElm,'bordercolor',bordercolor);bgcolor=tinyMCE.getAttrib(tinyMCE.tableElm,'bgcolor',bgcolor);align=tinyMCE.getAttrib(tinyMCE.tableElm,'align',align);className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm,'class'),false);if(tinyMCE.isMSIE){width=tinyMCE.tableElm.style.pixelWidth==0?tinyMCE.tableElm.getAttribute("width"):tinyMCE.tableElm.style.pixelWidth;height=tinyMCE.tableElm.style.pixelHeight==0?tinyMCE.tableElm.getAttribute("height"):tinyMCE.tableElm.style.pixelHeight;}action="update";}var template=new Array();template['file']='../../plugins/table/table.htm';if(tinyMCE.settings['table_color_fields']){template['width']=400;template['height']=240;}else{template['width']=340;template['height']=220;}template['width']+=tinyMCE.getLang('lang_insert_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_table_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,cols:cols,rows:rows,border:border,cellpadding:cellpadding,cellspacing:cellspacing,align:align,width:width,height:height,bordercolor:bordercolor,bgcolor:bgcolor,action:action,className:className});}else{var html='';var cols=2,rows=2,border=0,cellpadding=-1,cellspacing=-1,align,width,height,className,action;if(typeof(value)=='object'){cols=value['cols'];rows=value['rows'];border=value['border']!=""?value['border']:0;cellpadding=value['cellpadding']!=""?value['cellpadding']:-1;cellspacing=value['cellspacing']!=""?value['cellspacing']:-1;align=value['align'];width=value['width'];height=value['height'];bordercolor=value['bordercolor'];bgcolor=value['bgcolor'];className=value['className'];action=value['action'];}if(tinyMCE.tableElm&&action=="update"){inst.execCommand("mceAddUndoLevel");tinyMCE.setAttrib(tinyMCE.tableElm,'cellPadding',cellpadding,true);tinyMCE.setAttrib(tinyMCE.tableElm,'cellSpacing',cellspacing,true);tinyMCE.setAttrib(tinyMCE.tableElm,'border',border,true);tinyMCE.setAttrib(tinyMCE.tableElm,'width',width,true);tinyMCE.setAttrib(tinyMCE.tableElm,'height',height,true);tinyMCE.setAttrib(tinyMCE.tableElm,'bordercolor',bordercolor);tinyMCE.setAttrib(tinyMCE.tableElm,'bgcolor',bgcolor);tinyMCE.setAttrib(tinyMCE.tableElm,'align',align);tinyMCE.setAttrib(tinyMCE.tableElm,'class',className);if(tinyMCE.isMSIE){tinyMCE.tableElm.style.pixelWidth=(width==null||width=="")?0:width;tinyMCE.tableElm.style.pixelHeight=(height==null||height=="")?0:height;tinyMCE.tableElm.borderColor=bordercolor;tinyMCE.tableElm.bgColor=bgcolor;}tinyMCE.handleVisualAid(tinyMCE.tableElm,false,inst.visualAid);tinyMCE.tableElm.outerHTML=tinyMCE.tableElm.outerHTML;tinyMCE.triggerNodeChange();return true;}html+="<table class=\"wiki-table\" cellpadding=\"0\" cellspacing=\"0\">";for(var y=0;y<rows;y++){if(y==0){html+="<tr>";for(var x=0;x<cols;x++)html+='<td>&nbsp;</td>';html+="</tr>";}else{html+="<tr>";for(var x=0;x<cols;x++)html+='<td>&nbsp;</td>';html+="</tr>";}}html+="</table>";inst.execCommand('mceInsertContent',false,html);}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":inst.execCommand("mceAddUndoLevel");if(!tableElm)return true;if(tableElm.firstChild&&tableElm.firstChild.nodeName.toLowerCase()=="tbody")tableElm=tableElm.firstChild;if(tableElm&&trElm){switch(command){case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR);}break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm.parentNode.removeChild(tableElm);return true;}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD);}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1;}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true;}lastTDElm=tdElm;}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;inst.selectNode(getCell(grid,cpos.rowindex,0),true,true);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm);}else tdElm.colSpan++;lastTDElm=tdElm;}}break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD);}else tdElm.colSpan++;lastTDElm=tdElm;}}break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm.parentNode.removeChild(tableElm);return true;}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm);}lastTDElm=tdElm;}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;inst.selectNode(getCell(grid,0,cpos.cellindex),true,true);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";trElm.insertBefore(newTD,nextElm(tdElm,"TD"));if(rowspan>1)addRows(newTD,trElm,rowspan);}addRows(tdElm,trElm,rowspan);}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case"mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=160;template['height']=220;tinyMCE.openWindow(template,{editor_id:inst.editorId,action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true;}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=new Array();for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td;}}if(rowCells.length>0)rows[rows.length]=rowCells;}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD")cells[cells.length]=tdElm;}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=new Array();for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td;}}}if(rowCells.length>0)rows[rows.length]=rowCells;}var curRow=new Array();var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y;}x2=x;y2=y;grid[y][x]._selected=true;}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true;}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true;}lastRowSpan=sd['rowspan'];}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1;}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true;}lastColSpan=sd['colspan'];}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1;}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!="&nbsp;"&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm;}if(tdElm.rowSpan>1)tdElm.rowSpan--;}}}}break;}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual']);tinyMCE.triggerNodeChange();inst.repaint();}return true;}return false;}function TinyMCE_table_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1";var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClassSticky(editor_id+'_table','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_row_props','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_cell_props','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_split_cells','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_merge_cells','mceButtonDisabled',true);if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClassSticky(editor_id+'_row_props','mceButtonSelected',false);if(tdElm=tinyMCE.getParentElement(node,"td")){tinyMCE.switchClassSticky(editor_id+'_cell_props','mceButtonSelected',false);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonNormal',false);colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClassSticky(editor_id+'_split_cells','mceButtonNormal',false);}if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClassSticky(editor_id+'_table','mceButtonSelected');tinyMCE.switchClassSticky(editor_id+'_merge_cells','mceButtonNormal',false);}}
\ No newline at end of file
+tinyMCE.importPluginLanguagePack('table','en,ar,cs,da,de,el,es,fi,fr_ca,hu,it,ja,ko,nl,no,pl,pt,sv,tw,zh_cn,fr,de');function TinyMCE_table_initInstance(inst){if(tinyMCE.isGecko)tinyMCE.addEvent(inst.getDoc(),"mouseup",TinyMCE_table_mouseDownHandler);inst.tableRowClipboard=null;}function TinyMCE_table_mouseDownHandler(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual']);},10);}}function TinyMCE_table_getControlHTML(control_name){var controls=new Array(['table','table.gif','{$lang_table_desc}','mceInsertTable',true],['delete_col','table_delete_col.gif','{$lang_table_delete_col_desc}','mceTableDeleteCol'],['delete_row','table_delete_row.gif','{$lang_table_delete_row_desc}','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','{$lang_table_insert_col_after_desc}','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','{$lang_table_insert_col_before_desc}','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','{$lang_table_insert_row_after_desc}','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','{$lang_table_insert_row_before_desc}','mceTableInsertRowBefore'],['row_props','table_row_props.gif','{$lang_table_row_desc}','mceTableRowProps',true],['cell_props','table_cell_props.gif','{$lang_table_cell_desc}','mceTableCellProps',true],['split_cells','table_split_cells.gif','{$lang_table_split_cells_desc}','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','{$lang_table_merge_cells_desc}','mceTableMergeCells',true]);for(var i=0;i<controls.length;i++){var but=controls[i];var safariPatch='" onclick="';if(tinyMCE.isSafari)safariPatch="";if(but[0]==control_name&&(tinyMCE.isMSIE||!tinyMCE.settings['button_tile_map']))return'<img id="{$editor_id}_'+but[0]+'" src="{$pluginurl}/images/'+but[1]+'" title="'+but[2]+'" width="20" height="20" class="mceButtonDisabled" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');'+safariPatch+'tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+')">';else if(but[0]==control_name)return'<img id="{$editor_id}_'+but[0]+'" src="{$themeurl}/images/spacer.gif" style="background-image:url({$pluginurl}/images/buttons.gif); background-position: '+(0-(i*20))+'px 0px" title="'+but[2]+'" width="20" height="20" class="mceButtonDisabled" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');'+safariPatch+'tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\', '+(but.length>4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+')">';}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html;}return"";}function TinyMCE_table_execCommand(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i<ar.length;i++){if(ar[i].length>0&&inArray(ar[i],v))return true;if(ar[i]==v)return true;}return false;}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan};}function getCellPos(grid,td){for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y};}}return null;}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return grid[row][col];return null;}function getTableGrid(table){var grid=new Array();var rows=table.rows;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].cells.length;x++){var td=rows[y].cells[x];var sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(var y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new Array();for(var x2=xstart;x2<xstart+sd['colspan'];x2++){grid[y2][x2]=td;}}}}return grid;}function trimRow(table,tr,td,new_tr){var grid=getTableGrid(table);var cpos=getCellPos(grid,td);if(new_tr.cells.length!=tr.childNodes.length){var cells=tr.childNodes;var lastElm=null;for(var x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true;}else if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true;}if((lastElm==null||td!=lastElm)&&sd.rowspan>1)td.rowSpan=sd.rowspan+1;lastElm=td;}deleteMarked(tableElm);}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node;}return null;}function nextElm(node,name){while((node=node.nextSibling)!=null){if(node.nodeName==name)return node;}return null;}function deleteMarked(tbl){if(tbl.rows==0)return;var tr=tbl.rows[0];do{var next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue;}var td=tr.cells[0];if(td.cells>1){do{var nexttd=nextElm(td,"TD");if(td._delete)td.parentNode.removeChild(td);}while((td=nexttd)!=null);}}while((tr=next)!=null);}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR");}}function copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var newTD=null;if(lastCell!=tdElm){for(var i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break;}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm;}return newTR;}switch(command){case"mceTableRowProps":if(trElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/row.htm';if(tinyMCE.settings['table_color_fields']){template['width']=400;template['height']=220;}else{template['width']=340;template['height']=220;}tinyMCE.openWindow(template,{editor_id:inst.editorId,align:tinyMCE.getAttrib(trElm,'align'),valign:tinyMCE.getAttrib(trElm,'valign'),height:tinyMCE.getAttrib(trElm,'height'),className:tinyMCE.getVisualAidClass(tinyMCE.getAttrib(trElm,'class'),false),bordercolor:tinyMCE.getAttrib(trElm,'bordercolor'),bgcolor:tinyMCE.getAttrib(trElm,'bgcolor')});}else{inst.execCommand("mceAddUndoLevel");trElm.setAttribute('align',value['align']);trElm.setAttribute('vAlign',value['valign']);trElm.setAttribute('height',value['height']);trElm.setAttribute('bordercolor',value['bordercolor']);trElm.setAttribute('bgcolor',value['bgcolor']);tinyMCE.setAttrib(trElm,'class',value['className']);trElm.borderColor=value['bordercolor'];trElm.bgColor=value['bgcolor'];}tinyMCE.triggerNodeChange();return true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){var template=new Array();template['file']='../../plugins/table/cell.htm';if(tinyMCE.settings['table_color_fields']){template['width']=400;template['height']=240;}else{template['width']=340;template['height']=220;}tinyMCE.openWindow(template,{editor_id:inst.editorId,align:tinyMCE.getAttrib(tdElm,'align'),valign:tinyMCE.getAttrib(tdElm,'valign'),width:tinyMCE.getAttrib(tdElm,'width'),height:tinyMCE.getAttrib(tdElm,'height'),className:tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm,'class'),false),bordercolor:tinyMCE.getAttrib(tdElm,'bordercolor'),bgcolor:tinyMCE.getAttrib(tdElm,'bgcolor')});}else{inst.execCommand("mceAddUndoLevel");tdElm.setAttribute('align',value['align']);tdElm.setAttribute('vAlign',value['valign']);tdElm.setAttribute('width',value['width']);tdElm.setAttribute('height',value['height']);tdElm.setAttribute('bordercolor',value['bordercolor']);tdElm.setAttribute('bgcolor',value['bgcolor']);tinyMCE.setAttrib(tdElm,'class',tinyMCE.getVisualAidClass(value['className']));tdElm.borderColor=value['bordercolor'];tdElm.bgColor=value['bgcolor'];}tinyMCE.triggerNodeChange();return true;case"mceInsertTable":if(user_interface){var cols=2,rows=2,border=0,cellpadding="",cellspacing="",align="",width="",height="",bordercolor="",bgcolor="",action="insert",className="";tinyMCE.tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");if(tinyMCE.tableElm&&value!="insert"){var rowsAr=tinyMCE.tableElm.rows;var cols=0;for(var i=0;i<rowsAr.length;i++)if(rowsAr[i].cells.length>cols)cols=rowsAr[i].cells.length;cols=cols;rows=rowsAr.length;border=tinyMCE.getAttrib(tinyMCE.tableElm,'border',border);cellpadding=tinyMCE.getAttrib(tinyMCE.tableElm,'cellpadding',"");cellspacing=tinyMCE.getAttrib(tinyMCE.tableElm,'cellspacing',"");width=tinyMCE.getAttrib(tinyMCE.tableElm,'width',width);height=tinyMCE.getAttrib(tinyMCE.tableElm,'height',height);bordercolor=tinyMCE.getAttrib(tinyMCE.tableElm,'bordercolor',bordercolor);bgcolor=tinyMCE.getAttrib(tinyMCE.tableElm,'bgcolor',bgcolor);align=tinyMCE.getAttrib(tinyMCE.tableElm,'align',align);className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm,'class'),false);if(tinyMCE.isMSIE){width=tinyMCE.tableElm.style.pixelWidth==0?tinyMCE.tableElm.getAttribute("width"):tinyMCE.tableElm.style.pixelWidth;height=tinyMCE.tableElm.style.pixelHeight==0?tinyMCE.tableElm.getAttribute("height"):tinyMCE.tableElm.style.pixelHeight;}action="update";}var template=new Array();template['file']='../../plugins/table/table.htm';if(tinyMCE.settings['table_color_fields']){template['width']=400;template['height']=240;}else{template['width']=340;template['height']=220;}template['width']+=tinyMCE.getLang('lang_insert_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_table_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,cols:cols,rows:rows,border:border,cellpadding:cellpadding,cellspacing:cellspacing,align:align,width:width,height:height,bordercolor:bordercolor,bgcolor:bgcolor,action:action,className:className});}else{var html='';var cols=2,rows=2,border=0,cellpadding=-1,cellspacing=-1,align,width,height,className,action;if(typeof(value)=='object'){cols=value['cols'];rows=value['rows'];border=value['border']!=""?value['border']:0;cellpadding=value['cellpadding']!=""?value['cellpadding']:-1;cellspacing=value['cellspacing']!=""?value['cellspacing']:-1;align=value['align'];width=value['width'];height=value['height'];bordercolor=value['bordercolor'];bgcolor=value['bgcolor'];className=value['className'];action=value['action'];}if(tinyMCE.tableElm&&action=="update"){inst.execCommand("mceAddUndoLevel");tinyMCE.setAttrib(tinyMCE.tableElm,'cellPadding',cellpadding,true);tinyMCE.setAttrib(tinyMCE.tableElm,'cellSpacing',cellspacing,true);tinyMCE.setAttrib(tinyMCE.tableElm,'border',border,true);tinyMCE.setAttrib(tinyMCE.tableElm,'width',width,true);tinyMCE.setAttrib(tinyMCE.tableElm,'height',height,true);tinyMCE.setAttrib(tinyMCE.tableElm,'bordercolor',bordercolor);tinyMCE.setAttrib(tinyMCE.tableElm,'bgcolor',bgcolor);tinyMCE.setAttrib(tinyMCE.tableElm,'align',align);tinyMCE.setAttrib(tinyMCE.tableElm,'class',className);if(tinyMCE.isMSIE){tinyMCE.tableElm.style.pixelWidth=(width==null||width=="")?0:width;tinyMCE.tableElm.style.pixelHeight=(height==null||height=="")?0:height;tinyMCE.tableElm.borderColor=bordercolor;tinyMCE.tableElm.bgColor=bgcolor;}tinyMCE.handleVisualAid(tinyMCE.tableElm,false,inst.visualAid);tinyMCE.tableElm.outerHTML=tinyMCE.tableElm.outerHTML;tinyMCE.triggerNodeChange();return true;}html+="<table class=\"wiki-table\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">";for(var y=0;y<rows;y++){if(y==0){html+="<tr>";for(var x=0;x<cols;x++)html+='<td style=\"background:#b6c5f2;font-weight:bold;\">&nbsp;</td>';html+="</tr>";}else{html+="<tr>";for(var x=0;x<cols;x++)html+='<td  style=\"background:#FFFFFF\">&nbsp;</td>';html+="</tr>";}}html+="</table>";inst.execCommand('mceInsertContent',false,html);}return true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":inst.execCommand("mceAddUndoLevel");if(!tableElm)return true;if(tableElm.firstChild&&tableElm.firstChild.nodeName.toLowerCase()=="tbody")tableElm=tableElm.firstChild;if(tableElm&&trElm){switch(command){case"mceTableInsertRowBefore":if(!trElm||!tdElm)return true;trElm.bgColor="#b6c5f2";var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTD.bgColor="#b6c5f2";newTD.style.cssText="font-weight:bold;";newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTableCutRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return true;var newTR=inst.tableRowClipboard.cloneNode(true);var prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return true;var nextTR=nextElm(trElm,"TR");var newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc.createElement("tr");var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD);}else tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm;}}if(newTR.hasChildNodes()){var nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else tableElm.appendChild(newTR);}break;case"mceTableDeleteRow":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm.parentNode.removeChild(tableElm);return true;}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var x=0;x<cells.length;x++){if(cells[x].rowSpan>1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD);}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1;}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true;}lastTDElm=tdElm;}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;inst.selectNode(getCell(grid,cpos.rowindex,0),true,true);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;if(y==0){newTD.bgColor="#b6c5f2";newTD.style.cssText="font-weight:bold;";}tdElm.parentNode.insertBefore(newTD,tdElm);}else tdElm.colSpan++;lastTDElm=tdElm;}}break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";newTD.rowSpan=tdElm.rowSpan;if(y==0){newTD.bgColor="#b6c5f2";newTD.style.cssText="font-weight:bold;";}var nextTD=nextElm(tdElm,"TD");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD);}else tdElm.colSpan++;lastTDElm=tdElm;}}break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm.parentNode.removeChild(tableElm);return true;}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm);}lastTDElm=tdElm;}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;inst.selectNode(getCell(grid,0,cpos.cellindex),true,true);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i<colspan;i++){var newTD=doc.createElement("td");newTD.innerHTML="&nbsp;";trElm.insertBefore(newTD,nextElm(tdElm,"TD"));if(rowspan>1)addRows(newTD,trElm,rowspan);}addRows(tdElm,trElm,rowspan);}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case"mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=160;template['height']=220;tinyMCE.openWindow(template,{editor_id:inst.editorId,action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true;}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y<grid.length;y++){var rowCells=new Array();for(var x=cpos.cellindex;x<grid[y].length;x++){var td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td;}}if(rowCells.length>0)rows[rows.length]=rowCells;}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.childNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD")cells[cells.length]=tdElm;}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var rowCells=new Array();for(var x=0;x<tRows[y].cells.length;x++){var td=tRows[y].cells[x];for(var i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td;}}}if(rowCells.length>0)rows[rows.length]=rowCells;}var curRow=new Array();var lastTR=null;for(var y=0;y<grid.length;y++){for(var x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y;}x2=x;y2=y;grid[y][x]._selected=true;}}}}for(var y=y1;y<=y2;y++){for(var x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for merge.");return true;}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid selection for merge.");return true;}lastRowSpan=sd['rowspan'];}if(rowColSpan>colSpan)colSpan=rowColSpan;lastRowSpan=-1;}var lastColSpan=-1;for(var x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid selection for merge.");return true;}lastColSpan=sd['colspan'];}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1;}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[ \t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!="&nbsp;"&&(x+y>0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm;}if(tdElm.rowSpan>1)tdElm.rowSpan--;}}}}break;}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual']);tinyMCE.triggerNodeChange();inst.repaint();}return true;}return false;}function TinyMCE_table_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1";var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClassSticky(editor_id+'_table','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_row_props','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_cell_props','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_split_cells','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_merge_cells','mceButtonDisabled',true);if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClassSticky(editor_id+'_row_props','mceButtonSelected',false);if(tdElm=tinyMCE.getParentElement(node,"td")){tinyMCE.switchClassSticky(editor_id+'_cell_props','mceButtonSelected',false);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonNormal',false);colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClassSticky(editor_id+'_split_cells','mceButtonNormal',false);}if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClassSticky(editor_id+'_table','mceButtonSelected');tinyMCE.switchClassSticky(editor_id+'_merge_cells','mceButtonNormal',false);}}
\ No newline at end of file

Modified: xwiki/trunk/src/main/web/tiny_mce/plugins/table/editor_plugin_src.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/plugins/table/editor_plugin_src.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/plugins/table/editor_plugin_src.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -26,7 +26,7 @@
  */
 function TinyMCE_table_getControlHTML(control_name) {
 	var controls = new Array(
-		['table', 'table.gif', '{$lang_table_desc}', 'mceInsertTable', true],
+        ['table', 'table.gif', '{$lang_table_desc}', 'mceInsertTable', true],
 		['delete_col', 'table_delete_col.gif', '{$lang_table_delete_col_desc}', 'mceTableDeleteCol'],
 		['delete_row', 'table_delete_row.gif', '{$lang_table_delete_row_desc}', 'mceTableDeleteRow'],
 		['col_after', 'table_insert_col_after.gif', '{$lang_table_insert_col_after_desc}', 'mceTableInsertColAfter'],
@@ -378,7 +378,7 @@
 			tinyMCE.triggerNodeChange();
 			return true;
 
-		case "mceInsertTable":
+        case "mceInsertTable":
 			if (user_interface) {
 				var cols = 2, rows = 2, border = 0, cellpadding = "", cellspacing = "", align = "", width = "", height = "", bordercolor = "", bgcolor = "", action = "insert", className = "";
 
@@ -480,51 +480,21 @@
 					tinyMCE.triggerNodeChange();
 					return true;
 				}
+                html += "<table class=\"wiki-table\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">";
 
-				// Create new table
-				/*html += '<table border="' + border + '" ';
-
-				if (cellpadding != -1)
-					html += 'cellpadding="' + cellpadding + '" ';
-
-				if (cellspacing != -1)
-					html += 'cellspacing="' + cellspacing + '" ';
-
-				if (width != 0 && width != "")
-					html += 'width="' + width + '" ';
-
-				if (height != 0 && height != "")
-					html += 'height="' + height + '" ';
-
-				if (bordercolor != 0 && bordercolor != "")
-					html += 'bordercolor="' + bordercolor + '" ';
-
-				if (bgcolor != 0 && bgcolor != "")
-					html += 'bgcolor="' + bgcolor + '" ';
-
-				if (align)
-					html += 'align="' + align + '" ';
-
-				if (className)
-					html += 'class="' + tinyMCE.getVisualAidClass(className, border == 0) + '" ';
-
-				html += '>';
-                */
-                html += "<table class=\"wiki-table\" cellpadding=\"0\" cellspacing=\"0\">";
-
                 for (var y=0; y<rows; y++) {
                     if (y == 0 ) {
                         html += "<tr>";
 
                         for (var x=0; x<cols; x++)
-                            html += '<td>&nbsp;</td>';
+                            html += '<td style=\"background:#b6c5f2;font-weight:bold;\">&nbsp;</td>';
 
                         html += "</tr>";
                     } else {
                         html += "<tr>";
 
                         for (var x=0; x<cols; x++)
-                            html += '<td>&nbsp;</td>';
+                            html += '<td  style=\"background:#FFFFFF\">&nbsp;</td>';
 
                         html += "</tr>";
                     }
@@ -565,10 +535,11 @@
 					case "mceTableInsertRowBefore":
 						if (!trElm || !tdElm)
 							return true;
-
+                        trElm.bgColor = "#b6c5f2";
 						var grid = getTableGrid(tableElm);
 						var cpos = getCellPos(grid, tdElm);
-						var newTR = doc.createElement("tr");
+
+                        var newTR = doc.createElement("tr");
 						var lastTDElm = null;
 
 						cpos.rowindex--;
@@ -585,15 +556,15 @@
 
 									newTD.innerHTML = "&nbsp;";
 									newTD.colSpan = tdElm.colSpan;
-
-									newTR.appendChild(newTD);
+                                    newTD.bgColor = "#b6c5f2";
+									newTD.style.cssText="font-weight:bold;";
+                                    newTR.appendChild(newTD);
 								} else
 									tdElm.rowSpan = sd['rowspan'] + 1;
 
 								lastTDElm = tdElm;
 							}
 						}
-
 						trElm.parentNode.insertBefore(newTR, trElm);
 					break;
 
@@ -659,7 +630,7 @@
 									var newTD = doc.createElement("td");
 
 									newTD.innerHTML = "&nbsp;";
-									newTD.colSpan = tdElm.colSpan;
+                                    newTD.colSpan = tdElm.colSpan;
 
 									newTR.appendChild(newTD);
 								} else
@@ -755,8 +726,11 @@
 
 									newTD.innerHTML = "&nbsp;";
 									newTD.rowSpan = tdElm.rowSpan;
-
-									tdElm.parentNode.insertBefore(newTD, tdElm);
+                                    if (y==0) {
+                                        newTD.bgColor = "#b6c5f2";
+                                        newTD.style.cssText="font-weight:bold;";
+                                    }
+                                   tdElm.parentNode.insertBefore(newTD, tdElm);
 								} else
 									tdElm.colSpan++;
 
@@ -782,8 +756,11 @@
 
 									newTD.innerHTML = "&nbsp;";
 									newTD.rowSpan = tdElm.rowSpan;
-
-									var nextTD = nextElm(tdElm, "TD");
+                                     if (y==0) {
+                                        newTD.bgColor = "#b6c5f2";
+                                        newTD.style.cssText="font-weight:bold;";
+                                    }
+                                    var nextTD = nextElm(tdElm, "TD");
 									if (nextTD == null)
 										tdElm.parentNode.appendChild(newTD);
 									else

Modified: xwiki/trunk/src/main/web/tiny_mce/plugins/table/table.htm
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/plugins/table/table.htm	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/plugins/table/table.htm	2006-05-28 21:16:15 UTC (rev 1073)
@@ -6,8 +6,8 @@
 function insertTable() {
 	if (window.opener) {
 		var args = new Array();
-
-		args["cols"] = document.forms[0].cols.value;
+		
+        args["cols"] = document.forms[0].cols.value;
 		args["rows"] = document.forms[0].rows.value;
 		args["border"] = 0;
 		args["cellspacing"] = -2;
@@ -17,7 +17,6 @@
 		args["action"] = tinyMCE.getWindowArg('action');
 
         window.opener.tinyMCE.execCommand("mceInsertTable", false, args);
-
 		// Close the dialog
 		tinyMCE.closeDialog();
 	}
@@ -47,7 +46,6 @@
 	formObj.bgcolor.value = tinyMCE.getWindowArg('bgcolor');
 	formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true);
 }
-
 function cancelAction() {
 	tinyMCE.closeDialog();
 }

Modified: xwiki/trunk/src/main/web/tiny_mce/plugins/wikiplugin/editor_plugin.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/plugins/wikiplugin/editor_plugin.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/plugins/wikiplugin/editor_plugin.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -1,46 +1 @@
-/* Import plugin specific language pack */
-//tinyMCE.importPluginLanguagePack('wikieditor', 'en'); // <- Add a comma separated list of all supported languages
-
-
-function TinyMCE_wikiplugin_initInstance(inst) {
-}
-
-function TinyMCE_wikiplugin_execCommand(editor_id, element, command, user_interface, value) {
-	return false;
-}
-
-function TinyMCE_wikiplugin_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
-	return true;
-}
-
-/**
- * Gets executed when contents is inserted / retrived.
- */
-function TinyMCE_wikiplugin_cleanup(type, content) {
-	switch (type) {
-		case "get_from_editor":
-			//alert("[FROM before] Value HTML string: " + content);
-
-			content = wikiEditor.convertInternal(content);
-			
-			//alert("[FROM after] Value HTML string: " + content);
-
-			break;
-
-		case "get_from_editor_dom":
-			
-			content = wikiEditor.tagListInternal(content);
-			//alert("[FROM] Value DOM Element " + content.innerHTML);
-
-			break;
-			
-		case "insert_to_editor":
-			//alert("[TO not modified] Value HTML string: " + content);
-			content = wikiEditor.convertExternal(content);
-
-
-			break;
-	}
-
-	return content;
-}
\ No newline at end of file
+function TinyMCE_wikiplugin_initInstance(inst){}function TinyMCE_wikiplugin_execCommand(editor_id,element,command,user_interface,value){return false;}function TinyMCE_wikiplugin_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){return true;}function TinyMCE_wikiplugin_cleanup(type,content){switch(type){case"get_from_editor":content=wikiEditor.convertInternal(content);break;case"get_from_editor_dom":content=wikiEditor.tagListInternal(content);break;case"insert_to_editor":content=wikiEditor.convertExternal(content);break;}return content;}
\ No newline at end of file

Modified: xwiki/trunk/src/main/web/tiny_mce/plugins/wikiplugin/editor_plugin_src.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/plugins/wikiplugin/editor_plugin_src.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/plugins/wikiplugin/editor_plugin_src.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -38,8 +38,7 @@
 			//alert("[TO not modified] Value HTML string: " + content);
 			content = wikiEditor.convertExternal(content);
 
-
-			break;
+            break;
 	}
 
 	return content;

Modified: xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/attachment.htm
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/attachment.htm	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/attachment.htm	2006-05-28 21:16:15 UTC (rev 1073)
@@ -7,7 +7,7 @@
 </script>
 <script language="javascript">
 	function init() {
-		//document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); 
+		//document.forms[0].insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true);
 		editor_id = tinyMCE.getWindowArg('editor_id');
 	}
 

Modified: xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/editor_template.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/editor_template.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/editor_template.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -53,8 +53,8 @@
 	var template = new Array();
 
 	template['file'] = 'image.htm?src={$src}';
-	template['width'] = 340;
-	template['height'] = 280;
+	template['width'] = 530;
+	template['height'] = 350;
 
 	// Language specific width and height addons
 	template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);

Added: xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/images/macro.gif
===================================================================
(Binary files differ)


Property changes on: xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/images/macro.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/langs/en.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/langs/en.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/langs/en.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -67,6 +67,14 @@
 tinyMCELang['lang_wiki_title_3'] = 'Title 3';
 tinyMCELang['lang_wiki_title_4'] = 'Title 4';
 tinyMCELang['lang_attachment_desc'] = 'Insert an Attachment Link';
+tinyMCELang['lang_macro_desc'] = 'Insert a Macro';
 tinyMCELang['lang_insert_image_name'] = 'Image(attachment) name';
 tinyMCELang['lang_insert_attachment_title'] = 'Insert attachment link';
-tinyMCELang['lang_insert_attachment_name'] = 'Attachment name';
\ No newline at end of file
+tinyMCELang['lang_insert_attachment_name'] = 'Attachment name';
+tinyMCELang['lang_insert_macro_title'] = 'Insert macro';
+tinyMCELang['lang_insert_macro_name'] = 'Macro name';
+tinyMCELang['lang_choose_macro_name'] = 'Choose a macro';
+tinyMCELang['lang_insert_macro'] = 'Insert Macro';
+tinyMCELang['macro_macroname_first_name'] = 'First Name';
+tinyMCELang['macro_macroname_last_name'] = 'Last Name';
+tinyMCELang['macro_macrotitle_info'] = 'Fill information';
\ No newline at end of file

Added: xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/macro.htm
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/macro.htm	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/themes/wikieditor/macro.htm	2006-05-28 21:16:15 UTC (rev 1073)
@@ -0,0 +1,138 @@
+<html>
+<head>
+<title>{$lang_insert_macro_title}</title>
+<script language="javascript" src="../../tiny_mce_popup.js"></script>
+<script language="javascript">
+    var baseurl = tinyMCE.getParam("wiki_macro_path");
+</script>
+<script language="javascript">
+    function init() {
+        editor_id = tinyMCE.getWindowArg('editor_id');
+    }
+    function insertMacro() {
+        if (window.opener) {
+            var href = document.getElementById("macro").value;
+            window.opener.wikiEditor.insertMacro(editor_id, href);
+            tinyMCE.closeDialog();
+        }
+    }
+    function cancelAction() {
+        tinyMCE.closeDialog();
+    }
+    //------------------
+    // threadsafe asynchronous XMLHTTPRequest code
+    function executeCommand(url, callback) {
+        // we use a javascript feature here called "inner functions"
+        // using these means the local variables retain their values after the outer function
+        // has returned. this is useful for thread safety, so
+        // reassigning the onreadystatechange function doesn't stomp over earlier requests.
+        function ajaxBindCallback() {
+            if (ajaxRequest.readyState == 4) {
+                if (ajaxRequest.status == 200) {
+                    if (ajaxCallback) {
+                        ajaxCallback(ajaxRequest.responseText);
+                    } else {
+                        alert('no callback defined');
+                    }
+                } else {
+                    alert("There was a problem retrieving the xml data:\n" + ajaxRequest.status + ":\t" + ajaxRequest.statusText + "\n" + ajaxRequest.responseText);
+                }
+            }
+        }
+        // addMessage(url);
+        // use a local variable to hold our request and callback until the inner function is called...
+        var ajaxRequest = null;
+        var ajaxCallback = callback;
+
+        // bind our callback then hit the server...
+        if (window.XMLHttpRequest) {
+            ajaxRequest = new XMLHttpRequest();
+            ajaxRequest.onreadystatechange = ajaxBindCallback;
+            ajaxRequest.open("GET", url, true);
+            ajaxRequest.send(null);
+        } else if (window.ActiveXObject) {
+            // ie
+            ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
+            if (ajaxRequest) {
+                ajaxRequest.onreadystatechange = ajaxBindCallback;
+                ajaxRequest.open("GET", url, true);
+                ajaxRequest.send();
+            }
+            else{
+                alert("your browser does not support xmlhttprequest" )
+            }
+        }
+        else{
+            alert("your browser does not support xmlhttprequest" )
+        }
+    }
+    function loadMacroList(baseurl) {
+        var url = baseurl + "?xpage=macrowysiwyg";
+        executeCommand(url, loadMacroListCallback);
+    }
+
+    function loadMacroListCallback(e) {
+      var macroEl = document.getElementById("macros");
+      macroEl.innerHTML = e;
+    }
+
+</script>
+<script type="text/javascript">
+    function inputMacro() {
+        var selObj = document.getElementById("selmacro");
+        var selectedindex = selObj.selectedIndex;
+        var selectedMacro = document.getElementById("selmacro").options[selectedindex].value;
+        document.getElementById("input").innerHTML = document.getElementById(selectedMacro).innerHTML ;
+    }
+    function checkForm() {
+        var macroparamstr = document.getElementById("macroparam").value;
+        if (macroparamstr != null && macroparamstr != "") {
+            macroparams = macroparamstr.split(",");
+            for(var i=0; i < macroparams.length; i++) {
+                var value = document.getElementById(macroparams[i]).value;
+                if (value == null || value == "" ) {
+                    alert("You must choose at least a macro and fill all the fields !");
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+    function setMacro() {
+        var macroparamstr = document.getElementById("macroparam").value;
+        var macrocontent = document.getElementById("content").value;
+        var macroname = document.getElementById("macroname").value;
+        var macro = "";
+        if (macroparamstr != null && macroparamstr != "") {
+            macro = "{" + macroname + ":";
+            macroparams = macroparamstr.split(",");
+            for(var i=0; i < macroparams.length; i++) {
+                macro += macroparams[i] + "=" + document.getElementById(macroparams[i]).value;
+                if (i != macroparams.length-1 )  macro += ",";
+            }
+            macro += "}";
+            if ((macrocontent !=null && macrocontent !="")) {
+                macro +=  macrocontent + "{" +macroname+ "}";
+            }
+        } else  macro = "{" + macroname +"}";
+        document.write("<input type='text' id='macro' name='macro' value='" + macro + "'/>");
+    }
+</script>
+</head>
+<body onload="init();">
+<div id="macros"></div>
+<script type="text/javascript">
+    loadMacroList(baseurl);
+</script>
+<div>
+    <table width="95%" border="0" cellspacing="0" cellpadding="0">
+        <tr align="center">
+            <td align="center"><input type="button" id="insert" name="insert" value="{$lang_insert_macro}" onclick="if(checkForm()){setMacro(); insertMacro();}" >
+            </td>
+            <td align="left"><input type="button" id="cancel" name="cancel" value="{$lang_cancel}" onClick="cancelAction();"></td>
+            <td></td>
+        </tr>
+    </table>
+</div>
+</body>
+</html>

Modified: xwiki/trunk/src/main/web/tiny_mce/tiny_mce.js
===================================================================
--- xwiki/trunk/src/main/web/tiny_mce/tiny_mce.js	2006-05-25 16:42:57 UTC (rev 1072)
+++ xwiki/trunk/src/main/web/tiny_mce/tiny_mce.js	2006-05-28 21:16:15 UTC (rev 1073)
@@ -1,4 +1,4 @@
-function TinyMCE(){this.instances=new Array();this.stickyClassesLookup=new Array();this.windowArgs=new Array();this.loadedFiles=new Array();this.configs=new Array();this.currentConfig=0;this.eventHandlers=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isMSIE5=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5')!=-1);this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.dialogCounter=0;this.idCounter=0;};TinyMCE.prototype.defParam=function(key,def_val){this.settings[key]=tinyMCE.getParam(key,def_val);};TinyMCE.prototype.init=function(settings){var theme;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var elements=document.getElementsByTagName('script');for(var i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip.php")!=-1)){var src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1)?'_src':'';src=src.substring(0,src.lastIndexOf('/'));tinyMCE.baseURL=src;break;}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL;}this.defParam("mode","none");this.defParam("theme","advanced");this.defParam("plugins","",true);this.defParam("language","en");this.defParam("docs_language",this.settings['language']);this.defParam("elements","");this.defParam("textarea_trigger","mce_editable");this.defParam("valid_elements","+a[name|href|target|title|class],strong/b[class],em/i[class],strike[class],u[class],+p[dir|class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan|width|height|align|valign],td[dir|class|colspan|rowspan|width|height|align|valign],div[dir|class|align],span[class|align],pre[class|align],address[class|align],h1[dir|class|align],h2[dir|class|align],h3[dir|class|align],h4[dir|class|align],h5[dir|class|align],h6[dir|class|align],hr");this.defParam("extended_valid_elements","");this.defParam("invalid_elements","");this.defParam("encoding","");this.defParam("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE.prototype.convertURL"));this.defParam("save_callback","");this.defParam("debug",false);this.defParam("force_br_newlines",false);this.defParam("force_p_newlines",true);this.defParam("add_form_submit_trigger",true);this.defParam("relative_urls",true);this.defParam("remove_script_host",true);this.defParam("focus_alert",true);this.defParam("document_base_url",this.documentURL);this.defParam("visual",true);this.defParam("visual_table_class","mceVisualAid");this.defParam("setupcontent_callback","");this.defParam("fix_content_duplication",true);this.defParam("custom_undo_redo",true);this.defParam("custom_undo_redo_levels",-1);this.defParam("custom_undo_redo_keyboard_shortcuts",true);this.defParam("verify_css_classes",false);this.defParam("trim_span_elements",true);this.defParam("verify_html",true);this.defParam("apply_source_formatting",false);this.defParam("directionality","ltr");this.defParam("auto_cleanup_word",false);this.defParam("cleanup_on_startup",false);this.defParam("inline_styles",false);this.defParam("convert_newlines_to_brs",false);this.defParam("auto_reset_designmode",false);this.defParam("entities","160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,8707,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,192,Agrave,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,202,Ecirc,203,Euml,204,Igrave,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,212,Ocirc,213,Otilde,214,Ouml,216,Oslash,338,OElig,217,Ugrave,219,Ucirc,220,Uuml,376,Yuml,222,THORN,224,agrave,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,234,ecirc,235,euml,236,igrave,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,244,ocirc,245,otilde,246,ouml,248,oslash,339,oelig,249,ugrave,251,ucirc,252,uuml,254,thorn,255,yuml,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy,233,eacute");this.defParam("entity_encoding","named");this.defParam("cleanup_callback","");this.defParam("add_unload_trigger",true);this.defParam("ask",false)