summaryrefslogtreecommitdiff
path: root/public/javascripts/tiny_mce/themes
diff options
context:
space:
mode:
authorhukl <contact@smyck.org>2009-02-17 21:54:39 +0100
committerhukl <contact@smyck.org>2009-02-17 21:54:39 +0100
commitf61b5b0597e0c25f084ee67d402f12a43a7a9947 (patch)
tree3b4c3f9f38637f1a7ecf703ece4fd3bc4c6e2934 /public/javascripts/tiny_mce/themes
parent3d3b786cc43266f6292f5edd25733dbb9bd6ed06 (diff)
added tinymce editor for body area of pages
Diffstat (limited to 'public/javascripts/tiny_mce/themes')
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/about.htm56
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/anchor.htm32
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/charmap.htm54
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/color_picker.htm76
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/editor_template.js1
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/editor_template_src.js1153
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/image.htm86
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpgbin0 -> 3189 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/img/icons.gifbin0 -> 11505 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/js/about.js72
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/js/anchor.js37
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/js/charmap.js325
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/js/color_picker.js253
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/js/image.js245
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/js/link.js155
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/js/source_editor.js62
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/langs/en.js62
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js51
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/link.htm64
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/default/content.css32
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css114
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.pngbin0 -> 3274 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gifbin0 -> 70 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gifbin0 -> 68 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gifbin0 -> 70 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gifbin0 -> 1787 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gifbin0 -> 1326 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/default/ui.css214
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css32
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css113
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.pngbin0 -> 5859 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.pngbin0 -> 3736 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.pngbin0 -> 5358 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css215
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css8
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css5
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/advanced/source_editor.htm32
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/simple/editor_template.js1
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/simple/editor_template_src.js85
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/simple/img/icons.gifbin0 -> 1440 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/simple/langs/en.js11
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/simple/skins/default/content.css25
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/simple/skins/default/ui.css32
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/simple/skins/o2k7/content.css17
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.pngbin0 -> 5102 bytes
-rwxr-xr-xpublic/javascripts/tiny_mce/themes/simple/skins/o2k7/ui.css35
46 files changed, 3755 insertions, 0 deletions
diff --git a/public/javascripts/tiny_mce/themes/advanced/about.htm b/public/javascripts/tiny_mce/themes/advanced/about.htm
new file mode 100755
index 0000000..4ef2a29
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/about.htm
@@ -0,0 +1,56 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4 <title>{#advanced_dlg.about_title}</title>
5 <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
6 <script type="text/javascript" src="../../utils/mctabs.js"></script>
7 <script type="text/javascript" src="js/about.js"></script>
8</head>
9<body id="about" style="display: none">
10 <div class="tabs">
11 <ul>
12 <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.about_general}</a></span></li>
13 <li id="help_tab" style="display:none"><span><a href="javascript:mcTabs.displayTab('help_tab','help_panel');" onmousedown="return false;">{#advanced_dlg.about_help}</a></span></li>
14 <li id="plugins_tab"><span><a href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');" onmousedown="return false;">{#advanced_dlg.about_plugins}</a></span></li>
15 </ul>
16 </div>
17
18 <div class="panel_wrapper">
19 <div id="general_panel" class="panel current">
20 <h3>{#advanced_dlg.about_title}</h3>
21 <p>Version: <span id="version"></span> (<span id="date"></span>)</p>
22 <p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under <a href="../../license.txt" target="_blank">LGPL</a>
23 by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</p>
24 <p>Copyright &copy; 2003-2008, <a href="http://www.moxiecode.com" target="_blank">Moxiecode Systems AB</a>, All rights reserved.</p>
25 <p>For more information about this software visit the <a href="http://tinymce.moxiecode.com" target="_blank">TinyMCE website</a>.</p>
26
27 <div id="buttoncontainer">
28 <a href="http://www.moxiecode.com" target="_blank"><img src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got Moxie?" border="0" /></a>
29 <a href="http://sourceforge.net/projects/tinymce/" target="_blank"><img src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By Sourceforge" border="0" /></a>
30 <a href="http://www.freshmeat.net/projects/tinymce" target="_blank"><img src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on freshmeat" border="0" /></a>
31 </div>
32 </div>
33
34 <div id="plugins_panel" class="panel">
35 <div id="pluginscontainer">
36 <h3>{#advanced_dlg.about_loaded}</h3>
37
38 <div id="plugintablecontainer">
39 </div>
40
41 <p>&nbsp;</p>
42 </div>
43 </div>
44
45 <div id="help_panel" class="panel noscroll" style="overflow: visible;">
46 <div id="iframecontainer"></div>
47 </div>
48 </div>
49
50 <div class="mceActionPanel">
51 <div style="float: right">
52 <input type="button" id="cancel" name="cancel" value="{#close}" onclick="tinyMCEPopup.close();" />
53 </div>
54 </div>
55</body>
56</html>
diff --git a/public/javascripts/tiny_mce/themes/advanced/anchor.htm b/public/javascripts/tiny_mce/themes/advanced/anchor.htm
new file mode 100755
index 0000000..9e4c0b9
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/anchor.htm
@@ -0,0 +1,32 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4 <title>{#advanced_dlg.anchor_title}</title>
5 <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
6 <script type="text/javascript" src="js/anchor.js"></script>
7 <base target="_self" />
8</head>
9<body style="display: none">
10<form onsubmit="AnchorDialog.update();return false;" action="#">
11 <table border="0" cellpadding="4" cellspacing="0">
12 <tr>
13 <td colspan="2" class="title">{#advanced_dlg.anchor_title}</td>
14 </tr>
15 <tr>
16 <td nowrap="nowrap">{#advanced_dlg.anchor_name}:</td>
17 <td><input name="anchorName" type="text" class="mceFocus" id="anchorName" value="" style="width: 200px" /></td>
18 </tr>
19 </table>
20
21 <div class="mceActionPanel">
22 <div style="float: left">
23 <input type="submit" id="insert" name="insert" value="{#update}" />
24 </div>
25
26 <div style="float: right">
27 <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
28 </div>
29 </div>
30</form>
31</body>
32</html>
diff --git a/public/javascripts/tiny_mce/themes/advanced/charmap.htm b/public/javascripts/tiny_mce/themes/advanced/charmap.htm
new file mode 100755
index 0000000..e4c7344
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/charmap.htm
@@ -0,0 +1,54 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4 <title>{#advanced_dlg.charmap_title}</title>
5 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
6 <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
7 <script type="text/javascript" src="js/charmap.js"></script>
8 <base target="_self" />
9</head>
10<body id="charmap" style="display:none">
11<table align="center" border="0" cellspacing="0" cellpadding="2">
12 <tr>
13 <td colspan="2" class="title">{#advanced_dlg.charmap_title}</td>
14 </tr>
15 <tr>
16 <td id="charmapView" rowspan="2" align="left" valign="top">
17 <!-- Chars will be rendered here -->
18 </td>
19 <td width="100" align="center" valign="top">
20 <table border="0" cellpadding="0" cellspacing="0" width="100" style="height:100px">
21 <tr>
22 <td id="codeV">&nbsp;</td>
23 </tr>
24 <tr>
25 <td id="codeN">&nbsp;</td>
26 </tr>
27 </table>
28 </td>
29 </tr>
30 <tr>
31 <td valign="bottom" style="padding-bottom: 3px;">
32 <table width="100" align="center" border="0" cellpadding="2" cellspacing="0">
33 <tr>
34 <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>
35 </tr>
36 <tr>
37 <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>
38 </tr>
39 <tr>
40 <td style="font-size: 1px;">&nbsp;</td>
41 </tr>
42 <tr>
43 <td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>
44 </tr>
45 <tr>
46 <td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>
47 </tr>
48 </table>
49 </td>
50 </tr>
51</table>
52
53</body>
54</html>
diff --git a/public/javascripts/tiny_mce/themes/advanced/color_picker.htm b/public/javascripts/tiny_mce/themes/advanced/color_picker.htm
new file mode 100755
index 0000000..a8f297c
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/color_picker.htm
@@ -0,0 +1,76 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4 <title>{#advanced_dlg.colorpicker_title}</title>
5 <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
6 <script type="text/javascript" src="../../utils/mctabs.js"></script>
7 <script type="text/javascript" src="js/color_picker.js"></script>
8 <base target="_self" />
9</head>
10<body id="colorpicker" style="display: none">
11<form onsubmit="insertAction();return false" action="#">
12 <div class="tabs">
13 <ul>
14 <li id="picker_tab" class="current"><span><a href="javascript:mcTabs.displayTab('picker_tab','picker_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_picker_tab}</a></span></li>
15 <li id="rgb_tab"><span><a href="javascript:;" onclick="generateWebColors();mcTabs.displayTab('rgb_tab','rgb_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_palette_tab}</a></span></li>
16 <li id="named_tab"><span><a href="javascript:;" onclick="generateNamedColors();javascript:mcTabs.displayTab('named_tab','named_panel');" onmousedown="return false;">{#advanced_dlg.colorpicker_named_tab}</a></span></li>
17 </ul>
18 </div>
19
20 <div class="panel_wrapper">
21 <div id="picker_panel" class="panel current">
22 <fieldset>
23 <legend>{#advanced_dlg.colorpicker_picker_title}</legend>
24 <div id="picker">
25 <img id="colors" src="img/colorpicker.jpg" onclick="computeColor(event)" onmousedown="isMouseDown = true;return false;" onmouseup="isMouseDown = false;" onmousemove="if (isMouseDown && isMouseOver) computeColor(event); return false;" onmouseover="isMouseOver=true;" onmouseout="isMouseOver=false;" />
26
27 <div id="light">
28 <!-- Will be filled with divs -->
29 </div>
30
31 <br style="clear: both" />
32 </div>
33 </fieldset>
34 </div>
35
36 <div id="rgb_panel" class="panel">
37 <fieldset>
38 <legend>{#advanced_dlg.colorpicker_palette_title}</legend>
39 <div id="webcolors">
40 <!-- Gets filled with web safe colors-->
41 </div>
42
43 <br style="clear: both" />
44 </fieldset>
45 </div>
46
47 <div id="named_panel" class="panel">
48 <fieldset>
49 <legend>{#advanced_dlg.colorpicker_named_title}</legend>
50 <div id="namedcolors">
51 <!-- Gets filled with named colors-->
52 </div>
53
54 <br style="clear: both" />
55
56 <div id="colornamecontainer">
57 {#advanced_dlg.colorpicker_name} <span id="colorname"></span>
58 </div>
59 </fieldset>
60 </div>
61 </div>
62
63 <div class="mceActionPanel">
64 <div style="float: left">
65 <input type="submit" id="insert" name="insert" value="{#apply}" />
66 </div>
67
68 <div id="preview"></div>
69
70 <div id="previewblock">
71 <label for="color">{#advanced_dlg.colorpicker_color}</label> <input id="color" type="text" size="8" maxlength="8" class="text mceFocus" />
72 </div>
73 </div>
74</form>
75</body>
76</html>
diff --git a/public/javascripts/tiny_mce/themes/advanced/editor_template.js b/public/javascripts/tiny_mce/themes/advanced/editor_template.js
new file mode 100755
index 0000000..d72d542
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/editor_template.js
@@ -0,0 +1 @@
(function(){var DOM=tinymce.DOM,Event=tinymce.dom.Event,extend=tinymce.extend,each=tinymce.each,Cookie=tinymce.util.Cookie,lastExtID,explode=tinymce.explode;tinymce.ThemeManager.requireLangPack('advanced');tinymce.create('tinymce.themes.AdvancedTheme',{sizes:[8,10,12,14,18,24,36],controls:{bold:['bold_desc','Bold'],italic:['italic_desc','Italic'],underline:['underline_desc','Underline'],strikethrough:['striketrough_desc','Strikethrough'],justifyleft:['justifyleft_desc','JustifyLeft'],justifycenter:['justifycenter_desc','JustifyCenter'],justifyright:['justifyright_desc','JustifyRight'],justifyfull:['justifyfull_desc','JustifyFull'],bullist:['bullist_desc','InsertUnorderedList'],numlist:['numlist_desc','InsertOrderedList'],outdent:['outdent_desc','Outdent'],indent:['indent_desc','Indent'],cut:['cut_desc','Cut'],copy:['copy_desc','Copy'],paste:['paste_desc','Paste'],undo:['undo_desc','Undo'],redo:['redo_desc','Redo'],link:['link_desc','mceLink'],unlink:['unlink_desc','unlink'],image:['image_desc','mceImage'],cleanup:['cleanup_desc','mceCleanup'],help:['help_desc','mceHelp'],code:['code_desc','mceCodeEditor'],hr:['hr_desc','InsertHorizontalRule'],removeformat:['removeformat_desc','RemoveFormat'],sub:['sub_desc','subscript'],sup:['sup_desc','superscript'],forecolor:['forecolor_desc','ForeColor'],forecolorpicker:['forecolor_desc','mceForeColor'],backcolor:['backcolor_desc','HiliteColor'],backcolorpicker:['backcolor_desc','mceBackColor'],charmap:['charmap_desc','mceCharMap'],visualaid:['visualaid_desc','mceToggleVisualAid'],anchor:['anchor_desc','mceInsertAnchor'],newdocument:['newdocument_desc','mceNewDocument'],blockquote:['blockquote_desc','mceBlockQuote']},stateControls:['bold','italic','underline','strikethrough','bullist','numlist','justifyleft','justifycenter','justifyright','justifyfull','sub','sup','blockquote'],init:function(ed,url){var t=this,s,v,o;t.editor=ed;t.url=url;t.onResolveName=new tinymce.util.Dispatcher(this);t.settings=s=extend({theme_advanced_path:true,theme_advanced_toolbar_location:'bottom',theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"center",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",readonly:ed.settings.readonly},ed.settings);if(!s.font_size_style_values)s.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt";if(tinymce.is(s.theme_advanced_font_sizes,'string')){s.font_size_style_values=tinymce.explode(s.font_size_style_values);s.font_size_classes=tinymce.explode(s.font_size_classes||'');o={};ed.settings.theme_advanced_font_sizes=s.theme_advanced_font_sizes;each(ed.getParam('theme_advanced_font_sizes','','hash'),function(v,k){var cl;if(k==v&&v>=1&&v<=7){k=v+' ('+t.sizes[v-1]+'pt)';if(ed.settings.convert_fonts_to_spans){cl=s.font_size_classes[v-1];v=s.font_size_style_values[v-1]||(t.sizes[v-1]+'pt');}}if(/\s*\./.test(v))cl=v.replace(/\./g,'');o[k]=cl?{'class':cl}:{fontSize:v};});s.theme_advanced_font_sizes=o;}if((v=s.theme_advanced_path_location)&&v!='none')s.theme_advanced_statusbar_location=s.theme_advanced_path_location;if(s.theme_advanced_statusbar_location=='none')s.theme_advanced_statusbar_location=0;ed.onInit.add(function(){ed.onNodeChange.add(t._nodeChanged,t);if(ed.settings.content_css!==false)ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/"+ed.settings.skin+"/content.css"));});ed.onSetProgressState.add(function(ed,b,ti){var co,id=ed.id,tb;if(b){t.progressTimer=setTimeout(function(){co=ed.getContainer();co=co.insertBefore(DOM.create('DIV',{style:'position:relative'}),co.firstChild);tb=DOM.get(ed.id+'_tbl');DOM.add(co,'div',{id:id+'_blocker','class':'mceBlocker',style:{width:tb.clientWidth+2,height:tb.clientHeight+2}});DOM.add(co,'div',{id:id+'_progress','class':'mceProgress',style:{left:tb.clientWidth/ 2, top : tb.clientHeight /2}});},ti||0);}else{DOM.remove(id+'_blocker');DOM.remove(id+'_progress');clearTimeout(t.progressTimer);}});DOM.loadCSS(s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):url+"/skins/"+ed.settings.skin+"/ui.css");if(s.skin_variant)DOM.loadCSS(url+"/skins/"+ed.settings.skin+"/ui_"+s.skin_variant+".css");},createControl:function(n,cf){var cd,c;if(c=cf.createControl(n))return c;switch(n){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu();}if((cd=this.controls[n]))return cf.createButton(n,{title:"advanced."+cd[0],cmd:cd[1],ui:cd[2],value:cd[3]});},execCommand:function(cmd,ui,val){var f=this['_'+cmd];if(f){f.call(this,ui,val);return true;}return false;},_importClasses:function(e){var ed=this.editor,c=ed.controlManager.get('styleselect');if(c.getLength()==0){each(ed.dom.getClasses(),function(o){c.add(o['class'],o['class']);});}},_createStyleSelect:function(n){var t=this,ed=t.editor,cf=ed.controlManager,c=cf.createListBox('styleselect',{title:'advanced.style_select',onselect:function(v){if(c.selectedValue===v){ed.execCommand('mceSetStyleInfo',0,{command:'removeformat'});c.select();return false;}else ed.execCommand('mceSetCSSClass',0,v);}});if(c){each(ed.getParam('theme_advanced_styles','','hash'),function(v,k){if(v)c.add(t.editor.translate(k),v);});c.onPostRender.add(function(ed,n){if(!c.NativeListBox){Event.add(n.id+'_text','focus',t._importClasses,t);Event.add(n.id+'_text','mousedown',t._importClasses,t);Event.add(n.id+'_open','focus',t._importClasses,t);Event.add(n.id+'_open','mousedown',t._importClasses,t);}else Event.add(n.id,'focus',t._importClasses,t);});}return c;},_createFontSelect:function(){var c,t=this,ed=t.editor;c=ed.controlManager.createListBox('fontselect',{title:'advanced.fontdefault',cmd:'FontName'});if(c){each(ed.getParam('theme_advanced_fonts',t.settings.theme_advanced_fonts,'hash'),function(v,k){c.add(ed.translate(k),v,{style:v.indexOf('dings')==-1?'font-family:'+v:''});});}return c;},_createFontSizeSelect:function(){var t=this,ed=t.editor,c,i=0,cl=[];c=ed.controlManager.createListBox('fontsizeselect',{title:'advanced.font_size',onselect:function(v){if(v.fontSize)ed.execCommand('FontSize',false,v.fontSize);else{each(t.settings.theme_advanced_font_sizes,function(v,k){if(v['class'])cl.push(v['class']);});ed.editorCommands._applyInlineStyle('span',{'class':v['class']},{check_classes:cl});}}});if(c){each(t.settings.theme_advanced_font_sizes,function(v,k){var fz=v.fontSize;if(fz>=1&&fz<=7)fz=t.sizes[parseInt(fz)-1]+'pt';c.add(k,v,{'style':'font-size:'+fz,'class':'mceFontSize'+(i++)+(' '+(v['class']||''))});});}return c;},_createBlockFormats:function(){var c,fmts={p:'advanced.paragraph',address:'advanced.address',pre:'advanced.pre',h1:'advanced.h1',h2:'advanced.h2',h3:'advanced.h3',h4:'advanced.h4',h5:'advanced.h5',h6:'advanced.h6',div:'advanced.div',blockquote:'advanced.blockquote',code:'advanced.code',dt:'advanced.dt',dd:'advanced.dd',samp:'advanced.samp'},t=this;c=t.editor.controlManager.createListBox('formatselect',{title:'advanced.block',cmd:'FormatBlock'});if(c){each(t.editor.getParam('theme_advanced_blockformats',t.settings.theme_advanced_blockformats,'hash'),function(v,k){c.add(t.editor.translate(k!=v?k:fmts[v]),v,{'class':'mce_formatPreview mce_'+v});});}return c;},_createForeColorMenu:function(){var c,t=this,s=t.settings,o={},v;if(s.theme_advanced_more_colors){o.more_colors_func=function(){t._mceColorPicker(0,{color:c.value,func:function(co){c.setColor(co);}});};}if(v=s.theme_advanced_text_colors)o.colors=v;if(s.theme_advanced_default_foreground_color)o.default_color=s.theme_advanced_default_foreground_color;o.title='advanced.forecolor_desc';o.cmd='ForeColor';o.scope=this;c=t.editor.controlManager.createColorSplitButton('forecolor',o);return c;},_createBackColorMenu:function(){var c,t=this,s=t.settings,o={},v;if(s.theme_advanced_more_colors){o.more_colors_func=function(){t._mceColorPicker(0,{color:c.value,func:function(co){c.setColor(co);}});};}if(v=s.theme_advanced_background_colors)o.colors=v;if(s.theme_advanced_default_background_color)o.default_color=s.theme_advanced_default_background_color;o.title='advanced.backcolor_desc';o.cmd='HiliteColor';o.scope=this;c=t.editor.controlManager.createColorSplitButton('backcolor',o);return c;},renderUI:function(o){var n,ic,tb,t=this,ed=t.editor,s=t.settings,sc,p,nl;n=p=DOM.create('span',{id:ed.id+'_parent','class':'mceEditor '+ed.settings.skin+'Skin'+(s.skin_variant?' '+ed.settings.skin+'Skin'+t._ufirst(s.skin_variant):'')});if(!DOM.boxModel)n=DOM.add(n,'div',{'class':'mceOldBoxModel'});n=sc=DOM.add(n,'table',{id:ed.id+'_tbl','class':'mceLayout',cellSpacing:0,cellPadding:0});n=tb=DOM.add(n,'tbody');switch((s.theme_advanced_layout_manager||'').toLowerCase()){case"rowlayout":ic=t._rowLayout(s,tb,o);break;case"customlayout":ic=ed.execCallback("theme_advanced_custom_layout",s,tb,o,p);break;default:ic=t._simpleLayout(s,tb,o,p);}n=o.targetNode;nl=DOM.stdMode?sc.getElementsByTagName('tr'):sc.rows;DOM.addClass(nl[0],'mceFirst');DOM.addClass(nl[nl.length-1],'mceLast');each(DOM.select('tr',tb),function(n){DOM.addClass(n.firstChild,'mceFirst');DOM.addClass(n.childNodes[n.childNodes.length-1],'mceLast');});if(DOM.get(s.theme_advanced_toolbar_container))DOM.get(s.theme_advanced_toolbar_container).appendChild(p);else DOM.insertAfter(p,n);Event.add(ed.id+'_path_row','click',function(e){e=e.target;if(e.nodeName=='A'){t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/,'$1'));return Event.cancel(e);}});if(!ed.getParam('accessibility_focus')||ed.getParam('tab_focus'))Event.add(DOM.add(p,'a',{href:'#'},'<!-- IE -->'),'focus',function(){tinyMCE.get(ed.id).focus();});if(s.theme_advanced_toolbar_location=='external')o.deltaHeight=0;t.deltaHeight=o.deltaHeight;o.targetNode=null;return{iframeContainer:ic,editorContainer:ed.id+'_parent',sizeContainer:sc,deltaHeight:o.deltaHeight};},getInfo:function(){return{longname:'Advanced theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}},resizeBy:function(dw,dh){var e=DOM.get(this.editor.id+'_tbl');this.resizeTo(e.clientWidth+dw,e.clientHeight+dh);},resizeTo:function(w,h){var ed=this.editor,s=ed.settings,e=DOM.get(ed.id+'_tbl'),ifr=DOM.get(ed.id+'_ifr'),dh;w=Math.max(s.theme_advanced_resizing_min_width||100,w);h=Math.max(s.theme_advanced_resizing_min_height||100,h);w=Math.min(s.theme_advanced_resizing_max_width||0xFFFF,w);h=Math.min(s.theme_advanced_resizing_max_height||0xFFFF,h);dh=e.clientHeight-ifr.clientHeight;DOM.setStyle(ifr,'height',h-dh);DOM.setStyles(e,{width:w,height:h});},destroy:function(){var id=this.editor.id;Event.clear(id+'_resize');Event.clear(id+'_path_row');Event.clear(id+'_external_close');},_simpleLayout:function(s,tb,o,p){var t=this,ed=t.editor,lo=s.theme_advanced_toolbar_location,sl=s.theme_advanced_statusbar_location,n,ic,etb,c;if(s.readonly){n=DOM.add(tb,'tr');n=ic=DOM.add(n,'td',{'class':'mceIframeContainer'});return ic;}if(lo=='top')t._addToolbars(tb,o);if(lo=='external'){n=c=DOM.create('div',{style:'position:relative'});n=DOM.add(n,'div',{id:ed.id+'_external','class':'mceExternalToolbar'});DOM.add(n,'a',{id:ed.id+'_external_close',href:'javascript:;','class':'mceExternalClose'});n=DOM.add(n,'table',{id:ed.id+'_tblext',cellSpacing:0,cellPadding:0});etb=DOM.add(n,'tbody');if(p.firstChild.className=='mceOldBoxModel')p.firstChild.appendChild(c);else p.insertBefore(c,p.firstChild);t._addToolbars(etb,o);ed.onMouseUp.add(function(){var e=DOM.get(ed.id+'_external');DOM.show(e);DOM.hide(lastExtID);var f=Event.add(ed.id+'_external_close','click',function(){DOM.hide(ed.id+'_external');Event.remove(ed.id+'_external_close','click',f);});DOM.show(e);DOM.setStyle(e,'top',0-DOM.getRect(ed.id+'_tblext').h-1);DOM.hide(e);DOM.show(e);e.style.filter='';lastExtID=ed.id+'_external';e=null;});}if(sl=='top')t._addStatusBar(tb,o);if(!s.theme_advanced_toolbar_container){n=DOM.add(tb,'tr');n=ic=DOM.add(n,'td',{'class':'mceIframeContainer'});}if(lo=='bottom')t._addToolbars(tb,o);if(sl=='bottom')t._addStatusBar(tb,o);return ic;},_rowLayout:function(s,tb,o){var t=this,ed=t.editor,dc,da,cf=ed.controlManager,n,ic,to,a;dc=s.theme_advanced_containers_default_class||'';da=s.theme_advanced_containers_default_align||'center';each(explode(s.theme_advanced_containers||''),function(c,i){var v=s['theme_advanced_container_'+c]||'';switch(v.toLowerCase()){case'mceeditor':n=DOM.add(tb,'tr');n=ic=DOM.add(n,'td',{'class':'mceIframeContainer'});break;case'mceelementpath':t._addStatusBar(tb,o);break;default:a=(s['theme_advanced_container_'+c+'_align']||da).toLowerCase();a='mce'+t._ufirst(a);n=DOM.add(DOM.add(tb,'tr'),'td',{'class':'mceToolbar '+(s['theme_advanced_container_'+c+'_class']||dc)+' '+a||da});to=cf.createToolbar("toolbar"+i);t._addControls(v,to);DOM.setHTML(n,to.renderHTML());o.deltaHeight-=s.theme_advanced_row_height;}});return ic;},_addControls:function(v,tb){var t=this,s=t.settings,di,cf=t.editor.controlManager;if(s.theme_advanced_disable&&!t._disabled){di={};each(explode(s.theme_advanced_disable),function(v){di[v]=1;});t._disabled=di;}else di=t._disabled;each(explode(v),function(n){var c;if(di&&di[n])return;if(n=='tablecontrols'){each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(n){n=t.createControl(n,cf);if(n)tb.add(n);});return;}c=t.createControl(n,cf);if(c)tb.add(c);});},_addToolbars:function(c,o){var t=this,i,tb,ed=t.editor,s=t.settings,v,cf=ed.controlManager,di,n,h=[],a;a=s.theme_advanced_toolbar_align.toLowerCase();a='mce'+t._ufirst(a);n=DOM.add(DOM.add(c,'tr'),'td',{'class':'mceToolbar '+a});if(!ed.getParam('accessibility_focus')||ed.getParam('tab_focus'))h.push(DOM.createHTML('a',{href:'#',onfocus:'tinyMCE.get(\''+ed.id+'\').focus();'},'<!-- IE -->'));h.push(DOM.createHTML('a',{href:'#',accesskey:'q',title:ed.getLang("advanced.toolbar_focus")},'<!-- IE -->'));for(i=1;(v=s['theme_advanced_buttons'+i]);i++){tb=cf.createToolbar("toolbar"+i,{'class':'mceToolbarRow'+i});if(s['theme_advanced_buttons'+i+'_add'])v+=','+s['theme_advanced_buttons'+i+'_add'];if(s['theme_advanced_buttons'+i+'_add_before'])v=s['theme_advanced_buttons'+i+'_add_before']+','+v;t._addControls(v,tb);h.push(tb.renderHTML());o.deltaHeight-=s.theme_advanced_row_height;}h.push(DOM.createHTML('a',{href:'#',accesskey:'z',title:ed.getLang("advanced.toolbar_focus"),onfocus:'tinyMCE.getInstanceById(\''+ed.id+'\').focus();'},'<!-- IE -->'));DOM.setHTML(n,h.join(''));},_addStatusBar:function(tb,o){var n,t=this,ed=t.editor,s=t.settings,r,mf,me,td;n=DOM.add(tb,'tr');n=td=DOM.add(n,'td',{'class':'mceStatusbar'});n=DOM.add(n,'div',{id:ed.id+'_path_row'},s.theme_advanced_path?ed.translate('advanced.path')+': ':'&nbsp;');DOM.add(n,'a',{href:'#',accesskey:'x'});if(s.theme_advanced_resizing&&!tinymce.isOldWebKit){DOM.add(td,'a',{id:ed.id+'_resize',href:'javascript:;',onclick:"return false;",'class':'mceResize'});if(s.theme_advanced_resizing_use_cookie){ed.onPostRender.add(function(){var o=Cookie.getHash("TinyMCE_"+ed.id+"_size"),c=DOM.get(ed.id+'_tbl');if(!o)return;if(s.theme_advanced_resize_horizontal)c.style.width=Math.max(10,o.cw)+'px';c.style.height=Math.max(10,o.ch)+'px';DOM.get(ed.id+'_ifr').style.height=Math.max(10,parseInt(o.ch)+t.deltaHeight)+'px';});}ed.onPostRender.add(function(){Event.add(ed.id+'_resize','mousedown',function(e){var c,p,w,h,n,pa;c=DOM.get(ed.id+'_tbl');w=c.clientWidth;h=c.clientHeight;miw=s.theme_advanced_resizing_min_width||100;mih=s.theme_advanced_resizing_min_height||100;maw=s.theme_advanced_resizing_max_width||0xFFFF;mah=s.theme_advanced_resizing_max_height||0xFFFF;p=DOM.add(DOM.get(ed.id+'_parent'),'div',{'class':'mcePlaceHolder'});DOM.setStyles(p,{width:w,height:h});DOM.hide(c);DOM.show(p);r={x:e.screenX,y:e.screenY,w:w,h:h,dx:null,dy:null};mf=Event.add(DOM.doc,'mousemove',function(e){var w,h;r.dx=e.screenX-r.x;r.dy=e.screenY-r.y;w=Math.max(miw,r.w+r.dx);h=Math.max(mih,r.h+r.dy);w=Math.min(maw,w);h=Math.min(mah,h);if(s.theme_advanced_resize_horizontal)p.style.width=w+'px';p.style.height=h+'px';return Event.cancel(e);});me=Event.add(DOM.doc,'mouseup',function(e){var ifr;Event.remove(DOM.doc,'mousemove',mf);Event.remove(DOM.doc,'mouseup',me);c.style.display='';DOM.remove(p);if(r.dx===null)return;ifr=DOM.get(ed.id+'_ifr');if(s.theme_advanced_resize_horizontal)c.style.width=Math.max(10,r.w+r.dx)+'px';c.style.height=Math.max(10,r.h+r.dy)+'px';ifr.style.height=Math.max(10,ifr.clientHeight+r.dy)+'px';if(s.theme_advanced_resizing_use_cookie){Cookie.setHash("TinyMCE_"+ed.id+"_size",{cw:r.w+r.dx,ch:r.h+r.dy});}});return Event.cancel(e);});});}o.deltaHeight-=21;n=tb=null;},_nodeChanged:function(ed,cm,n,co){var t=this,p,de=0,v,c,s=t.settings,cl,fz,fn;if(s.readonly)return;tinymce.each(t.stateControls,function(c){cm.setActive(c,ed.queryCommandState(t.controls[c][1]));});cm.setActive('visualaid',ed.hasVisual);cm.setDisabled('undo',!ed.undoManager.hasUndo()&&!ed.typing);cm.setDisabled('redo',!ed.undoManager.hasRedo());cm.setDisabled('outdent',!ed.queryCommandState('Outdent'));p=DOM.getParent(n,'A');if(c=cm.get('link')){if(!p||!p.name){c.setDisabled(!p&&co);c.setActive(!!p);}}if(c=cm.get('unlink')){c.setDisabled(!p&&co);c.setActive(!!p&&!p.name);}if(c=cm.get('anchor')){c.setActive(!!p&&p.name);if(tinymce.isWebKit){p=DOM.getParent(n,'IMG');c.setActive(!!p&&DOM.getAttrib(p,'mce_name')=='a');}}p=DOM.getParent(n,'IMG');if(c=cm.get('image'))c.setActive(!!p&&n.className.indexOf('mceItem')==-1);if(c=cm.get('styleselect')){if(n.className){t._importClasses();c.select(n.className);}else c.select();}if(c=cm.get('formatselect')){p=DOM.getParent(n,DOM.isBlock);if(p)c.select(p.nodeName.toLowerCase());}if(ed.settings.convert_fonts_to_spans){ed.dom.getParent(n,function(n){if(n.nodeName==='SPAN'){if(!cl&&n.className)cl=n.className;if(!fz&&n.style.fontSize)fz=n.style.fontSize;if(!fn&&n.style.fontFamily)fn=n.style.fontFamily.replace(/[\"\']+/g,'').replace(/^([^,]+).*/,'$1').toLowerCase();}return false;});if(c=cm.get('fontselect')){c.select(function(v){return v.replace(/^([^,]+).*/,'$1').toLowerCase()==fn;});}if(c=cm.get('fontsizeselect')){c.select(function(v){if(v.fontSize&&v.fontSize===fz)return true;if(v['class']&&v['class']===cl)return true;});}}else{if(c=cm.get('fontselect'))c.select(ed.queryCommandValue('FontName'));if(c=cm.get('fontsizeselect')){v=ed.queryCommandValue('FontSize');c.select(function(iv){return iv.fontSize==v;});}}if(s.theme_advanced_path&&s.theme_advanced_statusbar_location){p=DOM.get(ed.id+'_path')||DOM.add(ed.id+'_path_row','span',{id:ed.id+'_path'});DOM.setHTML(p,'');ed.dom.getParent(n,function(n){var na=n.nodeName.toLowerCase(),u,pi,ti='';if(n.nodeType!=1||n.nodeName==='BR'||(DOM.hasClass(n,'mceItemHidden')||DOM.hasClass(n,'mceItemRemoved')))return;if(v=DOM.getAttrib(n,'mce_name'))na=v;if(tinymce.isIE&&n.scopeName!=='HTML')na=n.scopeName+':'+na;na=na.replace(/mce\:/g,'');switch(na){case'b':na='strong';break;case'i':na='em';break;case'img':if(v=DOM.getAttrib(n,'src'))ti+='src: '+v+' ';break;case'a':if(v=DOM.getAttrib(n,'name')){ti+='name: '+v+' ';na+='#'+v;}if(v=DOM.getAttrib(n,'href'))ti+='href: '+v+' ';break;case'font':if(s.convert_fonts_to_spans)na='span';if(v=DOM.getAttrib(n,'face'))ti+='font: '+v+' ';if(v=DOM.getAttrib(n,'size'))ti+='size: '+v+' ';if(v=DOM.getAttrib(n,'color'))ti+='color: '+v+' ';break;case'span':if(v=DOM.getAttrib(n,'style'))ti+='style: '+v+' ';break;}if(v=DOM.getAttrib(n,'id'))ti+='id: '+v+' ';if(v=n.className){v=v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g,'');if(v&&v.indexOf('mceItem')==-1){ti+='class: '+v+' ';if(DOM.isBlock(n)||na=='img'||na=='span')na+='.'+v;}}na=na.replace(/(html:)/g,'');na={name:na,node:n,title:ti};t.onResolveName.dispatch(t,na);ti=na.title;na=na.name;pi=DOM.create('a',{'href':"javascript:;",onmousedown:"return false;",title:ti,'class':'mcePath_'+(de++)},na);if(p.hasChildNodes()){p.insertBefore(DOM.doc.createTextNode(' \u00bb '),p.firstChild);p.insertBefore(pi,p.firstChild);}else p.appendChild(pi);},ed.getBody());}},_sel:function(v){this.editor.execCommand('mceSelectNodeDepth',false,v);},_mceInsertAnchor:function(ui,v){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/anchor.htm',width:320+parseInt(ed.getLang('advanced.anchor_delta_width',0)),height:90+parseInt(ed.getLang('advanced.anchor_delta_height',0)),inline:true},{theme_url:this.url});},_mceCharMap:function(){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/charmap.htm',width:550+parseInt(ed.getLang('advanced.charmap_delta_width',0)),height:250+parseInt(ed.getLang('advanced.charmap_delta_height',0)),inline:true},{theme_url:this.url});},_mceHelp:function(){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/about.htm',width:480,height:380,inline:true},{theme_url:this.url});},_mceColorPicker:function(u,v){var ed=this.editor;v=v||{};ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/color_picker.htm',width:375+parseInt(ed.getLang('advanced.colorpicker_delta_width',0)),height:250+parseInt(ed.getLang('advanced.colorpicker_delta_height',0)),close_previous:false,inline:true},{input_color:v.color,func:v.func,theme_url:this.url});},_mceCodeEditor:function(ui,val){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/source_editor.htm',width:parseInt(ed.getParam("theme_advanced_source_editor_width",720)),height:parseInt(ed.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url});},_mceImage:function(ui,val){var ed=this.editor;if(ed.dom.getAttrib(ed.selection.getNode(),'class').indexOf('mceItem')!=-1)return;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/image.htm',width:355+parseInt(ed.getLang('advanced.image_delta_width',0)),height:275+parseInt(ed.getLang('advanced.image_delta_height',0)),inline:true},{theme_url:this.url});},_mceLink:function(ui,val){var ed=this.editor;ed.windowManager.open({url:tinymce.baseURL+'/themes/advanced/link.htm',width:310+parseInt(ed.getLang('advanced.link_delta_width',0)),height:200+parseInt(ed.getLang('advanced.link_delta_height',0)),inline:true},{theme_url:this.url});},_mceNewDocument:function(){var ed=this.editor;ed.windowManager.confirm('advanced.newdocument',function(s){if(s)ed.execCommand('mceSetContent',false,'');});},_mceForeColor:function(){var t=this;this._mceColorPicker(0,{color:t.fgColor,func:function(co){t.fgColor=co;t.editor.execCommand('ForeColor',false,co);}});},_mceBackColor:function(){var t=this;this._mceColorPicker(0,{color:t.bgColor,func:function(co){t.bgColor=co;t.editor.execCommand('HiliteColor',false,co);}});},_ufirst:function(s){return s.substring(0,1).toUpperCase()+s.substring(1);}});tinymce.ThemeManager.add('advanced',tinymce.themes.AdvancedTheme);}()); \ No newline at end of file
diff --git a/public/javascripts/tiny_mce/themes/advanced/editor_template_src.js b/public/javascripts/tiny_mce/themes/advanced/editor_template_src.js
new file mode 100755
index 0000000..b3cef01
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/editor_template_src.js
@@ -0,0 +1,1153 @@
1/**
2 * $Id: editor_template_src.js 960 2008-11-12 18:30:32Z spocke $
3 *
4 * @author Moxiecode
5 * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
6 */
7
8(function() {
9 var DOM = tinymce.DOM, Event = tinymce.dom.Event, extend = tinymce.extend, each = tinymce.each, Cookie = tinymce.util.Cookie, lastExtID, explode = tinymce.explode;
10
11 // Tell it to load theme specific language pack(s)
12 tinymce.ThemeManager.requireLangPack('advanced');
13
14 tinymce.create('tinymce.themes.AdvancedTheme', {
15 sizes : [8, 10, 12, 14, 18, 24, 36],
16
17 // Control name lookup, format: title, command
18 controls : {
19 bold : ['bold_desc', 'Bold'],
20 italic : ['italic_desc', 'Italic'],
21 underline : ['underline_desc', 'Underline'],
22 strikethrough : ['striketrough_desc', 'Strikethrough'],
23 justifyleft : ['justifyleft_desc', 'JustifyLeft'],
24 justifycenter : ['justifycenter_desc', 'JustifyCenter'],
25 justifyright : ['justifyright_desc', 'JustifyRight'],
26 justifyfull : ['justifyfull_desc', 'JustifyFull'],
27 bullist : ['bullist_desc', 'InsertUnorderedList'],
28 numlist : ['numlist_desc', 'InsertOrderedList'],
29 outdent : ['outdent_desc', 'Outdent'],
30 indent : ['indent_desc', 'Indent'],
31 cut : ['cut_desc', 'Cut'],
32 copy : ['copy_desc', 'Copy'],
33 paste : ['paste_desc', 'Paste'],
34 undo : ['undo_desc', 'Undo'],
35 redo : ['redo_desc', 'Redo'],
36 link : ['link_desc', 'mceLink'],
37 unlink : ['unlink_desc', 'unlink'],
38 image : ['image_desc', 'mceImage'],
39 cleanup : ['cleanup_desc', 'mceCleanup'],
40 help : ['help_desc', 'mceHelp'],
41 code : ['code_desc', 'mceCodeEditor'],
42 hr : ['hr_desc', 'InsertHorizontalRule'],
43 removeformat : ['removeformat_desc', 'RemoveFormat'],
44 sub : ['sub_desc', 'subscript'],
45 sup : ['sup_desc', 'superscript'],
46 forecolor : ['forecolor_desc', 'ForeColor'],
47 forecolorpicker : ['forecolor_desc', 'mceForeColor'],
48 backcolor : ['backcolor_desc', 'HiliteColor'],
49 backcolorpicker : ['backcolor_desc', 'mceBackColor'],
50 charmap : ['charmap_desc', 'mceCharMap'],
51 visualaid : ['visualaid_desc', 'mceToggleVisualAid'],
52 anchor : ['anchor_desc', 'mceInsertAnchor'],
53 newdocument : ['newdocument_desc', 'mceNewDocument'],
54 blockquote : ['blockquote_desc', 'mceBlockQuote']
55 },
56
57 stateControls : ['bold', 'italic', 'underline', 'strikethrough', 'bullist', 'numlist', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'sub', 'sup', 'blockquote'],
58
59 init : function(ed, url) {
60 var t = this, s, v, o;
61
62 t.editor = ed;
63 t.url = url;
64 t.onResolveName = new tinymce.util.Dispatcher(this);
65
66 // Default settings
67 t.settings = s = extend({
68 theme_advanced_path : true,
69 theme_advanced_toolbar_location : 'bottom',
70 theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",
71 theme_advanced_buttons2 : "bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",
72 theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap",
73 theme_advanced_blockformats : "p,address,pre,h1,h2,h3,h4,h5,h6",
74 theme_advanced_toolbar_align : "center",
75 theme_advanced_fonts : "Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",
76 theme_advanced_more_colors : 1,
77 theme_advanced_row_height : 23,
78 theme_advanced_resize_horizontal : 1,
79 theme_advanced_resizing_use_cookie : 1,
80 theme_advanced_font_sizes : "1,2,3,4,5,6,7",
81 readonly : ed.settings.readonly
82 }, ed.settings);
83
84 // Setup default font_size_style_values
85 if (!s.font_size_style_values)
86 s.font_size_style_values = "8pt,10pt,12pt,14pt,18pt,24pt,36pt";
87
88 if (tinymce.is(s.theme_advanced_font_sizes, 'string')) {
89 s.font_size_style_values = tinymce.explode(s.font_size_style_values);
90 s.font_size_classes = tinymce.explode(s.font_size_classes || '');
91
92 // Parse string value
93 o = {};
94 ed.settings.theme_advanced_font_sizes = s.theme_advanced_font_sizes;
95 each(ed.getParam('theme_advanced_font_sizes', '', 'hash'), function(v, k) {
96 var cl;
97
98 if (k == v && v >= 1 && v <= 7) {
99 k = v + ' (' + t.sizes[v - 1] + 'pt)';
100
101 if (ed.settings.convert_fonts_to_spans) {
102 cl = s.font_size_classes[v - 1];
103 v = s.font_size_style_values[v - 1] || (t.sizes[v - 1] + 'pt');
104 }
105 }
106
107 if (/\s*\./.test(v))
108 cl = v.replace(/\./g, '');
109
110 o[k] = cl ? {'class' : cl} : {fontSize : v};
111 });
112
113 s.theme_advanced_font_sizes = o;
114 }
115
116 if ((v = s.theme_advanced_path_location) && v != 'none')
117 s.theme_advanced_statusbar_location = s.theme_advanced_path_location;
118
119 if (s.theme_advanced_statusbar_location == 'none')
120 s.theme_advanced_statusbar_location = 0;
121
122 // Init editor
123 ed.onInit.add(function() {
124 ed.onNodeChange.add(t._nodeChanged, t);
125
126 if (ed.settings.content_css !== false)
127 ed.dom.loadCSS(ed.baseURI.toAbsolute("themes/advanced/skins/" + ed.settings.skin + "/content.css"));
128 });
129
130 ed.onSetProgressState.add(function(ed, b, ti) {
131 var co, id = ed.id, tb;
132
133 if (b) {
134 t.progressTimer = setTimeout(function() {
135 co = ed.getContainer();
136 co = co.insertBefore(DOM.create('DIV', {style : 'position:relative'}), co.firstChild);
137 tb = DOM.get(ed.id + '_tbl');
138
139 DOM.add(co, 'div', {id : id + '_blocker', 'class' : 'mceBlocker', style : {width : tb.clientWidth + 2, height : tb.clientHeight + 2}});
140 DOM.add(co, 'div', {id : id + '_progress', 'class' : 'mceProgress', style : {left : tb.clientWidth / 2, top : tb.clientHeight / 2}});
141 }, ti || 0);
142 } else {
143 DOM.remove(id + '_blocker');
144 DOM.remove(id + '_progress');
145 clearTimeout(t.progressTimer);
146 }
147 });
148
149 DOM.loadCSS(s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : url + "/skins/" + ed.settings.skin + "/ui.css");
150
151 if (s.skin_variant)
152 DOM.loadCSS(url + "/skins/" + ed.settings.skin + "/ui_" + s.skin_variant + ".css");
153 },
154
155 createControl : function(n, cf) {
156 var cd, c;
157
158 if (c = cf.createControl(n))
159 return c;
160
161 switch (n) {
162 case "styleselect":
163 return this._createStyleSelect();
164
165 case "formatselect":
166 return this._createBlockFormats();
167
168 case "fontselect":
169 return this._createFontSelect();
170
171 case "fontsizeselect":
172 return this._createFontSizeSelect();
173
174 case "forecolor":
175 return this._createForeColorMenu();
176
177 case "backcolor":
178 return this._createBackColorMenu();
179 }
180
181 if ((cd = this.controls[n]))
182 return cf.createButton(n, {title : "advanced." + cd[0], cmd : cd[1], ui : cd[2], value : cd[3]});
183 },
184
185 execCommand : function(cmd, ui, val) {
186 var f = this['_' + cmd];
187
188 if (f) {
189 f.call(this, ui, val);
190 return true;
191 }
192
193 return false;
194 },
195
196 _importClasses : function(e) {
197 var ed = this.editor, c = ed.controlManager.get('styleselect');
198
199 if (c.getLength() == 0) {
200 each(ed.dom.getClasses(), function(o) {
201 c.add(o['class'], o['class']);
202 });
203 }
204 },
205
206 _createStyleSelect : function(n) {
207 var t = this, ed = t.editor, cf = ed.controlManager, c = cf.createListBox('styleselect', {
208 title : 'advanced.style_select',
209 onselect : function(v) {
210 if (c.selectedValue === v) {
211 ed.execCommand('mceSetStyleInfo', 0, {command : 'removeformat'});
212 c.select();
213 return false;
214 } else
215 ed.execCommand('mceSetCSSClass', 0, v);
216 }
217 });
218
219 if (c) {
220 each(ed.getParam('theme_advanced_styles', '', 'hash'), function(v, k) {
221 if (v)
222 c.add(t.editor.translate(k), v);
223 });
224
225 c.onPostRender.add(function(ed, n) {
226 if (!c.NativeListBox) {
227 Event.add(n.id + '_text', 'focus', t._importClasses, t);
228 Event.add(n.id + '_text', 'mousedown', t._importClasses, t);
229 Event.add(n.id + '_open', 'focus', t._importClasses, t);
230 Event.add(n.id + '_open', 'mousedown', t._importClasses, t);
231 } else
232 Event.add(n.id, 'focus', t._importClasses, t);
233 });
234 }
235
236 return c;
237 },
238
239 _createFontSelect : function() {
240 var c, t = this, ed = t.editor;
241
242 c = ed.controlManager.createListBox('fontselect', {title : 'advanced.fontdefault', cmd : 'FontName'});
243 if (c) {
244 each(ed.getParam('theme_advanced_fonts', t.settings.theme_advanced_fonts, 'hash'), function(v, k) {
245 c.add(ed.translate(k), v, {style : v.indexOf('dings') == -1 ? 'font-family:' + v : ''});
246 });
247 }
248
249 return c;
250 },
251
252 _createFontSizeSelect : function() {
253 var t = this, ed = t.editor, c, i = 0, cl = [];
254
255 c = ed.controlManager.createListBox('fontsizeselect', {title : 'advanced.font_size', onselect : function(v) {
256 if (v.fontSize)
257 ed.execCommand('FontSize', false, v.fontSize);
258 else {
259 each(t.settings.theme_advanced_font_sizes, function(v, k) {
260 if (v['class'])
261 cl.push(v['class']);
262 });
263
264 ed.editorCommands._applyInlineStyle('span', {'class' : v['class']}, {check_classes : cl});
265 }
266 }});
267
268 if (c) {
269 each(t.settings.theme_advanced_font_sizes, function(v, k) {
270 var fz = v.fontSize;
271
272 if (fz >= 1 && fz <= 7)
273 fz = t.sizes[parseInt(fz) - 1] + 'pt';
274
275 c.add(k, v, {'style' : 'font-size:' + fz, 'class' : 'mceFontSize' + (i++) + (' ' + (v['class'] || ''))});
276 });
277 }
278
279 return c;
280 },
281
282 _createBlockFormats : function() {
283 var c, fmts = {
284 p : 'advanced.paragraph',
285 address : 'advanced.address',
286 pre : 'advanced.pre',
287 h1 : 'advanced.h1',
288 h2 : 'advanced.h2',
289 h3 : 'advanced.h3',
290 h4 : 'advanced.h4',
291 h5 : 'advanced.h5',
292 h6 : 'advanced.h6',
293 div : 'advanced.div',
294 blockquote : 'advanced.blockquote',
295 code : 'advanced.code',
296 dt : 'advanced.dt',
297 dd : 'advanced.dd',
298 samp : 'advanced.samp'
299 }, t = this;
300
301 c = t.editor.controlManager.createListBox('formatselect', {title : 'advanced.block', cmd : 'FormatBlock'});
302 if (c) {
303 each(t.editor.getParam('theme_advanced_blockformats', t.settings.theme_advanced_blockformats, 'hash'), function(v, k) {
304 c.add(t.editor.translate(k != v ? k : fmts[v]), v, {'class' : 'mce_formatPreview mce_' + v});
305 });
306 }
307
308 return c;
309 },
310
311 _createForeColorMenu : function() {
312 var c, t = this, s = t.settings, o = {}, v;
313
314 if (s.theme_advanced_more_colors) {
315 o.more_colors_func = function() {
316 t._mceColorPicker(0, {
317 color : c.value,
318 func : function(co) {
319 c.setColor(co);
320 }
321 });
322 };
323 }
324
325 if (v = s.theme_advanced_text_colors)
326 o.colors = v;
327
328 if (s.theme_advanced_default_foreground_color)
329 o.default_color = s.theme_advanced_default_foreground_color;
330
331 o.title = 'advanced.forecolor_desc';
332 o.cmd = 'ForeColor';
333 o.scope = this;
334
335 c = t.editor.controlManager.createColorSplitButton('forecolor', o);
336
337 return c;
338 },
339
340 _createBackColorMenu : function() {
341 var c, t = this, s = t.settings, o = {}, v;
342
343 if (s.theme_advanced_more_colors) {
344 o.more_colors_func = function() {
345 t._mceColorPicker(0, {
346 color : c.value,
347 func : function(co) {
348 c.setColor(co);
349 }
350 });
351 };
352 }
353
354 if (v = s.theme_advanced_background_colors)
355 o.colors = v;
356
357 if (s.theme_advanced_default_background_color)
358 o.default_color = s.theme_advanced_default_background_color;
359
360 o.title = 'advanced.backcolor_desc';
361 o.cmd = 'HiliteColor';
362 o.scope = this;
363
364 c = t.editor.controlManager.createColorSplitButton('backcolor', o);
365
366 return c;
367 },
368
369 renderUI : function(o) {
370 var n, ic, tb, t = this, ed = t.editor, s = t.settings, sc, p, nl;
371
372 n = p = DOM.create('span', {id : ed.id + '_parent', 'class' : 'mceEditor ' + ed.settings.skin + 'Skin' + (s.skin_variant ? ' ' + ed.settings.skin + 'Skin' + t._ufirst(s.skin_variant) : '')});
373
374 if (!DOM.boxModel)
375 n = DOM.add(n, 'div', {'class' : 'mceOldBoxModel'});
376
377 n = sc = DOM.add(n, 'table', {id : ed.id + '_tbl', 'class' : 'mceLayout', cellSpacing : 0, cellPadding : 0});
378 n = tb = DOM.add(n, 'tbody');
379
380 switch ((s.theme_advanced_layout_manager || '').toLowerCase()) {
381 case "rowlayout":
382 ic = t._rowLayout(s, tb, o);
383 break;
384
385 case "customlayout":
386 ic = ed.execCallback("theme_advanced_custom_layout", s, tb, o, p);
387 break;
388
389 default:
390 ic = t._simpleLayout(s, tb, o, p);
391 }
392
393 n = o.targetNode;
394
395 // Add classes to first and last TRs
396 nl = DOM.stdMode ? sc.getElementsByTagName('tr') : sc.rows; // Quick fix for IE 8
397 DOM.addClass(nl[0], 'mceFirst');
398 DOM.addClass(nl[nl.length - 1], 'mceLast');
399
400 // Add classes to first and last TDs
401 each(DOM.select('tr', tb), function(n) {
402 DOM.addClass(n.firstChild, 'mceFirst');
403 DOM.addClass(n.childNodes[n.childNodes.length - 1], 'mceLast');
404 });
405
406 if (DOM.get(s.theme_advanced_toolbar_container))
407 DOM.get(s.theme_advanced_toolbar_container).appendChild(p);
408 else
409 DOM.insertAfter(p, n);
410
411 Event.add(ed.id + '_path_row', 'click', function(e) {
412 e = e.target;
413
414 if (e.nodeName == 'A') {
415 t._sel(e.className.replace(/^.*mcePath_([0-9]+).*$/, '$1'));
416
417 return Event.cancel(e);
418 }
419 });
420/*
421 if (DOM.get(ed.id + '_path_row')) {
422 Event.add(ed.id + '_tbl', 'mouseover', function(e) {
423 var re;
424
425 e = e.target;
426
427 if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
428 re = DOM.get(ed.id + '_path_row');
429 t.lastPath = re.innerHTML;
430 DOM.setHTML(re, e.parentNode.title);
431 }
432 });
433
434 Event.add(ed.id + '_tbl', 'mouseout', function(e) {
435 if (t.lastPath) {
436 DOM.setHTML(ed.id + '_path_row', t.lastPath);
437 t.lastPath = 0;
438 }
439 });
440 }
441*/
442
443 if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))
444 Event.add(DOM.add(p, 'a', {href : '#'}, '<!-- IE -->'), 'focus', function() {tinyMCE.get(ed.id).focus();});
445
446 if (s.theme_advanced_toolbar_location == 'external')
447 o.deltaHeight = 0;
448
449 t.deltaHeight = o.deltaHeight;
450 o.targetNode = null;
451
452 return {
453 iframeContainer : ic,
454 editorContainer : ed.id + '_parent',
455 sizeContainer : sc,
456 deltaHeight : o.deltaHeight
457 };
458 },
459
460 getInfo : function() {
461 return {
462 longname : 'Advanced theme',
463 author : 'Moxiecode Systems AB',
464 authorurl : 'http://tinymce.moxiecode.com',
465 version : tinymce.majorVersion + "." + tinymce.minorVersion
466 }
467 },
468
469 resizeBy : function(dw, dh) {
470 var e = DOM.get(this.editor.id + '_tbl');
471
472 this.resizeTo(e.clientWidth + dw, e.clientHeight + dh);
473 },
474
475 resizeTo : function(w, h) {
476 var ed = this.editor, s = ed.settings, e = DOM.get(ed.id + '_tbl'), ifr = DOM.get(ed.id + '_ifr'), dh;
477
478 // Boundery fix box
479 w = Math.max(s.theme_advanced_resizing_min_width || 100, w);
480 h = Math.max(s.theme_advanced_resizing_min_height || 100, h);
481 w = Math.min(s.theme_advanced_resizing_max_width || 0xFFFF, w);
482 h = Math.min(s.theme_advanced_resizing_max_height || 0xFFFF, h);
483
484 // Calc difference between iframe and container
485 dh = e.clientHeight - ifr.clientHeight;
486
487 // Resize iframe and container
488 DOM.setStyle(ifr, 'height', h - dh);
489 DOM.setStyles(e, {width : w, height : h});
490 },
491
492 destroy : function() {
493 var id = this.editor.id;
494
495 Event.clear(id + '_resize');
496 Event.clear(id + '_path_row');
497 Event.clear(id + '_external_close');
498 },
499
500 // Internal functions
501
502 _simpleLayout : function(s, tb, o, p) {
503 var t = this, ed = t.editor, lo = s.theme_advanced_toolbar_location, sl = s.theme_advanced_statusbar_location, n, ic, etb, c;
504
505 if (s.readonly) {
506 n = DOM.add(tb, 'tr');
507 n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
508 return ic;
509 }
510
511 // Create toolbar container at top
512 if (lo == 'top')
513 t._addToolbars(tb, o);
514
515 // Create external toolbar
516 if (lo == 'external') {
517 n = c = DOM.create('div', {style : 'position:relative'});
518 n = DOM.add(n, 'div', {id : ed.id + '_external', 'class' : 'mceExternalToolbar'});
519 DOM.add(n, 'a', {id : ed.id + '_external_close', href : 'javascript:;', 'class' : 'mceExternalClose'});
520 n = DOM.add(n, 'table', {id : ed.id + '_tblext', cellSpacing : 0, cellPadding : 0});
521 etb = DOM.add(n, 'tbody');
522
523 if (p.firstChild.className == 'mceOldBoxModel')
524 p.firstChild.appendChild(c);
525 else
526 p.insertBefore(c, p.firstChild);
527
528 t._addToolbars(etb, o);
529
530 ed.onMouseUp.add(function() {
531 var e = DOM.get(ed.id + '_external');
532 DOM.show(e);
533
534 DOM.hide(lastExtID);
535
536 var f = Event.add(ed.id + '_external_close', 'click', function() {
537 DOM.hide(ed.id + '_external');
538 Event.remove(ed.id + '_external_close', 'click', f);
539 });
540
541 DOM.show(e);
542 DOM.setStyle(e, 'top', 0 - DOM.getRect(ed.id + '_tblext').h - 1);
543
544 // Fixes IE rendering bug
545 DOM.hide(e);
546 DOM.show(e);
547 e.style.filter = '';
548
549 lastExtID = ed.id + '_external';
550
551 e = null;
552 });
553 }
554
555 if (sl == 'top')
556 t._addStatusBar(tb, o);
557
558 // Create iframe container
559 if (!s.theme_advanced_toolbar_container) {
560 n = DOM.add(tb, 'tr');
561 n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
562 }
563
564 // Create toolbar container at bottom
565 if (lo == 'bottom')
566 t._addToolbars(tb, o);
567
568 if (sl == 'bottom')
569 t._addStatusBar(tb, o);
570
571 return ic;
572 },
573
574 _rowLayout : function(s, tb, o) {
575 var t = this, ed = t.editor, dc, da, cf = ed.controlManager, n, ic, to, a;
576
577 dc = s.theme_advanced_containers_default_class || '';
578 da = s.theme_advanced_containers_default_align || 'center';
579
580 each(explode(s.theme_advanced_containers || ''), function(c, i) {
581 var v = s['theme_advanced_container_' + c] || '';
582
583 switch (v.toLowerCase()) {
584 case 'mceeditor':
585 n = DOM.add(tb, 'tr');
586 n = ic = DOM.add(n, 'td', {'class' : 'mceIframeContainer'});
587 break;
588
589 case 'mceelementpath':
590 t._addStatusBar(tb, o);
591 break;
592
593 default:
594 a = (s['theme_advanced_container_' + c + '_align'] || da).toLowerCase();
595 a = 'mce' + t._ufirst(a);
596
597 n = DOM.add(DOM.add(tb, 'tr'), 'td', {
598 'class' : 'mceToolbar ' + (s['theme_advanced_container_' + c + '_class'] || dc) + ' ' + a || da
599 });
600
601 to = cf.createToolbar("toolbar" + i);
602 t._addControls(v, to);
603 DOM.setHTML(n, to.renderHTML());
604 o.deltaHeight -= s.theme_advanced_row_height;
605 }
606 });
607
608 return ic;
609 },
610
611 _addControls : function(v, tb) {
612 var t = this, s = t.settings, di, cf = t.editor.controlManager;
613
614 if (s.theme_advanced_disable && !t._disabled) {
615 di = {};
616
617 each(explode(s.theme_advanced_disable), function(v) {
618 di[v] = 1;
619 });
620
621 t._disabled = di;
622 } else
623 di = t._disabled;
624
625 each(explode(v), function(n) {
626 var c;
627
628 if (di && di[n])
629 return;
630
631 // Compatiblity with 2.x
632 if (n == 'tablecontrols') {
633 each(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"], function(n) {
634 n = t.createControl(n, cf);
635
636 if (n)
637 tb.add(n);
638 });
639
640 return;
641 }
642
643 c = t.createControl(n, cf);
644
645 if (c)
646 tb.add(c);
647 });
648 },
649
650 _addToolbars : function(c, o) {
651 var t = this, i, tb, ed = t.editor, s = t.settings, v, cf = ed.controlManager, di, n, h = [], a;
652
653 a = s.theme_advanced_toolbar_align.toLowerCase();
654 a = 'mce' + t._ufirst(a);
655
656 n = DOM.add(DOM.add(c, 'tr'), 'td', {'class' : 'mceToolbar ' + a});
657
658 if (!ed.getParam('accessibility_focus') || ed.getParam('tab_focus'))
659 h.push(DOM.createHTML('a', {href : '#', onfocus : 'tinyMCE.get(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
660
661 h.push(DOM.createHTML('a', {href : '#', accesskey : 'q', title : ed.getLang("advanced.toolbar_focus")}, '<!-- IE -->'));
662
663 // Create toolbar and add the controls
664 for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
665 tb = cf.createToolbar("toolbar" + i, {'class' : 'mceToolbarRow' + i});
666
667 if (s['theme_advanced_buttons' + i + '_add'])
668 v += ',' + s['theme_advanced_buttons' + i + '_add'];
669
670 if (s['theme_advanced_buttons' + i + '_add_before'])
671 v = s['theme_advanced_buttons' + i + '_add_before'] + ',' + v;
672
673 t._addControls(v, tb);
674
675 //n.appendChild(n = tb.render());
676 h.push(tb.renderHTML());
677
678 o.deltaHeight -= s.theme_advanced_row_height;
679 }
680
681 h.push(DOM.createHTML('a', {href : '#', accesskey : 'z', title : ed.getLang("advanced.toolbar_focus"), onfocus : 'tinyMCE.getInstanceById(\'' + ed.id + '\').focus();'}, '<!-- IE -->'));
682 DOM.setHTML(n, h.join(''));
683 },
684
685 _addStatusBar : function(tb, o) {
686 var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
687
688 n = DOM.add(tb, 'tr');
689 n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
690 n = DOM.add(n, 'div', {id : ed.id + '_path_row'}, s.theme_advanced_path ? ed.translate('advanced.path') + ': ' : '&nbsp;');
691 DOM.add(n, 'a', {href : '#', accesskey : 'x'});
692
693 if (s.theme_advanced_resizing && !tinymce.isOldWebKit) {
694 DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize'});
695
696 if (s.theme_advanced_resizing_use_cookie) {
697 ed.onPostRender.add(function() {
698 var o = Cookie.getHash("TinyMCE_" + ed.id + "_size"), c = DOM.get(ed.id + '_tbl');
699
700 if (!o)
701 return;
702
703 if (s.theme_advanced_resize_horizontal)
704 c.style.width = Math.max(10, o.cw) + 'px';
705
706 c.style.height = Math.max(10, o.ch) + 'px';
707 DOM.get(ed.id + '_ifr').style.height = Math.max(10, parseInt(o.ch) + t.deltaHeight) + 'px';
708 });
709 }
710
711 ed.onPostRender.add(function() {
712 Event.add(ed.id + '_resize', 'mousedown', function(e) {
713 var c, p, w, h, n, pa;
714
715 // Measure container
716 c = DOM.get(ed.id + '_tbl');
717 w = c.clientWidth;
718 h = c.clientHeight;
719
720 miw = s.theme_advanced_resizing_min_width || 100;
721 mih = s.theme_advanced_resizing_min_height || 100;
722 maw = s.theme_advanced_resizing_max_width || 0xFFFF;
723 mah = s.theme_advanced_resizing_max_height || 0xFFFF;
724
725 // Setup placeholder
726 p = DOM.add(DOM.get(ed.id + '_parent'), 'div', {'class' : 'mcePlaceHolder'});
727 DOM.setStyles(p, {width : w, height : h});
728
729 // Replace with placeholder
730 DOM.hide(c);
731 DOM.show(p);
732
733 // Create internal resize obj
734 r = {
735 x : e.screenX,
736 y : e.screenY,
737 w : w,
738 h : h,
739 dx : null,
740 dy : null
741 };
742
743 // Start listening
744 mf = Event.add(DOM.doc, 'mousemove', function(e) {
745 var w, h;
746
747 // Calc delta values
748 r.dx = e.screenX - r.x;
749 r.dy = e.screenY - r.y;
750
751 // Boundery fix box
752 w = Math.max(miw, r.w + r.dx);
753 h = Math.max(mih, r.h + r.dy);
754 w = Math.min(maw, w);
755 h = Math.min(mah, h);
756
757 // Resize placeholder
758 if (s.theme_advanced_resize_horizontal)
759 p.style.width = w + 'px';
760
761 p.style.height = h + 'px';
762
763 return Event.cancel(e);
764 });
765
766 me = Event.add(DOM.doc, 'mouseup', function(e) {
767 var ifr;
768
769 // Stop listening
770 Event.remove(DOM.doc, 'mousemove', mf);
771 Event.remove(DOM.doc, 'mouseup', me);
772
773 c.style.display = '';
774 DOM.remove(p);
775
776 if (r.dx === null)
777 return;
778
779 ifr = DOM.get(ed.id + '_ifr');
780
781 if (s.theme_advanced_resize_horizontal)
782 c.style.width = Math.max(10, r.w + r.dx) + 'px';
783
784 c.style.height = Math.max(10, r.h + r.dy) + 'px';
785 ifr.style.height = Math.max(10, ifr.clientHeight + r.dy) + 'px';
786
787 if (s.theme_advanced_resizing_use_cookie) {
788 Cookie.setHash("TinyMCE_" + ed.id + "_size", {
789 cw : r.w + r.dx,
790 ch : r.h + r.dy
791 });
792 }
793 });
794
795 return Event.cancel(e);
796 });
797 });
798 }
799
800 o.deltaHeight -= 21;
801 n = tb = null;
802 },
803
804 _nodeChanged : function(ed, cm, n, co) {
805 var t = this, p, de = 0, v, c, s = t.settings, cl, fz, fn;
806
807 if (s.readonly)
808 return;
809
810 tinymce.each(t.stateControls, function(c) {
811 cm.setActive(c, ed.queryCommandState(t.controls[c][1]));
812 });
813
814 cm.setActive('visualaid', ed.hasVisual);
815 cm.setDisabled('undo', !ed.undoManager.hasUndo() && !ed.typing);
816 cm.setDisabled('redo', !ed.undoManager.hasRedo());
817 cm.setDisabled('outdent', !ed.queryCommandState('Outdent'));
818
819 p = DOM.getParent(n, 'A');
820 if (c = cm.get('link')) {
821 if (!p || !p.name) {
822 c.setDisabled(!p && co);
823 c.setActive(!!p);
824 }
825 }
826
827 if (c = cm.get('unlink')) {
828 c.setDisabled(!p && co);
829 c.setActive(!!p && !p.name);
830 }
831
832 if (c = cm.get('anchor')) {
833 c.setActive(!!p && p.name);
834
835 if (tinymce.isWebKit) {
836 p = DOM.getParent(n, 'IMG');
837 c.setActive(!!p && DOM.getAttrib(p, 'mce_name') == 'a');
838 }
839 }
840
841 p = DOM.getParent(n, 'IMG');
842 if (c = cm.get('image'))
843 c.setActive(!!p && n.className.indexOf('mceItem') == -1);
844
845 if (c = cm.get('styleselect')) {
846 if (n.className) {
847 t._importClasses();
848 c.select(n.className);
849 } else
850 c.select();
851 }
852
853 if (c = cm.get('formatselect')) {
854 p = DOM.getParent(n, DOM.isBlock);
855
856 if (p)
857 c.select(p.nodeName.toLowerCase());
858 }
859
860 if (ed.settings.convert_fonts_to_spans) {
861 ed.dom.getParent(n, function(n) {
862 if (n.nodeName === 'SPAN') {
863 if (!cl && n.className)
864 cl = n.className;
865
866 if (!fz && n.style.fontSize)
867 fz = n.style.fontSize;
868
869 if (!fn && n.style.fontFamily)
870 fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
871 }
872
873 return false;
874 });
875
876 if (c = cm.get('fontselect')) {
877 c.select(function(v) {
878 return v.replace(/^([^,]+).*/, '$1').toLowerCase() == fn;
879 });
880 }
881
882 if (c = cm.get('fontsizeselect')) {
883 c.select(function(v) {
884 if (v.fontSize && v.fontSize === fz)
885 return true;
886
887 if (v['class'] && v['class'] === cl)
888 return true;
889 });
890 }
891 } else {
892 if (c = cm.get('fontselect'))
893 c.select(ed.queryCommandValue('FontName'));
894
895 if (c = cm.get('fontsizeselect')) {
896 v = ed.queryCommandValue('FontSize');
897 c.select(function(iv) {
898 return iv.fontSize == v;
899 });
900 }
901 }
902
903 if (s.theme_advanced_path && s.theme_advanced_statusbar_location) {
904 p = DOM.get(ed.id + '_path') || DOM.add(ed.id + '_path_row', 'span', {id : ed.id + '_path'});
905 DOM.setHTML(p, '');
906
907 ed.dom.getParent(n, function(n) {
908 var na = n.nodeName.toLowerCase(), u, pi, ti = '';
909
910 // Ignore non element and hidden elements
911 if (n.nodeType != 1 || n.nodeName === 'BR' || (DOM.hasClass(n, 'mceItemHidden') || DOM.hasClass(n, 'mceItemRemoved')))
912 return;
913
914 // Fake name
915 if (v = DOM.getAttrib(n, 'mce_name'))
916 na = v;
917
918 // Handle prefix
919 if (tinymce.isIE && n.scopeName !== 'HTML')
920 na = n.scopeName + ':' + na;
921
922 // Remove internal prefix
923 na = na.replace(/mce\:/g, '');
924
925 // Handle node name
926 switch (na) {
927 case 'b':
928 na = 'strong';
929 break;
930
931 case 'i':
932 na = 'em';
933 break;
934
935 case 'img':
936 if (v = DOM.getAttrib(n, 'src'))
937 ti += 'src: ' + v + ' ';
938
939 break;
940
941 case 'a':
942 if (v = DOM.getAttrib(n, 'name')) {
943 ti += 'name: ' + v + ' ';
944 na += '#' + v;
945 }
946
947 if (v = DOM.getAttrib(n, 'href'))
948 ti += 'href: ' + v + ' ';
949
950 break;
951
952 case 'font':
953 if (s.convert_fonts_to_spans)
954 na = 'span';
955
956 if (v = DOM.getAttrib(n, 'face'))
957 ti += 'font: ' + v + ' ';
958
959 if (v = DOM.getAttrib(n, 'size'))
960 ti += 'size: ' + v + ' ';
961
962 if (v = DOM.getAttrib(n, 'color'))
963 ti += 'color: ' + v + ' ';
964
965 break;
966
967 case 'span':
968 if (v = DOM.getAttrib(n, 'style'))
969 ti += 'style: ' + v + ' ';
970
971 break;
972 }
973
974 if (v = DOM.getAttrib(n, 'id'))
975 ti += 'id: ' + v + ' ';
976
977 if (v = n.className) {
978 v = v.replace(/(webkit-[\w\-]+|Apple-[\w\-]+|mceItem\w+|mceVisualAid)/g, '');
979
980 if (v && v.indexOf('mceItem') == -1) {
981 ti += 'class: ' + v + ' ';
982
983 if (DOM.isBlock(n) || na == 'img' || na == 'span')
984 na += '.' + v;
985 }
986 }
987
988 na = na.replace(/(html:)/g, '');
989 na = {name : na, node : n, title : ti};
990 t.onResolveName.dispatch(t, na);
991 ti = na.title;
992 na = na.name;
993
994 //u = "javascript:tinymce.EditorManager.get('" + ed.id + "').theme._sel('" + (de++) + "');";
995 pi = DOM.create('a', {'href' : "javascript:;", onmousedown : "return false;", title : ti, 'class' : 'mcePath_' + (de++)}, na);
996
997 if (p.hasChildNodes()) {
998 p.insertBefore(DOM.doc.createTextNode(' \u00bb '), p.firstChild);
999 p.insertBefore(pi, p.firstChild);
1000 } else
1001 p.appendChild(pi);
1002 }, ed.getBody());
1003 }
1004 },
1005
1006 // Commands gets called by execCommand
1007
1008 _sel : function(v) {
1009 this.editor.execCommand('mceSelectNodeDepth', false, v);
1010 },
1011
1012 _mceInsertAnchor : function(ui, v) {
1013 var ed = this.editor;
1014
1015 ed.windowManager.open({
1016 url : tinymce.baseURL + '/themes/advanced/anchor.htm',
1017 width : 320 + parseInt(ed.getLang('advanced.anchor_delta_width', 0)),
1018 height : 90 + parseInt(ed.getLang('advanced.anchor_delta_height', 0)),
1019 inline : true
1020 }, {
1021 theme_url : this.url
1022 });
1023 },
1024
1025 _mceCharMap : function() {
1026 var ed = this.editor;
1027
1028 ed.windowManager.open({
1029 url : tinymce.baseURL + '/themes/advanced/charmap.htm',
1030 width : 550 + parseInt(ed.getLang('advanced.charmap_delta_width', 0)),
1031 height : 250 + parseInt(ed.getLang('advanced.charmap_delta_height', 0)),
1032 inline : true
1033 }, {
1034 theme_url : this.url
1035 });
1036 },
1037
1038 _mceHelp : function() {
1039 var ed = this.editor;
1040
1041 ed.windowManager.open({
1042 url : tinymce.baseURL + '/themes/advanced/about.htm',
1043 width : 480,
1044 height : 380,
1045 inline : true
1046 }, {
1047 theme_url : this.url
1048 });
1049 },
1050
1051 _mceColorPicker : function(u, v) {
1052 var ed = this.editor;
1053
1054 v = v || {};
1055
1056 ed.windowManager.open({
1057 url : tinymce.baseURL + '/themes/advanced/color_picker.htm',
1058 width : 375 + parseInt(ed.getLang('advanced.colorpicker_delta_width', 0)),
1059 height : 250 + parseInt(ed.getLang('advanced.colorpicker_delta_height', 0)),
1060 close_previous : false,
1061 inline : true
1062 }, {
1063 input_color : v.color,
1064 func : v.func,
1065 theme_url : this.url
1066 });
1067 },
1068
1069 _mceCodeEditor : function(ui, val) {
1070 var ed = this.editor;
1071
1072 ed.windowManager.open({
1073 url : tinymce.baseURL + '/themes/advanced/source_editor.htm',
1074 width : parseInt(ed.getParam("theme_advanced_source_editor_width", 720)),
1075 height : parseInt(ed.getParam("theme_advanced_source_editor_height", 580)),
1076 inline : true,
1077 resizable : true,
1078 maximizable : true
1079 }, {
1080 theme_url : this.url
1081 });
1082 },
1083
1084 _mceImage : function(ui, val) {
1085 var ed = this.editor;
1086
1087 // Internal image object like a flash placeholder
1088 if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1)
1089 return;
1090
1091 ed.windowManager.open({
1092 url : tinymce.baseURL + '/themes/advanced/image.htm',
1093 width : 355 + parseInt(ed.getLang('advanced.image_delta_width', 0)),
1094 height : 275 + parseInt(ed.getLang('advanced.image_delta_height', 0)),
1095 inline : true
1096 }, {
1097 theme_url : this.url
1098 });
1099 },
1100
1101 _mceLink : function(ui, val) {
1102 var ed = this.editor;
1103
1104 ed.windowManager.open({
1105 url : tinymce.baseURL + '/themes/advanced/link.htm',
1106 width : 310 + parseInt(ed.getLang('advanced.link_delta_width', 0)),
1107 height : 200 + parseInt(ed.getLang('advanced.link_delta_height', 0)),
1108 inline : true
1109 }, {
1110 theme_url : this.url
1111 });
1112 },
1113
1114 _mceNewDocument : function() {
1115 var ed = this.editor;
1116
1117 ed.windowManager.confirm('advanced.newdocument', function(s) {
1118 if (s)
1119 ed.execCommand('mceSetContent', false, '');
1120 });
1121 },
1122
1123 _mceForeColor : function() {
1124 var t = this;
1125
1126 this._mceColorPicker(0, {
1127 color: t.fgColor,
1128 func : function(co) {
1129 t.fgColor = co;
1130 t.editor.execCommand('ForeColor', false, co);
1131 }
1132 });
1133 },
1134
1135 _mceBackColor : function() {
1136 var t = this;
1137
1138 this._mceColorPicker(0, {
1139 color: t.bgColor,
1140 func : function(co) {
1141 t.bgColor = co;
1142 t.editor.execCommand('HiliteColor', false, co);
1143 }
1144 });
1145 },
1146
1147 _ufirst : function(s) {
1148 return s.substring(0, 1).toUpperCase() + s.substring(1);
1149 }
1150 });
1151
1152 tinymce.ThemeManager.add('advanced', tinymce.themes.AdvancedTheme);
1153}()); \ No newline at end of file
diff --git a/public/javascripts/tiny_mce/themes/advanced/image.htm b/public/javascripts/tiny_mce/themes/advanced/image.htm
new file mode 100755
index 0000000..6c36646
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/image.htm
@@ -0,0 +1,86 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4 <title>{#advanced_dlg.image_title}</title>
5 <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
6 <script type="text/javascript" src="../../utils/mctabs.js"></script>
7 <script type="text/javascript" src="../../utils/form_utils.js"></script>
8 <script type="text/javascript" src="js/image.js"></script>
9 <base target="_self" />
10</head>
11<body id="image" style="display: none">
12<form onsubmit="ImageDialog.update();return false;" action="#">
13 <div class="tabs">
14 <ul>
15 <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.image_title}</a></span></li>
16 </ul>
17 </div>
18
19 <div class="panel_wrapper">
20 <div id="general_panel" class="panel current">
21 <table border="0" cellpadding="4" cellspacing="0">
22 <tr>
23 <td nowrap="nowrap"><label for="src">{#advanced_dlg.image_src}</label></td>
24 <td><table border="0" cellspacing="0" cellpadding="0">
25 <tr>
26 <td><input id="src" name="src" type="text" class="mceFocus" value="" style="width: 200px" onchange="ImageDialog.getImageData();" /></td>
27 <td id="srcbrowsercontainer">&nbsp;</td>
28 </tr>
29 </table></td>
30 </tr>
31 <tr>
32 <td><label for="image_list">{#advanced_dlg.image_list}</label></td>
33 <td><select id="image_list" name="image_list" onchange="document.getElementById('src').value=this.options[this.selectedIndex].value;document.getElementById('alt').value=this.options[this.selectedIndex].text;"></select></td>
34 </tr>
35 <tr>
36 <td nowrap="nowrap"><label for="alt">{#advanced_dlg.image_alt}</label></td>
37 <td><input id="alt" name="alt" type="text" value="" style="width: 200px" /></td>
38 </tr>
39 <tr>
40 <td nowrap="nowrap"><label for="align">{#advanced_dlg.image_align}</label></td>
41 <td><select id="align" name="align" onchange="ImageDialog.updateStyle();">
42 <option value="">{#not_set}</option>
43 <option value="baseline">{#advanced_dlg.image_align_baseline}</option>
44 <option value="top">{#advanced_dlg.image_align_top}</option>
45 <option value="middle">{#advanced_dlg.image_align_middle}</option>
46 <option value="bottom">{#advanced_dlg.image_align_bottom}</option>
47 <option value="text-top">{#advanced_dlg.image_align_texttop}</option>
48 <option value="text-bottom">{#advanced_dlg.image_align_textbottom}</option>
49 <option value="left">{#advanced_dlg.image_align_left}</option>
50 <option value="right">{#advanced_dlg.image_align_right}</option>
51 </select></td>
52 </tr>
53 <tr>
54 <td nowrap="nowrap"><label for="width">{#advanced_dlg.image_dimensions}</label></td>
55 <td><input id="width" name="width" type="text" value="" size="3" maxlength="5" />
56 x
57 <input id="height" name="height" type="text" value="" size="3" maxlength="5" /></td>
58 </tr>
59 <tr>
60 <td nowrap="nowrap"><label for="border">{#advanced_dlg.image_border}</label></td>
61 <td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
62 </tr>
63 <tr>
64 <td nowrap="nowrap"><label for="vspace">{#advanced_dlg.image_vspace}</label></td>
65 <td><input id="vspace" name="vspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
66 </tr>
67 <tr>
68 <td nowrap="nowrap"><label for="hspace">{#advanced_dlg.image_hspace}</label></td>
69 <td><input id="hspace" name="hspace" type="text" value="" size="3" maxlength="3" onchange="ImageDialog.updateStyle();" /></td>
70 </tr>
71 </table>
72 </div>
73 </div>
74
75 <div class="mceActionPanel">
76 <div style="float: left">
77 <input type="submit" id="insert" name="insert" value="{#insert}" />
78 </div>
79
80 <div style="float: right">
81 <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
82 </div>
83 </div>
84</form>
85</body>
86</html>
diff --git a/public/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg b/public/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg
new file mode 100755
index 0000000..b4c542d
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/img/icons.gif b/public/javascripts/tiny_mce/themes/advanced/img/icons.gif
new file mode 100755
index 0000000..ccac36f
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/img/icons.gif
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/js/about.js b/public/javascripts/tiny_mce/themes/advanced/js/about.js
new file mode 100755
index 0000000..5cee9ed
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/js/about.js
@@ -0,0 +1,72 @@
1tinyMCEPopup.requireLangPack();
2
3function init() {
4 var ed, tcont;
5
6 tinyMCEPopup.resizeToInnerSize();
7 ed = tinyMCEPopup.editor;
8
9 // Give FF some time
10 window.setTimeout(insertHelpIFrame, 10);
11
12 tcont = document.getElementById('plugintablecontainer');
13 document.getElementById('plugins_tab').style.display = 'none';
14
15 var html = "";
16 html += '<table id="plugintable">';
17 html += '<thead>';
18 html += '<tr>';
19 html += '<td>' + ed.getLang('advanced_dlg.about_plugin') + '</td>';
20 html += '<td>' + ed.getLang('advanced_dlg.about_author') + '</td>';
21 html += '<td>' + ed.getLang('advanced_dlg.about_version') + '</td>';
22 html += '</tr>';
23 html += '</thead>';
24 html += '<tbody>';
25
26 tinymce.each(ed.plugins, function(p, n) {
27 var info;
28
29 if (!p.getInfo)
30 return;
31
32 html += '<tr>';
33
34 info = p.getInfo();
35
36 if (info.infourl != null && info.infourl != '')
37 html += '<td width="50%" title="' + n + '"><a href="' + info.infourl + '" target="_blank">' + info.longname + '</a></td>';
38 else
39 html += '<td width="50%" title="' + n + '">' + info.longname + '</td>';
40
41 if (info.authorurl != null && info.authorurl != '')
42 html += '<td width="35%"><a href="' + info.authorurl + '" target="_blank">' + info.author + '</a></td>';
43 else
44 html += '<td width="35%">' + info.author + '</td>';
45
46 html += '<td width="15%">' + info.version + '</td>';
47 html += '</tr>';
48
49 document.getElementById('plugins_tab').style.display = '';
50
51 });
52
53 html += '</tbody>';
54 html += '</table>';
55
56 tcont.innerHTML = html;
57
58 tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion;
59 tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate;
60}
61
62function insertHelpIFrame() {
63 var html;
64
65 if (tinyMCEPopup.getParam('docs_url')) {
66 html = '<iframe width="100%" height="300" src="' + tinyMCEPopup.editor.baseURI.toAbsolute(tinyMCEPopup.getParam('docs_url')) + '"></iframe>';
67 document.getElementById('iframecontainer').innerHTML = html;
68 document.getElementById('help_tab').style.display = 'block';
69 }
70}
71
72tinyMCEPopup.onInit.add(init);
diff --git a/public/javascripts/tiny_mce/themes/advanced/js/anchor.js b/public/javascripts/tiny_mce/themes/advanced/js/anchor.js
new file mode 100755
index 0000000..b5efd1e
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/js/anchor.js
@@ -0,0 +1,37 @@
1tinyMCEPopup.requireLangPack();
2
3var AnchorDialog = {
4 init : function(ed) {
5 var action, elm, f = document.forms[0];
6
7 this.editor = ed;
8 elm = ed.dom.getParent(ed.selection.getNode(), 'A,IMG');
9 v = ed.dom.getAttrib(elm, 'name');
10
11 if (v) {
12 this.action = 'update';
13 f.anchorName.value = v;
14 }
15
16 f.insert.value = ed.getLang(elm ? 'update' : 'insert');
17 },
18
19 update : function() {
20 var ed = this.editor;
21
22 tinyMCEPopup.restoreSelection();
23
24 if (this.action != 'update')
25 ed.selection.collapse(1);
26
27 // Webkit acts weird if empty inline element is inserted so we need to use a image instead
28 if (tinymce.isWebKit)
29 ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('img', {mce_name : 'a', name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}));
30 else
31 ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', {name : document.forms[0].anchorName.value, 'class' : 'mceItemAnchor'}, ''));
32
33 tinyMCEPopup.close();
34 }
35};
36
37tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog);
diff --git a/public/javascripts/tiny_mce/themes/advanced/js/charmap.js b/public/javascripts/tiny_mce/themes/advanced/js/charmap.js
new file mode 100755
index 0000000..8467ef6
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/js/charmap.js
@@ -0,0 +1,325 @@
1tinyMCEPopup.requireLangPack();
2
3var charmap = [
4 ['&nbsp;', '&#160;', true, 'no-break space'],
5 ['&amp;', '&#38;', true, 'ampersand'],
6 ['&quot;', '&#34;', true, 'quotation mark'],
7// finance
8 ['&cent;', '&#162;', true, 'cent sign'],
9 ['&euro;', '&#8364;', true, 'euro sign'],
10 ['&pound;', '&#163;', true, 'pound sign'],
11 ['&yen;', '&#165;', true, 'yen sign'],
12// signs
13 ['&copy;', '&#169;', true, 'copyright sign'],
14 ['&reg;', '&#174;', true, 'registered sign'],
15 ['&trade;', '&#8482;', true, 'trade mark sign'],
16 ['&permil;', '&#8240;', true, 'per mille sign'],
17 ['&micro;', '&#181;', true, 'micro sign'],
18 ['&middot;', '&#183;', true, 'middle dot'],
19 ['&bull;', '&#8226;', true, 'bullet'],
20 ['&hellip;', '&#8230;', true, 'three dot leader'],
21 ['&prime;', '&#8242;', true, 'minutes / feet'],
22 ['&Prime;', '&#8243;', true, 'seconds / inches'],
23 ['&sect;', '&#167;', true, 'section sign'],
24 ['&para;', '&#182;', true, 'paragraph sign'],
25 ['&szlig;', '&#223;', true, 'sharp s / ess-zed'],
26// quotations
27 ['&lsaquo;', '&#8249;', true, 'single left-pointing angle quotation mark'],
28 ['&rsaquo;', '&#8250;', true, 'single right-pointing angle quotation mark'],
29 ['&laquo;', '&#171;', true, 'left pointing guillemet'],
30 ['&raquo;', '&#187;', true, 'right pointing guillemet'],
31 ['&lsquo;', '&#8216;', true, 'left single quotation mark'],
32 ['&rsquo;', '&#8217;', true, 'right single quotation mark'],
33 ['&ldquo;', '&#8220;', true, 'left double quotation mark'],
34 ['&rdquo;', '&#8221;', true, 'right double quotation mark'],
35 ['&sbquo;', '&#8218;', true, 'single low-9 quotation mark'],
36 ['&bdquo;', '&#8222;', true, 'double low-9 quotation mark'],
37 ['&lt;', '&#60;', true, 'less-than sign'],
38 ['&gt;', '&#62;', true, 'greater-than sign'],
39 ['&le;', '&#8804;', true, 'less-than or equal to'],
40 ['&ge;', '&#8805;', true, 'greater-than or equal to'],
41 ['&ndash;', '&#8211;', true, 'en dash'],
42 ['&mdash;', '&#8212;', true, 'em dash'],
43 ['&macr;', '&#175;', true, 'macron'],
44 ['&oline;', '&#8254;', true, 'overline'],
45 ['&curren;', '&#164;', true, 'currency sign'],
46 ['&brvbar;', '&#166;', true, 'broken bar'],
47 ['&uml;', '&#168;', true, 'diaeresis'],
48 ['&iexcl;', '&#161;', true, 'inverted exclamation mark'],
49 ['&iquest;', '&#191;', true, 'turned question mark'],
50 ['&circ;', '&#710;', true, 'circumflex accent'],
51 ['&tilde;', '&#732;', true, 'small tilde'],
52 ['&deg;', '&#176;', true, 'degree sign'],
53 ['&minus;', '&#8722;', true, 'minus sign'],
54 ['&plusmn;', '&#177;', true, 'plus-minus sign'],
55 ['&divide;', '&#247;', true, 'division sign'],
56 ['&frasl;', '&#8260;', true, 'fraction slash'],
57 ['&times;', '&#215;', true, 'multiplication sign'],
58 ['&sup1;', '&#185;', true, 'superscript one'],
59 ['&sup2;', '&#178;', true, 'superscript two'],
60 ['&sup3;', '&#179;', true, 'superscript three'],
61 ['&frac14;', '&#188;', true, 'fraction one quarter'],
62 ['&frac12;', '&#189;', true, 'fraction one half'],
63 ['&frac34;', '&#190;', true, 'fraction three quarters'],
64// math / logical
65 ['&fnof;', '&#402;', true, 'function / florin'],
66 ['&int;', '&#8747;', true, 'integral'],
67 ['&sum;', '&#8721;', true, 'n-ary sumation'],
68 ['&infin;', '&#8734;', true, 'infinity'],
69 ['&radic;', '&#8730;', true, 'square root'],
70 ['&sim;', '&#8764;', false,'similar to'],
71 ['&cong;', '&#8773;', false,'approximately equal to'],
72 ['&asymp;', '&#8776;', true, 'almost equal to'],
73 ['&ne;', '&#8800;', true, 'not equal to'],
74 ['&equiv;', '&#8801;', true, 'identical to'],
75 ['&isin;', '&#8712;', false,'element of'],
76 ['&notin;', '&#8713;', false,'not an element of'],
77 ['&ni;', '&#8715;', false,'contains as member'],
78 ['&prod;', '&#8719;', true, 'n-ary product'],
79 ['&and;', '&#8743;', false,'logical and'],
80 ['&or;', '&#8744;', false,'logical or'],
81 ['&not;', '&#172;', true, 'not sign'],
82 ['&cap;', '&#8745;', true, 'intersection'],
83 ['&cup;', '&#8746;', false,'union'],
84 ['&part;', '&#8706;', true, 'partial differential'],
85 ['&forall;', '&#8704;', false,'for all'],
86 ['&exist;', '&#8707;', false,'there exists'],
87 ['&empty;', '&#8709;', false,'diameter'],
88 ['&nabla;', '&#8711;', false,'backward difference'],
89 ['&lowast;', '&#8727;', false,'asterisk operator'],
90 ['&prop;', '&#8733;', false,'proportional to'],
91 ['&ang;', '&#8736;', false,'angle'],
92// undefined
93 ['&acute;', '&#180;', true, 'acute accent'],
94 ['&cedil;', '&#184;', true, 'cedilla'],
95 ['&ordf;', '&#170;', true, 'feminine ordinal indicator'],
96 ['&ordm;', '&#186;', true, 'masculine ordinal indicator'],
97 ['&dagger;', '&#8224;', true, 'dagger'],
98 ['&Dagger;', '&#8225;', true, 'double dagger'],
99// alphabetical special chars
100 ['&Agrave;', '&#192;', true, 'A - grave'],
101 ['&Aacute;', '&#193;', true, 'A - acute'],
102 ['&Acirc;', '&#194;', true, 'A - circumflex'],
103 ['&Atilde;', '&#195;', true, 'A - tilde'],
104 ['&Auml;', '&#196;', true, 'A - diaeresis'],
105 ['&Aring;', '&#197;', true, 'A - ring above'],
106 ['&AElig;', '&#198;', true, 'ligature AE'],
107 ['&Ccedil;', '&#199;', true, 'C - cedilla'],
108 ['&Egrave;', '&#200;', true, 'E - grave'],
109 ['&Eacute;', '&#201;', true, 'E - acute'],
110 ['&Ecirc;', '&#202;', true, 'E - circumflex'],
111 ['&Euml;', '&#203;', true, 'E - diaeresis'],
112 ['&Igrave;', '&#204;', true, 'I - grave'],
113 ['&Iacute;', '&#205;', true, 'I - acute'],
114 ['&Icirc;', '&#206;', true, 'I - circumflex'],
115 ['&Iuml;', '&#207;', true, 'I - diaeresis'],
116 ['&ETH;', '&#208;', true, 'ETH'],
117 ['&Ntilde;', '&#209;', true, 'N - tilde'],
118 ['&Ograve;', '&#210;', true, 'O - grave'],
119 ['&Oacute;', '&#211;', true, 'O - acute'],
120 ['&Ocirc;', '&#212;', true, 'O - circumflex'],
121 ['&Otilde;', '&#213;', true, 'O - tilde'],
122 ['&Ouml;', '&#214;', true, 'O - diaeresis'],
123 ['&Oslash;', '&#216;', true, 'O - slash'],
124 ['&OElig;', '&#338;', true, 'ligature OE'],
125 ['&Scaron;', '&#352;', true, 'S - caron'],
126 ['&Ugrave;', '&#217;', true, 'U - grave'],
127 ['&Uacute;', '&#218;', true, 'U - acute'],
128 ['&Ucirc;', '&#219;', true, 'U - circumflex'],
129 ['&Uuml;', '&#220;', true, 'U - diaeresis'],
130 ['&Yacute;', '&#221;', true, 'Y - acute'],
131 ['&Yuml;', '&#376;', true, 'Y - diaeresis'],
132 ['&THORN;', '&#222;', true, 'THORN'],
133 ['&agrave;', '&#224;', true, 'a - grave'],
134 ['&aacute;', '&#225;', true, 'a - acute'],
135 ['&acirc;', '&#226;', true, 'a - circumflex'],
136 ['&atilde;', '&#227;', true, 'a - tilde'],
137 ['&auml;', '&#228;', true, 'a - diaeresis'],
138 ['&aring;', '&#229;', true, 'a - ring above'],
139 ['&aelig;', '&#230;', true, 'ligature ae'],
140 ['&ccedil;', '&#231;', true, 'c - cedilla'],
141 ['&egrave;', '&#232;', true, 'e - grave'],
142 ['&eacute;', '&#233;', true, 'e - acute'],
143 ['&ecirc;', '&#234;', true, 'e - circumflex'],
144 ['&euml;', '&#235;', true, 'e - diaeresis'],
145 ['&igrave;', '&#236;', true, 'i - grave'],
146 ['&iacute;', '&#237;', true, 'i - acute'],
147 ['&icirc;', '&#238;', true, 'i - circumflex'],
148 ['&iuml;', '&#239;', true, 'i - diaeresis'],
149 ['&eth;', '&#240;', true, 'eth'],
150 ['&ntilde;', '&#241;', true, 'n - tilde'],
151 ['&ograve;', '&#242;', true, 'o - grave'],
152 ['&oacute;', '&#243;', true, 'o - acute'],
153 ['&ocirc;', '&#244;', true, 'o - circumflex'],
154 ['&otilde;', '&#245;', true, 'o - tilde'],
155 ['&ouml;', '&#246;', true, 'o - diaeresis'],
156 ['&oslash;', '&#248;', true, 'o slash'],
157 ['&oelig;', '&#339;', true, 'ligature oe'],
158 ['&scaron;', '&#353;', true, 's - caron'],
159 ['&ugrave;', '&#249;', true, 'u - grave'],
160 ['&uacute;', '&#250;', true, 'u - acute'],
161 ['&ucirc;', '&#251;', true, 'u - circumflex'],
162 ['&uuml;', '&#252;', true, 'u - diaeresis'],
163 ['&yacute;', '&#253;', true, 'y - acute'],
164 ['&thorn;', '&#254;', true, 'thorn'],
165 ['&yuml;', '&#255;', true, 'y - diaeresis'],
166 ['&Alpha;', '&#913;', true, 'Alpha'],
167 ['&Beta;', '&#914;', true, 'Beta'],
168 ['&Gamma;', '&#915;', true, 'Gamma'],
169 ['&Delta;', '&#916;', true, 'Delta'],
170 ['&Epsilon;', '&#917;', true, 'Epsilon'],
171 ['&Zeta;', '&#918;', true, 'Zeta'],
172 ['&Eta;', '&#919;', true, 'Eta'],
173 ['&Theta;', '&#920;', true, 'Theta'],
174 ['&Iota;', '&#921;', true, 'Iota'],
175 ['&Kappa;', '&#922;', true, 'Kappa'],
176 ['&Lambda;', '&#923;', true, 'Lambda'],
177 ['&Mu;', '&#924;', true, 'Mu'],
178 ['&Nu;', '&#925;', true, 'Nu'],
179 ['&Xi;', '&#926;', true, 'Xi'],
180 ['&Omicron;', '&#927;', true, 'Omicron'],
181 ['&Pi;', '&#928;', true, 'Pi'],
182 ['&Rho;', '&#929;', true, 'Rho'],
183 ['&Sigma;', '&#931;', true, 'Sigma'],
184 ['&Tau;', '&#932;', true, 'Tau'],
185 ['&Upsilon;', '&#933;', true, 'Upsilon'],
186 ['&Phi;', '&#934;', true, 'Phi'],
187 ['&Chi;', '&#935;', true, 'Chi'],
188 ['&Psi;', '&#936;', true, 'Psi'],
189 ['&Omega;', '&#937;', true, 'Omega'],
190 ['&alpha;', '&#945;', true, 'alpha'],
191 ['&beta;', '&#946;', true, 'beta'],
192 ['&gamma;', '&#947;', true, 'gamma'],
193 ['&delta;', '&#948;', true, 'delta'],
194 ['&epsilon;', '&#949;', true, 'epsilon'],
195 ['&zeta;', '&#950;', true, 'zeta'],
196 ['&eta;', '&#951;', true, 'eta'],
197 ['&theta;', '&#952;', true, 'theta'],
198 ['&iota;', '&#953;', true, 'iota'],
199 ['&kappa;', '&#954;', true, 'kappa'],
200 ['&lambda;', '&#955;', true, 'lambda'],
201 ['&mu;', '&#956;', true, 'mu'],
202 ['&nu;', '&#957;', true, 'nu'],
203 ['&xi;', '&#958;', true, 'xi'],
204 ['&omicron;', '&#959;', true, 'omicron'],
205 ['&pi;', '&#960;', true, 'pi'],
206 ['&rho;', '&#961;', true, 'rho'],
207 ['&sigmaf;', '&#962;', true, 'final sigma'],
208 ['&sigma;', '&#963;', true, 'sigma'],
209 ['&tau;', '&#964;', true, 'tau'],
210 ['&upsilon;', '&#965;', true, 'upsilon'],
211 ['&phi;', '&#966;', true, 'phi'],
212 ['&chi;', '&#967;', true, 'chi'],
213 ['&psi;', '&#968;', true, 'psi'],
214 ['&omega;', '&#969;', true, 'omega'],
215// symbols
216 ['&alefsym;', '&#8501;', false,'alef symbol'],
217 ['&piv;', '&#982;', false,'pi symbol'],
218 ['&real;', '&#8476;', false,'real part symbol'],
219 ['&thetasym;','&#977;', false,'theta symbol'],
220 ['&upsih;', '&#978;', false,'upsilon - hook symbol'],
221 ['&weierp;', '&#8472;', false,'Weierstrass p'],
222 ['&image;', '&#8465;', false,'imaginary part'],
223// arrows
224 ['&larr;', '&#8592;', true, 'leftwards arrow'],
225 ['&uarr;', '&#8593;', true, 'upwards arrow'],
226 ['&rarr;', '&#8594;', true, 'rightwards arrow'],
227 ['&darr;', '&#8595;', true, 'downwards arrow'],
228 ['&harr;', '&#8596;', true, 'left right arrow'],
229 ['&crarr;', '&#8629;', false,'carriage return'],
230 ['&lArr;', '&#8656;', false,'leftwards double arrow'],
231 ['&uArr;', '&#8657;', false,'upwards double arrow'],
232 ['&rArr;', '&#8658;', false,'rightwards double arrow'],
233 ['&dArr;', '&#8659;', false,'downwards double arrow'],
234 ['&hArr;', '&#8660;', false,'left right double arrow'],
235 ['&there4;', '&#8756;', false,'therefore'],
236 ['&sub;', '&#8834;', false,'subset of'],
237 ['&sup;', '&#8835;', false,'superset of'],
238 ['&nsub;', '&#8836;', false,'not a subset of'],
239 ['&sube;', '&#8838;', false,'subset of or equal to'],
240 ['&supe;', '&#8839;', false,'superset of or equal to'],
241 ['&oplus;', '&#8853;', false,'circled plus'],
242 ['&otimes;', '&#8855;', false,'circled times'],
243 ['&perp;', '&#8869;', false,'perpendicular'],
244 ['&sdot;', '&#8901;', false,'dot operator'],
245 ['&lceil;', '&#8968;', false,'left ceiling'],
246 ['&rceil;', '&#8969;', false,'right ceiling'],
247 ['&lfloor;', '&#8970;', false,'left floor'],
248 ['&rfloor;', '&#8971;', false,'right floor'],
249 ['&lang;', '&#9001;', false,'left-pointing angle bracket'],
250 ['&rang;', '&#9002;', false,'right-pointing angle bracket'],
251 ['&loz;', '&#9674;', true,'lozenge'],
252 ['&spades;', '&#9824;', false,'black spade suit'],
253 ['&clubs;', '&#9827;', true, 'black club suit'],
254 ['&hearts;', '&#9829;', true, 'black heart suit'],
255 ['&diams;', '&#9830;', true, 'black diamond suit'],
256 ['&ensp;', '&#8194;', false,'en space'],
257 ['&emsp;', '&#8195;', false,'em space'],
258 ['&thinsp;', '&#8201;', false,'thin space'],
259 ['&zwnj;', '&#8204;', false,'zero width non-joiner'],
260 ['&zwj;', '&#8205;', false,'zero width joiner'],
261 ['&lrm;', '&#8206;', false,'left-to-right mark'],
262 ['&rlm;', '&#8207;', false,'right-to-left mark'],
263 ['&shy;', '&#173;', false,'soft hyphen']
264];
265
266tinyMCEPopup.onInit.add(function() {
267 tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML());
268});
269
270function renderCharMapHTML() {
271 var charsPerRow = 20, tdWidth=20, tdHeight=20, i;
272 var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
273 var cols=-1;
274
275 for (i=0; i<charmap.length; i++) {
276 if (charmap[i][2]==true) {
277 cols++;
278 html += ''
279 + '<td class="charmap">'
280 + '<a onmouseover="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" onfocus="previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');" href="javascript:void(0)" onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');" onclick="return false;" onmousedown="return false;" title="' + charmap[i][3] + '">'
281 + charmap[i][1]
282 + '</a></td>';
283 if ((cols+1) % charsPerRow == 0)
284 html += '</tr><tr height="' + tdHeight + '">';
285 }
286 }
287
288 if (cols % charsPerRow > 0) {
289 var padd = charsPerRow - (cols % charsPerRow);
290 for (var i=0; i<padd-1; i++)
291 html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
292 }
293
294 html += '</tr></table>';
295
296 return html;
297}
298
299function insertChar(chr) {
300 tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';');
301
302 // Refocus in window
303 if (tinyMCEPopup.isWindow)
304 window.focus();
305
306 tinyMCEPopup.editor.focus();
307 tinyMCEPopup.close();
308}
309
310function previewChar(codeA, codeB, codeN) {
311 var elmA = document.getElementById('codeA');
312 var elmB = document.getElementById('codeB');
313 var elmV = document.getElementById('codeV');
314 var elmN = document.getElementById('codeN');
315
316 if (codeA=='#160;') {
317 elmV.innerHTML = '__';
318 } else {
319 elmV.innerHTML = '&' + codeA;
320 }
321
322 elmB.innerHTML = '&amp;' + codeA;
323 elmA.innerHTML = '&amp;' + codeB;
324 elmN.innerHTML = codeN;
325}
diff --git a/public/javascripts/tiny_mce/themes/advanced/js/color_picker.js b/public/javascripts/tiny_mce/themes/advanced/js/color_picker.js
new file mode 100755
index 0000000..fd9700f
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/js/color_picker.js
@@ -0,0 +1,253 @@
1tinyMCEPopup.requireLangPack();
2
3var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false;
4
5var colors = [
6 "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033",
7 "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099",
8 "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff",
9 "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033",
10 "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399",
11 "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff",
12 "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333",
13 "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399",
14 "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff",
15 "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633",
16 "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699",
17 "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff",
18 "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633",
19 "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999",
20 "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff",
21 "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933",
22 "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999",
23 "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff",
24 "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33",
25 "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99",
26 "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff",
27 "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33",
28 "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99",
29 "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff",
30 "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33",
31 "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99",
32 "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff"
33];
34
35var named = {
36 '#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige',
37 '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown',
38 '#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue',
39 '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod',
40 '#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen',
41 '#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue',
42 '#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue',
43 '#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen',
44 '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey',
45 '#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory',
46 '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue',
47 '#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen',
48 '#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey',
49 '#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon',
50 '#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue',
51 '#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin',
52 '#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid',
53 '#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff',
54 '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue',
55 '#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver',
56 '#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen',
57 '#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet',
58 '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen'
59};
60
61function init() {
62 var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color'));
63
64 tinyMCEPopup.resizeToInnerSize();
65
66 generatePicker();
67
68 if (inputColor) {
69 changeFinalColor(inputColor);
70
71 col = convertHexToRGB(inputColor);
72
73 if (col)
74 updateLight(col.r, col.g, col.b);
75 }
76}
77
78function insertAction() {
79 var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func');
80
81 tinyMCEPopup.restoreSelection();
82
83 if (f)
84 f(color);
85
86 tinyMCEPopup.close();
87}
88
89function showColor(color, name) {
90 if (name)
91 document.getElementById("colorname").innerHTML = name;
92
93 document.getElementById("preview").style.backgroundColor = color;
94 document.getElementById("color").value = color.toLowerCase();
95}
96
97function convertRGBToHex(col) {
98 var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi");
99
100 if (!col)
101 return col;
102
103 var rgb = col.replace(re, "$1,$2,$3").split(',');
104 if (rgb.length == 3) {
105 r = parseInt(rgb[0]).toString(16);
106 g = parseInt(rgb[1]).toString(16);
107 b = parseInt(rgb[2]).toString(16);
108
109 r = r.length == 1 ? '0' + r : r;
110 g = g.length == 1 ? '0' + g : g;
111 b = b.length == 1 ? '0' + b : b;
112
113 return "#" + r + g + b;
114 }
115
116 return col;
117}
118
119function convertHexToRGB(col) {
120 if (col.indexOf('#') != -1) {
121 col = col.replace(new RegExp('[^0-9A-F]', 'gi'), '');
122
123 r = parseInt(col.substring(0, 2), 16);
124 g = parseInt(col.substring(2, 4), 16);
125 b = parseInt(col.substring(4, 6), 16);
126
127 return {r : r, g : g, b : b};
128 }
129
130 return null;
131}
132
133function generatePicker() {
134 var el = document.getElementById('light'), h = '', i;
135
136 for (i = 0; i < detail; i++){
137 h += '<div id="gs'+i+'" style="background-color:#000000; width:15px; height:3px; border-style:none; border-width:0px;"'
138 + ' onclick="changeFinalColor(this.style.backgroundColor)"'
139 + ' onmousedown="isMouseDown = true; return false;"'
140 + ' onmouseup="isMouseDown = false;"'
141 + ' onmousemove="if (isMouseDown && isMouseOver) changeFinalColor(this.style.backgroundColor); return false;"'
142 + ' onmouseover="isMouseOver = true;"'
143 + ' onmouseout="isMouseOver = false;"'
144 + '></div>';
145 }
146
147 el.innerHTML = h;
148}
149
150function generateWebColors() {
151 var el = document.getElementById('webcolors'), h = '', i;
152
153 if (el.className == 'generated')
154 return;
155
156 h += '<table border="0" cellspacing="1" cellpadding="0">'
157 + '<tr>';
158
159 for (i=0; i<colors.length; i++) {
160 h += '<td bgcolor="' + colors[i] + '" width="10" height="10">'
161 + '<a href="javascript:insertAction();" onfocus="showColor(\'' + colors[i] + '\');" onmouseover="showColor(\'' + colors[i] + '\');" style="display:block;width:10px;height:10px;overflow:hidden;">'
162 + '</a></td>';
163 if ((i+1) % 18 == 0)
164 h += '</tr><tr>';
165 }
166
167 h += '</table>';
168
169 el.innerHTML = h;
170 el.className = 'generated';
171}
172
173function generateNamedColors() {
174 var el = document.getElementById('namedcolors'), h = '', n, v, i = 0;
175
176 if (el.className == 'generated')
177 return;
178
179 for (n in named) {
180 v = named[n];
181 h += '<a href="javascript:insertAction();" onmouseover="showColor(\'' + n + '\',\'' + v + '\');" style="background-color: ' + n + '"><!-- IE --></a>'
182 }
183
184 el.innerHTML = h;
185 el.className = 'generated';
186}
187
188function dechex(n) {
189 return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16);
190}
191
192function computeColor(e) {
193 var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB;
194
195 x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0);
196 y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0);
197
198 partWidth = document.getElementById('colors').width / 6;
199 partDetail = detail / 2;
200 imHeight = document.getElementById('colors').height;
201
202 r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255;
203 g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth);
204 b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth);
205
206 coef = (imHeight - y) / imHeight;
207 r = 128 + (r - 128) * coef;
208 g = 128 + (g - 128) * coef;
209 b = 128 + (b - 128) * coef;
210
211 changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b));
212 updateLight(r, g, b);
213}
214
215function updateLight(r, g, b) {
216 var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color;
217
218 for (i=0; i<detail; i++) {
219 if ((i>=0) && (i<partDetail)) {
220 finalCoef = i / partDetail;
221 finalR = dechex(255 - (255 - r) * finalCoef);
222 finalG = dechex(255 - (255 - g) * finalCoef);
223 finalB = dechex(255 - (255 - b) * finalCoef);
224 } else {
225 finalCoef = 2 - i / partDetail;
226 finalR = dechex(r * finalCoef);
227 finalG = dechex(g * finalCoef);
228 finalB = dechex(b * finalCoef);
229 }
230
231 color = finalR + finalG + finalB;
232
233 setCol('gs' + i, '#'+color);
234 }
235}
236
237function changeFinalColor(color) {
238 if (color.indexOf('#') == -1)
239 color = convertRGBToHex(color);
240
241 setCol('preview', color);
242 document.getElementById('color').value = color;
243}
244
245function setCol(e, c) {
246 try {
247 document.getElementById(e).style.backgroundColor = c;
248 } catch (ex) {
249 // Ignore IE warning
250 }
251}
252
253tinyMCEPopup.onInit.add(init);
diff --git a/public/javascripts/tiny_mce/themes/advanced/js/image.js b/public/javascripts/tiny_mce/themes/advanced/js/image.js
new file mode 100755
index 0000000..4982ce0
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/js/image.js
@@ -0,0 +1,245 @@
1var ImageDialog = {
2 preInit : function() {
3 var url;
4
5 tinyMCEPopup.requireLangPack();
6
7 if (url = tinyMCEPopup.getParam("external_image_list_url"))
8 document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
9 },
10
11 init : function() {
12 var f = document.forms[0], ed = tinyMCEPopup.editor;
13
14 // Setup browse button
15 document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image');
16 if (isVisible('srcbrowser'))
17 document.getElementById('src').style.width = '180px';
18
19 e = ed.selection.getNode();
20
21 this.fillFileList('image_list', 'tinyMCEImageList');
22
23 if (e.nodeName == 'IMG') {
24 f.src.value = ed.dom.getAttrib(e, 'src');
25 f.alt.value = ed.dom.getAttrib(e, 'alt');
26 f.border.value = this.getAttrib(e, 'border');
27 f.vspace.value = this.getAttrib(e, 'vspace');
28 f.hspace.value = this.getAttrib(e, 'hspace');
29 f.width.value = ed.dom.getAttrib(e, 'width');
30 f.height.value = ed.dom.getAttrib(e, 'height');
31 f.insert.value = ed.getLang('update');
32 this.styleVal = ed.dom.getAttrib(e, 'style');
33 selectByValue(f, 'image_list', f.src.value);
34 selectByValue(f, 'align', this.getAttrib(e, 'align'));
35 this.updateStyle();
36 }
37 },
38
39 fillFileList : function(id, l) {
40 var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
41
42 l = window[l];
43
44 if (l && l.length > 0) {
45 lst.options[lst.options.length] = new Option('', '');
46
47 tinymce.each(l, function(o) {
48 lst.options[lst.options.length] = new Option(o[0], o[1]);
49 });
50 } else
51 dom.remove(dom.getParent(id, 'tr'));
52 },
53
54 update : function() {
55 var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el;
56
57 tinyMCEPopup.restoreSelection();
58
59 if (f.src.value === '') {
60 if (ed.selection.getNode().nodeName == 'IMG') {
61 ed.dom.remove(ed.selection.getNode());
62 ed.execCommand('mceRepaint');
63 }
64
65 tinyMCEPopup.close();
66 return;
67 }
68
69 if (!ed.settings.inline_styles) {
70 args = tinymce.extend(args, {
71 vspace : nl.vspace.value,
72 hspace : nl.hspace.value,
73 border : nl.border.value,
74 align : getSelectValue(f, 'align')
75 });
76 } else
77 args.style = this.styleVal;
78
79 tinymce.extend(args, {
80 src : f.src.value,
81 alt : f.alt.value,
82 width : f.width.value,
83 height : f.height.value
84 });
85
86 el = ed.selection.getNode();
87
88 if (el && el.nodeName == 'IMG') {
89 ed.dom.setAttribs(el, args);
90 } else {
91 ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', {skip_undo : 1});
92 ed.dom.setAttribs('__mce_tmp', args);
93 ed.dom.setAttrib('__mce_tmp', 'id', '');
94 ed.undoManager.add();
95 }
96
97 tinyMCEPopup.close();
98 },
99
100 updateStyle : function() {
101 var dom = tinyMCEPopup.dom, st, v, f = document.forms[0];
102
103 if (tinyMCEPopup.editor.settings.inline_styles) {
104 st = tinyMCEPopup.dom.parseStyle(this.styleVal);
105
106 // Handle align
107 v = getSelectValue(f, 'align');
108 if (v) {
109 if (v == 'left' || v == 'right') {
110 st['float'] = v;
111 delete st['vertical-align'];
112 } else {
113 st['vertical-align'] = v;
114 delete st['float'];
115 }
116 } else {
117 delete st['float'];
118 delete st['vertical-align'];
119 }
120
121 // Handle border
122 v = f.border.value;
123 if (v || v == '0') {
124 if (v == '0')
125 st['border'] = '0';
126 else
127 st['border'] = v + 'px solid black';
128 } else
129 delete st['border'];
130
131 // Handle hspace
132 v = f.hspace.value;
133 if (v) {
134 delete st['margin'];
135 st['margin-left'] = v + 'px';
136 st['margin-right'] = v + 'px';
137 } else {
138 delete st['margin-left'];
139 delete st['margin-right'];
140 }
141
142 // Handle vspace
143 v = f.vspace.value;
144 if (v) {
145 delete st['margin'];
146 st['margin-top'] = v + 'px';
147 st['margin-bottom'] = v + 'px';
148 } else {
149 delete st['margin-top'];
150 delete st['margin-bottom'];
151 }
152
153 // Merge
154 st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st));
155 this.styleVal = dom.serializeStyle(st);
156 }
157 },
158
159 getAttrib : function(e, at) {
160 var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2;
161
162 if (ed.settings.inline_styles) {
163 switch (at) {
164 case 'align':
165 if (v = dom.getStyle(e, 'float'))
166 return v;
167
168 if (v = dom.getStyle(e, 'vertical-align'))
169 return v;
170
171 break;
172
173 case 'hspace':
174 v = dom.getStyle(e, 'margin-left')
175 v2 = dom.getStyle(e, 'margin-right');
176 if (v && v == v2)
177 return parseInt(v.replace(/[^0-9]/g, ''));
178
179 break;
180
181 case 'vspace':
182 v = dom.getStyle(e, 'margin-top')
183 v2 = dom.getStyle(e, 'margin-bottom');
184 if (v && v == v2)
185 return parseInt(v.replace(/[^0-9]/g, ''));
186
187 break;
188
189 case 'border':
190 v = 0;
191
192 tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) {
193 sv = dom.getStyle(e, 'border-' + sv + '-width');
194
195 // False or not the same as prev
196 if (!sv || (sv != v && v !== 0)) {
197 v = 0;
198 return false;
199 }
200
201 if (sv)
202 v = sv;
203 });
204
205 if (v)
206 return parseInt(v.replace(/[^0-9]/g, ''));
207
208 break;
209 }
210 }
211
212 if (v = dom.getAttrib(e, at))
213 return v;
214
215 return '';
216 },
217
218 resetImageData : function() {
219 var f = document.forms[0];
220
221 f.width.value = f.height.value = "";
222 },
223
224 updateImageData : function() {
225 var f = document.forms[0], t = ImageDialog;
226
227 if (f.width.value == "")
228 f.width.value = t.preloadImg.width;
229
230 if (f.height.value == "")
231 f.height.value = t.preloadImg.height;
232 },
233
234 getImageData : function() {
235 var f = document.forms[0];
236
237 this.preloadImg = new Image();
238 this.preloadImg.onload = this.updateImageData;
239 this.preloadImg.onerror = this.resetImageData;
240 this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value);
241 }
242};
243
244ImageDialog.preInit();
245tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog);
diff --git a/public/javascripts/tiny_mce/themes/advanced/js/link.js b/public/javascripts/tiny_mce/themes/advanced/js/link.js
new file mode 100755
index 0000000..2974878
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/js/link.js
@@ -0,0 +1,155 @@
1tinyMCEPopup.requireLangPack();
2
3var LinkDialog = {
4 preInit : function() {
5 var url;
6
7 if (url = tinyMCEPopup.getParam("external_link_list_url"))
8 document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
9 },
10
11 init : function() {
12 var f = document.forms[0], ed = tinyMCEPopup.editor;
13
14 // Setup browse button
15 document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link');
16 if (isVisible('hrefbrowser'))
17 document.getElementById('href').style.width = '180px';
18
19 this.fillClassList('class_list');
20 this.fillFileList('link_list', 'tinyMCELinkList');
21 this.fillTargetList('target_list');
22
23 if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) {
24 f.href.value = ed.dom.getAttrib(e, 'href');
25 f.linktitle.value = ed.dom.getAttrib(e, 'title');
26 f.insert.value = ed.getLang('update');
27 selectByValue(f, 'link_list', f.href.value);
28 selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target'));
29 selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class'));
30 }
31 },
32
33 update : function() {
34 var f = document.forms[0], ed = tinyMCEPopup.editor, e, b;
35
36 tinyMCEPopup.restoreSelection();
37 e = ed.dom.getParent(ed.selection.getNode(), 'A');
38
39 // Remove element if there is no href
40 if (!f.href.value) {
41 if (e) {
42 tinyMCEPopup.execCommand("mceBeginUndoLevel");
43 b = ed.selection.getBookmark();
44 ed.dom.remove(e, 1);
45 ed.selection.moveToBookmark(b);
46 tinyMCEPopup.execCommand("mceEndUndoLevel");
47 tinyMCEPopup.close();
48 return;
49 }
50 }
51
52 tinyMCEPopup.execCommand("mceBeginUndoLevel");
53
54 // Create new anchor elements
55 if (e == null) {
56 tinyMCEPopup.execCommand("CreateLink", false, "#mce_temp_url#", {skip_undo : 1});
57
58 tinymce.each(ed.dom.select("a"), function(n) {
59 if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') {
60 e = n;
61
62 ed.dom.setAttribs(e, {
63 href : f.href.value,
64 title : f.linktitle.value,
65 target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
66 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
67 });
68 }
69 });
70 } else {
71 ed.dom.setAttribs(e, {
72 href : f.href.value,
73 title : f.linktitle.value,
74 target : f.target_list ? f.target_list.options[f.target_list.selectedIndex].value : null,
75 'class' : f.class_list ? f.class_list.options[f.class_list.selectedIndex].value : null
76 });
77 }
78
79 // Don't move caret if selection was image
80 if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') {
81 ed.focus();
82 ed.selection.select(e);
83 ed.selection.collapse(0);
84 tinyMCEPopup.storeSelection();
85 }
86
87 tinyMCEPopup.execCommand("mceEndUndoLevel");
88 tinyMCEPopup.close();
89 },
90
91 checkPrefix : function(n) {
92 if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email')))
93 n.value = 'mailto:' + n.value;
94
95 if (/^\s*www./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external')))
96 n.value = 'http://' + n.value;
97 },
98
99 fillFileList : function(id, l) {
100 var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
101
102 l = window[l];
103
104 if (l && l.length > 0) {
105 lst.options[lst.options.length] = new Option('', '');
106
107 tinymce.each(l, function(o) {
108 lst.options[lst.options.length] = new Option(o[0], o[1]);
109 });
110 } else
111 dom.remove(dom.getParent(id, 'tr'));
112 },
113
114 fillClassList : function(id) {
115 var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl;
116
117 if (v = tinyMCEPopup.getParam('theme_advanced_styles')) {
118 cl = [];
119
120 tinymce.each(v.split(';'), function(v) {
121 var p = v.split('=');
122
123 cl.push({'title' : p[0], 'class' : p[1]});
124 });
125 } else
126 cl = tinyMCEPopup.editor.dom.getClasses();
127
128 if (cl.length > 0) {
129 lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
130
131 tinymce.each(cl, function(o) {
132 lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']);
133 });
134 } else
135 dom.remove(dom.getParent(id, 'tr'));
136 },
137
138 fillTargetList : function(id) {
139 var dom = tinyMCEPopup.dom, lst = dom.get(id), v;
140
141 lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), '');
142 lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self');
143 lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank');
144
145 if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) {
146 tinymce.each(v.split(','), function(v) {
147 v = v.split('=');
148 lst.options[lst.options.length] = new Option(v[0], v[1]);
149 });
150 }
151 }
152};
153
154LinkDialog.preInit();
155tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog);
diff --git a/public/javascripts/tiny_mce/themes/advanced/js/source_editor.js b/public/javascripts/tiny_mce/themes/advanced/js/source_editor.js
new file mode 100755
index 0000000..af2231c
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/js/source_editor.js
@@ -0,0 +1,62 @@
1tinyMCEPopup.requireLangPack();
2tinyMCEPopup.onInit.add(onLoadInit);
3
4function saveContent() {
5 tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value);
6 tinyMCEPopup.close();
7}
8
9function onLoadInit() {
10 tinyMCEPopup.resizeToInnerSize();
11
12 // Remove Gecko spellchecking
13 if (tinymce.isGecko)
14 document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck");
15
16 document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent();
17
18 if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) {
19 setWrap('soft');
20 document.getElementById('wraped').checked = true;
21 }
22
23 resizeInputs();
24}
25
26function setWrap(val) {
27 var v, n, s = document.getElementById('htmlSource');
28
29 s.wrap = val;
30
31 if (!tinymce.isIE) {
32 v = s.value;
33 n = s.cloneNode(false);
34 n.setAttribute("wrap", val);
35 s.parentNode.replaceChild(n, s);
36 n.value = v;
37 }
38}
39
40function toggleWordWrap(elm) {
41 if (elm.checked)
42 setWrap('soft');
43 else
44 setWrap('off');
45}
46
47var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
48
49function resizeInputs() {
50 var el = document.getElementById('htmlSource');
51
52 if (!tinymce.isIE) {
53 wHeight = self.innerHeight - 65;
54 wWidth = self.innerWidth - 16;
55 } else {
56 wHeight = document.body.clientHeight - 70;
57 wWidth = document.body.clientWidth - 16;
58 }
59
60 el.style.height = Math.abs(wHeight) + 'px';
61 el.style.width = Math.abs(wWidth) + 'px';
62}
diff --git a/public/javascripts/tiny_mce/themes/advanced/langs/en.js b/public/javascripts/tiny_mce/themes/advanced/langs/en.js
new file mode 100755
index 0000000..69694b1
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/langs/en.js
@@ -0,0 +1,62 @@
1tinyMCE.addI18n('en.advanced',{
2style_select:"Styles",
3font_size:"Font size",
4fontdefault:"Font family",
5block:"Format",
6paragraph:"Paragraph",
7div:"Div",
8address:"Address",
9pre:"Preformatted",
10h1:"Heading 1",
11h2:"Heading 2",
12h3:"Heading 3",
13h4:"Heading 4",
14h5:"Heading 5",
15h6:"Heading 6",
16blockquote:"Blockquote",
17code:"Code",
18samp:"Code sample",
19dt:"Definition term ",
20dd:"Definition description",
21bold_desc:"Bold (Ctrl+B)",
22italic_desc:"Italic (Ctrl+I)",
23underline_desc:"Underline (Ctrl+U)",
24striketrough_desc:"Strikethrough",
25justifyleft_desc:"Align left",
26justifycenter_desc:"Align center",
27justifyright_desc:"Align right",
28justifyfull_desc:"Align full",
29bullist_desc:"Unordered list",
30numlist_desc:"Ordered list",
31outdent_desc:"Outdent",
32indent_desc:"Indent",
33undo_desc:"Undo (Ctrl+Z)",
34redo_desc:"Redo (Ctrl+Y)",
35link_desc:"Insert/edit link",
36unlink_desc:"Unlink",
37image_desc:"Insert/edit image",
38cleanup_desc:"Cleanup messy code",
39code_desc:"Edit HTML Source",
40sub_desc:"Subscript",
41sup_desc:"Superscript",
42hr_desc:"Insert horizontal ruler",
43removeformat_desc:"Remove formatting",
44custom1_desc:"Your custom description here",
45forecolor_desc:"Select text color",
46backcolor_desc:"Select background color",
47charmap_desc:"Insert custom character",
48visualaid_desc:"Toggle guidelines/invisible elements",
49anchor_desc:"Insert/edit anchor",
50cut_desc:"Cut",
51copy_desc:"Copy",
52paste_desc:"Paste",
53image_props_desc:"Image properties",
54newdocument_desc:"New document",
55help_desc:"Help",
56blockquote_desc:"Blockquote",
57clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\r\nDo you want more information about this issue?",
58path:"Path",
59newdocument:"Are you sure you want clear all contents?",
60toolbar_focus:"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",
61more_colors:"More colors"
62}); \ No newline at end of file
diff --git a/public/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js b/public/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js
new file mode 100755
index 0000000..9d124d7
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js
@@ -0,0 +1,51 @@
1tinyMCE.addI18n('en.advanced_dlg',{
2about_title:"About TinyMCE",
3about_general:"About",
4about_help:"Help",
5about_license:"License",
6about_plugins:"Plugins",
7about_plugin:"Plugin",
8about_author:"Author",
9about_version:"Version",
10about_loaded:"Loaded plugins",
11anchor_title:"Insert/edit anchor",
12anchor_name:"Anchor name",
13code_title:"HTML Source Editor",
14code_wordwrap:"Word wrap",
15colorpicker_title:"Select a color",
16colorpicker_picker_tab:"Picker",
17colorpicker_picker_title:"Color picker",
18colorpicker_palette_tab:"Palette",
19colorpicker_palette_title:"Palette colors",
20colorpicker_named_tab:"Named",
21colorpicker_named_title:"Named colors",
22colorpicker_color:"Color:",
23colorpicker_name:"Name:",
24charmap_title:"Select custom character",
25image_title:"Insert/edit image",
26image_src:"Image URL",
27image_alt:"Image description",
28image_list:"Image list",
29image_border:"Border",
30image_dimensions:"Dimensions",
31image_vspace:"Vertical space",
32image_hspace:"Horizontal space",
33image_align:"Alignment",
34image_align_baseline:"Baseline",
35image_align_top:"Top",
36image_align_middle:"Middle",
37image_align_bottom:"Bottom",
38image_align_texttop:"Text top",
39image_align_textbottom:"Text bottom",
40image_align_left:"Left",
41image_align_right:"Right",
42link_title:"Insert/edit link",
43link_url:"Link URL",
44link_target:"Target",
45link_target_same:"Open link in the same window",
46link_target_blank:"Open link in a new window",
47link_titlefield:"Title",
48link_is_email:"The URL you entered seems to be an email address, do you want to add the required mailto: prefix?",
49link_is_external:"The URL you entered seems to external link, do you want to add the required http:// prefix?",
50link_list:"Link list"
51}); \ No newline at end of file
diff --git a/public/javascripts/tiny_mce/themes/advanced/link.htm b/public/javascripts/tiny_mce/themes/advanced/link.htm
new file mode 100755
index 0000000..286cc92
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/link.htm
@@ -0,0 +1,64 @@
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4 <title>{#advanced_dlg.link_title}</title>
5 <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
6 <script type="text/javascript" src="../../utils/mctabs.js"></script>
7 <script type="text/javascript" src="../../utils/form_utils.js"></script>
8 <script type="text/javascript" src="../../utils/validate.js"></script>
9 <script type="text/javascript" src="js/link.js"></script>
10 <base target="_self" />
11</head>
12<body id="link" style="display: none">
13<form onsubmit="LinkDialog.update();return false;" action="#">
14 <div class="tabs">
15 <ul>
16 <li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#advanced_dlg.link_title}</a></span></li>
17 </ul>
18 </div>
19
20 <div class="panel_wrapper">
21 <div id="general_panel" class="panel current">
22
23 <table border="0" cellpadding="4" cellspacing="0">
24 <tr>
25 <td nowrap="nowrap"><label for="href">{#advanced_dlg.link_url}</label></td>
26 <td><table border="0" cellspacing="0" cellpadding="0">
27 <tr>
28 <td><input id="href" name="href" type="text" class="mceFocus" value="" style="width: 200px" onchange="LinkDialog.checkPrefix(this);" /></td>
29 <td id="hrefbrowsercontainer">&nbsp;</td>
30 </tr>
31 </table></td>
32 </tr>
33 <tr>
34 <td><label for="link_list">{#advanced_dlg.link_list}</label></td>
35 <td><select id="link_list" name="link_list" onchange="document.getElementById('href').value=this.options[this.selectedIndex].value;"></select></td>
36 </tr>
37 <tr>
38 <td><label id="targetlistlabel" for="targetlist">{#advanced_dlg.link_target}</label></td>
39 <td><select id="target_list" name="target_list"></select></td>
40 </tr>
41 <tr>
42 <td nowrap="nowrap"><label for="linktitle">{#advanced_dlg.link_titlefield}</label></td>
43 <td><input id="linktitle" name="linktitle" type="text" value="" style="width: 200px" /></td>
44 </tr>
45 <tr>
46 <td><label for="class_list">{#class_name}</label></td>
47 <td><select id="class_list" name="class_list"></select></td>
48 </tr>
49 </table>
50 </div>
51 </div>
52
53 <div class="mceActionPanel">
54 <div style="float: left">
55 <input type="submit" id="insert" name="insert" value="{#insert}" />
56 </div>
57
58 <div style="float: right">
59 <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
60 </div>
61 </div>
62</form>
63</body>
64</html>
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/default/content.css b/public/javascripts/tiny_mce/themes/advanced/skins/default/content.css
new file mode 100755
index 0000000..19da194
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/default/content.css
@@ -0,0 +1,32 @@
1body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
2body {background:#FFF;}
3body.mceForceColors {background:#FFF; color:#000;}
4h1 {font-size: 2em}
5h2 {font-size: 1.5em}
6h3 {font-size: 1.17em}
7h4 {font-size: 1em}
8h5 {font-size: .83em}
9h6 {font-size: .75em}
10.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
11a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(img/items.gif) no-repeat bottom left;}
12img.mceItemAnchor {width:12px; height:12px; background:url(img/items.gif) no-repeat;}
13img {border:0;}
14table {cursor:default}
15table td, table th {cursor:text}
16ins {border-bottom:1px solid green; text-decoration: none; color:green}
17del {color:red; text-decoration:line-through}
18cite {border-bottom:1px dashed blue}
19acronym {border-bottom:1px dotted #CCC; cursor:help}
20abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
21
22/* IE */
23* html body {
24scrollbar-3dlight-color:#F0F0EE;
25scrollbar-arrow-color:#676662;
26scrollbar-base-color:#F0F0EE;
27scrollbar-darkshadow-color:#DDD;
28scrollbar-face-color:#E0E0DD;
29scrollbar-highlight-color:#F0F0EE;
30scrollbar-shadow-color:#F0F0EE;
31scrollbar-track-color:#F5F5F5;
32}
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css b/public/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css
new file mode 100755
index 0000000..2c341aa
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css
@@ -0,0 +1,114 @@
1/* Generic */
2body {
3font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
4scrollbar-3dlight-color:#F0F0EE;
5scrollbar-arrow-color:#676662;
6scrollbar-base-color:#F0F0EE;
7scrollbar-darkshadow-color:#DDDDDD;
8scrollbar-face-color:#E0E0DD;
9scrollbar-highlight-color:#F0F0EE;
10scrollbar-shadow-color:#F0F0EE;
11scrollbar-track-color:#F5F5F5;
12background:#F0F0EE;
13padding:0;
14margin:8px 8px 0 8px;
15}
16
17html {background:#F0F0EE;}
18td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
19textarea {resize:none;outline:none;}
20a:link, a:visited {color:black;}
21a:hover {color:#2B6FB6;}
22
23/* Forms */
24fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
25legend {color:#2B6FB6; font-weight:bold;}
26label.msg {display:none;}
27label.invalid {color:#EE0000; display:inline;}
28input.invalid {border:1px solid #EE0000;}
29input {background:#FFF; border:1px solid #CCC;}
30input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
31input, select, textarea {border:1px solid #808080;}
32input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
33input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
34.input_noborder {border:0;}
35
36/* Buttons */
37#insert, #cancel, input.button, .updateButton {
38border:0; margin:0; padding:0;
39font-weight:bold;
40width:94px; height:26px;
41background:url(img/buttons.png) 0 -26px;
42cursor:pointer;
43padding-bottom:2px;
44}
45
46#insert {background:url(img/buttons.png) 0 -52px;}
47#cancel {background:url(img/buttons.png) 0 0;}
48
49/* Browse */
50a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
51.mceOldBoxModel a.browse span {width:22px; height:20px;}
52a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
53a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
54a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
55a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
56.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
57a.pickcolor:hover span {background-color:#B2BBD0;}
58a.pickcolor:hover span.disabled {}
59
60/* Charmap */
61table.charmap {border:1px solid #AAA; text-align:center}
62td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
63#charmap a {display:block; color:#000; text-decoration:none; border:0}
64#charmap a:hover {background:#CCC;color:#2B6FB6}
65#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
66#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
67
68/* Source */
69.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
70.mceActionPanel {margin-top:5px;}
71
72/* Tabs classes */
73.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;}
74.tabs ul {margin:0; padding:0; list-style:none;}
75.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
76.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
77.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
78.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;}
79.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
80.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
81
82/* Panels */
83.panel_wrapper div.panel {display:none;}
84.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
85.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
86
87/* Columns */
88.column {float:left;}
89.properties {width:100%;}
90.properties .column1 {}
91.properties .column2 {text-align:left;}
92
93/* Titles */
94h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
95h3 {font-size:14px;}
96.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
97
98/* Dialog specific */
99#link .panel_wrapper, #link div.current {height:125px;}
100#image .panel_wrapper, #image div.current {height:200px;}
101#plugintable thead {font-weight:bold; background:#DDD;}
102#plugintable, #about #plugintable td {border:1px solid #919B9C;}
103#plugintable {width:96%; margin-top:10px;}
104#pluginscontainer {height:290px; overflow:auto;}
105#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
106#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
107#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
108#colorpicker #light div {overflow:hidden;}
109#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
110#colorpicker .panel_wrapper div.current {height:175px;}
111#colorpicker #namedcolors {width:150px;}
112#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
113#colorpicker #colornamecontainer {margin-top:5px;}
114#colorpicker #picker_panel fieldset {margin:auto;width:325px;} \ No newline at end of file
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png
new file mode 100755
index 0000000..7dd5841
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif
new file mode 100755
index 0000000..2eafd79
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
new file mode 100755
index 0000000..85e31df
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
new file mode 100755
index 0000000..adfdddc
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif
new file mode 100755
index 0000000..5bb90fd
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif
new file mode 100755
index 0000000..ce4be63
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/default/ui.css b/public/javascripts/tiny_mce/themes/advanced/skins/default/ui.css
new file mode 100755
index 0000000..230a2ee
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/default/ui.css
@@ -0,0 +1,214 @@
1/* Reset */
2.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
3.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
4.defaultSkin table td {vertical-align:middle}
5
6/* Containers */
7.defaultSkin table {background:#F0F0EE}
8.defaultSkin iframe {display:block; background:#FFF}
9.defaultSkin .mceToolbar {height:26px}
10.defaultSkin .mceLeft {text-align:left}
11.defaultSkin .mceRight {text-align:right}
12
13/* External */
14.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;}
15.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
16.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
17
18/* Layout */
19.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC}
20.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC}
21.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC}
22.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;}
23.defaultSkin td.mceToolbar {padding-top:1px; vertical-align:top}
24.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC}
25.defaultSkin .mceStatusbar {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px}
26.defaultSkin .mceStatusbar div {float:left; margin:2px}
27.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
28.defaultSkin .mceStatusbar a:hover {text-decoration:underline}
29.defaultSkin table.mceToolbar {margin-left:3px}
30.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px}
31.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
32.defaultSkin td.mceCenter {text-align:center;}
33.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;}
34.defaultSkin td.mceRight table {margin:0 0 0 auto;}
35
36/* Button */
37.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px}
38.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
39.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0}
40.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
41.defaultSkin .mceButtonLabeled {width:auto}
42.defaultSkin .mceButtonLabeled span.mceIcon {float:left}
43.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
44.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888}
45
46/* Separator */
47.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px}
48
49/* ListBox */
50.defaultSkin .mceListBox {direction:ltr}
51.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block}
52.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
53.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;}
54.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF}
55.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0}
56.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;}
57.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
58.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px}
59.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;}
60.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;}
61
62/* SplitButton */
63.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr}
64.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block}
65.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;}
66.defaultSkin .mceSplitButton span.mceAction {width:20px; background:url(../../img/icons.gif) 20px 20px;}
67.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;}
68.defaultSkin .mceSplitButton span.mceOpen {display:none}
69.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0}
70.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;}
71.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
72.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0}
73.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;}
74
75/* ColorSplitButton */
76.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
77.defaultSkin .mceColorSplitMenu td {padding:2px}
78.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
79.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
80.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
81.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
82.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A}
83.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a}
84.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px}
85
86/* Menu */
87.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8}
88.defaultSkin .mceNoIcons span.mceIcon {width:0;}
89.defaultSkin .mceNoIcons a .mceText {padding-left:10px}
90.defaultSkin .mceMenu table {background:#FFF}
91.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block}
92.defaultSkin .mceMenu td {height:20px}
93.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0}
94.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
95.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px}
96.defaultSkin .mceMenu pre.mceText {font-family:Monospace}
97.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
98.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
99.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px}
100.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD}
101.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
102.defaultSkin .mceMenuItemDisabled .mceText {color:#888}
103.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)}
104.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center}
105.defaultSkin .mceMenu span.mceMenuLine {display:none}
106.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;}
107
108/* Progress,Resize */
109.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF}
110.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
111.defaultSkin .mcePlaceHolder {border:1px dotted gray}
112
113/* Formats */
114.defaultSkin .mce_formatPreview a {font-size:10px}
115.defaultSkin .mce_p span.mceText {}
116.defaultSkin .mce_address span.mceText {font-style:italic}
117.defaultSkin .mce_pre span.mceText {font-family:monospace}
118.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
119.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
120.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
121.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
122.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
123.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
124
125/* Theme */
126.defaultSkin span.mce_bold {background-position:0 0}
127.defaultSkin span.mce_italic {background-position:-60px 0}
128.defaultSkin span.mce_underline {background-position:-140px 0}
129.defaultSkin span.mce_strikethrough {background-position:-120px 0}
130.defaultSkin span.mce_undo {background-position:-160px 0}
131.defaultSkin span.mce_redo {background-position:-100px 0}
132.defaultSkin span.mce_cleanup {background-position:-40px 0}
133.defaultSkin span.mce_bullist {background-position:-20px 0}
134.defaultSkin span.mce_numlist {background-position:-80px 0}
135.defaultSkin span.mce_justifyleft {background-position:-460px 0}
136.defaultSkin span.mce_justifyright {background-position:-480px 0}
137.defaultSkin span.mce_justifycenter {background-position:-420px 0}
138.defaultSkin span.mce_justifyfull {background-position:-440px 0}
139.defaultSkin span.mce_anchor {background-position:-200px 0}
140.defaultSkin span.mce_indent {background-position:-400px 0}
141.defaultSkin span.mce_outdent {background-position:-540px 0}
142.defaultSkin span.mce_link {background-position:-500px 0}
143.defaultSkin span.mce_unlink {background-position:-640px 0}
144.defaultSkin span.mce_sub {background-position:-600px 0}
145.defaultSkin span.mce_sup {background-position:-620px 0}
146.defaultSkin span.mce_removeformat {background-position:-580px 0}
147.defaultSkin span.mce_newdocument {background-position:-520px 0}
148.defaultSkin span.mce_image {background-position:-380px 0}
149.defaultSkin span.mce_help {background-position:-340px 0}
150.defaultSkin span.mce_code {background-position:-260px 0}
151.defaultSkin span.mce_hr {background-position:-360px 0}
152.defaultSkin span.mce_visualaid {background-position:-660px 0}
153.defaultSkin span.mce_charmap {background-position:-240px 0}
154.defaultSkin span.mce_paste {background-position:-560px 0}
155.defaultSkin span.mce_copy {background-position:-700px 0}
156.defaultSkin span.mce_cut {background-position:-680px 0}
157.defaultSkin span.mce_blockquote {background-position:-220px 0}
158.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0}
159.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0}
160.defaultSkin span.mce_forecolorpicker {background-position:-720px 0}
161.defaultSkin span.mce_backcolorpicker {background-position:-760px 0}
162
163/* Plugins */
164.defaultSkin span.mce_advhr {background-position:-0px -20px}
165.defaultSkin span.mce_ltr {background-position:-20px -20px}
166.defaultSkin span.mce_rtl {background-position:-40px -20px}
167.defaultSkin span.mce_emotions {background-position:-60px -20px}
168.defaultSkin span.mce_fullpage {background-position:-80px -20px}
169.defaultSkin span.mce_fullscreen {background-position:-100px -20px}
170.defaultSkin span.mce_iespell {background-position:-120px -20px}
171.defaultSkin span.mce_insertdate {background-position:-140px -20px}
172.defaultSkin span.mce_inserttime {background-position:-160px -20px}
173.defaultSkin span.mce_absolute {background-position:-180px -20px}
174.defaultSkin span.mce_backward {background-position:-200px -20px}
175.defaultSkin span.mce_forward {background-position:-220px -20px}
176.defaultSkin span.mce_insert_layer {background-position:-240px -20px}
177.defaultSkin span.mce_insertlayer {background-position:-260px -20px}
178.defaultSkin span.mce_movebackward {background-position:-280px -20px}
179.defaultSkin span.mce_moveforward {background-position:-300px -20px}
180.defaultSkin span.mce_media {background-position:-320px -20px}
181.defaultSkin span.mce_nonbreaking {background-position:-340px -20px}
182.defaultSkin span.mce_pastetext {background-position:-360px -20px}
183.defaultSkin span.mce_pasteword {background-position:-380px -20px}
184.defaultSkin span.mce_selectall {background-position:-400px -20px}
185.defaultSkin span.mce_preview {background-position:-420px -20px}
186.defaultSkin span.mce_print {background-position:-440px -20px}
187.defaultSkin span.mce_cancel {background-position:-460px -20px}
188.defaultSkin span.mce_save {background-position:-480px -20px}
189.defaultSkin span.mce_replace {background-position:-500px -20px}
190.defaultSkin span.mce_search {background-position:-520px -20px}
191.defaultSkin span.mce_styleprops {background-position:-560px -20px}
192.defaultSkin span.mce_table {background-position:-580px -20px}
193.defaultSkin span.mce_cell_props {background-position:-600px -20px}
194.defaultSkin span.mce_delete_table {background-position:-620px -20px}
195.defaultSkin span.mce_delete_col {background-position:-640px -20px}
196.defaultSkin span.mce_delete_row {background-position:-660px -20px}
197.defaultSkin span.mce_col_after {background-position:-680px -20px}
198.defaultSkin span.mce_col_before {background-position:-700px -20px}
199.defaultSkin span.mce_row_after {background-position:-720px -20px}
200.defaultSkin span.mce_row_before {background-position:-740px -20px}
201.defaultSkin span.mce_merge_cells {background-position:-760px -20px}
202.defaultSkin span.mce_table_props {background-position:-980px -20px}
203.defaultSkin span.mce_row_props {background-position:-780px -20px}
204.defaultSkin span.mce_split_cells {background-position:-800px -20px}
205.defaultSkin span.mce_template {background-position:-820px -20px}
206.defaultSkin span.mce_visualchars {background-position:-840px -20px}
207.defaultSkin span.mce_abbr {background-position:-860px -20px}
208.defaultSkin span.mce_acronym {background-position:-880px -20px}
209.defaultSkin span.mce_attribs {background-position:-900px -20px}
210.defaultSkin span.mce_cite {background-position:-920px -20px}
211.defaultSkin span.mce_del {background-position:-940px -20px}
212.defaultSkin span.mce_ins {background-position:-960px -20px}
213.defaultSkin span.mce_pagebreak {background-position:0 -40px}
214.defaultSkin .mce_spellchecker span.mceAction {background-position:-540px -20px}
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css
new file mode 100755
index 0000000..b8431d1
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css
@@ -0,0 +1,32 @@
1body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;}
2body {background:#FFF;}
3body.mceForceColors {background:#FFF; color:#000;}
4h1 {font-size: 2em}
5h2 {font-size: 1.5em}
6h3 {font-size: 1.17em}
7h4 {font-size: 1em}
8h5 {font-size: .83em}
9h6 {font-size: .75em}
10.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;}
11a.mceItemAnchor {width:12px; line-height:6px; overflow:hidden; padding-left:12px; background:url(../default/img/items.gif) no-repeat bottom left;}
12img.mceItemAnchor {width:12px; height:12px; background:url(../default/img/items.gif) no-repeat;}
13img {border:0;}
14table {cursor:default}
15table td, table th {cursor:text}
16ins {border-bottom:1px solid green; text-decoration: none; color:green}
17del {color:red; text-decoration:line-through}
18cite {border-bottom:1px dashed blue}
19acronym {border-bottom:1px dotted #CCC; cursor:help}
20abbr, html\:abbr {border-bottom:1px dashed #CCC; cursor:help}
21
22/* IE */
23* html body {
24scrollbar-3dlight-color:#F0F0EE;
25scrollbar-arrow-color:#676662;
26scrollbar-base-color:#F0F0EE;
27scrollbar-darkshadow-color:#DDD;
28scrollbar-face-color:#E0E0DD;
29scrollbar-highlight-color:#F0F0EE;
30scrollbar-shadow-color:#F0F0EE;
31scrollbar-track-color:#F5F5F5;
32}
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
new file mode 100755
index 0000000..8d288e3
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css
@@ -0,0 +1,113 @@
1/* Generic */
2body {
3font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;
4scrollbar-3dlight-color:#F0F0EE;
5scrollbar-arrow-color:#676662;
6scrollbar-base-color:#F0F0EE;
7scrollbar-darkshadow-color:#DDDDDD;
8scrollbar-face-color:#E0E0DD;
9scrollbar-highlight-color:#F0F0EE;
10scrollbar-shadow-color:#F0F0EE;
11scrollbar-track-color:#F5F5F5;
12background:#F0F0EE;
13padding:0;
14margin:8px 8px 0 8px;
15}
16
17html {background:#F0F0EE;}
18td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
19textarea {resize:none;outline:none;}
20a:link, a:visited {color:black;}
21a:hover {color:#2B6FB6;}
22
23/* Forms */
24fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;}
25legend {color:#2B6FB6; font-weight:bold;}
26label.msg {display:none;}
27label.invalid {color:#EE0000; display:inline;}
28input.invalid {border:1px solid #EE0000;}
29input {background:#FFF; border:1px solid #CCC;}
30input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
31input, select, textarea {border:1px solid #808080;}
32input.radio {border:1px none #000000; background:transparent; vertical-align:middle;}
33input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;}
34.input_noborder {border:0;}
35
36/* Buttons */
37#insert, #cancel, input.button, .updateButton {
38border:0; margin:0; padding:0;
39font-weight:bold;
40width:94px; height:26px;
41background:url(../default/img/buttons.png) 0 -26px;
42cursor:pointer;
43padding-bottom:2px;
44}
45
46#insert {background:url(../default/img/buttons.png) 0 -52px;}
47#cancel {background:url(../default/img/buttons.png) 0 0;}
48
49/* Browse */
50a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;}
51.mceOldBoxModel a.browse span {width:22px; height:20px;}
52a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;}
53a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
54a.browse:hover span.disabled {border:1px solid white; background-color:transparent;}
55a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;}
56.mceOldBoxModel a.pickcolor span {width:21px; height:17px;}
57a.pickcolor:hover span {background-color:#B2BBD0;}
58a.pickcolor:hover span.disabled {}
59
60/* Charmap */
61table.charmap {border:1px solid #AAA; text-align:center}
62td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;}
63#charmap a {display:block; color:#000; text-decoration:none; border:0}
64#charmap a:hover {background:#CCC;color:#2B6FB6}
65#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center}
66#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center}
67
68/* Source */
69.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;}
70.mceActionPanel {margin-top:5px;}
71
72/* Tabs classes */
73.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;}
74.tabs ul {margin:0; padding:0; list-style:none;}
75.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;}
76.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;}
77.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;}
78.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;}
79.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;}
80.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;}
81
82/* Panels */
83.panel_wrapper div.panel {display:none;}
84.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;}
85.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;}
86
87/* Columns */
88.column {float:left;}
89.properties {width:100%;}
90.properties .column1 {}
91.properties .column2 {text-align:left;}
92
93/* Titles */
94h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;}
95h3 {font-size:14px;}
96.title {font-size:12px; font-weight:bold; color:#2B6FB6;}
97
98/* Dialog specific */
99#link .panel_wrapper, #link div.current {height:125px;}
100#image .panel_wrapper, #image div.current {height:200px;}
101#plugintable thead {font-weight:bold; background:#DDD;}
102#plugintable, #about #plugintable td {border:1px solid #919B9C;}
103#plugintable {width:96%; margin-top:10px;}
104#pluginscontainer {height:290px; overflow:auto;}
105#colorpicker #preview {float:right; width:50px; height:14px;line-height:1px; border:1px solid black; margin-left:5px;}
106#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;}
107#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;}
108#colorpicker #light div {overflow:hidden;}
109#colorpicker #previewblock {float:right; padding-left:10px; height:20px;}
110#colorpicker .panel_wrapper div.current {height:175px;}
111#colorpicker #namedcolors {width:150px;}
112#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;}
113#colorpicker #colornamecontainer {margin-top:5px;}
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
new file mode 100755
index 0000000..12cfb41
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
new file mode 100755
index 0000000..8996c74
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
new file mode 100755
index 0000000..bd5d255
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
new file mode 100755
index 0000000..c10a3f0
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css
@@ -0,0 +1,215 @@
1/* Reset */
2.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left}
3.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000}
4.o2k7Skin table td {vertical-align:middle}
5
6/* Containers */
7.o2k7Skin table {background:#E5EFFD}
8.o2k7Skin iframe {display:block; background:#FFF}
9.o2k7Skin .mceToolbar {height:26px}
10
11/* External */
12.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none}
13.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;}
14.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0}
15
16/* Layout */
17.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD}
18.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD}
19.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD}
20.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0}
21.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD}
22.o2k7Skin .mceStatusbar {display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px}
23.o2k7Skin .mceStatusbar div {float:left; padding:2px}
24.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize}
25.o2k7Skin .mceStatusbar a:hover {text-decoration:underline}
26.o2k7Skin table.mceToolbar {margin-left:3px}
27.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;}
28.o2k7Skin .mceToolbar td.mceFirst span {margin:0}
29.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
30.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none}
31.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px}
32.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
33.o2k7Skin td.mceCenter {text-align:center;}
34.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;}
35.o2k7Skin td.mceRight table {margin:0 0 0 auto;}
36
37/* Button */
38.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
39.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px}
40.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px}
41.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
42.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px}
43.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
44.o2k7Skin .mceButtonLabeled {width:auto}
45.o2k7Skin .mceButtonLabeled span.mceIcon {float:left}
46.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica}
47.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888}
48
49/* Separator */
50.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
51
52/* ListBox */
53.o2k7Skin .mceListBox {margin-left:3px}
54.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block}
55.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden}
56.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0}
57.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF}
58.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px}
59.o2k7Skin .mceListBoxDisabled .mceText {color:gray}
60.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden}
61.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px}
62.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;}
63
64/* SplitButton */
65.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px}
66.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)}
67.o2k7Skin .mceSplitButton a.mceAction {width:22px}
68.o2k7Skin .mceSplitButton span.mceAction {width:22px; background:url(../../img/icons.gif) 20px 20px}
69.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0}
70.o2k7Skin .mceSplitButton span.mceOpen {display:none}
71.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px}
72.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px}
73.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
74.o2k7Skin .mceSplitButtonActive {background-position:0 -44px}
75
76/* ColorSplitButton */
77.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray}
78.o2k7Skin .mceColorSplitMenu td {padding:2px}
79.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080}
80.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px}
81.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF}
82.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2}
83.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A}
84.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden}
85.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden}
86
87/* Menu */
88.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD}
89.o2k7Skin .mceNoIcons span.mceIcon {width:0;}
90.o2k7Skin .mceNoIcons a .mceText {padding-left:10px}
91.o2k7Skin .mceMenu table {background:#FFF}
92.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block}
93.o2k7Skin .mceMenu td {height:20px}
94.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0}
95.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block}
96.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px}
97.o2k7Skin .mceMenu pre.mceText {font-family:Monospace}
98.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;}
99.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3}
100.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px}
101.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD}
102.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px}
103.o2k7Skin .mceMenuItemDisabled .mceText {color:#888}
104.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)}
105.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center}
106.o2k7Skin .mceMenu span.mceMenuLine {display:none}
107.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;}
108
109/* Progress,Resize */
110.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF}
111.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px}
112.o2k7Skin .mcePlaceHolder {border:1px dotted gray}
113
114/* Formats */
115.o2k7Skin .mce_formatPreview a {font-size:10px}
116.o2k7Skin .mce_p span.mceText {}
117.o2k7Skin .mce_address span.mceText {font-style:italic}
118.o2k7Skin .mce_pre span.mceText {font-family:monospace}
119.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em}
120.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em}
121.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em}
122.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em}
123.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em}
124.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em}
125
126/* Theme */
127.o2k7Skin span.mce_bold {background-position:0 0}
128.o2k7Skin span.mce_italic {background-position:-60px 0}
129.o2k7Skin span.mce_underline {background-position:-140px 0}
130.o2k7Skin span.mce_strikethrough {background-position:-120px 0}
131.o2k7Skin span.mce_undo {background-position:-160px 0}
132.o2k7Skin span.mce_redo {background-position:-100px 0}
133.o2k7Skin span.mce_cleanup {background-position:-40px 0}
134.o2k7Skin span.mce_bullist {background-position:-20px 0}
135.o2k7Skin span.mce_numlist {background-position:-80px 0}
136.o2k7Skin span.mce_justifyleft {background-position:-460px 0}
137.o2k7Skin span.mce_justifyright {background-position:-480px 0}
138.o2k7Skin span.mce_justifycenter {background-position:-420px 0}
139.o2k7Skin span.mce_justifyfull {background-position:-440px 0}
140.o2k7Skin span.mce_anchor {background-position:-200px 0}
141.o2k7Skin span.mce_indent {background-position:-400px 0}
142.o2k7Skin span.mce_outdent {background-position:-540px 0}
143.o2k7Skin span.mce_link {background-position:-500px 0}
144.o2k7Skin span.mce_unlink {background-position:-640px 0}
145.o2k7Skin span.mce_sub {background-position:-600px 0}
146.o2k7Skin span.mce_sup {background-position:-620px 0}
147.o2k7Skin span.mce_removeformat {background-position:-580px 0}
148.o2k7Skin span.mce_newdocument {background-position:-520px 0}
149.o2k7Skin span.mce_image {background-position:-380px 0}
150.o2k7Skin span.mce_help {background-position:-340px 0}
151.o2k7Skin span.mce_code {background-position:-260px 0}
152.o2k7Skin span.mce_hr {background-position:-360px 0}
153.o2k7Skin span.mce_visualaid {background-position:-660px 0}
154.o2k7Skin span.mce_charmap {background-position:-240px 0}
155.o2k7Skin span.mce_paste {background-position:-560px 0}
156.o2k7Skin span.mce_copy {background-position:-700px 0}
157.o2k7Skin span.mce_cut {background-position:-680px 0}
158.o2k7Skin span.mce_blockquote {background-position:-220px 0}
159.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0}
160.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0}
161.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0}
162.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0}
163
164/* Plugins */
165.o2k7Skin span.mce_advhr {background-position:-0px -20px}
166.o2k7Skin span.mce_ltr {background-position:-20px -20px}
167.o2k7Skin span.mce_rtl {background-position:-40px -20px}
168.o2k7Skin span.mce_emotions {background-position:-60px -20px}
169.o2k7Skin span.mce_fullpage {background-position:-80px -20px}
170.o2k7Skin span.mce_fullscreen {background-position:-100px -20px}
171.o2k7Skin span.mce_iespell {background-position:-120px -20px}
172.o2k7Skin span.mce_insertdate {background-position:-140px -20px}
173.o2k7Skin span.mce_inserttime {background-position:-160px -20px}
174.o2k7Skin span.mce_absolute {background-position:-180px -20px}
175.o2k7Skin span.mce_backward {background-position:-200px -20px}
176.o2k7Skin span.mce_forward {background-position:-220px -20px}
177.o2k7Skin span.mce_insert_layer {background-position:-240px -20px}
178.o2k7Skin span.mce_insertlayer {background-position:-260px -20px}
179.o2k7Skin span.mce_movebackward {background-position:-280px -20px}
180.o2k7Skin span.mce_moveforward {background-position:-300px -20px}
181.o2k7Skin span.mce_media {background-position:-320px -20px}
182.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px}
183.o2k7Skin span.mce_pastetext {background-position:-360px -20px}
184.o2k7Skin span.mce_pasteword {background-position:-380px -20px}
185.o2k7Skin span.mce_selectall {background-position:-400px -20px}
186.o2k7Skin span.mce_preview {background-position:-420px -20px}
187.o2k7Skin span.mce_print {background-position:-440px -20px}
188.o2k7Skin span.mce_cancel {background-position:-460px -20px}
189.o2k7Skin span.mce_save {background-position:-480px -20px}
190.o2k7Skin span.mce_replace {background-position:-500px -20px}
191.o2k7Skin span.mce_search {background-position:-520px -20px}
192.o2k7Skin span.mce_styleprops {background-position:-560px -20px}
193.o2k7Skin span.mce_table {background-position:-580px -20px}
194.o2k7Skin span.mce_cell_props {background-position:-600px -20px}
195.o2k7Skin span.mce_delete_table {background-position:-620px -20px}
196.o2k7Skin span.mce_delete_col {background-position:-640px -20px}
197.o2k7Skin span.mce_delete_row {background-position:-660px -20px}
198.o2k7Skin span.mce_col_after {background-position:-680px -20px}
199.o2k7Skin span.mce_col_before {background-position:-700px -20px}
200.o2k7Skin span.mce_row_after {background-position:-720px -20px}
201.o2k7Skin span.mce_row_before {background-position:-740px -20px}
202.o2k7Skin span.mce_merge_cells {background-position:-760px -20px}
203.o2k7Skin span.mce_table_props {background-position:-980px -20px}
204.o2k7Skin span.mce_row_props {background-position:-780px -20px}
205.o2k7Skin span.mce_split_cells {background-position:-800px -20px}
206.o2k7Skin span.mce_template {background-position:-820px -20px}
207.o2k7Skin span.mce_visualchars {background-position:-840px -20px}
208.o2k7Skin span.mce_abbr {background-position:-860px -20px}
209.o2k7Skin span.mce_acronym {background-position:-880px -20px}
210.o2k7Skin span.mce_attribs {background-position:-900px -20px}
211.o2k7Skin span.mce_cite {background-position:-920px -20px}
212.o2k7Skin span.mce_del {background-position:-940px -20px}
213.o2k7Skin span.mce_ins {background-position:-960px -20px}
214.o2k7Skin span.mce_pagebreak {background-position:0 -40px}
215.o2k7Skin .mce_spellchecker span.mceAction {background-position:-540px -20px}
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
new file mode 100755
index 0000000..153f0c3
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css
@@ -0,0 +1,8 @@
1/* Black */
2.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)}
3.o2k7SkinBlack table, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF}
4.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0}
5.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0}
6.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;}
7.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)}
8.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1} \ No newline at end of file
diff --git a/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
new file mode 100755
index 0000000..7fe3b45
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css
@@ -0,0 +1,5 @@
1/* Silver */
2.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)}
3.o2k7SkinSilver table, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee}
4.o2k7SkinSilver .mceListBox .mceText {background:#FFF}
5.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb}
diff --git a/public/javascripts/tiny_mce/themes/advanced/source_editor.htm b/public/javascripts/tiny_mce/themes/advanced/source_editor.htm
new file mode 100755
index 0000000..119a913
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/advanced/source_editor.htm
@@ -0,0 +1,32 @@
1<html xmlns="http://www.w3.org/1999/xhtml">
2<head>
3 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
4 <title>{#advanced_dlg.code_title}</title>
5 <script type="text/javascript" src="../../tiny_mce_popup.js"></script>
6 <script type="text/javascript" src="js/source_editor.js"></script>
7 <base target="_self" />
8</head>
9<body onresize="resizeInputs();" style="display:none; overflow:hidden;">
10 <form name="source" onsubmit="saveContent();return false;" action="#">
11 <div style="float: left" class="title">{#advanced_dlg.code_title}</div>
12
13 <div id="wrapline" style="float: right">
14 <input type="checkbox" name="wraped" id="wraped" onclick="toggleWordWrap(this);" class="wordWrapCode" /><label for="wraped">{#advanced_dlg.code_wordwrap}</label>
15 </div>
16
17 <br style="clear: both" />
18
19 <textarea name="htmlSource" id="htmlSource" rows="15" cols="100" style="width: 100%; height: 100%; font-family: 'Courier New',Courier,monospace; font-size: 12px;" dir="ltr" wrap="off" class="mceFocus"></textarea>
20
21 <div class="mceActionPanel">
22 <div style="float: left">
23 <input type="submit" name="insert" value="{#update}" id="insert" />
24 </div>
25
26 <div style="float: right">
27 <input type="button" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" id="cancel" />
28 </div>
29 </div>
30 </form>
31</body>
32</html>
diff --git a/public/javascripts/tiny_mce/themes/simple/editor_template.js b/public/javascripts/tiny_mce/themes/simple/editor_template.js
new file mode 100755
index 0000000..d19fb53
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/simple/editor_template.js
@@ -0,0 +1 @@
(function(){var DOM=tinymce.DOM;tinymce.ThemeManager.requireLangPack('simple');tinymce.create('tinymce.themes.SimpleTheme',{init:function(ed,url){var t=this,states=['Bold','Italic','Underline','Strikethrough','InsertUnorderedList','InsertOrderedList'],s=ed.settings;t.editor=ed;ed.onInit.add(function(){ed.onNodeChange.add(function(ed,cm){tinymce.each(states,function(c){cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));});});ed.dom.loadCSS(url+"/skins/"+s.skin+"/content.css");});DOM.loadCSS((s.editor_css?ed.documentBaseURI.toAbsolute(s.editor_css):'')||url+"/skins/"+s.skin+"/ui.css");},renderUI:function(o){var t=this,n=o.targetNode,ic,tb,ed=t.editor,cf=ed.controlManager,sc;n=DOM.insertAfter(DOM.create('span',{id:ed.id+'_container','class':'mceEditor '+ed.settings.skin+'SimpleSkin'}),n);n=sc=DOM.add(n,'table',{cellPadding:0,cellSpacing:0,'class':'mceLayout'});n=tb=DOM.add(n,'tbody');n=DOM.add(tb,'tr');n=ic=DOM.add(DOM.add(n,'td'),'div',{'class':'mceIframeContainer'});n=DOM.add(DOM.add(tb,'tr',{'class':'last'}),'td',{'class':'mceToolbar mceLast',align:'center'});tb=t.toolbar=cf.createToolbar("tools1");tb.add(cf.createButton('bold',{title:'simple.bold_desc',cmd:'Bold'}));tb.add(cf.createButton('italic',{title:'simple.italic_desc',cmd:'Italic'}));tb.add(cf.createButton('underline',{title:'simple.underline_desc',cmd:'Underline'}));tb.add(cf.createButton('strikethrough',{title:'simple.striketrough_desc',cmd:'Strikethrough'}));tb.add(cf.createSeparator());tb.add(cf.createButton('undo',{title:'simple.undo_desc',cmd:'Undo'}));tb.add(cf.createButton('redo',{title:'simple.redo_desc',cmd:'Redo'}));tb.add(cf.createSeparator());tb.add(cf.createButton('cleanup',{title:'simple.cleanup_desc',cmd:'mceCleanup'}));tb.add(cf.createSeparator());tb.add(cf.createButton('insertunorderedlist',{title:'simple.bullist_desc',cmd:'InsertUnorderedList'}));tb.add(cf.createButton('insertorderedlist',{title:'simple.numlist_desc',cmd:'InsertOrderedList'}));tb.renderTo(n);return{iframeContainer:ic,editorContainer:ed.id+'_container',sizeContainer:sc,deltaHeight:-20};},getInfo:function(){return{longname:'Simple theme',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.ThemeManager.add('simple',tinymce.themes.SimpleTheme);})(); \ No newline at end of file
diff --git a/public/javascripts/tiny_mce/themes/simple/editor_template_src.js b/public/javascripts/tiny_mce/themes/simple/editor_template_src.js
new file mode 100755
index 0000000..fb0bd78
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/simple/editor_template_src.js
@@ -0,0 +1,85 @@
1/**
2 * $Id: editor_template_src.js 920 2008-09-09 14:05:33Z spocke $
3 *
4 * This file is meant to showcase how to create a simple theme. The advanced
5 * theme is more suitable for production use.
6 *
7 * @author Moxiecode
8 * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
9 */
10
11(function() {
12 var DOM = tinymce.DOM;
13
14 // Tell it to load theme specific language pack(s)
15 tinymce.ThemeManager.requireLangPack('simple');
16
17 tinymce.create('tinymce.themes.SimpleTheme', {
18 init : function(ed, url) {
19 var t = this, states = ['Bold', 'Italic', 'Underline', 'Strikethrough', 'InsertUnorderedList', 'InsertOrderedList'], s = ed.settings;
20
21 t.editor = ed;
22
23 ed.onInit.add(function() {
24 ed.onNodeChange.add(function(ed, cm) {
25 tinymce.each(states, function(c) {
26 cm.get(c.toLowerCase()).setActive(ed.queryCommandState(c));
27 });
28 });
29
30 ed.dom.loadCSS(url + "/skins/" + s.skin + "/content.css");
31 });
32
33 DOM.loadCSS((s.editor_css ? ed.documentBaseURI.toAbsolute(s.editor_css) : '') || url + "/skins/" + s.skin + "/ui.css");
34 },
35
36 renderUI : function(o) {
37 var t = this, n = o.targetNode, ic, tb, ed = t.editor, cf = ed.controlManager, sc;
38
39 n = DOM.insertAfter(DOM.create('span', {id : ed.id + '_container', 'class' : 'mceEditor ' + ed.settings.skin + 'SimpleSkin'}), n);
40 n = sc = DOM.add(n, 'table', {cellPadding : 0, cellSpacing : 0, 'class' : 'mceLayout'});
41 n = tb = DOM.add(n, 'tbody');
42
43 // Create iframe container
44 n = DOM.add(tb, 'tr');
45 n = ic = DOM.add(DOM.add(n, 'td'), 'div', {'class' : 'mceIframeContainer'});
46
47 // Create toolbar container
48 n = DOM.add(DOM.add(tb, 'tr', {'class' : 'last'}), 'td', {'class' : 'mceToolbar mceLast', align : 'center'});
49
50 // Create toolbar
51 tb = t.toolbar = cf.createToolbar("tools1");
52 tb.add(cf.createButton('bold', {title : 'simple.bold_desc', cmd : 'Bold'}));
53 tb.add(cf.createButton('italic', {title : 'simple.italic_desc', cmd : 'Italic'}));
54 tb.add(cf.createButton('underline', {title : 'simple.underline_desc', cmd : 'Underline'}));
55 tb.add(cf.createButton('strikethrough', {title : 'simple.striketrough_desc', cmd : 'Strikethrough'}));
56 tb.add(cf.createSeparator());
57 tb.add(cf.createButton('undo', {title : 'simple.undo_desc', cmd : 'Undo'}));
58 tb.add(cf.createButton('redo', {title : 'simple.redo_desc', cmd : 'Redo'}));
59 tb.add(cf.createSeparator());
60 tb.add(cf.createButton('cleanup', {title : 'simple.cleanup_desc', cmd : 'mceCleanup'}));
61 tb.add(cf.createSeparator());
62 tb.add(cf.createButton('insertunorderedlist', {title : 'simple.bullist_desc', cmd : 'InsertUnorderedList'}));
63 tb.add(cf.createButton('insertorderedlist', {title : 'simple.numlist_desc', cmd : 'InsertOrderedList'}));
64 tb.renderTo(n);
65
66 return {
67 iframeContainer : ic,
68 editorContainer : ed.id + '_container',
69 sizeContainer : sc,
70 deltaHeight : -20
71 };
72 },
73
74 getInfo : function() {
75 return {
76 longname : 'Simple theme',
77 author : 'Moxiecode Systems AB',
78 authorurl : 'http://tinymce.moxiecode.com',
79 version : tinymce.majorVersion + "." + tinymce.minorVersion
80 }
81 }
82 });
83
84 tinymce.ThemeManager.add('simple', tinymce.themes.SimpleTheme);
85})(); \ No newline at end of file
diff --git a/public/javascripts/tiny_mce/themes/simple/img/icons.gif b/public/javascripts/tiny_mce/themes/simple/img/icons.gif
new file mode 100755
index 0000000..16af141
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/simple/img/icons.gif
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/simple/langs/en.js b/public/javascripts/tiny_mce/themes/simple/langs/en.js
new file mode 100755
index 0000000..9f08f10
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/simple/langs/en.js
@@ -0,0 +1,11 @@
1tinyMCE.addI18n('en.simple',{
2bold_desc:"Bold (Ctrl+B)",
3italic_desc:"Italic (Ctrl+I)",
4underline_desc:"Underline (Ctrl+U)",
5striketrough_desc:"Strikethrough",
6bullist_desc:"Unordered list",
7numlist_desc:"Ordered list",
8undo_desc:"Undo (Ctrl+Z)",
9redo_desc:"Redo (Ctrl+Y)",
10cleanup_desc:"Cleanup messy code"
11}); \ No newline at end of file
diff --git a/public/javascripts/tiny_mce/themes/simple/skins/default/content.css b/public/javascripts/tiny_mce/themes/simple/skins/default/content.css
new file mode 100755
index 0000000..2506c80
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/simple/skins/default/content.css
@@ -0,0 +1,25 @@
1body, td, pre {
2 font-family: Verdana, Arial, Helvetica, sans-serif;
3 font-size: 10px;
4}
5
6body {
7 background-color: #FFFFFF;
8}
9
10.mceVisualAid {
11 border: 1px dashed #BBBBBB;
12}
13
14/* MSIE specific */
15
16* html body {
17 scrollbar-3dlight-color: #F0F0EE;
18 scrollbar-arrow-color: #676662;
19 scrollbar-base-color: #F0F0EE;
20 scrollbar-darkshadow-color: #DDDDDD;
21 scrollbar-face-color: #E0E0DD;
22 scrollbar-highlight-color: #F0F0EE;
23 scrollbar-shadow-color: #F0F0EE;
24 scrollbar-track-color: #F5F5F5;
25}
diff --git a/public/javascripts/tiny_mce/themes/simple/skins/default/ui.css b/public/javascripts/tiny_mce/themes/simple/skins/default/ui.css
new file mode 100755
index 0000000..076fe84
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/simple/skins/default/ui.css
@@ -0,0 +1,32 @@
1/* Reset */
2.defaultSimpleSkin table, .defaultSimpleSkin tbody, .defaultSimpleSkin a, .defaultSimpleSkin img, .defaultSimpleSkin tr, .defaultSimpleSkin div, .defaultSimpleSkin td, .defaultSimpleSkin iframe, .defaultSimpleSkin span, .defaultSimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
3
4/* Containers */
5.defaultSimpleSkin {position:relative}
6.defaultSimpleSkin table.mceLayout {background:#F0F0EE; border:1px solid #CCC;}
7.defaultSimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #CCC;}
8.defaultSimpleSkin .mceToolbar {height:24px;}
9
10/* Layout */
11.defaultSimpleSkin span.mceIcon, .defaultSimpleSkin img.mceIcon {display:block; width:20px; height:20px}
12.defaultSimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
13
14/* Button */
15.defaultSimpleSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px}
16.defaultSimpleSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0}
17.defaultSimpleSkin a.mceButtonActive {border:1px solid #0A246A; background-color:#C2CBE0}
18.defaultSimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
19
20/* Separator */
21.defaultSimpleSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:0 2px 0 4px}
22
23/* Theme */
24.defaultSimpleSkin span.mce_bold {background-position:0 0}
25.defaultSimpleSkin span.mce_italic {background-position:-60px 0}
26.defaultSimpleSkin span.mce_underline {background-position:-140px 0}
27.defaultSimpleSkin span.mce_strikethrough {background-position:-120px 0}
28.defaultSimpleSkin span.mce_undo {background-position:-160px 0}
29.defaultSimpleSkin span.mce_redo {background-position:-100px 0}
30.defaultSimpleSkin span.mce_cleanup {background-position:-40px 0}
31.defaultSimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
32.defaultSimpleSkin span.mce_insertorderedlist {background-position:-80px 0}
diff --git a/public/javascripts/tiny_mce/themes/simple/skins/o2k7/content.css b/public/javascripts/tiny_mce/themes/simple/skins/o2k7/content.css
new file mode 100755
index 0000000..595809f
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/simple/skins/o2k7/content.css
@@ -0,0 +1,17 @@
1body, td, pre {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;}
2
3body {background: #FFF;}
4.mceVisualAid {border: 1px dashed #BBB;}
5
6/* IE */
7
8* html body {
9scrollbar-3dlight-color: #F0F0EE;
10scrollbar-arrow-color: #676662;
11scrollbar-base-color: #F0F0EE;
12scrollbar-darkshadow-color: #DDDDDD;
13scrollbar-face-color: #E0E0DD;
14scrollbar-highlight-color: #F0F0EE;
15scrollbar-shadow-color: #F0F0EE;
16scrollbar-track-color: #F5F5F5;
17}
diff --git a/public/javascripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png b/public/javascripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
new file mode 100755
index 0000000..527e349
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png
Binary files differ
diff --git a/public/javascripts/tiny_mce/themes/simple/skins/o2k7/ui.css b/public/javascripts/tiny_mce/themes/simple/skins/o2k7/ui.css
new file mode 100755
index 0000000..cf6c35d
--- /dev/null
+++ b/public/javascripts/tiny_mce/themes/simple/skins/o2k7/ui.css
@@ -0,0 +1,35 @@
1/* Reset */
2.o2k7SimpleSkin table, .o2k7SimpleSkin tbody, .o2k7SimpleSkin a, .o2k7SimpleSkin img, .o2k7SimpleSkin tr, .o2k7SimpleSkin div, .o2k7SimpleSkin td, .o2k7SimpleSkin iframe, .o2k7SimpleSkin span, .o2k7SimpleSkin * {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000}
3
4/* Containers */
5.o2k7SimpleSkin {position:relative}
6.o2k7SimpleSkin table.mceLayout {background:#E5EFFD; border:1px solid #ABC6DD;}
7.o2k7SimpleSkin iframe {display:block; background:#FFF; border-bottom:1px solid #ABC6DD;}
8.o2k7SimpleSkin .mceToolbar {height:26px;}
9
10/* Layout */
11.o2k7SimpleSkin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; }
12.o2k7SimpleSkin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px}
13.o2k7SimpleSkin span.mceIcon, .o2k7SimpleSkin img.mceIcon {display:block; width:20px; height:20px}
14.o2k7SimpleSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px}
15
16/* Button */
17.o2k7SimpleSkin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px}
18.o2k7SimpleSkin a.mceButton span, .o2k7SimpleSkin a.mceButton img {margin:1px 0 0 1px}
19.o2k7SimpleSkin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px}
20.o2k7SimpleSkin a.mceButtonActive {background-position:0 -44px}
21.o2k7SimpleSkin .mceButtonDisabled span {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)}
22
23/* Separator */
24.o2k7SimpleSkin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px}
25
26/* Theme */
27.o2k7SimpleSkin span.mce_bold {background-position:0 0}
28.o2k7SimpleSkin span.mce_italic {background-position:-60px 0}
29.o2k7SimpleSkin span.mce_underline {background-position:-140px 0}
30.o2k7SimpleSkin span.mce_strikethrough {background-position:-120px 0}
31.o2k7SimpleSkin span.mce_undo {background-position:-160px 0}
32.o2k7SimpleSkin span.mce_redo {background-position:-100px 0}
33.o2k7SimpleSkin span.mce_cleanup {background-position:-40px 0}
34.o2k7SimpleSkin span.mce_insertunorderedlist {background-position:-20px 0}
35.o2k7SimpleSkin span.mce_insertorderedlist {background-position:-80px 0}