Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/studio/static/js/wymeditor
diff options
context:
space:
mode:
Diffstat (limited to 'studio/static/js/wymeditor')
-rw-r--r--studio/static/js/wymeditor/iframe/.svn/entries31
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/entries402
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-blockquote.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h1.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h2.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h3.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h4.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h5.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h6.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-p.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-pre.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-blockquote.png.svn-basebin0 -> 196 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h1.png.svn-basebin0 -> 166 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h2.png.svn-basebin0 -> 172 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h3.png.svn-basebin0 -> 170 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h4.png.svn-basebin0 -> 172 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h5.png.svn-basebin0 -> 172 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h6.png.svn-basebin0 -> 171 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-p.png.svn-basebin0 -> 3607 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-pre.png.svn-basebin0 -> 177 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/wymiframe.css.svn-base90
-rw-r--r--studio/static/js/wymeditor/iframe/default/.svn/text-base/wymiframe.html.svn-base26
-rw-r--r--studio/static/js/wymeditor/iframe/default/lbl-blockquote.pngbin0 -> 196 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/lbl-h1.pngbin0 -> 166 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/lbl-h2.pngbin0 -> 172 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/lbl-h3.pngbin0 -> 170 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/lbl-h4.pngbin0 -> 172 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/lbl-h5.pngbin0 -> 172 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/lbl-h6.pngbin0 -> 171 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/lbl-p.pngbin0 -> 3607 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/lbl-pre.pngbin0 -> 177 bytes
-rw-r--r--studio/static/js/wymeditor/iframe/default/wymiframe.css90
-rw-r--r--studio/static/js/wymeditor/iframe/default/wymiframe.html26
-rw-r--r--studio/static/js/wymeditor/jquery.wymeditor.explorer.js218
-rw-r--r--studio/static/js/wymeditor/jquery.wymeditor.js3860
-rw-r--r--studio/static/js/wymeditor/jquery.wymeditor.min.js1
-rw-r--r--studio/static/js/wymeditor/jquery.wymeditor.mozilla.js278
-rw-r--r--studio/static/js/wymeditor/jquery.wymeditor.opera.js119
-rw-r--r--studio/static/js/wymeditor/jquery.wymeditor.pack.js1
-rw-r--r--studio/static/js/wymeditor/jquery.wymeditor.safari.js247
-rw-r--r--studio/static/js/wymeditor/lang/.svn/entries912
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/bg.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/ca.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/cs.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/cy.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/de.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/en.js.svn-base46
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/es.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/fa.js.svn-base46
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/fi.js.svn-base44
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/fr.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/gl.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/he.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/hr.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/hu.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/it.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/ja.js.svn-base44
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/nb.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/nl.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/nn.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/pl.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/pt-br.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/pt.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/ru.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/sv.js.svn-base46
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/tr.js.svn-base45
-rw-r--r--studio/static/js/wymeditor/lang/.svn/text-base/zh_cn.js.svn-base47
-rw-r--r--studio/static/js/wymeditor/lang/bg.js45
-rw-r--r--studio/static/js/wymeditor/lang/ca.js45
-rw-r--r--studio/static/js/wymeditor/lang/cs.js45
-rw-r--r--studio/static/js/wymeditor/lang/cy.js45
-rw-r--r--studio/static/js/wymeditor/lang/de.js45
-rw-r--r--studio/static/js/wymeditor/lang/en.js46
-rw-r--r--studio/static/js/wymeditor/lang/es.js45
-rw-r--r--studio/static/js/wymeditor/lang/fa.js46
-rw-r--r--studio/static/js/wymeditor/lang/fi.js44
-rw-r--r--studio/static/js/wymeditor/lang/fr.js45
-rw-r--r--studio/static/js/wymeditor/lang/gl.js45
-rw-r--r--studio/static/js/wymeditor/lang/he.js45
-rw-r--r--studio/static/js/wymeditor/lang/hr.js45
-rw-r--r--studio/static/js/wymeditor/lang/hu.js45
-rw-r--r--studio/static/js/wymeditor/lang/it.js45
-rw-r--r--studio/static/js/wymeditor/lang/ja.js44
-rw-r--r--studio/static/js/wymeditor/lang/nb.js45
-rw-r--r--studio/static/js/wymeditor/lang/nl.js45
-rw-r--r--studio/static/js/wymeditor/lang/nn.js45
-rw-r--r--studio/static/js/wymeditor/lang/pl.js45
-rw-r--r--studio/static/js/wymeditor/lang/pt-br.js45
-rw-r--r--studio/static/js/wymeditor/lang/pt.js45
-rw-r--r--studio/static/js/wymeditor/lang/ru.js45
-rw-r--r--studio/static/js/wymeditor/lang/sv.js46
-rw-r--r--studio/static/js/wymeditor/lang/tr.js45
-rw-r--r--studio/static/js/wymeditor/lang/zh_cn.js47
-rw-r--r--studio/static/js/wymeditor/plugins/.svn/entries43
-rw-r--r--studio/static/js/wymeditor/plugins/embed/.svn/entries62
-rw-r--r--studio/static/js/wymeditor/plugins/embed/.svn/text-base/jquery.wymeditor.embed.js.svn-base52
-rw-r--r--studio/static/js/wymeditor/plugins/embed/jquery.wymeditor.embed.js52
-rw-r--r--studio/static/js/wymeditor/plugins/fullscreen/.svn/entries96
-rw-r--r--studio/static/js/wymeditor/plugins/fullscreen/.svn/prop-base/icon_fullscreen.gif.svn-base5
-rw-r--r--studio/static/js/wymeditor/plugins/fullscreen/.svn/text-base/icon_fullscreen.gif.svn-basebin0 -> 509 bytes
-rw-r--r--studio/static/js/wymeditor/plugins/fullscreen/.svn/text-base/jquery.wymeditor.fullscreen.js.svn-base127
-rw-r--r--studio/static/js/wymeditor/plugins/fullscreen/icon_fullscreen.gifbin0 -> 509 bytes
-rw-r--r--studio/static/js/wymeditor/plugins/fullscreen/jquery.wymeditor.fullscreen.js127
-rw-r--r--studio/static/js/wymeditor/plugins/hovertools/.svn/entries62
-rw-r--r--studio/static/js/wymeditor/plugins/hovertools/.svn/text-base/jquery.wymeditor.hovertools.js.svn-base57
-rw-r--r--studio/static/js/wymeditor/plugins/hovertools/jquery.wymeditor.hovertools.js57
-rw-r--r--studio/static/js/wymeditor/plugins/resizable/.svn/entries96
-rw-r--r--studio/static/js/wymeditor/plugins/resizable/.svn/text-base/jquery.wymeditor.resizable.js.svn-base91
-rw-r--r--studio/static/js/wymeditor/plugins/resizable/.svn/text-base/readme.txt.svn-base124
-rw-r--r--studio/static/js/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js91
-rw-r--r--studio/static/js/wymeditor/plugins/resizable/readme.txt124
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/.svn/entries164
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/.svn/prop-base/wand.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/.svn/text-base/README.svn-base19
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/.svn/text-base/jquery.wymeditor.tidy.js.svn-base82
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/.svn/text-base/tidy.php.svn-base36
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/.svn/text-base/wand.png.svn-basebin0 -> 715 bytes
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/README19
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/jquery.wymeditor.tidy.js82
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/tidy.php36
-rw-r--r--studio/static/js/wymeditor/plugins/tidy/wand.pngbin0 -> 715 bytes
-rw-r--r--studio/static/js/wymeditor/skins/.svn/entries77
-rw-r--r--studio/static/js/wymeditor/skins/.svn/prop-base/wymeditor_icon.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/.svn/text-base/wymeditor_icon.png.svn-basebin0 -> 1028 bytes
-rw-r--r--studio/static/js/wymeditor/skins/compact/.svn/entries130
-rw-r--r--studio/static/js/wymeditor/skins/compact/.svn/prop-base/icons.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/compact/.svn/text-base/icons.png.svn-basebin0 -> 3651 bytes
-rw-r--r--studio/static/js/wymeditor/skins/compact/.svn/text-base/skin.css.svn-base134
-rw-r--r--studio/static/js/wymeditor/skins/compact/.svn/text-base/skin.js.svn-base35
-rw-r--r--studio/static/js/wymeditor/skins/compact/icons.pngbin0 -> 3651 bytes
-rw-r--r--studio/static/js/wymeditor/skins/compact/skin.css134
-rw-r--r--studio/static/js/wymeditor/skins/compact/skin.js35
-rw-r--r--studio/static/js/wymeditor/skins/default/.svn/entries130
-rw-r--r--studio/static/js/wymeditor/skins/default/.svn/prop-base/icons.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/default/.svn/text-base/icons.png.svn-basebin0 -> 3651 bytes
-rw-r--r--studio/static/js/wymeditor/skins/default/.svn/text-base/skin.css.svn-base133
-rw-r--r--studio/static/js/wymeditor/skins/default/.svn/text-base/skin.js.svn-base40
-rw-r--r--studio/static/js/wymeditor/skins/default/icons.pngbin0 -> 3651 bytes
-rw-r--r--studio/static/js/wymeditor/skins/default/skin.css133
-rw-r--r--studio/static/js/wymeditor/skins/default/skin.js40
-rw-r--r--studio/static/js/wymeditor/skins/minimal/.svn/entries99
-rw-r--r--studio/static/js/wymeditor/skins/minimal/.svn/text-base/skin.css.svn-base131
-rw-r--r--studio/static/js/wymeditor/skins/minimal/.svn/text-base/skin.js.svn-base30
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/.svn/entries164
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.header.gif.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.selector.silver.gif.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.wymeditor.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/icons.silver.gif.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.header.gif.svn-basebin0 -> 781 bytes
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.selector.silver.gif.svn-basebin0 -> 1621 bytes
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.wymeditor.png.svn-basebin0 -> 498 bytes
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/icons.silver.gif.svn-basebin0 -> 15382 bytes
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/bg.header.gifbin0 -> 781 bytes
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/bg.selector.silver.gifbin0 -> 1621 bytes
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/bg.wymeditor.pngbin0 -> 498 bytes
-rw-r--r--studio/static/js/wymeditor/skins/minimal/images/icons.silver.gifbin0 -> 15382 bytes
-rw-r--r--studio/static/js/wymeditor/skins/minimal/skin.css131
-rw-r--r--studio/static/js/wymeditor/skins/minimal/skin.js30
-rw-r--r--studio/static/js/wymeditor/skins/silver/.svn/entries167
-rw-r--r--studio/static/js/wymeditor/skins/silver/.svn/prop-base/COPYING.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/silver/.svn/prop-base/README.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/silver/.svn/text-base/COPYING.svn-base674
-rw-r--r--studio/static/js/wymeditor/skins/silver/.svn/text-base/README.svn-base27
-rw-r--r--studio/static/js/wymeditor/skins/silver/.svn/text-base/skin.css.svn-base297
-rw-r--r--studio/static/js/wymeditor/skins/silver/.svn/text-base/skin.js.svn-base61
-rwxr-xr-xstudio/static/js/wymeditor/skins/silver/COPYING674
-rwxr-xr-xstudio/static/js/wymeditor/skins/silver/README27
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/.svn/entries164
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.header.gif.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.selector.silver.gif.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.wymeditor.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/icons.silver.gif.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.header.gif.svn-basebin0 -> 781 bytes
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.selector.silver.gif.svn-basebin0 -> 1621 bytes
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.wymeditor.png.svn-basebin0 -> 498 bytes
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/.svn/text-base/icons.silver.gif.svn-basebin0 -> 15382 bytes
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/bg.header.gifbin0 -> 781 bytes
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/bg.selector.silver.gifbin0 -> 1621 bytes
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/bg.wymeditor.pngbin0 -> 498 bytes
-rw-r--r--studio/static/js/wymeditor/skins/silver/images/icons.silver.gifbin0 -> 15382 bytes
-rw-r--r--studio/static/js/wymeditor/skins/silver/skin.css297
-rw-r--r--studio/static/js/wymeditor/skins/silver/skin.js61
-rw-r--r--studio/static/js/wymeditor/skins/twopanels/.svn/entries130
-rw-r--r--studio/static/js/wymeditor/skins/twopanels/.svn/prop-base/icons.png.svn-base5
-rw-r--r--studio/static/js/wymeditor/skins/twopanels/.svn/text-base/icons.png.svn-basebin0 -> 3651 bytes
-rw-r--r--studio/static/js/wymeditor/skins/twopanels/.svn/text-base/skin.css.svn-base134
-rw-r--r--studio/static/js/wymeditor/skins/twopanels/.svn/text-base/skin.js.svn-base39
-rw-r--r--studio/static/js/wymeditor/skins/twopanels/icons.pngbin0 -> 3651 bytes
-rw-r--r--studio/static/js/wymeditor/skins/twopanels/skin.css134
-rw-r--r--studio/static/js/wymeditor/skins/twopanels/skin.js39
-rw-r--r--studio/static/js/wymeditor/skins/wymeditor_icon.pngbin0 -> 1028 bytes
191 files changed, 15002 insertions, 0 deletions
diff --git a/studio/static/js/wymeditor/iframe/.svn/entries b/studio/static/js/wymeditor/iframe/.svn/entries
new file mode 100644
index 0000000..247ae9d
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/.svn/entries
@@ -0,0 +1,31 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/iframe
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+default
+dir
+
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/entries b/studio/static/js/wymeditor/iframe/default/.svn/entries
new file mode 100644
index 0000000..cb122d2
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/entries
@@ -0,0 +1,402 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/iframe/default
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+lbl-pre.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+7ad78e30f68e5007ed479516f583e10f
+2007-05-02T09:28:40.695596Z
+253
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+177
+
+lbl-blockquote.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+5cd5fb5fe87078c1cae941dad05db2e2
+2007-05-02T09:28:40.695596Z
+253
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+196
+
+lbl-h1.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+b3782df976443f4a0086893d4da991d2
+2007-05-02T09:28:40.695596Z
+253
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+166
+
+lbl-h2.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+6e4bfdbfc57415b8c650347bd1704154
+2007-05-02T09:28:40.695596Z
+253
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+172
+
+wymiframe.html
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+b079d0914f6a73d4812a4967b2d9bd3c
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+867
+
+lbl-h3.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+8915729f6e8b98436f9a1a0723bc2d6a
+2007-05-02T09:28:40.695596Z
+253
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+170
+
+lbl-h4.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+03bfccf7f8d474142bafeabf86b4732f
+2007-05-02T09:28:40.695596Z
+253
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+172
+
+lbl-h5.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+c0f5d3d29f3cf277960182af39f5028a
+2007-05-02T09:28:40.695596Z
+253
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+172
+
+lbl-h6.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+f19136291f975688a3784353ac0fc83c
+2007-05-02T09:28:40.695596Z
+253
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+171
+
+wymiframe.css
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+bb4ed9368fc143f7af3936d7e51d8d57
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3273
+
+lbl-p.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+afe885e1e018a8aecee52a08e605c565
+2007-05-02T09:28:40.695596Z
+253
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3607
+
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-blockquote.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-blockquote.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-blockquote.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h1.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h1.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h1.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h2.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h2.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h2.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h3.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h3.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h3.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h4.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h4.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h4.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h5.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h5.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h5.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h6.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h6.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-h6.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-p.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-p.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-p.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-pre.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-pre.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/prop-base/lbl-pre.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-blockquote.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-blockquote.png.svn-base
new file mode 100644
index 0000000..65ea205
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-blockquote.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h1.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h1.png.svn-base
new file mode 100644
index 0000000..dea1da3
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h1.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h2.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h2.png.svn-base
new file mode 100644
index 0000000..f4b4274
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h2.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h3.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h3.png.svn-base
new file mode 100644
index 0000000..bd99f76
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h3.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h4.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h4.png.svn-base
new file mode 100644
index 0000000..e06ab3d
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h4.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h5.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h5.png.svn-base
new file mode 100644
index 0000000..360fc60
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h5.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h6.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h6.png.svn-base
new file mode 100644
index 0000000..73e644a
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-h6.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-p.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-p.png.svn-base
new file mode 100644
index 0000000..7f2bf34
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-p.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-pre.png.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-pre.png.svn-base
new file mode 100644
index 0000000..e026e47
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/lbl-pre.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/wymiframe.css.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/wymiframe.css.svn-base
new file mode 100644
index 0000000..769520c
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/wymiframe.css.svn-base
@@ -0,0 +1,90 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * wymeditor.css
+ * Main editor css file.
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+*/
+
+/* VISUAL FEEDBACK */
+
+/* basic */
+ body { background: #e1e8f1;}
+
+/* make HTML blocs visible */
+ p,
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ ul,
+ ol,
+ table,
+ blockquote,
+ pre { background: #FFFFFF no-repeat 2px 2px;
+ padding:8px 5px 5px;
+ margin:10px; }
+ td { background: #F0F4F8; }
+ th { background: #ffffcc; }
+ ul,
+ ol { border-left:20px solid #B9C4D0; padding:0px 5px; }
+ caption { background: #E4E4B0; padding: 5px; font-weight: bold; }
+ table { font-size: 12px; width: 500px; }
+ td { width: 25%; }
+ blockquote { margin-left: 30px; }
+ pre { background-color:transparent; border: 1px solid white; }
+
+/* Gecko min height fix */
+ p { min-height: 1em; } /*min-height is needed under Firefox, because empty parargraphs */
+ *+html p { min-height: auto; } /* but we have to remove it under IE7 because it triggers the 'haslayout' mode */
+ td { height: 1.6em; }
+
+/* labels */
+ p { background-image: url(lbl-p.png); }
+ h1 { background-image: url(lbl-h1.png); }
+ h2 { background-image: url(lbl-h2.png); }
+ h3 { background-image: url(lbl-h3.png); }
+ h4 { background-image: url(lbl-h4.png); }
+ h5 { background-image: url(lbl-h5.png); }
+ h6 { background-image: url(lbl-h6.png); }
+ blockquote{ background-image: url(lbl-blockquote.png); }
+ pre { background-image: url(lbl-pre.png); }
+
+/* specific HTML elements */
+ caption { text-align: left; }
+ img { margin-right: 5px;
+ border-style: solid;
+ border-color: gray;
+ border-width: 0; }
+ a img { border-width: 1px; border-color: blue; }
+ acronym { border: 1px solid gray; }
+ span { background-color: #eef; }
+
+/* visual feedback for non-valid nesting of elements*/
+ h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6, h1 p, h1 pre, h1 address,
+ h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6, h2 p, h2 pre, h2 address,
+ h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6, h3 p, h3 pre, h3 address,
+ h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6, h4 p, h4 pre, h4 address,
+ h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6, h5 p, h5 pre, h5 address,
+ h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6, h6 p, h6 pre, h6 address,
+ p h1, p h2, p h3, p h4, p h5, p h6, p pre, p address,
+ pre h1, pre h2, pre h3, pre h4, pre h5, pre h6, pre p, pre pre, pre address,
+ address h1, address h2, address h3, address h4, address h5, address h6,
+ address p, address pre, address address
+ { background-color: #ff9999 !important;
+ border: 1px solid red !important;
+ font-size: 12px !important;
+ font-weight: normal; }
diff --git a/studio/static/js/wymeditor/iframe/default/.svn/text-base/wymiframe.html.svn-base b/studio/static/js/wymeditor/iframe/default/.svn/text-base/wymiframe.html.svn-base
new file mode 100644
index 0000000..91a690c
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/.svn/text-base/wymiframe.html.svn-base
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!--
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * wymiframe.html
+ * Iframe used by designMode.
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+-->
+<html>
+<head>
+<title>WYMeditor iframe</title>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
+<link rel="stylesheet" type="text/css" media="screen" href="wymiframe.css" />
+</head>
+<body class="wym_iframe"></body>
+</html>
diff --git a/studio/static/js/wymeditor/iframe/default/lbl-blockquote.png b/studio/static/js/wymeditor/iframe/default/lbl-blockquote.png
new file mode 100644
index 0000000..65ea205
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/lbl-blockquote.png
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/lbl-h1.png b/studio/static/js/wymeditor/iframe/default/lbl-h1.png
new file mode 100644
index 0000000..dea1da3
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/lbl-h1.png
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/lbl-h2.png b/studio/static/js/wymeditor/iframe/default/lbl-h2.png
new file mode 100644
index 0000000..f4b4274
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/lbl-h2.png
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/lbl-h3.png b/studio/static/js/wymeditor/iframe/default/lbl-h3.png
new file mode 100644
index 0000000..bd99f76
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/lbl-h3.png
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/lbl-h4.png b/studio/static/js/wymeditor/iframe/default/lbl-h4.png
new file mode 100644
index 0000000..e06ab3d
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/lbl-h4.png
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/lbl-h5.png b/studio/static/js/wymeditor/iframe/default/lbl-h5.png
new file mode 100644
index 0000000..360fc60
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/lbl-h5.png
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/lbl-h6.png b/studio/static/js/wymeditor/iframe/default/lbl-h6.png
new file mode 100644
index 0000000..73e644a
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/lbl-h6.png
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/lbl-p.png b/studio/static/js/wymeditor/iframe/default/lbl-p.png
new file mode 100644
index 0000000..7f2bf34
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/lbl-p.png
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/lbl-pre.png b/studio/static/js/wymeditor/iframe/default/lbl-pre.png
new file mode 100644
index 0000000..e026e47
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/lbl-pre.png
Binary files differ
diff --git a/studio/static/js/wymeditor/iframe/default/wymiframe.css b/studio/static/js/wymeditor/iframe/default/wymiframe.css
new file mode 100644
index 0000000..769520c
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/wymiframe.css
@@ -0,0 +1,90 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * wymeditor.css
+ * Main editor css file.
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+*/
+
+/* VISUAL FEEDBACK */
+
+/* basic */
+ body { background: #e1e8f1;}
+
+/* make HTML blocs visible */
+ p,
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ ul,
+ ol,
+ table,
+ blockquote,
+ pre { background: #FFFFFF no-repeat 2px 2px;
+ padding:8px 5px 5px;
+ margin:10px; }
+ td { background: #F0F4F8; }
+ th { background: #ffffcc; }
+ ul,
+ ol { border-left:20px solid #B9C4D0; padding:0px 5px; }
+ caption { background: #E4E4B0; padding: 5px; font-weight: bold; }
+ table { font-size: 12px; width: 500px; }
+ td { width: 25%; }
+ blockquote { margin-left: 30px; }
+ pre { background-color:transparent; border: 1px solid white; }
+
+/* Gecko min height fix */
+ p { min-height: 1em; } /*min-height is needed under Firefox, because empty parargraphs */
+ *+html p { min-height: auto; } /* but we have to remove it under IE7 because it triggers the 'haslayout' mode */
+ td { height: 1.6em; }
+
+/* labels */
+ p { background-image: url(lbl-p.png); }
+ h1 { background-image: url(lbl-h1.png); }
+ h2 { background-image: url(lbl-h2.png); }
+ h3 { background-image: url(lbl-h3.png); }
+ h4 { background-image: url(lbl-h4.png); }
+ h5 { background-image: url(lbl-h5.png); }
+ h6 { background-image: url(lbl-h6.png); }
+ blockquote{ background-image: url(lbl-blockquote.png); }
+ pre { background-image: url(lbl-pre.png); }
+
+/* specific HTML elements */
+ caption { text-align: left; }
+ img { margin-right: 5px;
+ border-style: solid;
+ border-color: gray;
+ border-width: 0; }
+ a img { border-width: 1px; border-color: blue; }
+ acronym { border: 1px solid gray; }
+ span { background-color: #eef; }
+
+/* visual feedback for non-valid nesting of elements*/
+ h1 h1, h1 h2, h1 h3, h1 h4, h1 h5, h1 h6, h1 p, h1 pre, h1 address,
+ h2 h1, h2 h2, h2 h3, h2 h4, h2 h5, h2 h6, h2 p, h2 pre, h2 address,
+ h3 h1, h3 h2, h3 h3, h3 h4, h3 h5, h3 h6, h3 p, h3 pre, h3 address,
+ h4 h1, h4 h2, h4 h3, h4 h4, h4 h5, h4 h6, h4 p, h4 pre, h4 address,
+ h5 h1, h5 h2, h5 h3, h5 h4, h5 h5, h5 h6, h5 p, h5 pre, h5 address,
+ h6 h1, h6 h2, h6 h3, h6 h4, h6 h4, h6 h6, h6 p, h6 pre, h6 address,
+ p h1, p h2, p h3, p h4, p h5, p h6, p pre, p address,
+ pre h1, pre h2, pre h3, pre h4, pre h5, pre h6, pre p, pre pre, pre address,
+ address h1, address h2, address h3, address h4, address h5, address h6,
+ address p, address pre, address address
+ { background-color: #ff9999 !important;
+ border: 1px solid red !important;
+ font-size: 12px !important;
+ font-weight: normal; }
diff --git a/studio/static/js/wymeditor/iframe/default/wymiframe.html b/studio/static/js/wymeditor/iframe/default/wymiframe.html
new file mode 100644
index 0000000..91a690c
--- /dev/null
+++ b/studio/static/js/wymeditor/iframe/default/wymiframe.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<!--
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * wymiframe.html
+ * Iframe used by designMode.
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+-->
+<html>
+<head>
+<title>WYMeditor iframe</title>
+<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
+<link rel="stylesheet" type="text/css" media="screen" href="wymiframe.css" />
+</head>
+<body class="wym_iframe"></body>
+</html>
diff --git a/studio/static/js/wymeditor/jquery.wymeditor.explorer.js b/studio/static/js/wymeditor/jquery.wymeditor.explorer.js
new file mode 100644
index 0000000..c177bee
--- /dev/null
+++ b/studio/static/js/wymeditor/jquery.wymeditor.explorer.js
@@ -0,0 +1,218 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.explorer.js
+ * MSIE specific class and functions.
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ * Bermi Ferrer (wymeditor a-t bermi dotorg)
+ * Frédéric Palluel-Lafleur (fpalluel a-t gmail dotcom)
+ * Jonatan Lundin (jonatan.lundin a-t gmail dotcom)
+ */
+
+WYMeditor.WymClassExplorer = function(wym) {
+
+ this._wym = wym;
+ this._class = "className";
+ this._newLine = "\r\n";
+
+};
+
+WYMeditor.WymClassExplorer.prototype.initIframe = function(iframe) {
+
+ //This function is executed twice, though it is called once!
+ //But MSIE needs that, otherwise designMode won't work.
+ //Weird.
+
+ this._iframe = iframe;
+ this._doc = iframe.contentWindow.document;
+
+ //add css rules from options
+ var styles = this._doc.styleSheets[0];
+ var aCss = eval(this._options.editorStyles);
+
+ this.addCssRules(this._doc, aCss);
+
+ this._doc.title = this._wym._index;
+
+ //set the text direction
+ jQuery('html', this._doc).attr('dir', this._options.direction);
+
+ //init html value
+ jQuery(this._doc.body).html(this._wym._html);
+
+ //handle events
+ var wym = this;
+
+ this._doc.body.onfocus = function()
+ {wym._doc.designMode = "on"; wym._doc = iframe.contentWindow.document;};
+ this._doc.onbeforedeactivate = function() {wym.saveCaret();};
+ this._doc.onkeyup = function() {
+ wym.saveCaret();
+ wym.keyup();
+ };
+ this._doc.onclick = function() {wym.saveCaret();};
+
+ this._doc.body.onbeforepaste = function() {
+ wym._iframe.contentWindow.event.returnValue = false;
+ };
+
+ this._doc.body.onpaste = function() {
+ wym._iframe.contentWindow.event.returnValue = false;
+ wym.paste(window.clipboardData.getData("Text"));
+ };
+
+ //callback can't be executed twice, so we check
+ if(this._initialized) {
+
+ //pre-bind functions
+ if(jQuery.isFunction(this._options.preBind)) this._options.preBind(this);
+
+ //bind external events
+ this._wym.bindEvents();
+
+ //post-init functions
+ if(jQuery.isFunction(this._options.postInit)) this._options.postInit(this);
+
+ //add event listeners to doc elements, e.g. images
+ this.listen();
+ }
+
+ this._initialized = true;
+
+ //init designMode
+ this._doc.designMode="on";
+ try{
+ // (bermi's note) noticed when running unit tests on IE6
+ // Is this really needed, it trigger an unexisting property on IE6
+ this._doc = iframe.contentWindow.document;
+ }catch(e){}
+};
+
+(function(editorLoadSkin) {
+ WYMeditor.WymClassExplorer.prototype.loadSkin = function() {
+ // Mark container items as unselectable (#203)
+ // Fix for issue explained: http://stackoverflow.com/questions/1470932/ie8-iframe-designmode-loses-selection
+ jQuery(this._box).find(this._options.containerSelector)
+ .attr('unselectable', 'on');
+
+ editorLoadSkin.call(this);
+ };
+})(WYMeditor.editor.prototype.loadSkin);
+
+WYMeditor.WymClassExplorer.prototype._exec = function(cmd,param) {
+
+ switch(cmd) {
+
+ case WYMeditor.INDENT: case WYMeditor.OUTDENT:
+
+ var container = this.findUp(this.container(), WYMeditor.LI);
+ if(container) {
+ var ancestor = container.parentNode.parentNode;
+ if(container.parentNode.childNodes.length>1
+ || ancestor.tagName.toLowerCase() == WYMeditor.OL
+ || ancestor.tagName.toLowerCase() == WYMeditor.UL)
+ this._doc.execCommand(cmd);
+ }
+ break;
+ default:
+ if(param) this._doc.execCommand(cmd,false,param);
+ else this._doc.execCommand(cmd);
+ break;
+ }
+
+};
+
+WYMeditor.WymClassExplorer.prototype.selected = function() {
+
+ var caretPos = this._iframe.contentWindow.document.caretPos;
+ if(caretPos!=null) {
+ if(caretPos.parentElement!=undefined)
+ return(caretPos.parentElement());
+ }
+};
+
+WYMeditor.WymClassExplorer.prototype.saveCaret = function() {
+
+ this._doc.caretPos = this._doc.selection.createRange();
+};
+
+WYMeditor.WymClassExplorer.prototype.addCssRule = function(styles, oCss) {
+ // IE doesn't handle combined selectors (#196)
+ var selectors = oCss.name.split(',');
+ for (var i in selectors) {
+ styles.addRule(selectors[i], oCss.css);
+ }
+};
+
+WYMeditor.WymClassExplorer.prototype.insert = function(html) {
+
+ // Get the current selection
+ var range = this._doc.selection.createRange();
+
+ // Check if the current selection is inside the editor
+ if ( jQuery(range.parentElement()).parents( this._options.iframeBodySelector ).is('*') ) {
+ try {
+ // Overwrite selection with provided html
+ range.pasteHTML(html);
+ } catch (e) { }
+ } else {
+ // Fall back to the internal paste function if there's no selection
+ this.paste(html);
+ }
+};
+
+WYMeditor.WymClassExplorer.prototype.wrap = function(left, right) {
+
+ // Get the current selection
+ var range = this._doc.selection.createRange();
+
+ // Check if the current selection is inside the editor
+ if ( jQuery(range.parentElement()).parents( this._options.iframeBodySelector ).is('*') ) {
+ try {
+ // Overwrite selection with provided html
+ range.pasteHTML(left + range.text + right);
+ } catch (e) { }
+ }
+};
+
+WYMeditor.WymClassExplorer.prototype.unwrap = function() {
+
+ // Get the current selection
+ var range = this._doc.selection.createRange();
+
+ // Check if the current selection is inside the editor
+ if ( jQuery(range.parentElement()).parents( this._options.iframeBodySelector ).is('*') ) {
+ try {
+ // Unwrap selection
+ var text = range.text;
+ this._exec( 'Cut' );
+ range.pasteHTML( text );
+ } catch (e) { }
+ }
+};
+
+//keyup handler
+WYMeditor.WymClassExplorer.prototype.keyup = function() {
+ this._selected_image = null;
+};
+
+WYMeditor.WymClassExplorer.prototype.setFocusToNode = function(node, toStart) {
+ var range = this._doc.selection.createRange();
+ toStart = toStart ? true : false;
+
+ range.moveToElementText(node);
+ range.collapse(toStart);
+ range.select();
+ node.focus();
+};
+
diff --git a/studio/static/js/wymeditor/jquery.wymeditor.js b/studio/static/js/wymeditor/jquery.wymeditor.js
new file mode 100644
index 0000000..d7c6359
--- /dev/null
+++ b/studio/static/js/wymeditor/jquery.wymeditor.js
@@ -0,0 +1,3860 @@
+/**
+ * @version 0.5-rc1
+ *
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File: jquery.wymeditor.js
+ *
+ * Main JS file with core classes and functions.
+ * See the documentation for more info.
+ *
+ * About: authors
+ *
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ * Volker Mische (vmx a-t gmx dotde)
+ * Scott Lewis (lewiscot a-t gmail dotcom)
+ * Bermi Ferrer (wymeditor a-t bermi dotorg)
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+ * Jonatan Lundin (jonatan.lundin a-t gmail dotcom)
+ */
+
+/*
+ Namespace: WYMeditor
+ Global WYMeditor namespace.
+*/
+if(!WYMeditor) var WYMeditor = {};
+
+//Wrap the Firebug console in WYMeditor.console
+(function() {
+ if ( !window.console || !console.firebug ) {
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
+ "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
+
+ WYMeditor.console = {};
+ for (var i = 0; i < names.length; ++i)
+ WYMeditor.console[names[i]] = function() {}
+
+ } else WYMeditor.console = window.console;
+})();
+
+jQuery.extend(WYMeditor, {
+
+/*
+ Constants: Global WYMeditor constants.
+
+ VERSION - Defines WYMeditor version.
+ INSTANCES - An array of loaded WYMeditor.editor instances.
+ STRINGS - An array of loaded WYMeditor language pairs/values.
+ SKINS - An array of loaded WYMeditor skins.
+ NAME - The "name" attribute.
+ INDEX - A string replaced by the instance index.
+ WYM_INDEX - A string used to get/set the instance index.
+ BASE_PATH - A string replaced by WYMeditor's base path.
+ SKIN_PATH - A string replaced by WYMeditor's skin path.
+ WYM_PATH - A string replaced by WYMeditor's main JS file path.
+ SKINS_DEFAULT_PATH - The skins default base path.
+ SKINS_DEFAULT_CSS - The skins default CSS file.
+ LANG_DEFAULT_PATH - The language files default path.
+ IFRAME_BASE_PATH - A string replaced by the designmode iframe's base path.
+ IFRAME_DEFAULT - The iframe's default base path.
+ JQUERY_PATH - A string replaced by the computed jQuery path.
+ DIRECTION - A string replaced by the text direction (rtl or ltr).
+ LOGO - A string replaced by WYMeditor logo.
+ TOOLS - A string replaced by the toolbar's HTML.
+ TOOLS_ITEMS - A string replaced by the toolbar items.
+ TOOL_NAME - A string replaced by a toolbar item's name.
+ TOOL_TITLE - A string replaced by a toolbar item's title.
+ TOOL_CLASS - A string replaced by a toolbar item's class.
+ CLASSES - A string replaced by the classes panel's HTML.
+ CLASSES_ITEMS - A string replaced by the classes items.
+ CLASS_NAME - A string replaced by a class item's name.
+ CLASS_TITLE - A string replaced by a class item's title.
+ CONTAINERS - A string replaced by the containers panel's HTML.
+ CONTAINERS_ITEMS - A string replaced by the containers items.
+ CONTAINER_NAME - A string replaced by a container item's name.
+ CONTAINER_TITLE - A string replaced by a container item's title.
+ CONTAINER_CLASS - A string replaced by a container item's class.
+ HTML - A string replaced by the HTML view panel's HTML.
+ IFRAME - A string replaced by the designmode iframe.
+ STATUS - A string replaced by the status panel's HTML.
+ DIALOG_TITLE - A string replaced by a dialog's title.
+ DIALOG_BODY - A string replaced by a dialog's HTML body.
+ BODY - The BODY element.
+ STRING - The "string" type.
+ BODY,DIV,P,
+ H1,H2,H3,H4,H5,H6,
+ PRE,BLOCKQUOTE,
+ A,BR,IMG,
+ TABLE,TD,TH,
+ UL,OL,LI - HTML elements string representation.
+ CLASS,HREF,SRC,
+ TITLE,REL,ALT - HTML attributes string representation.
+ DIALOG_LINK - A link dialog type.
+ DIALOG_IMAGE - An image dialog type.
+ DIALOG_TABLE - A table dialog type.
+ DIALOG_PASTE - A 'Paste from Word' dialog type.
+ BOLD - Command: (un)set selection to <strong>.
+ ITALIC - Command: (un)set selection to <em>.
+ CREATE_LINK - Command: open the link dialog or (un)set link.
+ INSERT_IMAGE - Command: open the image dialog or insert an image.
+ INSERT_TABLE - Command: open the table dialog.
+ PASTE - Command: open the paste dialog.
+ INDENT - Command: nest a list item.
+ OUTDENT - Command: unnest a list item.
+ TOGGLE_HTML - Command: display/hide the HTML view.
+ FORMAT_BLOCK - Command: set a block element to another type.
+ PREVIEW - Command: open the preview dialog.
+ UNLINK - Command: unset a link.
+ INSERT_UNORDEREDLIST- Command: insert an unordered list.
+ INSERT_ORDEREDLIST - Command: insert an ordered list.
+ MAIN_CONTAINERS - An array of the main HTML containers used in WYMeditor.
+ BLOCKS - An array of the HTML block elements.
+ KEY - Standard key codes.
+ NODE - Node types.
+
+*/
+
+ VERSION : "0.5-rc1",
+ INSTANCES : [],
+ STRINGS : [],
+ SKINS : [],
+ NAME : "name",
+ INDEX : "{Wym_Index}",
+ WYM_INDEX : "wym_index",
+ BASE_PATH : "{Wym_Base_Path}",
+ CSS_PATH : "{Wym_Css_Path}",
+ WYM_PATH : "{Wym_Wym_Path}",
+ SKINS_DEFAULT_PATH : "skins/",
+ SKINS_DEFAULT_CSS : "skin.css",
+ SKINS_DEFAULT_JS : "skin.js",
+ LANG_DEFAULT_PATH : "lang/",
+ IFRAME_BASE_PATH : "{Wym_Iframe_Base_Path}",
+ IFRAME_DEFAULT : "iframe/default/",
+ JQUERY_PATH : "{Wym_Jquery_Path}",
+ DIRECTION : "{Wym_Direction}",
+ LOGO : "{Wym_Logo}",
+ TOOLS : "{Wym_Tools}",
+ TOOLS_ITEMS : "{Wym_Tools_Items}",
+ TOOL_NAME : "{Wym_Tool_Name}",
+ TOOL_TITLE : "{Wym_Tool_Title}",
+ TOOL_CLASS : "{Wym_Tool_Class}",
+ CLASSES : "{Wym_Classes}",
+ CLASSES_ITEMS : "{Wym_Classes_Items}",
+ CLASS_NAME : "{Wym_Class_Name}",
+ CLASS_TITLE : "{Wym_Class_Title}",
+ CONTAINERS : "{Wym_Containers}",
+ CONTAINERS_ITEMS : "{Wym_Containers_Items}",
+ CONTAINER_NAME : "{Wym_Container_Name}",
+ CONTAINER_TITLE : "{Wym_Containers_Title}",
+ CONTAINER_CLASS : "{Wym_Container_Class}",
+ HTML : "{Wym_Html}",
+ IFRAME : "{Wym_Iframe}",
+ STATUS : "{Wym_Status}",
+ DIALOG_TITLE : "{Wym_Dialog_Title}",
+ DIALOG_BODY : "{Wym_Dialog_Body}",
+ STRING : "string",
+ BODY : "body",
+ DIV : "div",
+ P : "p",
+ H1 : "h1",
+ H2 : "h2",
+ H3 : "h3",
+ H4 : "h4",
+ H5 : "h5",
+ H6 : "h6",
+ PRE : "pre",
+ BLOCKQUOTE : "blockquote",
+ A : "a",
+ BR : "br",
+ IMG : "img",
+ TABLE : "table",
+ TD : "td",
+ TH : "th",
+ UL : "ul",
+ OL : "ol",
+ LI : "li",
+ CLASS : "class",
+ HREF : "href",
+ SRC : "src",
+ TITLE : "title",
+ REL : "rel",
+ ALT : "alt",
+ DIALOG_LINK : "Link",
+ DIALOG_IMAGE : "Image",
+ DIALOG_TABLE : "Table",
+ DIALOG_PASTE : "Paste_From_Word",
+ BOLD : "Bold",
+ ITALIC : "Italic",
+ CREATE_LINK : "CreateLink",
+ INSERT_IMAGE : "InsertImage",
+ INSERT_TABLE : "InsertTable",
+ INSERT_HTML : "InsertHTML",
+ PASTE : "Paste",
+ INDENT : "Indent",
+ OUTDENT : "Outdent",
+ TOGGLE_HTML : "ToggleHtml",
+ FORMAT_BLOCK : "FormatBlock",
+ PREVIEW : "Preview",
+ UNLINK : "Unlink",
+ INSERT_UNORDEREDLIST: "InsertUnorderedList",
+ INSERT_ORDEREDLIST : "InsertOrderedList",
+
+ MAIN_CONTAINERS : new Array("p","h1","h2","h3","h4","h5","h6","pre","blockquote"),
+
+ BLOCKS : new Array("address", "blockquote", "div", "dl",
+ "fieldset", "form", "h1", "h2", "h3", "h4", "h5", "h6", "hr",
+ "noscript", "ol", "p", "pre", "table", "ul", "dd", "dt",
+ "li", "tbody", "td", "tfoot", "th", "thead", "tr"),
+
+ KEY : {
+ BACKSPACE: 8,
+ ENTER: 13,
+ END: 35,
+ HOME: 36,
+ LEFT: 37,
+ UP: 38,
+ RIGHT: 39,
+ DOWN: 40,
+ CURSOR: new Array(37, 38, 39, 40),
+ DELETE: 46
+ },
+
+ NODE : {
+ ELEMENT: 1,
+ ATTRIBUTE: 2,
+ TEXT: 3
+ },
+
+ /*
+ Class: WYMeditor.editor
+ WYMeditor editor main class, instanciated for each editor occurrence.
+ */
+
+ editor : function(elem, options) {
+
+ /*
+ Constructor: WYMeditor.editor
+
+ Initializes main values (index, elements, paths, ...)
+ and call WYMeditor.editor.init which initializes the editor.
+
+ Parameters:
+
+ elem - The HTML element to be replaced by the editor.
+ options - The hash of options.
+
+ Returns:
+
+ Nothing.
+
+ See Also:
+
+ <WYMeditor.editor.init>
+ */
+
+ //store the instance in the INSTANCES array and store the index
+ this._index = WYMeditor.INSTANCES.push(this) - 1;
+ //store the element replaced by the editor
+ this._element = elem;
+ //store the options
+ this._options = options;
+ //store the element's inner value
+ this._html = jQuery(elem).val();
+
+ //store the HTML option, if any
+ if(this._options.html) this._html = this._options.html;
+ //get or compute the base path (where the main JS file is located)
+ this._options.basePath = this._options.basePath
+ || this.computeBasePath();
+ //get or set the skin path (where the skin files are located)
+ this._options.skinPath = this._options.skinPath
+ || this._options.basePath + WYMeditor.SKINS_DEFAULT_PATH
+ + this._options.skin + '/';
+ //get or compute the main JS file location
+ this._options.wymPath = this._options.wymPath
+ || this.computeWymPath();
+ //get or set the language files path
+ this._options.langPath = this._options.langPath
+ || this._options.basePath + WYMeditor.LANG_DEFAULT_PATH;
+ //get or set the designmode iframe's base path
+ this._options.iframeBasePath = this._options.iframeBasePath
+ || this._options.basePath + WYMeditor.IFRAME_DEFAULT;
+ //get or compute the jQuery JS file location
+ this._options.jQueryPath = this._options.jQueryPath
+ || this.computeJqueryPath();
+
+ //initialize the editor instance
+ this.init();
+
+ }
+
+});
+
+
+/********** JQUERY **********/
+
+/**
+ * Replace an HTML element by WYMeditor
+ *
+ * @example jQuery(".wymeditor").wymeditor(
+ * {
+ *
+ * }
+ * );
+ * @desc Example description here
+ *
+ * @name WYMeditor
+ * @description WYMeditor is a web-based WYSIWYM XHTML editor
+ * @param Hash hash A hash of parameters
+ * @option Integer iExample Description here
+ * @option String sExample Description here
+ *
+ * @type jQuery
+ * @cat Plugins/WYMeditor
+ * @author Jean-Francois Hovinne
+ */
+jQuery.fn.wymeditor = function(options) {
+
+ options = jQuery.extend({
+
+ html: "",
+
+ basePath: false,
+
+ skinPath: false,
+
+ wymPath: false,
+
+ iframeBasePath: false,
+
+ jQueryPath: false,
+
+ styles: false,
+
+ stylesheet: false,
+
+ skin: "default",
+ initSkin: true,
+ loadSkin: true,
+
+ lang: "en",
+
+ direction: "ltr",
+
+ boxHtml: "<div class='wym_box'>"
+ + "<div class='wym_area_top'>"
+ + WYMeditor.TOOLS
+ + "</div>"
+ + "<div class='wym_area_left'></div>"
+ + "<div class='wym_area_right'>"
+ + WYMeditor.CONTAINERS
+ + WYMeditor.CLASSES
+ + "</div>"
+ + "<div class='wym_area_main'>"
+ + WYMeditor.HTML
+ + WYMeditor.IFRAME
+ + WYMeditor.STATUS
+ + "</div>"
+ + "<div class='wym_area_bottom'>"
+ + WYMeditor.LOGO
+ + "</div>"
+ + "</div>",
+
+ logoHtml: "<a class='wym_wymeditor_link' "
+ + "href='http://www.wymeditor.org/'>WYMeditor</a>",
+
+ iframeHtml:"<div class='wym_iframe wym_section'>"
+ + "<iframe "
+ + "src='"
+ + WYMeditor.IFRAME_BASE_PATH
+ + "wymiframe.html' "
+ + "onload='this.contentWindow.parent.WYMeditor.INSTANCES["
+ + WYMeditor.INDEX + "].initIframe(this)'"
+ + "></iframe>"
+ + "</div>",
+
+ editorStyles: [],
+
+ toolsHtml: "<div class='wym_tools wym_section'>"
+ + "<h2>{Tools}</h2>"
+ + "<ul>"
+ + WYMeditor.TOOLS_ITEMS
+ + "</ul>"
+ + "</div>",
+
+ toolsItemHtml: "<li class='"
+ + WYMeditor.TOOL_CLASS
+ + "'><a href='#' name='"
+ + WYMeditor.TOOL_NAME
+ + "' title='"
+ + WYMeditor.TOOL_TITLE
+ + "'>"
+ + WYMeditor.TOOL_TITLE
+ + "</a></li>",
+
+ toolsItems: [
+ {'name': 'Bold', 'title': 'Strong', 'css': 'wym_tools_strong'},
+ {'name': 'Italic', 'title': 'Emphasis', 'css': 'wym_tools_emphasis'},
+ {'name': 'Superscript', 'title': 'Superscript',
+ 'css': 'wym_tools_superscript'},
+ {'name': 'Subscript', 'title': 'Subscript',
+ 'css': 'wym_tools_subscript'},
+ {'name': 'InsertOrderedList', 'title': 'Ordered_List',
+ 'css': 'wym_tools_ordered_list'},
+ {'name': 'InsertUnorderedList', 'title': 'Unordered_List',
+ 'css': 'wym_tools_unordered_list'},
+ {'name': 'Indent', 'title': 'Indent', 'css': 'wym_tools_indent'},
+ {'name': 'Outdent', 'title': 'Outdent', 'css': 'wym_tools_outdent'},
+ {'name': 'Undo', 'title': 'Undo', 'css': 'wym_tools_undo'},
+ {'name': 'Redo', 'title': 'Redo', 'css': 'wym_tools_redo'},
+ {'name': 'CreateLink', 'title': 'Link', 'css': 'wym_tools_link'},
+ {'name': 'Unlink', 'title': 'Unlink', 'css': 'wym_tools_unlink'},
+ {'name': 'InsertImage', 'title': 'Image', 'css': 'wym_tools_image'},
+ {'name': 'InsertTable', 'title': 'Table', 'css': 'wym_tools_table'},
+ {'name': 'Paste', 'title': 'Paste_From_Word',
+ 'css': 'wym_tools_paste'},
+ {'name': 'ToggleHtml', 'title': 'HTML', 'css': 'wym_tools_html'},
+ {'name': 'Preview', 'title': 'Preview', 'css': 'wym_tools_preview'}
+ ],
+
+ containersHtml: "<div class='wym_containers wym_section'>"
+ + "<h2>{Containers}</h2>"
+ + "<ul>"
+ + WYMeditor.CONTAINERS_ITEMS
+ + "</ul>"
+ + "</div>",
+
+ containersItemHtml:"<li class='"
+ + WYMeditor.CONTAINER_CLASS
+ + "'>"
+ + "<a href='#' name='"
+ + WYMeditor.CONTAINER_NAME
+ + "'>"
+ + WYMeditor.CONTAINER_TITLE
+ + "</a></li>",
+
+ containersItems: [
+ {'name': 'P', 'title': 'Paragraph', 'css': 'wym_containers_p'},
+ {'name': 'H1', 'title': 'Heading_1', 'css': 'wym_containers_h1'},
+ {'name': 'H2', 'title': 'Heading_2', 'css': 'wym_containers_h2'},
+ {'name': 'H3', 'title': 'Heading_3', 'css': 'wym_containers_h3'},
+ {'name': 'H4', 'title': 'Heading_4', 'css': 'wym_containers_h4'},
+ {'name': 'H5', 'title': 'Heading_5', 'css': 'wym_containers_h5'},
+ {'name': 'H6', 'title': 'Heading_6', 'css': 'wym_containers_h6'},
+ {'name': 'PRE', 'title': 'Preformatted', 'css': 'wym_containers_pre'},
+ {'name': 'BLOCKQUOTE', 'title': 'Blockquote',
+ 'css': 'wym_containers_blockquote'},
+ {'name': 'TH', 'title': 'Table_Header', 'css': 'wym_containers_th'}
+ ],
+
+ classesHtml: "<div class='wym_classes wym_section'>"
+ + "<h2>{Classes}</h2><ul>"
+ + WYMeditor.CLASSES_ITEMS
+ + "</ul></div>",
+
+ classesItemHtml: "<li class='wym_classes_"
+ + WYMeditor.CLASS_NAME
+ + "'><a href='#' name='"
+ + WYMeditor.CLASS_NAME
+ + "'>"
+ + WYMeditor.CLASS_TITLE
+ + "</a></li>",
+
+ classesItems: [],
+
+ statusHtml: "<div class='wym_status wym_section'>"
+ + "<h2>{Status}</h2>"
+ + "</div>",
+
+ htmlHtml: "<div class='wym_html wym_section'>"
+ + "<h2>{Source_Code}</h2>"
+ + "<textarea class='wym_html_val'></textarea>"
+ + "</div>",
+
+ boxSelector: ".wym_box",
+ toolsSelector: ".wym_tools",
+ toolsListSelector: " ul",
+ containersSelector:".wym_containers",
+ classesSelector: ".wym_classes",
+ htmlSelector: ".wym_html",
+ iframeSelector: ".wym_iframe iframe",
+ iframeBodySelector:".wym_iframe",
+ statusSelector: ".wym_status",
+ toolSelector: ".wym_tools a",
+ containerSelector: ".wym_containers a",
+ classSelector: ".wym_classes a",
+ htmlValSelector: ".wym_html_val",
+
+ hrefSelector: ".wym_href",
+ srcSelector: ".wym_src",
+ titleSelector: ".wym_title",
+ relSelector: ".wym_rel",
+ altSelector: ".wym_alt",
+ textSelector: ".wym_text",
+
+ rowsSelector: ".wym_rows",
+ colsSelector: ".wym_cols",
+ captionSelector: ".wym_caption",
+ summarySelector: ".wym_summary",
+
+ submitSelector: "form",
+ cancelSelector: ".wym_cancel",
+ previewSelector: "",
+
+ dialogTypeSelector: ".wym_dialog_type",
+ dialogLinkSelector: ".wym_dialog_link",
+ dialogImageSelector: ".wym_dialog_image",
+ dialogTableSelector: ".wym_dialog_table",
+ dialogPasteSelector: ".wym_dialog_paste",
+ dialogPreviewSelector: ".wym_dialog_preview",
+
+ updateSelector: ".wymupdate",
+ updateEvent: "click",
+
+ dialogFeatures: "menubar=no,titlebar=no,toolbar=no,resizable=no"
+ + ",width=560,height=300,top=0,left=0",
+ dialogFeaturesPreview: "menubar=no,titlebar=no,toolbar=no,resizable=no"
+ + ",scrollbars=yes,width=560,height=300,top=0,left=0",
+
+ dialogHtml: "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'"
+ + " 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>"
+ + "<html dir='"
+ + WYMeditor.DIRECTION
+ + "'><head>"
+ + "<link rel='stylesheet' type='text/css' media='screen'"
+ + " href='"
+ + WYMeditor.CSS_PATH
+ + "' />"
+ + "<title>"
+ + WYMeditor.DIALOG_TITLE
+ + "</title>"
+ + "<script type='text/javascript'"
+ + " src='"
+ + WYMeditor.JQUERY_PATH
+ + "'></script>"
+ + "<script type='text/javascript'"
+ + " src='"
+ + WYMeditor.WYM_PATH
+ + "'></script>"
+ + "</head>"
+ + WYMeditor.DIALOG_BODY
+ + "</html>",
+
+ dialogLinkHtml: "<body class='wym_dialog wym_dialog_link'"
+ + " onload='WYMeditor.INIT_DIALOG(" + WYMeditor.INDEX + ")'"
+ + ">"
+ + "<form>"
+ + "<fieldset>"
+ + "<input type='hidden' class='wym_dialog_type' value='"
+ + WYMeditor.DIALOG_LINK
+ + "' />"
+ + "<legend>{Link}</legend>"
+ + "<div class='row'>"
+ + "<label>{URL}</label>"
+ + "<input type='text' class='wym_href' value='' size='40' />"
+ + "</div>"
+ + "<div class='row'>"
+ + "<label>{Title}</label>"
+ + "<input type='text' class='wym_title' value='' size='40' />"
+ + "</div>"
+ + "<div class='row'>"
+ + "<label>{Relationship}</label>"
+ + "<input type='text' class='wym_rel' value='' size='40' />"
+ + "</div>"
+ + "<div class='row row-indent'>"
+ + "<input class='wym_submit' type='submit'"
+ + " value='{Submit}' />"
+ + "<input class='wym_cancel' type='button'"
+ + "value='{Cancel}' />"
+ + "</div>"
+ + "</fieldset>"
+ + "</form>"
+ + "</body>",
+
+ dialogImageHtml: "<body class='wym_dialog wym_dialog_image'"
+ + " onload='WYMeditor.INIT_DIALOG(" + WYMeditor.INDEX + ")'"
+ + ">"
+ + "<form>"
+ + "<fieldset>"
+ + "<input type='hidden' class='wym_dialog_type' value='"
+ + WYMeditor.DIALOG_IMAGE
+ + "' />"
+ + "<legend>{Image}</legend>"
+ + "<div class='row'>"
+ + "<label>{URL}</label>"
+ + "<input type='text' class='wym_src' value='' size='40' />"
+ + "</div>"
+ + "<div class='row'>"
+ + "<label>{Alternative_Text}</label>"
+ + "<input type='text' class='wym_alt' value='' size='40' />"
+ + "</div>"
+ + "<div class='row'>"
+ + "<label>{Title}</label>"
+ + "<input type='text' class='wym_title' value='' size='40' />"
+ + "</div>"
+ + "<div class='row row-indent'>"
+ + "<input class='wym_submit' type='submit'"
+ + " value='{Submit}' />"
+ + "<input class='wym_cancel' type='button'"
+ + "value='{Cancel}' />"
+ + "</div>"
+ + "</fieldset>"
+ + "</form>"
+ + "</body>",
+
+ dialogTableHtml: "<body class='wym_dialog wym_dialog_table'"
+ + " onload='WYMeditor.INIT_DIALOG(" + WYMeditor.INDEX + ")'"
+ + ">"
+ + "<form>"
+ + "<fieldset>"
+ + "<input type='hidden' class='wym_dialog_type' value='"
+ + WYMeditor.DIALOG_TABLE
+ + "' />"
+ + "<legend>{Table}</legend>"
+ + "<div class='row'>"
+ + "<label>{Caption}</label>"
+ + "<input type='text' class='wym_caption' value='' size='40' />"
+ + "</div>"
+ + "<div class='row'>"
+ + "<label>{Summary}</label>"
+ + "<input type='text' class='wym_summary' value='' size='40' />"
+ + "</div>"
+ + "<div class='row'>"
+ + "<label>{Number_Of_Rows}</label>"
+ + "<input type='text' class='wym_rows' value='3' size='3' />"
+ + "</div>"
+ + "<div class='row'>"
+ + "<label>{Number_Of_Cols}</label>"
+ + "<input type='text' class='wym_cols' value='2' size='3' />"
+ + "</div>"
+ + "<div class='row row-indent'>"
+ + "<input class='wym_submit' type='submit'"
+ + " value='{Submit}' />"
+ + "<input class='wym_cancel' type='button'"
+ + "value='{Cancel}' />"
+ + "</div>"
+ + "</fieldset>"
+ + "</form>"
+ + "</body>",
+
+ dialogPasteHtml: "<body class='wym_dialog wym_dialog_paste'"
+ + " onload='WYMeditor.INIT_DIALOG(" + WYMeditor.INDEX + ")'"
+ + ">"
+ + "<form>"
+ + "<input type='hidden' class='wym_dialog_type' value='"
+ + WYMeditor.DIALOG_PASTE
+ + "' />"
+ + "<fieldset>"
+ + "<legend>{Paste_From_Word}</legend>"
+ + "<div class='row'>"
+ + "<textarea class='wym_text' rows='10' cols='50'></textarea>"
+ + "</div>"
+ + "<div class='row'>"
+ + "<input class='wym_submit' type='submit'"
+ + " value='{Submit}' />"
+ + "<input class='wym_cancel' type='button'"
+ + "value='{Cancel}' />"
+ + "</div>"
+ + "</fieldset>"
+ + "</form>"
+ + "</body>",
+
+ dialogPreviewHtml: "<body class='wym_dialog wym_dialog_preview'"
+ + " onload='WYMeditor.INIT_DIALOG(" + WYMeditor.INDEX + ")'"
+ + "></body>",
+
+ dialogStyles: [],
+
+ stringDelimiterLeft: "{",
+ stringDelimiterRight:"}",
+
+ preInit: null,
+ preBind: null,
+ postInit: null,
+
+ preInitDialog: null,
+ postInitDialog: null
+
+ }, options);
+
+ return this.each(function() {
+
+ new WYMeditor.editor(jQuery(this),options);
+ });
+};
+
+/* @name extend
+ * @description Returns the WYMeditor instance based on its index
+ */
+jQuery.extend({
+ wymeditors: function(i) {
+ return (WYMeditor.INSTANCES[i]);
+ }
+});
+
+
+/********** WYMeditor **********/
+
+/* @name Wymeditor
+ * @description WYMeditor class
+ */
+
+/* @name init
+ * @description Initializes a WYMeditor instance
+ */
+WYMeditor.editor.prototype.init = function() {
+
+ //load subclass - browser specific
+ //unsupported browsers: do nothing
+ if (jQuery.browser.msie) {
+ var WymClass = new WYMeditor.WymClassExplorer(this);
+ }
+ else if (jQuery.browser.mozilla) {
+ var WymClass = new WYMeditor.WymClassMozilla(this);
+ }
+ else if (jQuery.browser.opera) {
+ var WymClass = new WYMeditor.WymClassOpera(this);
+ }
+ else if (jQuery.browser.safari) {
+ var WymClass = new WYMeditor.WymClassSafari(this);
+ }
+
+ if(WymClass) {
+
+ if(jQuery.isFunction(this._options.preInit)) this._options.preInit(this);
+
+ var SaxListener = new WYMeditor.XhtmlSaxListener();
+ jQuery.extend(SaxListener, WymClass);
+ this.parser = new WYMeditor.XhtmlParser(SaxListener);
+
+ if(this._options.styles || this._options.stylesheet){
+ this.configureEditorUsingRawCss();
+ }
+
+ this.helper = new WYMeditor.XmlHelper();
+
+ //extend the Wymeditor object
+ //don't use jQuery.extend since 1.1.4
+ //jQuery.extend(this, WymClass);
+ for (var prop in WymClass) { this[prop] = WymClass[prop]; }
+
+ //load wymbox
+ this._box = jQuery(this._element).hide().after(this._options.boxHtml).next().addClass('wym_box_' + this._index);
+
+ //store the instance index in wymbox and element replaced by editor instance
+ //but keep it compatible with jQuery < 1.2.3, see #122
+ if( jQuery.isFunction( jQuery.fn.data ) ) {
+ jQuery.data(this._box.get(0), WYMeditor.WYM_INDEX, this._index);
+ jQuery.data(this._element.get(0), WYMeditor.WYM_INDEX, this._index);
+ }
+
+ var h = WYMeditor.Helper;
+
+ //construct the iframe
+ var iframeHtml = this._options.iframeHtml;
+ iframeHtml = h.replaceAll(iframeHtml, WYMeditor.INDEX, this._index);
+ iframeHtml = h.replaceAll(iframeHtml, WYMeditor.IFRAME_BASE_PATH, this._options.iframeBasePath);
+
+ //construct wymbox
+ var boxHtml = jQuery(this._box).html();
+
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.LOGO, this._options.logoHtml);
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.TOOLS, this._options.toolsHtml);
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.CONTAINERS,this._options.containersHtml);
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.CLASSES, this._options.classesHtml);
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.HTML, this._options.htmlHtml);
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.IFRAME, iframeHtml);
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.STATUS, this._options.statusHtml);
+
+ //construct tools list
+ var aTools = eval(this._options.toolsItems);
+ var sTools = "";
+
+ for(var i = 0; i < aTools.length; i++) {
+ var oTool = aTools[i];
+ if(oTool.name && oTool.title)
+ var sTool = this._options.toolsItemHtml;
+ var sTool = h.replaceAll(sTool, WYMeditor.TOOL_NAME, oTool.name);
+ sTool = h.replaceAll(sTool, WYMeditor.TOOL_TITLE, this._options.stringDelimiterLeft
+ + oTool.title
+ + this._options.stringDelimiterRight);
+ sTool = h.replaceAll(sTool, WYMeditor.TOOL_CLASS, oTool.css);
+ sTools += sTool;
+ }
+
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.TOOLS_ITEMS, sTools);
+
+ //construct classes list
+ var aClasses = eval(this._options.classesItems);
+ var sClasses = "";
+
+ for(var i = 0; i < aClasses.length; i++) {
+ var oClass = aClasses[i];
+ if(oClass.name && oClass.title)
+ var sClass = this._options.classesItemHtml;
+ sClass = h.replaceAll(sClass, WYMeditor.CLASS_NAME, oClass.name);
+ sClass = h.replaceAll(sClass, WYMeditor.CLASS_TITLE, oClass.title);
+ sClasses += sClass;
+ }
+
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.CLASSES_ITEMS, sClasses);
+
+ //construct containers list
+ var aContainers = eval(this._options.containersItems);
+ var sContainers = "";
+
+ for(var i = 0; i < aContainers.length; i++) {
+ var oContainer = aContainers[i];
+ if(oContainer.name && oContainer.title)
+ var sContainer = this._options.containersItemHtml;
+ sContainer = h.replaceAll(sContainer, WYMeditor.CONTAINER_NAME, oContainer.name);
+ sContainer = h.replaceAll(sContainer, WYMeditor.CONTAINER_TITLE,
+ this._options.stringDelimiterLeft
+ + oContainer.title
+ + this._options.stringDelimiterRight);
+ sContainer = h.replaceAll(sContainer, WYMeditor.CONTAINER_CLASS, oContainer.css);
+ sContainers += sContainer;
+ }
+
+ boxHtml = h.replaceAll(boxHtml, WYMeditor.CONTAINERS_ITEMS, sContainers);
+
+ //l10n
+ boxHtml = this.replaceStrings(boxHtml);
+
+ //load html in wymbox
+ jQuery(this._box).html(boxHtml);
+
+ //hide the html value
+ jQuery(this._box).find(this._options.htmlSelector).hide();
+
+ //enable the skin
+ this.loadSkin();
+
+ }
+};
+
+WYMeditor.editor.prototype.bindEvents = function() {
+
+ //copy the instance
+ var wym = this;
+
+ //handle click event on tools buttons
+ jQuery(this._box).find(this._options.toolSelector).click(function() {
+ wym._iframe.contentWindow.focus(); //See #154
+ wym.exec(jQuery(this).attr(WYMeditor.NAME));
+ return(false);
+ });
+
+ //handle click event on containers buttons
+ jQuery(this._box).find(this._options.containerSelector).click(function() {
+ wym.container(jQuery(this).attr(WYMeditor.NAME));
+ return(false);
+ });
+
+ //handle keyup event on html value: set the editor value
+ //handle focus/blur events to check if the element has focus, see #147
+ jQuery(this._box).find(this._options.htmlValSelector)
+ .keyup(function() { jQuery(wym._doc.body).html(jQuery(this).val());})
+ .focus(function() { jQuery(this).toggleClass('hasfocus'); })
+ .blur(function() { jQuery(this).toggleClass('hasfocus'); });
+
+ //handle click event on classes buttons
+ jQuery(this._box).find(this._options.classSelector).click(function() {
+
+ var aClasses = eval(wym._options.classesItems);
+ var sName = jQuery(this).attr(WYMeditor.NAME);
+
+ var oClass = WYMeditor.Helper.findByName(aClasses, sName);
+
+ if(oClass) {
+ var jqexpr = oClass.expr;
+ wym.toggleClass(sName, jqexpr);
+ }
+ wym._iframe.contentWindow.focus(); //See #154
+ return(false);
+ });
+
+ //handle event on update element
+ jQuery(this._options.updateSelector)
+ .bind(this._options.updateEvent, function() {
+ wym.update();
+ });
+};
+
+WYMeditor.editor.prototype.ready = function() {
+ return(this._doc != null);
+};
+
+
+/********** METHODS **********/
+
+/* @name box
+ * @description Returns the WYMeditor container
+ */
+WYMeditor.editor.prototype.box = function() {
+ return(this._box);
+};
+
+/* @name html
+ * @description Get/Set the html value
+ */
+WYMeditor.editor.prototype.html = function(html) {
+
+ if(typeof html === 'string') jQuery(this._doc.body).html(html);
+ else return(jQuery(this._doc.body).html());
+};
+
+/* @name xhtml
+ * @description Cleans up the HTML
+ */
+WYMeditor.editor.prototype.xhtml = function() {
+ return this.parser.parse(this.html());
+};
+
+/* @name exec
+ * @description Executes a button command
+ */
+WYMeditor.editor.prototype.exec = function(cmd) {
+
+ //base function for execCommand
+ //open a dialog or exec
+ switch(cmd) {
+ case WYMeditor.CREATE_LINK:
+ var container = this.container();
+ if(container || this._selected_image) this.dialog(WYMeditor.DIALOG_LINK);
+ break;
+
+ case WYMeditor.INSERT_IMAGE:
+ this.dialog(WYMeditor.DIALOG_IMAGE);
+ break;
+
+ case WYMeditor.INSERT_TABLE:
+ this.dialog(WYMeditor.DIALOG_TABLE);
+ break;
+
+ case WYMeditor.PASTE:
+ this.dialog(WYMeditor.DIALOG_PASTE);
+ break;
+
+ case WYMeditor.TOGGLE_HTML:
+ this.update();
+ this.toggleHtml();
+ break;
+
+ case WYMeditor.PREVIEW:
+ this.dialog(WYMeditor.PREVIEW, this._options.dialogFeaturesPreview);
+ break;
+
+ default:
+ this._exec(cmd);
+ break;
+ }
+};
+
+/* @name container
+ * @description Get/Set the selected container
+ */
+WYMeditor.editor.prototype.container = function(sType) {
+
+ if(sType) {
+
+ var container = null;
+
+ if(sType.toLowerCase() == WYMeditor.TH) {
+
+ container = this.container();
+
+ //find the TD or TH container
+ switch(container.tagName.toLowerCase()) {
+
+ case WYMeditor.TD: case WYMeditor.TH:
+ break;
+ default:
+ var aTypes = new Array(WYMeditor.TD,WYMeditor.TH);
+ container = this.findUp(this.container(), aTypes);
+ break;
+ }
+
+ //if it exists, switch
+ if(container!=null) {
+
+ sType = (container.tagName.toLowerCase() == WYMeditor.TD)? WYMeditor.TH: WYMeditor.TD;
+ this.switchTo(container,sType);
+ this.update();
+ }
+ } else {
+
+ //set the container type
+ var aTypes=new Array(WYMeditor.P,WYMeditor.H1,WYMeditor.H2,WYMeditor.H3,WYMeditor.H4,WYMeditor.H5,
+ WYMeditor.H6,WYMeditor.PRE,WYMeditor.BLOCKQUOTE);
+ container = this.findUp(this.container(), aTypes);
+
+ if(container) {
+
+ var newNode = null;
+
+ //blockquotes must contain a block level element
+ if(sType.toLowerCase() == WYMeditor.BLOCKQUOTE) {
+
+ var blockquote = this.findUp(this.container(), WYMeditor.BLOCKQUOTE);
+
+ if(blockquote == null) {
+
+ newNode = this._doc.createElement(sType);
+ container.parentNode.insertBefore(newNode,container);
+ newNode.appendChild(container);
+ this.setFocusToNode(newNode.firstChild);
+
+ } else {
+
+ var nodes = blockquote.childNodes;
+ var lgt = nodes.length;
+ var firstNode = null;
+
+ if(lgt > 0) firstNode = nodes.item(0);
+ for(var x=0; x<lgt; x++) {
+ blockquote.parentNode.insertBefore(nodes.item(0),blockquote);
+ }
+ blockquote.parentNode.removeChild(blockquote);
+ if(firstNode) this.setFocusToNode(firstNode);
+ }
+ }
+
+ else this.switchTo(container,sType);
+
+ this.update();
+ }
+ }
+ }
+ else return(this.selected());
+};
+
+/* @name toggleClass
+ * @description Toggles class on selected element, or one of its parents
+ */
+WYMeditor.editor.prototype.toggleClass = function(sClass, jqexpr) {
+
+ var container = (this._selected_image
+ ? this._selected_image
+ : jQuery(this.selected()));
+ container = jQuery(container).parentsOrSelf(jqexpr);
+ jQuery(container).toggleClass(sClass);
+
+ if(!jQuery(container).attr(WYMeditor.CLASS)) jQuery(container).removeAttr(this._class);
+
+};
+
+/* @name findUp
+ * @description Returns the first parent or self container, based on its type
+ */
+WYMeditor.editor.prototype.findUp = function(node, filter) {
+
+ //filter is a string or an array of strings
+
+ if(node) {
+
+ var tagname = node.tagName.toLowerCase();
+
+ if(typeof(filter) == WYMeditor.STRING) {
+
+ while(tagname != filter && tagname != WYMeditor.BODY) {
+
+ node = node.parentNode;
+ tagname = node.tagName.toLowerCase();
+ }
+
+ } else {
+
+ var bFound = false;
+
+ while(!bFound && tagname != WYMeditor.BODY) {
+ for(var i = 0; i < filter.length; i++) {
+ if(tagname == filter[i]) {
+ bFound = true;
+ break;
+ }
+ }
+ if(!bFound) {
+ node = node.parentNode;
+ tagname = node.tagName.toLowerCase();
+ }
+ }
+ }
+
+ if(tagname != WYMeditor.BODY) return(node);
+ else return(null);
+
+ } else return(null);
+};
+
+/* @name switchTo
+ * @description Switch the node's type
+ */
+WYMeditor.editor.prototype.switchTo = function(node,sType) {
+
+ var newNode = this._doc.createElement(sType);
+ var html = jQuery(node).html();
+ node.parentNode.replaceChild(newNode,node);
+ jQuery(newNode).html(html);
+ this.setFocusToNode(newNode);
+};
+
+WYMeditor.editor.prototype.replaceStrings = function(sVal) {
+ //check if the language file has already been loaded
+ //if not, get it via a synchronous ajax call
+ if(!WYMeditor.STRINGS[this._options.lang]) {
+ try {
+ eval(jQuery.ajax({url:this._options.langPath
+ + this._options.lang + '.js', async:false}).responseText);
+ } catch(e) {
+ WYMeditor.console.error("WYMeditor: error while parsing language file.");
+ return sVal;
+ }
+ }
+
+ //replace all the strings in sVal and return it
+ for (var key in WYMeditor.STRINGS[this._options.lang]) {
+ sVal = WYMeditor.Helper.replaceAll(sVal, this._options.stringDelimiterLeft + key
+ + this._options.stringDelimiterRight,
+ WYMeditor.STRINGS[this._options.lang][key]);
+ };
+ return(sVal);
+};
+
+WYMeditor.editor.prototype.encloseString = function(sVal) {
+
+ return(this._options.stringDelimiterLeft
+ + sVal
+ + this._options.stringDelimiterRight);
+};
+
+/* @name status
+ * @description Prints a status message
+ */
+WYMeditor.editor.prototype.status = function(sMessage) {
+
+ //print status message
+ jQuery(this._box).find(this._options.statusSelector).html(sMessage);
+};
+
+/* @name update
+ * @description Updates the element and textarea values
+ */
+WYMeditor.editor.prototype.update = function() {
+ var html;
+
+ // Dirty fix to remove stray line breaks (#189)
+ jQuery(this._doc.body).children(WYMeditor.BR).remove();
+
+ html = this.xhtml();
+ jQuery(this._element).val(html);
+ jQuery(this._box).find(this._options.htmlValSelector).not('.hasfocus').val(html); //#147
+};
+
+/* @name dialog
+ * @description Opens a dialog box
+ */
+WYMeditor.editor.prototype.dialog = function( dialogType, dialogFeatures, bodyHtml ) {
+
+ var features = dialogFeatures || this._wym._options.dialogFeatures;
+ var wDialog = window.open('', 'dialog', features);
+
+ if(wDialog) {
+
+ var sBodyHtml = "";
+
+ switch( dialogType ) {
+
+ case(WYMeditor.DIALOG_LINK):
+ sBodyHtml = this._options.dialogLinkHtml;
+ break;
+ case(WYMeditor.DIALOG_IMAGE):
+ sBodyHtml = this._options.dialogImageHtml;
+ break;
+ case(WYMeditor.DIALOG_TABLE):
+ sBodyHtml = this._options.dialogTableHtml;
+ break;
+ case(WYMeditor.DIALOG_PASTE):
+ sBodyHtml = this._options.dialogPasteHtml;
+ break;
+ case(WYMeditor.PREVIEW):
+ sBodyHtml = this._options.dialogPreviewHtml;
+ break;
+
+ default:
+ sBodyHtml = bodyHtml;
+ }
+
+ var h = WYMeditor.Helper;
+
+ //construct the dialog
+ var dialogHtml = this._options.dialogHtml;
+ dialogHtml = h.replaceAll(dialogHtml, WYMeditor.BASE_PATH, this._options.basePath);
+ dialogHtml = h.replaceAll(dialogHtml, WYMeditor.DIRECTION, this._options.direction);
+ dialogHtml = h.replaceAll(dialogHtml, WYMeditor.CSS_PATH, this._options.skinPath + WYMeditor.SKINS_DEFAULT_CSS);
+ dialogHtml = h.replaceAll(dialogHtml, WYMeditor.WYM_PATH, this._options.wymPath);
+ dialogHtml = h.replaceAll(dialogHtml, WYMeditor.JQUERY_PATH, this._options.jQueryPath);
+ dialogHtml = h.replaceAll(dialogHtml, WYMeditor.DIALOG_TITLE, this.encloseString( dialogType ));
+ dialogHtml = h.replaceAll(dialogHtml, WYMeditor.DIALOG_BODY, sBodyHtml);
+ dialogHtml = h.replaceAll(dialogHtml, WYMeditor.INDEX, this._index);
+
+ dialogHtml = this.replaceStrings(dialogHtml);
+
+ var doc = wDialog.document;
+ doc.write(dialogHtml);
+ doc.close();
+ }
+};
+
+/* @name toggleHtml
+ * @description Shows/Hides the HTML
+ */
+WYMeditor.editor.prototype.toggleHtml = function() {
+ jQuery(this._box).find(this._options.htmlSelector).toggle();
+};
+
+WYMeditor.editor.prototype.uniqueStamp = function() {
+ var now = new Date();
+ return("wym-" + now.getTime());
+};
+
+/* @name paste
+ * @description Paste text into the editor below the carret,
+ * used for "Paste from Word".
+ * @param String str String to insert, two or more newlines separates
+ * paragraphs. May contain inline HTML.
+ */
+WYMeditor.editor.prototype.paste = function(str) {
+ var container = this.selected(),
+ html = '',
+ paragraphs,
+ focusNode;
+
+ // Split string into paragraphs by two or more newlines
+ paragraphs = str.split(new RegExp(this._newLine + '{2,}', 'g'));
+
+ // Build html
+ for (var i=0, l=paragraphs.length; i < l; i++) {
+ html += '<p>' +
+ ( paragraphs[i].split(this._newLine).join('<br />') ) +
+ '</p>';
+ }
+
+ // Insert where appropriate
+ if (container && container.tagName.toLowerCase() != WYMeditor.BODY) {
+ // No .last() pre jQuery 1.4
+ //focusNode = jQuery(html).insertAfter(container).last()[0];
+ paragraphs = jQuery(html, this._doc).insertAfter(container);
+ focusNode = paragraphs[paragraphs.length - 1];
+ } else {
+ paragraphs = jQuery(html, this._doc).appendTo(this._doc.body);
+ focusNode = paragraphs[paragraphs.length - 1];
+ }
+
+ // Do some minor cleanup (#131)
+ if (jQuery(container).text() == '') {
+ jQuery(container).remove();
+ }
+ // And remove br (if editor was empty)
+ jQuery('body > br', this._doc).remove();
+
+ // Restore focus
+ this.setFocusToNode(focusNode);
+};
+
+WYMeditor.editor.prototype.insert = function(html) {
+ // Do we have a selection?
+ var selection = this._iframe.contentWindow.getSelection(),
+ range,
+ node;
+ if (selection.focusNode != null) {
+ // Overwrite selection with provided html
+ range = selection.getRangeAt(0);
+ node = range.createContextualFragment(html);
+ range.deleteContents();
+ range.insertNode(node);
+ } else {
+ // Fall back to the internal paste function if there's no selection
+ this.paste(html)
+ }
+};
+
+WYMeditor.editor.prototype.wrap = function(left, right) {
+ this.insert(left + this._iframe.contentWindow.getSelection().toString() + right);
+};
+
+WYMeditor.editor.prototype.unwrap = function() {
+ this.insert(this._iframe.contentWindow.getSelection().toString());
+};
+
+WYMeditor.editor.prototype.setFocusToNode = function(node, toStart) {
+ var range = this._doc.createRange(),
+ selection = this._iframe.contentWindow.getSelection();
+ toStart = toStart ? 0 : 1;
+
+ range.selectNodeContents(node);
+ selection.addRange(range);
+ selection.collapse(node, toStart);
+ this._iframe.contentWindow.focus();
+};
+
+WYMeditor.editor.prototype.addCssRules = function(doc, aCss) {
+ var styles = doc.styleSheets[0];
+ if(styles) {
+ for(var i = 0; i < aCss.length; i++) {
+ var oCss = aCss[i];
+ if(oCss.name && oCss.css) this.addCssRule(styles, oCss);
+ }
+ }
+};
+
+/********** CONFIGURATION **********/
+
+WYMeditor.editor.prototype.computeBasePath = function() {
+ return jQuery(jQuery.grep(jQuery('script'), function(s){
+ return (s.src && s.src.match(/jquery\.wymeditor(\.pack|\.min|\.packed)?\.js(\?.*)?$/ ))
+ })).attr('src').replace(/jquery\.wymeditor(\.pack|\.min|\.packed)?\.js(\?.*)?$/, '');
+};
+
+WYMeditor.editor.prototype.computeWymPath = function() {
+ return jQuery(jQuery.grep(jQuery('script'), function(s){
+ return (s.src && s.src.match(/jquery\.wymeditor(\.pack|\.min|\.packed)?\.js(\?.*)?$/ ))
+ })).attr('src');
+};
+
+WYMeditor.editor.prototype.computeJqueryPath = function() {
+ return jQuery(jQuery.grep(jQuery('script'), function(s){
+ return (s.src && s.src.match(/jquery(-(.*)){0,1}(\.pack|\.min|\.packed)?\.js(\?.*)?$/ ))
+ })).attr('src');
+};
+
+WYMeditor.editor.prototype.computeCssPath = function() {
+ return jQuery(jQuery.grep(jQuery('link'), function(s){
+ return (s.href && s.href.match(/wymeditor\/skins\/(.*)screen\.css(\?.*)?$/ ))
+ })).attr('href');
+};
+
+WYMeditor.editor.prototype.configureEditorUsingRawCss = function() {
+
+ var CssParser = new WYMeditor.WymCssParser();
+ if(this._options.stylesheet){
+ CssParser.parse(jQuery.ajax({url: this._options.stylesheet,async:false}).responseText);
+ }else{
+ CssParser.parse(this._options.styles, false);
+ }
+
+ if(this._options.classesItems.length == 0) {
+ this._options.classesItems = CssParser.css_settings.classesItems;
+ }
+ if(this._options.editorStyles.length == 0) {
+ this._options.editorStyles = CssParser.css_settings.editorStyles;
+ }
+ if(this._options.dialogStyles.length == 0) {
+ this._options.dialogStyles = CssParser.css_settings.dialogStyles;
+ }
+};
+
+/********** EVENTS **********/
+
+WYMeditor.editor.prototype.listen = function() {
+ //don't use jQuery.find() on the iframe body
+ //because of MSIE + jQuery + expando issue (#JQ1143)
+ //jQuery(this._doc.body).find("*").bind("mouseup", this.mouseup);
+
+ jQuery(this._doc.body).bind("mousedown", this.mousedown);
+};
+
+WYMeditor.editor.prototype.mousedown = function(evt) {
+ var wym = WYMeditor.INSTANCES[this.ownerDocument.title];
+ wym._selected_image = (evt.target.tagName.toLowerCase() == WYMeditor.IMG) ? evt.target : null;
+};
+
+/********** SKINS **********/
+
+/*
+ * Function: WYMeditor.loadCss
+ * Loads a stylesheet in the document.
+ *
+ * Parameters:
+ * href - The CSS path.
+ */
+WYMeditor.loadCss = function(href) {
+
+ var link = document.createElement('link');
+ link.rel = 'stylesheet';
+ link.href = href;
+
+ var head = jQuery('head').get(0);
+ head.appendChild(link);
+};
+
+/*
+ * Function: WYMeditor.editor.loadSkin
+ * Loads the skin CSS and initialization script (if needed).
+ */
+WYMeditor.editor.prototype.loadSkin = function() {
+
+ //does the user want to automatically load the CSS (default: yes)?
+ //we also test if it hasn't been already loaded by another instance
+ //see below for a better (second) test
+ if(this._options.loadSkin && !WYMeditor.SKINS[this._options.skin]) {
+
+ //check if it hasn't been already loaded
+ //so we don't load it more than once
+ //(we check the existing <link> elements)
+
+ var found = false;
+ var rExp = new RegExp(this._options.skin
+ + '\/' + WYMeditor.SKINS_DEFAULT_CSS + '$');
+
+ jQuery('link').each( function() {
+ if(this.href.match(rExp)) found = true;
+ });
+
+ //load it, using the skin path
+ if(!found) WYMeditor.loadCss( this._options.skinPath
+ + WYMeditor.SKINS_DEFAULT_CSS );
+ }
+
+ //put the classname (ex. wym_skin_default) on wym_box
+ jQuery(this._box).addClass( "wym_skin_" + this._options.skin );
+
+ //does the user want to use some JS to initialize the skin (default: yes)?
+ //also check if it hasn't already been loaded by another instance
+ if(this._options.initSkin && !WYMeditor.SKINS[this._options.skin]) {
+
+ eval(jQuery.ajax({url:this._options.skinPath
+ + WYMeditor.SKINS_DEFAULT_JS, async:false}).responseText);
+ }
+
+ //init the skin, if needed
+ if(WYMeditor.SKINS[this._options.skin]
+ && WYMeditor.SKINS[this._options.skin].init)
+ WYMeditor.SKINS[this._options.skin].init(this);
+
+};
+
+
+/********** DIALOGS **********/
+
+WYMeditor.INIT_DIALOG = function(index) {
+
+ var wym = window.opener.WYMeditor.INSTANCES[index];
+ var doc = window.document;
+ var selected = wym.selected();
+ var dialogType = jQuery(wym._options.dialogTypeSelector).val();
+ var sStamp = wym.uniqueStamp();
+
+ switch(dialogType) {
+
+ case WYMeditor.DIALOG_LINK:
+ //ensure that we select the link to populate the fields
+ if(selected && selected.tagName && selected.tagName.toLowerCase != WYMeditor.A)
+ selected = jQuery(selected).parentsOrSelf(WYMeditor.A);
+
+ //fix MSIE selection if link image has been clicked
+ if(!selected && wym._selected_image)
+ selected = jQuery(wym._selected_image).parentsOrSelf(WYMeditor.A);
+ break;
+
+ }
+
+ //pre-init functions
+ if(jQuery.isFunction(wym._options.preInitDialog))
+ wym._options.preInitDialog(wym,window);
+
+ //add css rules from options
+ var styles = doc.styleSheets[0];
+ var aCss = eval(wym._options.dialogStyles);
+
+ wym.addCssRules(doc, aCss);
+
+ //auto populate fields if selected container (e.g. A)
+ if(selected) {
+ jQuery(wym._options.hrefSelector).val(jQuery(selected).attr(WYMeditor.HREF));
+ jQuery(wym._options.srcSelector).val(jQuery(selected).attr(WYMeditor.SRC));
+ jQuery(wym._options.titleSelector).val(jQuery(selected).attr(WYMeditor.TITLE));
+ jQuery(wym._options.relSelector).val(jQuery(selected).attr(WYMeditor.REL));
+ jQuery(wym._options.altSelector).val(jQuery(selected).attr(WYMeditor.ALT));
+ }
+
+ //auto populate image fields if selected image
+ if(wym._selected_image) {
+ jQuery(wym._options.dialogImageSelector + " " + wym._options.srcSelector)
+ .val(jQuery(wym._selected_image).attr(WYMeditor.SRC));
+ jQuery(wym._options.dialogImageSelector + " " + wym._options.titleSelector)
+ .val(jQuery(wym._selected_image).attr(WYMeditor.TITLE));
+ jQuery(wym._options.dialogImageSelector + " " + wym._options.altSelector)
+ .val(jQuery(wym._selected_image).attr(WYMeditor.ALT));
+ }
+
+ jQuery(wym._options.dialogLinkSelector + " "
+ + wym._options.submitSelector).submit(function() {
+
+ var sUrl = jQuery(wym._options.hrefSelector).val();
+ if(sUrl.length > 0) {
+ var link;
+
+ if (selected[0] && selected[0].tagName.toLowerCase() == WYMeditor.A) {
+ link = selected;
+ } else {
+ wym._exec(WYMeditor.CREATE_LINK, sStamp);
+ link = jQuery("a[href=" + sStamp + "]", wym._doc.body);
+ }
+
+ link.attr(WYMeditor.HREF, sUrl)
+ .attr(WYMeditor.TITLE, jQuery(wym._options.titleSelector).val())
+ .attr(WYMeditor.REL, jQuery(wym._options.relSelector).val());
+
+ }
+ window.close();
+ });
+
+ jQuery(wym._options.dialogImageSelector + " "
+ + wym._options.submitSelector).submit(function() {
+
+ var sUrl = jQuery(wym._options.srcSelector).val();
+ if(sUrl.length > 0) {
+
+ wym._exec(WYMeditor.INSERT_IMAGE, sStamp);
+
+ jQuery("img[src$=" + sStamp + "]", wym._doc.body)
+ .attr(WYMeditor.SRC, sUrl)
+ .attr(WYMeditor.TITLE, jQuery(wym._options.titleSelector).val())
+ .attr(WYMeditor.ALT, jQuery(wym._options.altSelector).val());
+ }
+ window.close();
+ });
+
+ jQuery(wym._options.dialogTableSelector + " "
+ + wym._options.submitSelector).submit(function() {
+
+ var iRows = jQuery(wym._options.rowsSelector).val();
+ var iCols = jQuery(wym._options.colsSelector).val();
+
+ if(iRows > 0 && iCols > 0) {
+
+ var table = wym._doc.createElement(WYMeditor.TABLE);
+ var newRow = null;
+ var newCol = null;
+
+ var sCaption = jQuery(wym._options.captionSelector).val();
+
+ //we create the caption
+ var newCaption = table.createCaption();
+ newCaption.innerHTML = sCaption;
+
+ //we create the rows and cells
+ for(x=0; x<iRows; x++) {
+ newRow = table.insertRow(x);
+ for(y=0; y<iCols; y++) {newRow.insertCell(y);}
+ }
+
+ //set the summary attr
+ jQuery(table).attr('summary',
+ jQuery(wym._options.summarySelector).val());
+
+ //append the table after the selected container
+ var node = jQuery(wym.findUp(wym.container(),
+ WYMeditor.MAIN_CONTAINERS)).get(0);
+ if(!node || !node.parentNode) jQuery(wym._doc.body).append(table);
+ else jQuery(node).after(table);
+ }
+ window.close();
+ });
+
+ jQuery(wym._options.dialogPasteSelector + " "
+ + wym._options.submitSelector).submit(function() {
+
+ var sText = jQuery(wym._options.textSelector).val();
+ wym.paste(sText);
+ window.close();
+ });
+
+ jQuery(wym._options.dialogPreviewSelector + " "
+ + wym._options.previewSelector)
+ .html(wym.xhtml());
+
+ //cancel button
+ jQuery(wym._options.cancelSelector).mousedown(function() {
+ window.close();
+ });
+
+ //pre-init functions
+ if(jQuery.isFunction(wym._options.postInitDialog))
+ wym._options.postInitDialog(wym,window);
+
+};
+
+/********** XHTML LEXER/PARSER **********/
+
+/*
+* @name xml
+* @description Use these methods to generate XML and XHTML compliant tags and
+* escape tag attributes correctly
+* @author Bermi Ferrer - http://bermi.org
+* @author David Heinemeier Hansson http://loudthinking.com
+*/
+WYMeditor.XmlHelper = function()
+{
+ this._entitiesDiv = document.createElement('div');
+ return this;
+};
+
+
+/*
+* @name tag
+* @description
+* Returns an empty HTML tag of type *name* which by default is XHTML
+* compliant. Setting *open* to true will create an open tag compatible
+* with HTML 4.0 and below. Add HTML attributes by passing an attributes
+* array to *options*. For attributes with no value like (disabled and
+* readonly), give it a value of true in the *options* array.
+*
+* Examples:
+*
+* this.tag('br')
+* # => <br />
+* this.tag ('br', false, true)
+* # => <br>
+* this.tag ('input', jQuery({type:'text',disabled:true }) )
+* # => <input type="text" disabled="disabled" />
+*/
+WYMeditor.XmlHelper.prototype.tag = function(name, options, open)
+{
+ options = options || false;
+ open = open || false;
+ return '<'+name+(options ? this.tagOptions(options) : '')+(open ? '>' : ' />');
+};
+
+/*
+* @name contentTag
+* @description
+* Returns a XML block tag of type *name* surrounding the *content*. Add
+* XML attributes by passing an attributes array to *options*. For attributes
+* with no value like (disabled and readonly), give it a value of true in
+* the *options* array. You can use symbols or strings for the attribute names.
+*
+* this.contentTag ('p', 'Hello world!' )
+* # => <p>Hello world!</p>
+* this.contentTag('div', this.contentTag('p', "Hello world!"), jQuery({class : "strong"}))
+* # => <div class="strong"><p>Hello world!</p></div>
+* this.contentTag("select", options, jQuery({multiple : true}))
+* # => <select multiple="multiple">...options...</select>
+*/
+WYMeditor.XmlHelper.prototype.contentTag = function(name, content, options)
+{
+ options = options || false;
+ return '<'+name+(options ? this.tagOptions(options) : '')+'>'+content+'</'+name+'>';
+};
+
+/*
+* @name cdataSection
+* @description
+* Returns a CDATA section for the given +content+. CDATA sections
+* are used to escape blocks of text containing characters which would
+* otherwise be recognized as markup. CDATA sections begin with the string
+* <tt>&lt;![CDATA[</tt> and } with (and may not contain) the string
+* <tt>]]></tt>.
+*/
+WYMeditor.XmlHelper.prototype.cdataSection = function(content)
+{
+ return '<![CDATA['+content+']]>';
+};
+
+
+/*
+* @name escapeOnce
+* @description
+* Returns the escaped +xml+ without affecting existing escaped entities.
+*
+* this.escapeOnce( "1 > 2 &amp; 3")
+* # => "1 &gt; 2 &amp; 3"
+*/
+WYMeditor.XmlHelper.prototype.escapeOnce = function(xml)
+{
+ return this._fixDoubleEscape(this.escapeEntities(xml));
+};
+
+/*
+* @name _fixDoubleEscape
+* @description
+* Fix double-escaped entities, such as &amp;amp;, &amp;#123;, etc.
+*/
+WYMeditor.XmlHelper.prototype._fixDoubleEscape = function(escaped)
+{
+ return escaped.replace(/&amp;([a-z]+|(#\d+));/ig, "&$1;");
+};
+
+/*
+* @name tagOptions
+* @description
+* Takes an array like the one generated by Tag.parseAttributes
+* [["src", "http://www.editam.com/?a=b&c=d&amp;f=g"], ["title", "Editam, <Simplified> CMS"]]
+* or an object like {src:"http://www.editam.com/?a=b&c=d&amp;f=g", title:"Editam, <Simplified> CMS"}
+* and returns a string properly escaped like
+* ' src = "http://www.editam.com/?a=b&amp;c=d&amp;f=g" title = "Editam, &lt;Simplified&gt; CMS"'
+* which is valid for strict XHTML
+*/
+WYMeditor.XmlHelper.prototype.tagOptions = function(options)
+{
+ var xml = this;
+ xml._formated_options = '';
+
+ for (var key in options) {
+ var formated_options = '';
+ var value = options[key];
+ if(typeof value != 'function' && value.length > 0) {
+
+ if(parseInt(key) == key && typeof value == 'object'){
+ key = value.shift();
+ value = value.pop();
+ }
+ if(key != '' && value != ''){
+ xml._formated_options += ' '+key+'="'+xml.escapeOnce(value)+'"';
+ }
+ }
+ }
+ return xml._formated_options;
+};
+
+/*
+* @name escapeEntities
+* @description
+* Escapes XML/HTML entities <, >, & and ". If seccond parameter is set to false it
+* will not escape ". If set to true it will also escape '
+*/
+WYMeditor.XmlHelper.prototype.escapeEntities = function(string, escape_quotes)
+{
+ this._entitiesDiv.innerHTML = string;
+ this._entitiesDiv.textContent = string;
+ var result = this._entitiesDiv.innerHTML;
+ if(typeof escape_quotes == 'undefined'){
+ if(escape_quotes != false) result = result.replace('"', '&quot;');
+ if(escape_quotes == true) result = result.replace('"', '&#039;');
+ }
+ return result;
+};
+
+/*
+* Parses a string conatining tag attributes and values an returns an array formated like
+* [["src", "http://www.editam.com"], ["title", "Editam, Simplified CMS"]]
+*/
+WYMeditor.XmlHelper.prototype.parseAttributes = function(tag_attributes)
+{
+ // Use a compounded regex to match single quoted, double quoted and unquoted attribute pairs
+ var result = [];
+ var matches = tag_attributes.split(/((=\s*")(")("))|((=\s*\')(\')(\'))|((=\s*[^>\s]*))/g);
+ if(matches.toString() != tag_attributes){
+ for (var k in matches) {
+ var v = matches[k];
+ if(typeof v != 'function' && v.length != 0){
+ var re = new RegExp('(\\w+)\\s*'+v);
+ if(match = tag_attributes.match(re) ){
+ var value = v.replace(/^[\s=]+/, "");
+ var delimiter = value.charAt(0);
+ delimiter = delimiter == '"' ? '"' : (delimiter=="'"?"'":'');
+ if(delimiter != ''){
+ value = delimiter == '"' ? value.replace(/^"|"+$/g, '') : value.replace(/^'|'+$/g, '');
+ }
+ tag_attributes = tag_attributes.replace(match[0],'');
+ result.push([match[1] , value]);
+ }
+ }
+ }
+ }
+ return result;
+};
+
+/**
+* XhtmlValidator for validating tag attributes
+*
+* @author Bermi Ferrer - http://bermi.org
+*/
+WYMeditor.XhtmlValidator = {
+ "_attributes":
+ {
+ "core":
+ {
+ "except":[
+ "base",
+ "head",
+ "html",
+ "meta",
+ "param",
+ "script",
+ "style",
+ "title"
+ ],
+ "attributes":[
+ "class",
+ "id",
+ "style",
+ "title",
+ "accesskey",
+ "tabindex"
+ ]
+ },
+ "language":
+ {
+ "except":[
+ "base",
+ "br",
+ "hr",
+ "iframe",
+ "param",
+ "script"
+ ],
+ "attributes":
+ {
+ "dir":[
+ "ltr",
+ "rtl"
+ ],
+ "0":"lang",
+ "1":"xml:lang"
+ }
+ },
+ "keyboard":
+ {
+ "attributes":
+ {
+ "accesskey":/^(\w){1}$/,
+ "tabindex":/^(\d)+$/
+ }
+ }
+ },
+ "_events":
+ {
+ "window":
+ {
+ "only":[
+ "body"
+ ],
+ "attributes":[
+ "onload",
+ "onunload"
+ ]
+ },
+ "form":
+ {
+ "only":[
+ "form",
+ "input",
+ "textarea",
+ "select",
+ "a",
+ "label",
+ "button"
+ ],
+ "attributes":[
+ "onchange",
+ "onsubmit",
+ "onreset",
+ "onselect",
+ "onblur",
+ "onfocus"
+ ]
+ },
+ "keyboard":
+ {
+ "except":[
+ "base",
+ "bdo",
+ "br",
+ "frame",
+ "frameset",
+ "head",
+ "html",
+ "iframe",
+ "meta",
+ "param",
+ "script",
+ "style",
+ "title"
+ ],
+ "attributes":[
+ "onkeydown",
+ "onkeypress",
+ "onkeyup"
+ ]
+ },
+ "mouse":
+ {
+ "except":[
+ "base",
+ "bdo",
+ "br",
+ "head",
+ "html",
+ "meta",
+ "param",
+ "script",
+ "style",
+ "title"
+ ],
+ "attributes":[
+ "onclick",
+ "ondblclick",
+ "onmousedown",
+ "onmousemove",
+ "onmouseover",
+ "onmouseout",
+ "onmouseup"
+ ]
+ }
+ },
+ "_tags":
+ {
+ "a":
+ {
+ "attributes":
+ {
+ "0":"charset",
+ "1":"coords",
+ "2":"href",
+ "3":"hreflang",
+ "4":"name",
+ "5":"rel",
+ "6":"rev",
+ "shape":/^(rect|rectangle|circ|circle|poly|polygon)$/,
+ "7":"type"
+ }
+ },
+ "0":"abbr",
+ "1":"acronym",
+ "2":"address",
+ "area":
+ {
+ "attributes":
+ {
+ "0":"alt",
+ "1":"coords",
+ "2":"href",
+ "nohref":/^(true|false)$/,
+ "shape":/^(rect|rectangle|circ|circle|poly|polygon)$/
+ },
+ "required":[
+ "alt"
+ ]
+ },
+ "3":"b",
+ "base":
+ {
+ "attributes":[
+ "href"
+ ],
+ "required":[
+ "href"
+ ]
+ },
+ "bdo":
+ {
+ "attributes":
+ {
+ "dir":/^(ltr|rtl)$/
+ },
+ "required":[
+ "dir"
+ ]
+ },
+ "4":"big",
+ "blockquote":
+ {
+ "attributes":[
+ "cite"
+ ]
+ },
+ "5":"body",
+ "6":"br",
+ "button":
+ {
+ "attributes":
+ {
+ "disabled":/^(disabled)$/,
+ "type":/^(button|reset|submit)$/,
+ "0":"value"
+ },
+ "inside":"form"
+ },
+ "7":"caption",
+ "8":"cite",
+ "9":"code",
+ "col":
+ {
+ "attributes":
+ {
+ "align":/^(right|left|center|justify)$/,
+ "0":"char",
+ "1":"charoff",
+ "span":/^(\d)+$/,
+ "valign":/^(top|middle|bottom|baseline)$/,
+ "2":"width"
+ },
+ "inside":"colgroup"
+ },
+ "colgroup":
+ {
+ "attributes":
+ {
+ "align":/^(right|left|center|justify)$/,
+ "0":"char",
+ "1":"charoff",
+ "span":/^(\d)+$/,
+ "valign":/^(top|middle|bottom|baseline)$/,
+ "2":"width"
+ }
+ },
+ "10":"dd",
+ "del":
+ {
+ "attributes":
+ {
+ "0":"cite",
+ "datetime":/^([0-9]){8}/
+ }
+ },
+ "11":"div",
+ "12":"dfn",
+ "13":"dl",
+ "14":"dt",
+ "15":"em",
+ "fieldset":
+ {
+ "inside":"form"
+ },
+ "form":
+ {
+ "attributes":
+ {
+ "0":"action",
+ "1":"accept",
+ "2":"accept-charset",
+ "3":"enctype",
+ "method":/^(get|post)$/
+ },
+ "required":[
+ "action"
+ ]
+ },
+ "head":
+ {
+ "attributes":[
+ "profile"
+ ]
+ },
+ "16":"h1",
+ "17":"h2",
+ "18":"h3",
+ "19":"h4",
+ "20":"h5",
+ "21":"h6",
+ "22":"hr",
+ "html":
+ {
+ "attributes":[
+ "xmlns"
+ ]
+ },
+ "23":"i",
+ "img":
+ {
+ "attributes":[
+ "alt",
+ "src",
+ "height",
+ "ismap",
+ "longdesc",
+ "usemap",
+ "width"
+ ],
+ "required":[
+ "alt",
+ "src"
+ ]
+ },
+ "input":
+ {
+ "attributes":
+ {
+ "0":"accept",
+ "1":"alt",
+ "checked":/^(checked)$/,
+ "disabled":/^(disabled)$/,
+ "maxlength":/^(\d)+$/,
+ "2":"name",
+ "readonly":/^(readonly)$/,
+ "size":/^(\d)+$/,
+ "3":"src",
+ "type":/^(button|checkbox|file|hidden|image|password|radio|reset|submit|text)$/,
+ "4":"value"
+ },
+ "inside":"form"
+ },
+ "ins":
+ {
+ "attributes":
+ {
+ "0":"cite",
+ "datetime":/^([0-9]){8}/
+ }
+ },
+ "24":"kbd",
+ "label":
+ {
+ "attributes":[
+ "for"
+ ],
+ "inside":"form"
+ },
+ "25":"legend",
+ "26":"li",
+ "link":
+ {
+ "attributes":
+ {
+ "0":"charset",
+ "1":"href",
+ "2":"hreflang",
+ "media":/^(all|braille|print|projection|screen|speech|,|;| )+$/i,
+ //next comment line required by Opera!
+ /*"rel":/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,*/
+ "rel":/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,
+ "rev":/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,
+ "3":"type"
+ },
+ "inside":"head"
+ },
+ "map":
+ {
+ "attributes":[
+ "id",
+ "name"
+ ],
+ "required":[
+ "id"
+ ]
+ },
+ "meta":
+ {
+ "attributes":
+ {
+ "0":"content",
+ "http-equiv":/^(content\-type|expires|refresh|set\-cookie)$/i,
+ "1":"name",
+ "2":"scheme"
+ },
+ "required":[
+ "content"
+ ]
+ },
+ "27":"noscript",
+ "object":
+ {
+ "attributes":[
+ "archive",
+ "classid",
+ "codebase",
+ "codetype",
+ "data",
+ "declare",
+ "height",
+ "name",
+ "standby",
+ "type",
+ "usemap",
+ "width"
+ ]
+ },
+ "28":"ol",
+ "optgroup":
+ {
+ "attributes":
+ {
+ "0":"label",
+ "disabled": /^(disabled)$/
+ },
+ "required":[
+ "label"
+ ]
+ },
+ "option":
+ {
+ "attributes":
+ {
+ "0":"label",
+ "disabled":/^(disabled)$/,
+ "selected":/^(selected)$/,
+ "1":"value"
+ },
+ "inside":"select"
+ },
+ "29":"p",
+ "param":
+ {
+ "attributes":
+ {
+ "0":"type",
+ "valuetype":/^(data|ref|object)$/,
+ "1":"valuetype",
+ "2":"value"
+ },
+ "required":[
+ "name"
+ ]
+ },
+ "30":"pre",
+ "q":
+ {
+ "attributes":[
+ "cite"
+ ]
+ },
+ "31":"samp",
+ "script":
+ {
+ "attributes":
+ {
+ "type":/^(text\/ecmascript|text\/javascript|text\/jscript|text\/vbscript|text\/vbs|text\/xml)$/,
+ "0":"charset",
+ "defer":/^(defer)$/,
+ "1":"src"
+ },
+ "required":[
+ "type"
+ ]
+ },
+ "select":
+ {
+ "attributes":
+ {
+ "disabled":/^(disabled)$/,
+ "multiple":/^(multiple)$/,
+ "0":"name",
+ "1":"size"
+ },
+ "inside":"form"
+ },
+ "32":"small",
+ "33":"span",
+ "34":"strong",
+ "style":
+ {
+ "attributes":
+ {
+ "0":"type",
+ "media":/^(screen|tty|tv|projection|handheld|print|braille|aural|all)$/
+ },
+ "required":[
+ "type"
+ ]
+ },
+ "35":"sub",
+ "36":"sup",
+ "table":
+ {
+ "attributes":
+ {
+ "0":"border",
+ "1":"cellpadding",
+ "2":"cellspacing",
+ "frame":/^(void|above|below|hsides|lhs|rhs|vsides|box|border)$/,
+ "rules":/^(none|groups|rows|cols|all)$/,
+ "3":"summary",
+ "4":"width"
+ }
+ },
+ "tbody":
+ {
+ "attributes":
+ {
+ "align":/^(right|left|center|justify)$/,
+ "0":"char",
+ "1":"charoff",
+ "valign":/^(top|middle|bottom|baseline)$/
+ }
+ },
+ "td":
+ {
+ "attributes":
+ {
+ "0":"abbr",
+ "align":/^(left|right|center|justify|char)$/,
+ "1":"axis",
+ "2":"char",
+ "3":"charoff",
+ "colspan":/^(\d)+$/,
+ "4":"headers",
+ "rowspan":/^(\d)+$/,
+ "scope":/^(col|colgroup|row|rowgroup)$/,
+ "valign":/^(top|middle|bottom|baseline)$/
+ }
+ },
+ "textarea":
+ {
+ "attributes":[
+ "cols",
+ "rows",
+ "disabled",
+ "name",
+ "readonly"
+ ],
+ "required":[
+ "cols",
+ "rows"
+ ],
+ "inside":"form"
+ },
+ "tfoot":
+ {
+ "attributes":
+ {
+ "align":/^(right|left|center|justify)$/,
+ "0":"char",
+ "1":"charoff",
+ "valign":/^(top|middle|bottom)$/,
+ "2":"baseline"
+ }
+ },
+ "th":
+ {
+ "attributes":
+ {
+ "0":"abbr",
+ "align":/^(left|right|center|justify|char)$/,
+ "1":"axis",
+ "2":"char",
+ "3":"charoff",
+ "colspan":/^(\d)+$/,
+ "4":"headers",
+ "rowspan":/^(\d)+$/,
+ "scope":/^(col|colgroup|row|rowgroup)$/,
+ "valign":/^(top|middle|bottom|baseline)$/
+ }
+ },
+ "thead":
+ {
+ "attributes":
+ {
+ "align":/^(right|left|center|justify)$/,
+ "0":"char",
+ "1":"charoff",
+ "valign":/^(top|middle|bottom|baseline)$/
+ }
+ },
+ "37":"title",
+ "tr":
+ {
+ "attributes":
+ {
+ "align":/^(right|left|center|justify|char)$/,
+ "0":"char",
+ "1":"charoff",
+ "valign":/^(top|middle|bottom|baseline)$/
+ }
+ },
+ "38":"tt",
+ "39":"ul",
+ "40":"var"
+ },
+
+ // Temporary skiped attributes
+ skiped_attributes : [],
+ skiped_attribute_values : [],
+
+ getValidTagAttributes: function(tag, attributes)
+ {
+ var valid_attributes = {};
+ var possible_attributes = this.getPossibleTagAttributes(tag);
+ for(var attribute in attributes) {
+ var value = attributes[attribute];
+ var h = WYMeditor.Helper;
+ if(!h.contains(this.skiped_attributes, attribute) && !h.contains(this.skiped_attribute_values, value)){
+ if (typeof value != 'function' && h.contains(possible_attributes, attribute)) {
+ if (this.doesAttributeNeedsValidation(tag, attribute)) {
+ if(this.validateAttribute(tag, attribute, value)){
+ valid_attributes[attribute] = value;
+ }
+ }else{
+ valid_attributes[attribute] = value;
+ }
+ }
+ }
+ }
+ return valid_attributes;
+ },
+ getUniqueAttributesAndEventsForTag : function(tag)
+ {
+ var result = [];
+
+ if (this._tags[tag] && this._tags[tag]['attributes']) {
+ for (k in this._tags[tag]['attributes']) {
+ result.push(parseInt(k) == k ? this._tags[tag]['attributes'][k] : k);
+ }
+ }
+ return result;
+ },
+ getDefaultAttributesAndEventsForTags : function()
+ {
+ var result = [];
+ for (var key in this._events){
+ result.push(this._events[key]);
+ }
+ for (var key in this._attributes){
+ result.push(this._attributes[key]);
+ }
+ return result;
+ },
+ isValidTag : function(tag)
+ {
+ if(this._tags[tag]){
+ return true;
+ }
+ for(var key in this._tags){
+ if(this._tags[key] == tag){
+ return true;
+ }
+ }
+ return false;
+ },
+ getDefaultAttributesAndEventsForTag : function(tag)
+ {
+ var default_attributes = [];
+ if (this.isValidTag(tag)) {
+ var default_attributes_and_events = this.getDefaultAttributesAndEventsForTags();
+
+ for(var key in default_attributes_and_events) {
+ var defaults = default_attributes_and_events[key];
+ if(typeof defaults == 'object'){
+ var h = WYMeditor.Helper;
+ if ((defaults['except'] && h.contains(defaults['except'], tag)) || (defaults['only'] && !h.contains(defaults['only'], tag))) {
+ continue;
+ }
+
+ var tag_defaults = defaults['attributes'] ? defaults['attributes'] : defaults['events'];
+ for(var k in tag_defaults) {
+ default_attributes.push(typeof tag_defaults[k] != 'string' ? k : tag_defaults[k]);
+ }
+ }
+ }
+ }
+ return default_attributes;
+ },
+ doesAttributeNeedsValidation: function(tag, attribute)
+ {
+ return this._tags[tag] && ((this._tags[tag]['attributes'] && this._tags[tag]['attributes'][attribute]) || (this._tags[tag]['required'] &&
+ WYMeditor.Helper.contains(this._tags[tag]['required'], attribute)));
+ },
+ validateAttribute : function(tag, attribute, value)
+ {
+ if ( this._tags[tag] &&
+ (this._tags[tag]['attributes'] && this._tags[tag]['attributes'][attribute] && value.length > 0 && !value.match(this._tags[tag]['attributes'][attribute])) || // invalid format
+ (this._tags[tag] && this._tags[tag]['required'] && WYMeditor.Helper.contains(this._tags[tag]['required'], attribute) && value.length == 0) // required attribute
+ ) {
+ return false;
+ }
+ return typeof this._tags[tag] != 'undefined';
+ },
+ getPossibleTagAttributes : function(tag)
+ {
+ if (!this._possible_tag_attributes) {
+ this._possible_tag_attributes = {};
+ }
+ if (!this._possible_tag_attributes[tag]) {
+ this._possible_tag_attributes[tag] = this.getUniqueAttributesAndEventsForTag(tag).concat(this.getDefaultAttributesAndEventsForTag(tag));
+ }
+ return this._possible_tag_attributes[tag];
+ }
+};
+
+
+/**
+* Compounded regular expression. Any of
+* the contained patterns could match and
+* when one does, it's label is returned.
+*
+* Constructor. Starts with no patterns.
+* @param boolean case True for case sensitive, false
+* for insensitive.
+* @access public
+* @author Marcus Baker (http://lastcraft.com)
+* @author Bermi Ferrer (http://bermi.org)
+*/
+WYMeditor.ParallelRegex = function(case_sensitive)
+{
+ this._case = case_sensitive;
+ this._patterns = [];
+ this._labels = [];
+ this._regex = null;
+ return this;
+};
+
+
+/**
+* Adds a pattern with an optional label.
+* @param string pattern Perl style regex, but ( and )
+* lose the usual meaning.
+* @param string label Label of regex to be returned
+* on a match.
+* @access public
+*/
+WYMeditor.ParallelRegex.prototype.addPattern = function(pattern, label)
+{
+ label = label || true;
+ var count = this._patterns.length;
+ this._patterns[count] = pattern;
+ this._labels[count] = label;
+ this._regex = null;
+};
+
+/**
+* Attempts to match all patterns at once against
+* a string.
+* @param string subject String to match against.
+*
+* @return boolean True on success.
+* @return string match First matched portion of
+* subject.
+* @access public
+*/
+WYMeditor.ParallelRegex.prototype.match = function(subject)
+{
+ if (this._patterns.length == 0) {
+ return [false, ''];
+ }
+ var matches = subject.match(this._getCompoundedRegex());
+
+ if(!matches){
+ return [false, ''];
+ }
+ var match = matches[0];
+ for (var i = 1; i < matches.length; i++) {
+ if (matches[i]) {
+ return [this._labels[i-1], match];
+ }
+ }
+ return [true, matches[0]];
+};
+
+/**
+* Compounds the patterns into a single
+* regular expression separated with the
+* "or" operator. Caches the regex.
+* Will automatically escape (, ) and / tokens.
+* @param array patterns List of patterns in order.
+* @access private
+*/
+WYMeditor.ParallelRegex.prototype._getCompoundedRegex = function()
+{
+ if (this._regex == null) {
+ for (var i = 0, count = this._patterns.length; i < count; i++) {
+ this._patterns[i] = '(' + this._untokenizeRegex(this._tokenizeRegex(this._patterns[i]).replace(/([\/\(\)])/g,'\\$1')) + ')';
+ }
+ this._regex = new RegExp(this._patterns.join("|") ,this._getPerlMatchingFlags());
+ }
+ return this._regex;
+};
+
+/**
+* Escape lookahead/lookbehind blocks
+*/
+WYMeditor.ParallelRegex.prototype._tokenizeRegex = function(regex)
+{
+ return regex.
+ replace(/\(\?(i|m|s|x|U)\)/, '~~~~~~Tk1\$1~~~~~~').
+ replace(/\(\?(\-[i|m|s|x|U])\)/, '~~~~~~Tk2\$1~~~~~~').
+ replace(/\(\?\=(.*)\)/, '~~~~~~Tk3\$1~~~~~~').
+ replace(/\(\?\!(.*)\)/, '~~~~~~Tk4\$1~~~~~~').
+ replace(/\(\?\<\=(.*)\)/, '~~~~~~Tk5\$1~~~~~~').
+ replace(/\(\?\<\!(.*)\)/, '~~~~~~Tk6\$1~~~~~~').
+ replace(/\(\?\:(.*)\)/, '~~~~~~Tk7\$1~~~~~~');
+};
+
+/**
+* Unscape lookahead/lookbehind blocks
+*/
+WYMeditor.ParallelRegex.prototype._untokenizeRegex = function(regex)
+{
+ return regex.
+ replace(/~~~~~~Tk1(.{1})~~~~~~/, "(?\$1)").
+ replace(/~~~~~~Tk2(.{2})~~~~~~/, "(?\$1)").
+ replace(/~~~~~~Tk3(.*)~~~~~~/, "(?=\$1)").
+ replace(/~~~~~~Tk4(.*)~~~~~~/, "(?!\$1)").
+ replace(/~~~~~~Tk5(.*)~~~~~~/, "(?<=\$1)").
+ replace(/~~~~~~Tk6(.*)~~~~~~/, "(?<!\$1)").
+ replace(/~~~~~~Tk7(.*)~~~~~~/, "(?:\$1)");
+};
+
+
+/**
+* Accessor for perl regex mode flags to use.
+* @return string Perl regex flags.
+* @access private
+*/
+WYMeditor.ParallelRegex.prototype._getPerlMatchingFlags = function()
+{
+ return (this._case ? "m" : "mi");
+};
+
+
+
+/**
+* States for a stack machine.
+*
+* Constructor. Starts in named state.
+* @param string start Starting state name.
+* @access public
+* @author Marcus Baker (http://lastcraft.com)
+* @author Bermi Ferrer (http://bermi.org)
+*/
+WYMeditor.StateStack = function(start)
+{
+ this._stack = [start];
+ return this;
+};
+
+/**
+* Accessor for current state.
+* @return string State.
+* @access public
+*/
+WYMeditor.StateStack.prototype.getCurrent = function()
+{
+ return this._stack[this._stack.length - 1];
+};
+
+/**
+* Adds a state to the stack and sets it
+* to be the current state.
+* @param string state New state.
+* @access public
+*/
+WYMeditor.StateStack.prototype.enter = function(state)
+{
+ this._stack.push(state);
+};
+
+/**
+* Leaves the current state and reverts
+* to the previous one.
+* @return boolean False if we drop off
+* the bottom of the list.
+* @access public
+*/
+WYMeditor.StateStack.prototype.leave = function()
+{
+ if (this._stack.length == 1) {
+ return false;
+ }
+ this._stack.pop();
+ return true;
+};
+
+
+// GLOBALS
+WYMeditor.LEXER_ENTER = 1;
+WYMeditor.LEXER_MATCHED = 2;
+WYMeditor.LEXER_UNMATCHED = 3;
+WYMeditor.LEXER_EXIT = 4;
+WYMeditor.LEXER_SPECIAL = 5;
+
+
+/**
+* Accepts text and breaks it into tokens.
+* Some optimisation to make the sure the
+* content is only scanned by the PHP regex
+* parser once. Lexer modes must not start
+* with leading underscores.
+*
+* Sets up the lexer in case insensitive matching
+* by default.
+* @param Parser parser Handling strategy by reference.
+* @param string start Starting handler.
+* @param boolean case True for case sensitive.
+* @access public
+* @author Marcus Baker (http://lastcraft.com)
+* @author Bermi Ferrer (http://bermi.org)
+*/
+WYMeditor.Lexer = function(parser, start, case_sensitive)
+{
+ start = start || 'accept';
+ this._case = case_sensitive || false;
+ this._regexes = {};
+ this._parser = parser;
+ this._mode = new WYMeditor.StateStack(start);
+ this._mode_handlers = {};
+ this._mode_handlers[start] = start;
+ return this;
+};
+
+/**
+* Adds a token search pattern for a particular
+* parsing mode. The pattern does not change the
+* current mode.
+* @param string pattern Perl style regex, but ( and )
+* lose the usual meaning.
+* @param string mode Should only apply this
+* pattern when dealing with
+* this type of input.
+* @access public
+*/
+WYMeditor.Lexer.prototype.addPattern = function(pattern, mode)
+{
+ var mode = mode || "accept";
+ if (typeof this._regexes[mode] == 'undefined') {
+ this._regexes[mode] = new WYMeditor.ParallelRegex(this._case);
+ }
+ this._regexes[mode].addPattern(pattern);
+ if (typeof this._mode_handlers[mode] == 'undefined') {
+ this._mode_handlers[mode] = mode;
+ }
+};
+
+/**
+* Adds a pattern that will enter a new parsing
+* mode. Useful for entering parenthesis, strings,
+* tags, etc.
+* @param string pattern Perl style regex, but ( and )
+* lose the usual meaning.
+* @param string mode Should only apply this
+* pattern when dealing with
+* this type of input.
+* @param string new_mode Change parsing to this new
+* nested mode.
+* @access public
+*/
+WYMeditor.Lexer.prototype.addEntryPattern = function(pattern, mode, new_mode)
+{
+ if (typeof this._regexes[mode] == 'undefined') {
+ this._regexes[mode] = new WYMeditor.ParallelRegex(this._case);
+ }
+ this._regexes[mode].addPattern(pattern, new_mode);
+ if (typeof this._mode_handlers[new_mode] == 'undefined') {
+ this._mode_handlers[new_mode] = new_mode;
+ }
+};
+
+/**
+* Adds a pattern that will exit the current mode
+* and re-enter the previous one.
+* @param string pattern Perl style regex, but ( and )
+* lose the usual meaning.
+* @param string mode Mode to leave.
+* @access public
+*/
+WYMeditor.Lexer.prototype.addExitPattern = function(pattern, mode)
+{
+ if (typeof this._regexes[mode] == 'undefined') {
+ this._regexes[mode] = new WYMeditor.ParallelRegex(this._case);
+ }
+ this._regexes[mode].addPattern(pattern, "__exit");
+ if (typeof this._mode_handlers[mode] == 'undefined') {
+ this._mode_handlers[mode] = mode;
+ }
+};
+
+/**
+* Adds a pattern that has a special mode. Acts as an entry
+* and exit pattern in one go, effectively calling a special
+* parser handler for this token only.
+* @param string pattern Perl style regex, but ( and )
+* lose the usual meaning.
+* @param string mode Should only apply this
+* pattern when dealing with
+* this type of input.
+* @param string special Use this mode for this one token.
+* @access public
+*/
+WYMeditor.Lexer.prototype.addSpecialPattern = function(pattern, mode, special)
+{
+ if (typeof this._regexes[mode] == 'undefined') {
+ this._regexes[mode] = new WYMeditor.ParallelRegex(this._case);
+ }
+ this._regexes[mode].addPattern(pattern, '_'+special);
+ if (typeof this._mode_handlers[special] == 'undefined') {
+ this._mode_handlers[special] = special;
+ }
+};
+
+/**
+* Adds a mapping from a mode to another handler.
+* @param string mode Mode to be remapped.
+* @param string handler New target handler.
+* @access public
+*/
+WYMeditor.Lexer.prototype.mapHandler = function(mode, handler)
+{
+ this._mode_handlers[mode] = handler;
+};
+
+/**
+* Splits the page text into tokens. Will fail
+* if the handlers report an error or if no
+* content is consumed. If successful then each
+* unparsed and parsed token invokes a call to the
+* held listener.
+* @param string raw Raw HTML text.
+* @return boolean True on success, else false.
+* @access public
+*/
+WYMeditor.Lexer.prototype.parse = function(raw)
+{
+ if (typeof this._parser == 'undefined') {
+ return false;
+ }
+
+ var length = raw.length;
+ var parsed;
+ while (typeof (parsed = this._reduce(raw)) == 'object') {
+ var raw = parsed[0];
+ var unmatched = parsed[1];
+ var matched = parsed[2];
+ var mode = parsed[3];
+
+ if (! this._dispatchTokens(unmatched, matched, mode)) {
+ return false;
+ }
+
+ if (raw == '') {
+ return true;
+ }
+ if (raw.length == length) {
+ return false;
+ }
+ length = raw.length;
+ }
+ if (! parsed ) {
+ return false;
+ }
+
+ return this._invokeParser(raw, WYMeditor.LEXER_UNMATCHED);
+};
+
+/**
+* Sends the matched token and any leading unmatched
+* text to the parser changing the lexer to a new
+* mode if one is listed.
+* @param string unmatched Unmatched leading portion.
+* @param string matched Actual token match.
+* @param string mode Mode after match. A boolean
+* false mode causes no change.
+* @return boolean False if there was any error
+* from the parser.
+* @access private
+*/
+WYMeditor.Lexer.prototype._dispatchTokens = function(unmatched, matched, mode)
+{
+ mode = mode || false;
+
+ if (! this._invokeParser(unmatched, WYMeditor.LEXER_UNMATCHED)) {
+ return false;
+ }
+
+ if (typeof mode == 'boolean') {
+ return this._invokeParser(matched, WYMeditor.LEXER_MATCHED);
+ }
+ if (this._isModeEnd(mode)) {
+ if (! this._invokeParser(matched, WYMeditor.LEXER_EXIT)) {
+ return false;
+ }
+ return this._mode.leave();
+ }
+ if (this._isSpecialMode(mode)) {
+ this._mode.enter(this._decodeSpecial(mode));
+ if (! this._invokeParser(matched, WYMeditor.LEXER_SPECIAL)) {
+ return false;
+ }
+ return this._mode.leave();
+ }
+ this._mode.enter(mode);
+
+ return this._invokeParser(matched, WYMeditor.LEXER_ENTER);
+};
+
+/**
+* Tests to see if the new mode is actually to leave
+* the current mode and pop an item from the matching
+* mode stack.
+* @param string mode Mode to test.
+* @return boolean True if this is the exit mode.
+* @access private
+*/
+WYMeditor.Lexer.prototype._isModeEnd = function(mode)
+{
+ return (mode === "__exit");
+};
+
+/**
+* Test to see if the mode is one where this mode
+* is entered for this token only and automatically
+* leaves immediately afterwoods.
+* @param string mode Mode to test.
+* @return boolean True if this is the exit mode.
+* @access private
+*/
+WYMeditor.Lexer.prototype._isSpecialMode = function(mode)
+{
+ return (mode.substring(0,1) == "_");
+};
+
+/**
+* Strips the magic underscore marking single token
+* modes.
+* @param string mode Mode to decode.
+* @return string Underlying mode name.
+* @access private
+*/
+WYMeditor.Lexer.prototype._decodeSpecial = function(mode)
+{
+ return mode.substring(1);
+};
+
+/**
+* Calls the parser method named after the current
+* mode. Empty content will be ignored. The lexer
+* has a parser handler for each mode in the lexer.
+* @param string content Text parsed.
+* @param boolean is_match Token is recognised rather
+* than unparsed data.
+* @access private
+*/
+WYMeditor.Lexer.prototype._invokeParser = function(content, is_match)
+{
+
+ if (content === '') {
+ return true;
+ }
+ var current = this._mode.getCurrent();
+ var handler = this._mode_handlers[current];
+ var result;
+ eval('result = this._parser.' + handler + '(content, is_match);');
+ return result;
+};
+
+/**
+* Tries to match a chunk of text and if successful
+* removes the recognised chunk and any leading
+* unparsed data. Empty strings will not be matched.
+* @param string raw The subject to parse. This is the
+* content that will be eaten.
+* @return array/boolean Three item list of unparsed
+* content followed by the
+* recognised token and finally the
+* action the parser is to take.
+* True if no match, false if there
+* is a parsing error.
+* @access private
+*/
+WYMeditor.Lexer.prototype._reduce = function(raw)
+{
+ var matched = this._regexes[this._mode.getCurrent()].match(raw);
+ var match = matched[1];
+ var action = matched[0];
+ if (action) {
+ var unparsed_character_count = raw.indexOf(match);
+ var unparsed = raw.substr(0, unparsed_character_count);
+ raw = raw.substring(unparsed_character_count + match.length);
+ return [raw, unparsed, match, action];
+ }
+ return true;
+};
+
+
+
+/**
+* This are the rules for breaking the XHTML code into events
+* handled by the provided parser.
+*
+* @author Marcus Baker (http://lastcraft.com)
+* @author Bermi Ferrer (http://bermi.org)
+*/
+WYMeditor.XhtmlLexer = function(parser)
+{
+ jQuery.extend(this, new WYMeditor.Lexer(parser, 'Text'));
+
+ this.mapHandler('Text', 'Text');
+
+ this.addTokens();
+
+ this.init();
+
+ return this;
+};
+
+
+WYMeditor.XhtmlLexer.prototype.init = function()
+{
+};
+
+WYMeditor.XhtmlLexer.prototype.addTokens = function()
+{
+ this.addCommentTokens('Text');
+ this.addScriptTokens('Text');
+ this.addCssTokens('Text');
+ this.addTagTokens('Text');
+};
+
+WYMeditor.XhtmlLexer.prototype.addCommentTokens = function(scope)
+{
+ this.addEntryPattern("<!--", scope, 'Comment');
+ this.addExitPattern("-->", 'Comment');
+};
+
+WYMeditor.XhtmlLexer.prototype.addScriptTokens = function(scope)
+{
+ this.addEntryPattern("<script", scope, 'Script');
+ this.addExitPattern("</script>", 'Script');
+};
+
+WYMeditor.XhtmlLexer.prototype.addCssTokens = function(scope)
+{
+ this.addEntryPattern("<style", scope, 'Css');
+ this.addExitPattern("</style>", 'Css');
+};
+
+WYMeditor.XhtmlLexer.prototype.addTagTokens = function(scope)
+{
+ this.addSpecialPattern("<\\s*[a-z0-9:\-]+\\s*>", scope, 'OpeningTag');
+ this.addEntryPattern("<[a-z0-9:\-]+"+'[\\\/ \\\>]+', scope, 'OpeningTag');
+ this.addInTagDeclarationTokens('OpeningTag');
+
+ this.addSpecialPattern("</\\s*[a-z0-9:\-]+\\s*>", scope, 'ClosingTag');
+
+};
+
+WYMeditor.XhtmlLexer.prototype.addInTagDeclarationTokens = function(scope)
+{
+ this.addSpecialPattern('\\s+', scope, 'Ignore');
+
+ this.addAttributeTokens(scope);
+
+ this.addExitPattern('/>', scope);
+ this.addExitPattern('>', scope);
+
+};
+
+WYMeditor.XhtmlLexer.prototype.addAttributeTokens = function(scope)
+{
+ this.addSpecialPattern("\\s*[a-z-_0-9]*:?[a-z-_0-9]+\\s*(?=\=)\\s*", scope, 'TagAttributes');
+
+ this.addEntryPattern('=\\s*"', scope, 'DoubleQuotedAttribute');
+ this.addPattern("\\\\\"", 'DoubleQuotedAttribute');
+ this.addExitPattern('"', 'DoubleQuotedAttribute');
+
+ this.addEntryPattern("=\\s*'", scope, 'SingleQuotedAttribute');
+ this.addPattern("\\\\'", 'SingleQuotedAttribute');
+ this.addExitPattern("'", 'SingleQuotedAttribute');
+
+ this.addSpecialPattern('=\\s*[^>\\s]*', scope, 'UnquotedAttribute');
+};
+
+
+
+/**
+* XHTML Parser.
+*
+* This XHTML parser will trigger the events available on on
+* current SaxListener
+*
+* @author Bermi Ferrer (http://bermi.org)
+*/
+WYMeditor.XhtmlParser = function(Listener, mode)
+{
+ var mode = mode || 'Text';
+ this._Lexer = new WYMeditor.XhtmlLexer(this);
+ this._Listener = Listener;
+ this._mode = mode;
+ this._matches = [];
+ this._last_match = '';
+ this._current_match = '';
+
+ return this;
+};
+
+WYMeditor.XhtmlParser.prototype.parse = function(raw)
+{
+ this._Lexer.parse(this.beforeParsing(raw));
+ return this.afterParsing(this._Listener.getResult());
+};
+
+WYMeditor.XhtmlParser.prototype.beforeParsing = function(raw)
+{
+ if(raw.match(/class="MsoNormal"/) || raw.match(/ns = "urn:schemas-microsoft-com/)){
+ // Usefull for cleaning up content pasted from other sources (MSWord)
+ this._Listener.avoidStylingTagsAndAttributes();
+ }
+ return this._Listener.beforeParsing(raw);
+};
+
+WYMeditor.XhtmlParser.prototype.afterParsing = function(parsed)
+{
+ if(this._Listener._avoiding_tags_implicitly){
+ this._Listener.allowStylingTagsAndAttributes();
+ }
+ return this._Listener.afterParsing(parsed);
+};
+
+
+WYMeditor.XhtmlParser.prototype.Ignore = function(match, state)
+{
+ return true;
+};
+
+WYMeditor.XhtmlParser.prototype.Text = function(text)
+{
+ this._Listener.addContent(text);
+ return true;
+};
+
+WYMeditor.XhtmlParser.prototype.Comment = function(match, status)
+{
+ return this._addNonTagBlock(match, status, 'addComment');
+};
+
+WYMeditor.XhtmlParser.prototype.Script = function(match, status)
+{
+ return this._addNonTagBlock(match, status, 'addScript');
+};
+
+WYMeditor.XhtmlParser.prototype.Css = function(match, status)
+{
+ return this._addNonTagBlock(match, status, 'addCss');
+};
+
+WYMeditor.XhtmlParser.prototype._addNonTagBlock = function(match, state, type)
+{
+ switch (state){
+ case WYMeditor.LEXER_ENTER:
+ this._non_tag = match;
+ break;
+ case WYMeditor.LEXER_UNMATCHED:
+ this._non_tag += match;
+ break;
+ case WYMeditor.LEXER_EXIT:
+ switch(type) {
+ case 'addComment':
+ this._Listener.addComment(this._non_tag+match);
+ break;
+ case 'addScript':
+ this._Listener.addScript(this._non_tag+match);
+ break;
+ case 'addCss':
+ this._Listener.addCss(this._non_tag+match);
+ break;
+ }
+ }
+ return true;
+};
+
+WYMeditor.XhtmlParser.prototype.OpeningTag = function(match, state)
+{
+ switch (state){
+ case WYMeditor.LEXER_ENTER:
+ this._tag = this.normalizeTag(match);
+ this._tag_attributes = {};
+ break;
+ case WYMeditor.LEXER_SPECIAL:
+ this._callOpenTagListener(this.normalizeTag(match));
+ break;
+ case WYMeditor.LEXER_EXIT:
+ this._callOpenTagListener(this._tag, this._tag_attributes);
+ }
+ return true;
+};
+
+WYMeditor.XhtmlParser.prototype.ClosingTag = function(match, state)
+{
+ this._callCloseTagListener(this.normalizeTag(match));
+ return true;
+};
+
+WYMeditor.XhtmlParser.prototype._callOpenTagListener = function(tag, attributes)
+{
+ var attributes = attributes || {};
+ this.autoCloseUnclosedBeforeNewOpening(tag);
+
+ if(this._Listener.isBlockTag(tag)){
+ this._Listener._tag_stack.push(tag);
+ this._Listener.fixNestingBeforeOpeningBlockTag(tag, attributes);
+ this._Listener.openBlockTag(tag, attributes);
+ this._increaseOpenTagCounter(tag);
+ }else if(this._Listener.isInlineTag(tag)){
+ this._Listener.inlineTag(tag, attributes);
+ }else{
+ this._Listener.openUnknownTag(tag, attributes);
+ this._increaseOpenTagCounter(tag);
+ }
+ this._Listener.last_tag = tag;
+ this._Listener.last_tag_opened = true;
+ this._Listener.last_tag_attributes = attributes;
+};
+
+WYMeditor.XhtmlParser.prototype._callCloseTagListener = function(tag)
+{
+ if(this._decreaseOpenTagCounter(tag)){
+ this.autoCloseUnclosedBeforeTagClosing(tag);
+
+ if(this._Listener.isBlockTag(tag)){
+ var expected_tag = this._Listener._tag_stack.pop();
+ if(expected_tag == false){
+ return;
+ }else if(expected_tag != tag){
+ tag = expected_tag;
+ }
+ this._Listener.closeBlockTag(tag);
+ }else{
+ this._Listener.closeUnknownTag(tag);
+ }
+ }else{
+ this._Listener.closeUnopenedTag(tag);
+ }
+ this._Listener.last_tag = tag;
+ this._Listener.last_tag_opened = false;
+};
+
+WYMeditor.XhtmlParser.prototype._increaseOpenTagCounter = function(tag)
+{
+ this._Listener._open_tags[tag] = this._Listener._open_tags[tag] || 0;
+ this._Listener._open_tags[tag]++;
+};
+
+WYMeditor.XhtmlParser.prototype._decreaseOpenTagCounter = function(tag)
+{
+ if(this._Listener._open_tags[tag]){
+ this._Listener._open_tags[tag]--;
+ if(this._Listener._open_tags[tag] == 0){
+ this._Listener._open_tags[tag] = undefined;
+ }
+ return true;
+ }
+ return false;
+};
+
+WYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeNewOpening = function(new_tag)
+{
+ this._autoCloseUnclosed(new_tag, false);
+};
+
+WYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeTagClosing = function(tag)
+{
+ this._autoCloseUnclosed(tag, true);
+};
+
+WYMeditor.XhtmlParser.prototype._autoCloseUnclosed = function(new_tag, closing)
+{
+ var closing = closing || false;
+ if(this._Listener._open_tags){
+ for (var tag in this._Listener._open_tags) {
+ var counter = this._Listener._open_tags[tag];
+ if(counter > 0 && this._Listener.shouldCloseTagAutomatically(tag, new_tag, closing)){
+ this._callCloseTagListener(tag, true);
+ }
+ }
+ }
+};
+
+WYMeditor.XhtmlParser.prototype.getTagReplacements = function()
+{
+ return this._Listener.getTagReplacements();
+};
+
+WYMeditor.XhtmlParser.prototype.normalizeTag = function(tag)
+{
+ tag = tag.replace(/^([\s<\/>]*)|([\s<\/>]*)$/gm,'').toLowerCase();
+ var tags = this._Listener.getTagReplacements();
+ if(tags[tag]){
+ return tags[tag];
+ }
+ return tag;
+};
+
+WYMeditor.XhtmlParser.prototype.TagAttributes = function(match, state)
+{
+ if(WYMeditor.LEXER_SPECIAL == state){
+ this._current_attribute = match;
+ }
+ return true;
+};
+
+WYMeditor.XhtmlParser.prototype.DoubleQuotedAttribute = function(match, state)
+{
+ if(WYMeditor.LEXER_UNMATCHED == state){
+ this._tag_attributes[this._current_attribute] = match;
+ }
+ return true;
+};
+
+WYMeditor.XhtmlParser.prototype.SingleQuotedAttribute = function(match, state)
+{
+ if(WYMeditor.LEXER_UNMATCHED == state){
+ this._tag_attributes[this._current_attribute] = match;
+ }
+ return true;
+};
+
+WYMeditor.XhtmlParser.prototype.UnquotedAttribute = function(match, state)
+{
+ this._tag_attributes[this._current_attribute] = match.replace(/^=/,'');
+ return true;
+};
+
+
+
+/**
+* XHTML Sax parser.
+*
+* @author Bermi Ferrer (http://bermi.org)
+*/
+WYMeditor.XhtmlSaxListener = function()
+{
+ this.output = '';
+ this.helper = new WYMeditor.XmlHelper();
+ this._open_tags = {};
+ this.validator = WYMeditor.XhtmlValidator;
+ this._tag_stack = [];
+ this.avoided_tags = [];
+
+ this.entities = {
+ '&nbsp;':'&#160;','&iexcl;':'&#161;','&cent;':'&#162;',
+ '&pound;':'&#163;','&curren;':'&#164;','&yen;':'&#165;',
+ '&brvbar;':'&#166;','&sect;':'&#167;','&uml;':'&#168;',
+ '&copy;':'&#169;','&ordf;':'&#170;','&laquo;':'&#171;',
+ '&not;':'&#172;','&shy;':'&#173;','&reg;':'&#174;',
+ '&macr;':'&#175;','&deg;':'&#176;','&plusmn;':'&#177;',
+ '&sup2;':'&#178;','&sup3;':'&#179;','&acute;':'&#180;',
+ '&micro;':'&#181;','&para;':'&#182;','&middot;':'&#183;',
+ '&cedil;':'&#184;','&sup1;':'&#185;','&ordm;':'&#186;',
+ '&raquo;':'&#187;','&frac14;':'&#188;','&frac12;':'&#189;',
+ '&frac34;':'&#190;','&iquest;':'&#191;','&Agrave;':'&#192;',
+ '&Aacute;':'&#193;','&Acirc;':'&#194;','&Atilde;':'&#195;',
+ '&Auml;':'&#196;','&Aring;':'&#197;','&AElig;':'&#198;',
+ '&Ccedil;':'&#199;','&Egrave;':'&#200;','&Eacute;':'&#201;',
+ '&Ecirc;':'&#202;','&Euml;':'&#203;','&Igrave;':'&#204;',
+ '&Iacute;':'&#205;','&Icirc;':'&#206;','&Iuml;':'&#207;',
+ '&ETH;':'&#208;','&Ntilde;':'&#209;','&Ograve;':'&#210;',
+ '&Oacute;':'&#211;','&Ocirc;':'&#212;','&Otilde;':'&#213;',
+ '&Ouml;':'&#214;','&times;':'&#215;','&Oslash;':'&#216;',
+ '&Ugrave;':'&#217;','&Uacute;':'&#218;','&Ucirc;':'&#219;',
+ '&Uuml;':'&#220;','&Yacute;':'&#221;','&THORN;':'&#222;',
+ '&szlig;':'&#223;','&agrave;':'&#224;','&aacute;':'&#225;',
+ '&acirc;':'&#226;','&atilde;':'&#227;','&auml;':'&#228;',
+ '&aring;':'&#229;','&aelig;':'&#230;','&ccedil;':'&#231;',
+ '&egrave;':'&#232;','&eacute;':'&#233;','&ecirc;':'&#234;',
+ '&euml;':'&#235;','&igrave;':'&#236;','&iacute;':'&#237;',
+ '&icirc;':'&#238;','&iuml;':'&#239;','&eth;':'&#240;',
+ '&ntilde;':'&#241;','&ograve;':'&#242;','&oacute;':'&#243;',
+ '&ocirc;':'&#244;','&otilde;':'&#245;','&ouml;':'&#246;',
+ '&divide;':'&#247;','&oslash;':'&#248;','&ugrave;':'&#249;',
+ '&uacute;':'&#250;','&ucirc;':'&#251;','&uuml;':'&#252;',
+ '&yacute;':'&#253;','&thorn;':'&#254;','&yuml;':'&#255;',
+ '&OElig;':'&#338;','&oelig;':'&#339;','&Scaron;':'&#352;',
+ '&scaron;':'&#353;','&Yuml;':'&#376;','&fnof;':'&#402;',
+ '&circ;':'&#710;','&tilde;':'&#732;','&Alpha;':'&#913;',
+ '&Beta;':'&#914;','&Gamma;':'&#915;','&Delta;':'&#916;',
+ '&Epsilon;':'&#917;','&Zeta;':'&#918;','&Eta;':'&#919;',
+ '&Theta;':'&#920;','&Iota;':'&#921;','&Kappa;':'&#922;',
+ '&Lambda;':'&#923;','&Mu;':'&#924;','&Nu;':'&#925;',
+ '&Xi;':'&#926;','&Omicron;':'&#927;','&Pi;':'&#928;',
+ '&Rho;':'&#929;','&Sigma;':'&#931;','&Tau;':'&#932;',
+ '&Upsilon;':'&#933;','&Phi;':'&#934;','&Chi;':'&#935;',
+ '&Psi;':'&#936;','&Omega;':'&#937;','&alpha;':'&#945;',
+ '&beta;':'&#946;','&gamma;':'&#947;','&delta;':'&#948;',
+ '&epsilon;':'&#949;','&zeta;':'&#950;','&eta;':'&#951;',
+ '&theta;':'&#952;','&iota;':'&#953;','&kappa;':'&#954;',
+ '&lambda;':'&#955;','&mu;':'&#956;','&nu;':'&#957;',
+ '&xi;':'&#958;','&omicron;':'&#959;','&pi;':'&#960;',
+ '&rho;':'&#961;','&sigmaf;':'&#962;','&sigma;':'&#963;',
+ '&tau;':'&#964;','&upsilon;':'&#965;','&phi;':'&#966;',
+ '&chi;':'&#967;','&psi;':'&#968;','&omega;':'&#969;',
+ '&thetasym;':'&#977;','&upsih;':'&#978;','&piv;':'&#982;',
+ '&ensp;':'&#8194;','&emsp;':'&#8195;','&thinsp;':'&#8201;',
+ '&zwnj;':'&#8204;','&zwj;':'&#8205;','&lrm;':'&#8206;',
+ '&rlm;':'&#8207;','&ndash;':'&#8211;','&mdash;':'&#8212;',
+ '&lsquo;':'&#8216;','&rsquo;':'&#8217;','&sbquo;':'&#8218;',
+ '&ldquo;':'&#8220;','&rdquo;':'&#8221;','&bdquo;':'&#8222;',
+ '&dagger;':'&#8224;','&Dagger;':'&#8225;','&bull;':'&#8226;',
+ '&hellip;':'&#8230;','&permil;':'&#8240;','&prime;':'&#8242;',
+ '&Prime;':'&#8243;','&lsaquo;':'&#8249;','&rsaquo;':'&#8250;',
+ '&oline;':'&#8254;','&frasl;':'&#8260;','&euro;':'&#8364;',
+ '&image;':'&#8465;','&weierp;':'&#8472;','&real;':'&#8476;',
+ '&trade;':'&#8482;','&alefsym;':'&#8501;','&larr;':'&#8592;',
+ '&uarr;':'&#8593;','&rarr;':'&#8594;','&darr;':'&#8595;',
+ '&harr;':'&#8596;','&crarr;':'&#8629;','&lArr;':'&#8656;',
+ '&uArr;':'&#8657;','&rArr;':'&#8658;','&dArr;':'&#8659;',
+ '&hArr;':'&#8660;','&forall;':'&#8704;','&part;':'&#8706;',
+ '&exist;':'&#8707;','&empty;':'&#8709;','&nabla;':'&#8711;',
+ '&isin;':'&#8712;','&notin;':'&#8713;','&ni;':'&#8715;',
+ '&prod;':'&#8719;','&sum;':'&#8721;','&minus;':'&#8722;',
+ '&lowast;':'&#8727;','&radic;':'&#8730;','&prop;':'&#8733;',
+ '&infin;':'&#8734;','&ang;':'&#8736;','&and;':'&#8743;',
+ '&or;':'&#8744;','&cap;':'&#8745;','&cup;':'&#8746;',
+ '&int;':'&#8747;','&there4;':'&#8756;','&sim;':'&#8764;',
+ '&cong;':'&#8773;','&asymp;':'&#8776;','&ne;':'&#8800;',
+ '&equiv;':'&#8801;','&le;':'&#8804;','&ge;':'&#8805;',
+ '&sub;':'&#8834;','&sup;':'&#8835;','&nsub;':'&#8836;',
+ '&sube;':'&#8838;','&supe;':'&#8839;','&oplus;':'&#8853;',
+ '&otimes;':'&#8855;','&perp;':'&#8869;','&sdot;':'&#8901;',
+ '&lceil;':'&#8968;','&rceil;':'&#8969;','&lfloor;':'&#8970;',
+ '&rfloor;':'&#8971;','&lang;':'&#9001;','&rang;':'&#9002;',
+ '&loz;':'&#9674;','&spades;':'&#9824;','&clubs;':'&#9827;',
+ '&hearts;':'&#9829;','&diams;':'&#9830;'};
+
+ this.block_tags = ["a", "abbr", "acronym", "address", "area", "b",
+ "base", "bdo", "big", "blockquote", "body", "button",
+ "caption", "cite", "code", "col", "colgroup", "dd", "del", "div",
+ "dfn", "dl", "dt", "em", "fieldset", "form", "head", "h1", "h2",
+ "h3", "h4", "h5", "h6", "html", "i", "ins",
+ "kbd", "label", "legend", "li", "map", "noscript",
+ "object", "ol", "optgroup", "option", "p", "param", "pre", "q",
+ "samp", "script", "select", "small", "span", "strong", "style",
+ "sub", "sup", "table", "tbody", "td", "textarea", "tfoot", "th",
+ "thead", "title", "tr", "tt", "ul", "var", "extends"];
+
+
+ this.inline_tags = ["br", "hr", "img", "input"];
+
+ return this;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.shouldCloseTagAutomatically = function(tag, now_on_tag, closing)
+{
+ var closing = closing || false;
+ if(tag == 'td'){
+ if((closing && now_on_tag == 'tr') || (!closing && now_on_tag == 'td')){
+ return true;
+ }
+ }
+ if(tag == 'option'){
+ if((closing && now_on_tag == 'select') || (!closing && now_on_tag == 'option')){
+ return true;
+ }
+ }
+ return false;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.beforeParsing = function(raw)
+{
+ this.output = '';
+ return raw;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.afterParsing = function(xhtml)
+{
+ xhtml = this.replaceNamedEntities(xhtml);
+ xhtml = this.joinRepeatedEntities(xhtml);
+ xhtml = this.removeEmptyTags(xhtml);
+ xhtml = this.removeBrInPre(xhtml);
+ return xhtml;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.replaceNamedEntities = function(xhtml)
+{
+ for (var entity in this.entities) {
+ xhtml = xhtml.replace(new RegExp(entity, 'g'), this.entities[entity]);
+ }
+ return xhtml;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.joinRepeatedEntities = function(xhtml)
+{
+ var tags = 'em|strong|sub|sup|acronym|pre|del|address';
+ return xhtml.replace(new RegExp('<\/('+tags+')><\\1>' ,''),'').
+ replace(new RegExp('(\s*<('+tags+')>\s*){2}(.*)(\s*<\/\\2>\s*){2}' ,''),'<\$2>\$3<\$2>');
+};
+
+WYMeditor.XhtmlSaxListener.prototype.removeEmptyTags = function(xhtml)
+{
+ return xhtml.replace(new RegExp('<('+this.block_tags.join("|").replace(/\|td/,'').replace(/\|th/, '')+')>(<br \/>|&#160;|&nbsp;|\\s)*<\/\\1>' ,'g'),'');
+};
+
+WYMeditor.XhtmlSaxListener.prototype.removeBrInPre = function(xhtml)
+{
+ var matches = xhtml.match(new RegExp('<pre[^>]*>(.*?)<\/pre>','gmi'));
+ if(matches) {
+ for(var i=0; i<matches.length; i++) {
+ xhtml = xhtml.replace(matches[i], matches[i].replace(new RegExp('<br \/>', 'g'), String.fromCharCode(13,10)));
+ }
+ }
+ return xhtml;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.getResult = function()
+{
+ return this.output;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.getTagReplacements = function()
+{
+ return {'b':'strong', 'i':'em'};
+};
+
+WYMeditor.XhtmlSaxListener.prototype.addContent = function(text)
+{
+ this.output += text;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.addComment = function(text)
+{
+ if(this.remove_comments){
+ this.output += text;
+ }
+};
+
+WYMeditor.XhtmlSaxListener.prototype.addScript = function(text)
+{
+ if(!this.remove_scripts){
+ this.output += text;
+ }
+};
+
+WYMeditor.XhtmlSaxListener.prototype.addCss = function(text)
+{
+ if(!this.remove_embeded_styles){
+ this.output += text;
+ }
+};
+
+WYMeditor.XhtmlSaxListener.prototype.openBlockTag = function(tag, attributes)
+{
+ this.output += this.helper.tag(tag, this.validator.getValidTagAttributes(tag, attributes), true);
+};
+
+WYMeditor.XhtmlSaxListener.prototype.inlineTag = function(tag, attributes)
+{
+ this.output += this.helper.tag(tag, this.validator.getValidTagAttributes(tag, attributes));
+};
+
+WYMeditor.XhtmlSaxListener.prototype.openUnknownTag = function(tag, attributes)
+{
+ //this.output += this.helper.tag(tag, attributes, true);
+};
+
+WYMeditor.XhtmlSaxListener.prototype.closeBlockTag = function(tag)
+{
+ this.output = this.output.replace(/<br \/>$/, '')+this._getClosingTagContent('before', tag)+"</"+tag+">"+this._getClosingTagContent('after', tag);
+};
+
+WYMeditor.XhtmlSaxListener.prototype.closeUnknownTag = function(tag)
+{
+ //this.output += "</"+tag+">";
+};
+
+WYMeditor.XhtmlSaxListener.prototype.closeUnopenedTag = function(tag)
+{
+ this.output += "</"+tag+">";
+};
+
+WYMeditor.XhtmlSaxListener.prototype.avoidStylingTagsAndAttributes = function()
+{
+ this.avoided_tags = ['div','span'];
+ this.validator.skiped_attributes = ['style'];
+ this.validator.skiped_attribute_values = ['MsoNormal','main1']; // MS Word attributes for class
+ this._avoiding_tags_implicitly = true;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.allowStylingTagsAndAttributes = function()
+{
+ this.avoided_tags = [];
+ this.validator.skiped_attributes = [];
+ this.validator.skiped_attribute_values = [];
+ this._avoiding_tags_implicitly = false;
+};
+
+WYMeditor.XhtmlSaxListener.prototype.isBlockTag = function(tag)
+{
+ return !WYMeditor.Helper.contains(this.avoided_tags, tag) && WYMeditor.Helper.contains(this.block_tags, tag);
+};
+
+WYMeditor.XhtmlSaxListener.prototype.isInlineTag = function(tag)
+{
+ return !WYMeditor.Helper.contains(this.avoided_tags, tag) && WYMeditor.Helper.contains(this.inline_tags, tag);
+};
+
+WYMeditor.XhtmlSaxListener.prototype.insertContentAfterClosingTag = function(tag, content)
+{
+ this._insertContentWhenClosingTag('after', tag, content);
+};
+
+WYMeditor.XhtmlSaxListener.prototype.insertContentBeforeClosingTag = function(tag, content)
+{
+ this._insertContentWhenClosingTag('before', tag, content);
+};
+
+WYMeditor.XhtmlSaxListener.prototype.fixNestingBeforeOpeningBlockTag = function(tag, attributes)
+{
+ if(tag != 'li' && (tag == 'ul' || tag == 'ol') && this.last_tag && !this.last_tag_opened && this.last_tag == 'li'){
+ this.output = this.output.replace(/<\/li>$/, '');
+ this.insertContentAfterClosingTag(tag, '</li>');
+ }
+};
+
+WYMeditor.XhtmlSaxListener.prototype._insertContentWhenClosingTag = function(position, tag, content)
+{
+ if(!this['_insert_'+position+'_closing']){
+ this['_insert_'+position+'_closing'] = [];
+ }
+ if(!this['_insert_'+position+'_closing'][tag]){
+ this['_insert_'+position+'_closing'][tag] = [];
+ }
+ this['_insert_'+position+'_closing'][tag].push(content);
+};
+
+WYMeditor.XhtmlSaxListener.prototype._getClosingTagContent = function(position, tag)
+{
+ if( this['_insert_'+position+'_closing'] &&
+ this['_insert_'+position+'_closing'][tag] &&
+ this['_insert_'+position+'_closing'][tag].length > 0){
+ return this['_insert_'+position+'_closing'][tag].pop();
+ }
+ return '';
+};
+
+
+/********** CSS PARSER **********/
+
+
+WYMeditor.WymCssLexer = function(parser, only_wym_blocks)
+{
+ var only_wym_blocks = (typeof only_wym_blocks == 'undefined' ? true : only_wym_blocks);
+
+ jQuery.extend(this, new WYMeditor.Lexer(parser, (only_wym_blocks?'Ignore':'WymCss')));
+
+ this.mapHandler('WymCss', 'Ignore');
+
+ if(only_wym_blocks == true){
+ this.addEntryPattern("/\\\x2a[<\\s]*WYMeditor[>\\s]*\\\x2a/", 'Ignore', 'WymCss');
+ this.addExitPattern("/\\\x2a[<\/\\s]*WYMeditor[>\\s]*\\\x2a/", 'WymCss');
+ }
+
+ this.addSpecialPattern("[\\sa-z1-6]*\\\x2e[a-z-_0-9]+", 'WymCss', 'WymCssStyleDeclaration');
+
+ this.addEntryPattern("/\\\x2a", 'WymCss', 'WymCssComment');
+ this.addExitPattern("\\\x2a/", 'WymCssComment');
+
+ this.addEntryPattern("\x7b", 'WymCss', 'WymCssStyle');
+ this.addExitPattern("\x7d", 'WymCssStyle');
+
+ this.addEntryPattern("/\\\x2a", 'WymCssStyle', 'WymCssFeedbackStyle');
+ this.addExitPattern("\\\x2a/", 'WymCssFeedbackStyle');
+
+ return this;
+};
+
+WYMeditor.WymCssParser = function()
+{
+ this._in_style = false;
+ this._has_title = false;
+ this.only_wym_blocks = true;
+ this.css_settings = {'classesItems':[], 'editorStyles':[], 'dialogStyles':[]};
+ return this;
+};
+
+WYMeditor.WymCssParser.prototype.parse = function(raw, only_wym_blocks)
+{
+ var only_wym_blocks = (typeof only_wym_blocks == 'undefined' ? this.only_wym_blocks : only_wym_blocks);
+ this._Lexer = new WYMeditor.WymCssLexer(this, only_wym_blocks);
+ this._Lexer.parse(raw);
+};
+
+WYMeditor.WymCssParser.prototype.Ignore = function(match, state)
+{
+ return true;
+};
+
+WYMeditor.WymCssParser.prototype.WymCssComment = function(text, status)
+{
+ if(text.match(/end[a-z0-9\s]*wym[a-z0-9\s]*/mi)){
+ return false;
+ }
+ if(status == WYMeditor.LEXER_UNMATCHED){
+ if(!this._in_style){
+ this._has_title = true;
+ this._current_item = {'title':WYMeditor.Helper.trim(text)};
+ }else{
+ if(this._current_item[this._current_element]){
+ if(!this._current_item[this._current_element].expressions){
+ this._current_item[this._current_element].expressions = [text];
+ }else{
+ this._current_item[this._current_element].expressions.push(text);
+ }
+ }
+ }
+ this._in_style = true;
+ }
+ return true;
+};
+
+WYMeditor.WymCssParser.prototype.WymCssStyle = function(match, status)
+{
+ if(status == WYMeditor.LEXER_UNMATCHED){
+ match = WYMeditor.Helper.trim(match);
+ if(match != ''){
+ this._current_item[this._current_element].style = match;
+ }
+ }else if (status == WYMeditor.LEXER_EXIT){
+ this._in_style = false;
+ this._has_title = false;
+ this.addStyleSetting(this._current_item);
+ }
+ return true;
+};
+
+WYMeditor.WymCssParser.prototype.WymCssFeedbackStyle = function(match, status)
+{
+ if(status == WYMeditor.LEXER_UNMATCHED){
+ this._current_item[this._current_element].feedback_style = match.replace(/^([\s\/\*]*)|([\s\/\*]*)$/gm,'');
+ }
+ return true;
+};
+
+WYMeditor.WymCssParser.prototype.WymCssStyleDeclaration = function(match)
+{
+ match = match.replace(/^([\s\.]*)|([\s\.*]*)$/gm, '');
+
+ var tag = '';
+ if(match.indexOf('.') > 0){
+ var parts = match.split('.');
+ this._current_element = parts[1];
+ var tag = parts[0];
+ }else{
+ this._current_element = match;
+ }
+
+ if(!this._has_title){
+ this._current_item = {'title':(!tag?'':tag.toUpperCase()+': ')+this._current_element};
+ this._has_title = true;
+ }
+
+ if(!this._current_item[this._current_element]){
+ this._current_item[this._current_element] = {'name':this._current_element};
+ }
+ if(tag){
+ if(!this._current_item[this._current_element].tags){
+ this._current_item[this._current_element].tags = [tag];
+ }else{
+ this._current_item[this._current_element].tags.push(tag);
+ }
+ }
+ return true;
+};
+
+WYMeditor.WymCssParser.prototype.addStyleSetting = function(style_details)
+{
+ for (var name in style_details){
+ var details = style_details[name];
+ if(typeof details == 'object' && name != 'title'){
+
+ this.css_settings.classesItems.push({
+ 'name': WYMeditor.Helper.trim(details.name),
+ 'title': style_details.title,
+ 'expr' : WYMeditor.Helper.trim((details.expressions||details.tags).join(', '))
+ });
+ if(details.feedback_style){
+ this.css_settings.editorStyles.push({
+ 'name': '.'+ WYMeditor.Helper.trim(details.name),
+ 'css': details.feedback_style
+ });
+ }
+ if(details.style){
+ this.css_settings.dialogStyles.push({
+ 'name': '.'+ WYMeditor.Helper.trim(details.name),
+ 'css': details.style
+ });
+ }
+ }
+ }
+};
+
+/********** HELPERS **********/
+
+// Returns true if it is a text node with whitespaces only
+jQuery.fn.isPhantomNode = function() {
+ if (this[0].nodeType == 3)
+ return !(/[^\t\n\r ]/.test(this[0].data));
+
+ return false;
+};
+
+WYMeditor.isPhantomNode = function(n) {
+ if (n.nodeType == 3)
+ return !(/[^\t\n\r ]/.test(n.data));
+
+ return false;
+};
+
+WYMeditor.isPhantomString = function(str) {
+ return !(/[^\t\n\r ]/.test(str));
+};
+
+// Returns the Parents or the node itself
+// jqexpr = a jQuery expression
+jQuery.fn.parentsOrSelf = function(jqexpr) {
+ var n = this;
+
+ if (n[0].nodeType == 3)
+ n = n.parents().slice(0,1);
+
+// if (n.is(jqexpr)) // XXX should work, but doesn't (probably a jQuery bug)
+ if (n.filter(jqexpr).size() == 1)
+ return n;
+ else
+ return n.parents(jqexpr).slice(0,1);
+};
+
+// String & array helpers
+
+WYMeditor.Helper = {
+
+ //replace all instances of 'old' by 'rep' in 'str' string
+ replaceAll: function(str, old, rep) {
+ var rExp = new RegExp(old, "g");
+ return(str.replace(rExp, rep));
+ },
+
+ //insert 'inserted' at position 'pos' in 'str' string
+ insertAt: function(str, inserted, pos) {
+ return(str.substr(0,pos) + inserted + str.substring(pos));
+ },
+
+ //trim 'str' string
+ trim: function(str) {
+ return str.replace(/^(\s*)|(\s*)$/gm,'');
+ },
+
+ //return true if 'arr' array contains 'elem', or false
+ contains: function(arr, elem) {
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i] === elem) return true;
+ }
+ return false;
+ },
+
+ //return 'item' position in 'arr' array, or -1
+ indexOf: function(arr, item) {
+ var ret=-1;
+ for(var i = 0; i < arr.length; i++) {
+ if (arr[i] == item) {
+ ret = i;
+ break;
+ }
+ }
+ return(ret);
+ },
+
+ //return 'item' object in 'arr' array, checking its 'name' property, or null
+ findByName: function(arr, name) {
+ for(var i = 0; i < arr.length; i++) {
+ var item = arr[i];
+ if(item.name == name) return(item);
+ }
+ return(null);
+ }
+};
+
+
diff --git a/studio/static/js/wymeditor/jquery.wymeditor.min.js b/studio/static/js/wymeditor/jquery.wymeditor.min.js
new file mode 100644
index 0000000..b57a18e
--- /dev/null
+++ b/studio/static/js/wymeditor/jquery.wymeditor.min.js
@@ -0,0 +1 @@
+if(!WYMeditor){var WYMeditor={}}(function(){if(!window.console||!console.firebug){var b=["log","debug","info","warn","error","assert","dir","dirxml","group","groupEnd","time","timeEnd","count","trace","profile","profileEnd"];WYMeditor.console={};for(var a=0;a<b.length;++a){WYMeditor.console[b[a]]=function(){}}}else{WYMeditor.console=window.console}})();jQuery.extend(WYMeditor,{VERSION:"0.5-rc1",INSTANCES:[],STRINGS:[],SKINS:[],NAME:"name",INDEX:"{Wym_Index}",WYM_INDEX:"wym_index",BASE_PATH:"{Wym_Base_Path}",CSS_PATH:"{Wym_Css_Path}",WYM_PATH:"{Wym_Wym_Path}",SKINS_DEFAULT_PATH:"skins/",SKINS_DEFAULT_CSS:"skin.css",SKINS_DEFAULT_JS:"skin.js",LANG_DEFAULT_PATH:"lang/",IFRAME_BASE_PATH:"{Wym_Iframe_Base_Path}",IFRAME_DEFAULT:"iframe/default/",JQUERY_PATH:"{Wym_Jquery_Path}",DIRECTION:"{Wym_Direction}",LOGO:"{Wym_Logo}",TOOLS:"{Wym_Tools}",TOOLS_ITEMS:"{Wym_Tools_Items}",TOOL_NAME:"{Wym_Tool_Name}",TOOL_TITLE:"{Wym_Tool_Title}",TOOL_CLASS:"{Wym_Tool_Class}",CLASSES:"{Wym_Classes}",CLASSES_ITEMS:"{Wym_Classes_Items}",CLASS_NAME:"{Wym_Class_Name}",CLASS_TITLE:"{Wym_Class_Title}",CONTAINERS:"{Wym_Containers}",CONTAINERS_ITEMS:"{Wym_Containers_Items}",CONTAINER_NAME:"{Wym_Container_Name}",CONTAINER_TITLE:"{Wym_Containers_Title}",CONTAINER_CLASS:"{Wym_Container_Class}",HTML:"{Wym_Html}",IFRAME:"{Wym_Iframe}",STATUS:"{Wym_Status}",DIALOG_TITLE:"{Wym_Dialog_Title}",DIALOG_BODY:"{Wym_Dialog_Body}",STRING:"string",BODY:"body",DIV:"div",P:"p",H1:"h1",H2:"h2",H3:"h3",H4:"h4",H5:"h5",H6:"h6",PRE:"pre",BLOCKQUOTE:"blockquote",A:"a",BR:"br",IMG:"img",TABLE:"table",TD:"td",TH:"th",UL:"ul",OL:"ol",LI:"li",CLASS:"class",HREF:"href",SRC:"src",TITLE:"title",REL:"rel",ALT:"alt",DIALOG_LINK:"Link",DIALOG_IMAGE:"Image",DIALOG_TABLE:"Table",DIALOG_PASTE:"Paste_From_Word",BOLD:"Bold",ITALIC:"Italic",CREATE_LINK:"CreateLink",INSERT_IMAGE:"InsertImage",INSERT_TABLE:"InsertTable",INSERT_HTML:"InsertHTML",PASTE:"Paste",INDENT:"Indent",OUTDENT:"Outdent",TOGGLE_HTML:"ToggleHtml",FORMAT_BLOCK:"FormatBlock",PREVIEW:"Preview",UNLINK:"Unlink",INSERT_UNORDEREDLIST:"InsertUnorderedList",INSERT_ORDEREDLIST:"InsertOrderedList",MAIN_CONTAINERS:new Array("p","h1","h2","h3","h4","h5","h6","pre","blockquote"),BLOCKS:new Array("address","blockquote","div","dl","fieldset","form","h1","h2","h3","h4","h5","h6","hr","noscript","ol","p","pre","table","ul","dd","dt","li","tbody","td","tfoot","th","thead","tr"),KEY:{BACKSPACE:8,ENTER:13,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,CURSOR:new Array(37,38,39,40),DELETE:46},NODE:{ELEMENT:1,ATTRIBUTE:2,TEXT:3},editor:function(b,a){this._index=WYMeditor.INSTANCES.push(this)-1;this._element=b;this._options=a;this._html=jQuery(b).val();if(this._options.html){this._html=this._options.html}this._options.basePath=this._options.basePath||this.computeBasePath();this._options.skinPath=this._options.skinPath||this._options.basePath+WYMeditor.SKINS_DEFAULT_PATH+this._options.skin+"/";this._options.wymPath=this._options.wymPath||this.computeWymPath();this._options.langPath=this._options.langPath||this._options.basePath+WYMeditor.LANG_DEFAULT_PATH;this._options.iframeBasePath=this._options.iframeBasePath||this._options.basePath+WYMeditor.IFRAME_DEFAULT;this._options.jQueryPath=this._options.jQueryPath||this.computeJqueryPath();this.init()}});jQuery.fn.wymeditor=function(a){a=jQuery.extend({html:"",basePath:false,skinPath:false,wymPath:false,iframeBasePath:false,jQueryPath:false,styles:false,stylesheet:false,skin:"default",initSkin:true,loadSkin:true,lang:"en",direction:"ltr",boxHtml:"<div class='wym_box'><div class='wym_area_top'>"+WYMeditor.TOOLS+"</div><div class='wym_area_left'></div><div class='wym_area_right'>"+WYMeditor.CONTAINERS+WYMeditor.CLASSES+"</div><div class='wym_area_main'>"+WYMeditor.HTML+WYMeditor.IFRAME+WYMeditor.STATUS+"</div><div class='wym_area_bottom'>"+WYMeditor.LOGO+"</div></div>",logoHtml:"<a class='wym_wymeditor_link' href='http://www.wymeditor.org/'>WYMeditor</a>",iframeHtml:"<div class='wym_iframe wym_section'><iframe src='"+WYMeditor.IFRAME_BASE_PATH+"wymiframe.html' onload='this.contentWindow.parent.WYMeditor.INSTANCES["+WYMeditor.INDEX+"].initIframe(this)'></iframe></div>",editorStyles:[],toolsHtml:"<div class='wym_tools wym_section'><h2>{Tools}</h2><ul>"+WYMeditor.TOOLS_ITEMS+"</ul></div>",toolsItemHtml:"<li class='"+WYMeditor.TOOL_CLASS+"'><a href='#' name='"+WYMeditor.TOOL_NAME+"' title='"+WYMeditor.TOOL_TITLE+"'>"+WYMeditor.TOOL_TITLE+"</a></li>",toolsItems:[{name:"Bold",title:"Strong",css:"wym_tools_strong"},{name:"Italic",title:"Emphasis",css:"wym_tools_emphasis"},{name:"Superscript",title:"Superscript",css:"wym_tools_superscript"},{name:"Subscript",title:"Subscript",css:"wym_tools_subscript"},{name:"InsertOrderedList",title:"Ordered_List",css:"wym_tools_ordered_list"},{name:"InsertUnorderedList",title:"Unordered_List",css:"wym_tools_unordered_list"},{name:"Indent",title:"Indent",css:"wym_tools_indent"},{name:"Outdent",title:"Outdent",css:"wym_tools_outdent"},{name:"Undo",title:"Undo",css:"wym_tools_undo"},{name:"Redo",title:"Redo",css:"wym_tools_redo"},{name:"CreateLink",title:"Link",css:"wym_tools_link"},{name:"Unlink",title:"Unlink",css:"wym_tools_unlink"},{name:"InsertImage",title:"Image",css:"wym_tools_image"},{name:"InsertTable",title:"Table",css:"wym_tools_table"},{name:"Paste",title:"Paste_From_Word",css:"wym_tools_paste"},{name:"ToggleHtml",title:"HTML",css:"wym_tools_html"},{name:"Preview",title:"Preview",css:"wym_tools_preview"}],containersHtml:"<div class='wym_containers wym_section'><h2>{Containers}</h2><ul>"+WYMeditor.CONTAINERS_ITEMS+"</ul></div>",containersItemHtml:"<li class='"+WYMeditor.CONTAINER_CLASS+"'><a href='#' name='"+WYMeditor.CONTAINER_NAME+"'>"+WYMeditor.CONTAINER_TITLE+"</a></li>",containersItems:[{name:"P",title:"Paragraph",css:"wym_containers_p"},{name:"H1",title:"Heading_1",css:"wym_containers_h1"},{name:"H2",title:"Heading_2",css:"wym_containers_h2"},{name:"H3",title:"Heading_3",css:"wym_containers_h3"},{name:"H4",title:"Heading_4",css:"wym_containers_h4"},{name:"H5",title:"Heading_5",css:"wym_containers_h5"},{name:"H6",title:"Heading_6",css:"wym_containers_h6"},{name:"PRE",title:"Preformatted",css:"wym_containers_pre"},{name:"BLOCKQUOTE",title:"Blockquote",css:"wym_containers_blockquote"},{name:"TH",title:"Table_Header",css:"wym_containers_th"}],classesHtml:"<div class='wym_classes wym_section'><h2>{Classes}</h2><ul>"+WYMeditor.CLASSES_ITEMS+"</ul></div>",classesItemHtml:"<li class='wym_classes_"+WYMeditor.CLASS_NAME+"'><a href='#' name='"+WYMeditor.CLASS_NAME+"'>"+WYMeditor.CLASS_TITLE+"</a></li>",classesItems:[],statusHtml:"<div class='wym_status wym_section'><h2>{Status}</h2></div>",htmlHtml:"<div class='wym_html wym_section'><h2>{Source_Code}</h2><textarea class='wym_html_val'></textarea></div>",boxSelector:".wym_box",toolsSelector:".wym_tools",toolsListSelector:" ul",containersSelector:".wym_containers",classesSelector:".wym_classes",htmlSelector:".wym_html",iframeSelector:".wym_iframe iframe",iframeBodySelector:".wym_iframe",statusSelector:".wym_status",toolSelector:".wym_tools a",containerSelector:".wym_containers a",classSelector:".wym_classes a",htmlValSelector:".wym_html_val",hrefSelector:".wym_href",srcSelector:".wym_src",titleSelector:".wym_title",relSelector:".wym_rel",altSelector:".wym_alt",textSelector:".wym_text",rowsSelector:".wym_rows",colsSelector:".wym_cols",captionSelector:".wym_caption",summarySelector:".wym_summary",submitSelector:"form",cancelSelector:".wym_cancel",previewSelector:"",dialogTypeSelector:".wym_dialog_type",dialogLinkSelector:".wym_dialog_link",dialogImageSelector:".wym_dialog_image",dialogTableSelector:".wym_dialog_table",dialogPasteSelector:".wym_dialog_paste",dialogPreviewSelector:".wym_dialog_preview",updateSelector:".wymupdate",updateEvent:"click",dialogFeatures:"menubar=no,titlebar=no,toolbar=no,resizable=no,width=560,height=300,top=0,left=0",dialogFeaturesPreview:"menubar=no,titlebar=no,toolbar=no,resizable=no,scrollbars=yes,width=560,height=300,top=0,left=0",dialogHtml:"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'><html dir='"+WYMeditor.DIRECTION+"'><head><link rel='stylesheet' type='text/css' media='screen' href='"+WYMeditor.CSS_PATH+"' /><title>"+WYMeditor.DIALOG_TITLE+"</title><script type='text/javascript' src='"+WYMeditor.JQUERY_PATH+"'><\/script><script type='text/javascript' src='"+WYMeditor.WYM_PATH+"'><\/script></head>"+WYMeditor.DIALOG_BODY+"</html>",dialogLinkHtml:"<body class='wym_dialog wym_dialog_link' onload='WYMeditor.INIT_DIALOG("+WYMeditor.INDEX+")'><form><fieldset><input type='hidden' class='wym_dialog_type' value='"+WYMeditor.DIALOG_LINK+"' /><legend>{Link}</legend><div class='row'><label>{URL}</label><input type='text' class='wym_href' value='' size='40' /></div><div class='row'><label>{Title}</label><input type='text' class='wym_title' value='' size='40' /></div><div class='row'><label>{Relationship}</label><input type='text' class='wym_rel' value='' size='40' /></div><div class='row row-indent'><input class='wym_submit' type='submit' value='{Submit}' /><input class='wym_cancel' type='button'value='{Cancel}' /></div></fieldset></form></body>",dialogImageHtml:"<body class='wym_dialog wym_dialog_image' onload='WYMeditor.INIT_DIALOG("+WYMeditor.INDEX+")'><form><fieldset><input type='hidden' class='wym_dialog_type' value='"+WYMeditor.DIALOG_IMAGE+"' /><legend>{Image}</legend><div class='row'><label>{URL}</label><input type='text' class='wym_src' value='' size='40' /></div><div class='row'><label>{Alternative_Text}</label><input type='text' class='wym_alt' value='' size='40' /></div><div class='row'><label>{Title}</label><input type='text' class='wym_title' value='' size='40' /></div><div class='row row-indent'><input class='wym_submit' type='submit' value='{Submit}' /><input class='wym_cancel' type='button'value='{Cancel}' /></div></fieldset></form></body>",dialogTableHtml:"<body class='wym_dialog wym_dialog_table' onload='WYMeditor.INIT_DIALOG("+WYMeditor.INDEX+")'><form><fieldset><input type='hidden' class='wym_dialog_type' value='"+WYMeditor.DIALOG_TABLE+"' /><legend>{Table}</legend><div class='row'><label>{Caption}</label><input type='text' class='wym_caption' value='' size='40' /></div><div class='row'><label>{Summary}</label><input type='text' class='wym_summary' value='' size='40' /></div><div class='row'><label>{Number_Of_Rows}</label><input type='text' class='wym_rows' value='3' size='3' /></div><div class='row'><label>{Number_Of_Cols}</label><input type='text' class='wym_cols' value='2' size='3' /></div><div class='row row-indent'><input class='wym_submit' type='submit' value='{Submit}' /><input class='wym_cancel' type='button'value='{Cancel}' /></div></fieldset></form></body>",dialogPasteHtml:"<body class='wym_dialog wym_dialog_paste' onload='WYMeditor.INIT_DIALOG("+WYMeditor.INDEX+")'><form><input type='hidden' class='wym_dialog_type' value='"+WYMeditor.DIALOG_PASTE+"' /><fieldset><legend>{Paste_From_Word}</legend><div class='row'><textarea class='wym_text' rows='10' cols='50'></textarea></div><div class='row'><input class='wym_submit' type='submit' value='{Submit}' /><input class='wym_cancel' type='button'value='{Cancel}' /></div></fieldset></form></body>",dialogPreviewHtml:"<body class='wym_dialog wym_dialog_preview' onload='WYMeditor.INIT_DIALOG("+WYMeditor.INDEX+")'></body>",dialogStyles:[],stringDelimiterLeft:"{",stringDelimiterRight:"}",preInit:null,preBind:null,postInit:null,preInitDialog:null,postInitDialog:null},a);return this.each(function(){new WYMeditor.editor(jQuery(this),a)})};jQuery.extend({wymeditors:function(a){return(WYMeditor.INSTANCES[a])}});WYMeditor.editor.prototype.init=function(){if(jQuery.browser.msie){var WymClass=new WYMeditor.WymClassExplorer(this)}else{if(jQuery.browser.mozilla){var WymClass=new WYMeditor.WymClassMozilla(this)}else{if(jQuery.browser.opera){var WymClass=new WYMeditor.WymClassOpera(this)}else{if(jQuery.browser.safari){var WymClass=new WYMeditor.WymClassSafari(this)}}}}if(WymClass){if(jQuery.isFunction(this._options.preInit)){this._options.preInit(this)}var SaxListener=new WYMeditor.XhtmlSaxListener();jQuery.extend(SaxListener,WymClass);this.parser=new WYMeditor.XhtmlParser(SaxListener);if(this._options.styles||this._options.stylesheet){this.configureEditorUsingRawCss()}this.helper=new WYMeditor.XmlHelper();for(var prop in WymClass){this[prop]=WymClass[prop]}this._box=jQuery(this._element).hide().after(this._options.boxHtml).next().addClass("wym_box_"+this._index);if(jQuery.isFunction(jQuery.fn.data)){jQuery.data(this._box.get(0),WYMeditor.WYM_INDEX,this._index);jQuery.data(this._element.get(0),WYMeditor.WYM_INDEX,this._index)}var h=WYMeditor.Helper;var iframeHtml=this._options.iframeHtml;iframeHtml=h.replaceAll(iframeHtml,WYMeditor.INDEX,this._index);iframeHtml=h.replaceAll(iframeHtml,WYMeditor.IFRAME_BASE_PATH,this._options.iframeBasePath);var boxHtml=jQuery(this._box).html();boxHtml=h.replaceAll(boxHtml,WYMeditor.LOGO,this._options.logoHtml);boxHtml=h.replaceAll(boxHtml,WYMeditor.TOOLS,this._options.toolsHtml);boxHtml=h.replaceAll(boxHtml,WYMeditor.CONTAINERS,this._options.containersHtml);boxHtml=h.replaceAll(boxHtml,WYMeditor.CLASSES,this._options.classesHtml);boxHtml=h.replaceAll(boxHtml,WYMeditor.HTML,this._options.htmlHtml);boxHtml=h.replaceAll(boxHtml,WYMeditor.IFRAME,iframeHtml);boxHtml=h.replaceAll(boxHtml,WYMeditor.STATUS,this._options.statusHtml);var aTools=eval(this._options.toolsItems);var sTools="";for(var i=0;i<aTools.length;i++){var oTool=aTools[i];if(oTool.name&&oTool.title){var sTool=this._options.toolsItemHtml}var sTool=h.replaceAll(sTool,WYMeditor.TOOL_NAME,oTool.name);sTool=h.replaceAll(sTool,WYMeditor.TOOL_TITLE,this._options.stringDelimiterLeft+oTool.title+this._options.stringDelimiterRight);sTool=h.replaceAll(sTool,WYMeditor.TOOL_CLASS,oTool.css);sTools+=sTool}boxHtml=h.replaceAll(boxHtml,WYMeditor.TOOLS_ITEMS,sTools);var aClasses=eval(this._options.classesItems);var sClasses="";for(var i=0;i<aClasses.length;i++){var oClass=aClasses[i];if(oClass.name&&oClass.title){var sClass=this._options.classesItemHtml}sClass=h.replaceAll(sClass,WYMeditor.CLASS_NAME,oClass.name);sClass=h.replaceAll(sClass,WYMeditor.CLASS_TITLE,oClass.title);sClasses+=sClass}boxHtml=h.replaceAll(boxHtml,WYMeditor.CLASSES_ITEMS,sClasses);var aContainers=eval(this._options.containersItems);var sContainers="";for(var i=0;i<aContainers.length;i++){var oContainer=aContainers[i];if(oContainer.name&&oContainer.title){var sContainer=this._options.containersItemHtml}sContainer=h.replaceAll(sContainer,WYMeditor.CONTAINER_NAME,oContainer.name);sContainer=h.replaceAll(sContainer,WYMeditor.CONTAINER_TITLE,this._options.stringDelimiterLeft+oContainer.title+this._options.stringDelimiterRight);sContainer=h.replaceAll(sContainer,WYMeditor.CONTAINER_CLASS,oContainer.css);sContainers+=sContainer}boxHtml=h.replaceAll(boxHtml,WYMeditor.CONTAINERS_ITEMS,sContainers);boxHtml=this.replaceStrings(boxHtml);jQuery(this._box).html(boxHtml);jQuery(this._box).find(this._options.htmlSelector).hide();this.loadSkin()}};WYMeditor.editor.prototype.bindEvents=function(){var wym=this;jQuery(this._box).find(this._options.toolSelector).click(function(){wym._iframe.contentWindow.focus();wym.exec(jQuery(this).attr(WYMeditor.NAME));return(false)});jQuery(this._box).find(this._options.containerSelector).click(function(){wym.container(jQuery(this).attr(WYMeditor.NAME));return(false)});jQuery(this._box).find(this._options.htmlValSelector).keyup(function(){jQuery(wym._doc.body).html(jQuery(this).val())}).focus(function(){jQuery(this).toggleClass("hasfocus")}).blur(function(){jQuery(this).toggleClass("hasfocus")});jQuery(this._box).find(this._options.classSelector).click(function(){var aClasses=eval(wym._options.classesItems);var sName=jQuery(this).attr(WYMeditor.NAME);var oClass=WYMeditor.Helper.findByName(aClasses,sName);if(oClass){var jqexpr=oClass.expr;wym.toggleClass(sName,jqexpr)}wym._iframe.contentWindow.focus();return(false)});jQuery(this._options.updateSelector).bind(this._options.updateEvent,function(){wym.update()})};WYMeditor.editor.prototype.ready=function(){return(this._doc!=null)};WYMeditor.editor.prototype.box=function(){return(this._box)};WYMeditor.editor.prototype.html=function(a){if(typeof a==="string"){jQuery(this._doc.body).html(a)}else{return(jQuery(this._doc.body).html())}};WYMeditor.editor.prototype.xhtml=function(){return this.parser.parse(this.html())};WYMeditor.editor.prototype.exec=function(b){switch(b){case WYMeditor.CREATE_LINK:var a=this.container();if(a||this._selected_image){this.dialog(WYMeditor.DIALOG_LINK)}break;case WYMeditor.INSERT_IMAGE:this.dialog(WYMeditor.DIALOG_IMAGE);break;case WYMeditor.INSERT_TABLE:this.dialog(WYMeditor.DIALOG_TABLE);break;case WYMeditor.PASTE:this.dialog(WYMeditor.DIALOG_PASTE);break;case WYMeditor.TOGGLE_HTML:this.update();this.toggleHtml();break;case WYMeditor.PREVIEW:this.dialog(WYMeditor.PREVIEW,this._options.dialogFeaturesPreview);break;default:this._exec(b);break}};WYMeditor.editor.prototype.container=function(a){if(a){var d=null;if(a.toLowerCase()==WYMeditor.TH){d=this.container();switch(d.tagName.toLowerCase()){case WYMeditor.TD:case WYMeditor.TH:break;default:var e=new Array(WYMeditor.TD,WYMeditor.TH);d=this.findUp(this.container(),e);break}if(d!=null){a=(d.tagName.toLowerCase()==WYMeditor.TD)?WYMeditor.TH:WYMeditor.TD;this.switchTo(d,a);this.update()}}else{var e=new Array(WYMeditor.P,WYMeditor.H1,WYMeditor.H2,WYMeditor.H3,WYMeditor.H4,WYMeditor.H5,WYMeditor.H6,WYMeditor.PRE,WYMeditor.BLOCKQUOTE);d=this.findUp(this.container(),e);if(d){var i=null;if(a.toLowerCase()==WYMeditor.BLOCKQUOTE){var f=this.findUp(this.container(),WYMeditor.BLOCKQUOTE);if(f==null){i=this._doc.createElement(a);d.parentNode.insertBefore(i,d);i.appendChild(d);this.setFocusToNode(i.firstChild)}else{var c=f.childNodes;var g=c.length;var b=null;if(g>0){b=c.item(0)}for(var h=0;h<g;h++){f.parentNode.insertBefore(c.item(0),f)}f.parentNode.removeChild(f);if(b){this.setFocusToNode(b)}}}else{this.switchTo(d,a)}this.update()}}}else{return(this.selected())}};WYMeditor.editor.prototype.toggleClass=function(c,b){var a=(this._selected_image?this._selected_image:jQuery(this.selected()));a=jQuery(a).parentsOrSelf(b);jQuery(a).toggleClass(c);if(!jQuery(a).attr(WYMeditor.CLASS)){jQuery(a).removeAttr(this._class)}};WYMeditor.editor.prototype.findUp=function(d,c){if(d){var e=d.tagName.toLowerCase();if(typeof(c)==WYMeditor.STRING){while(e!=c&&e!=WYMeditor.BODY){d=d.parentNode;e=d.tagName.toLowerCase()}}else{var b=false;while(!b&&e!=WYMeditor.BODY){for(var a=0;a<c.length;a++){if(e==c[a]){b=true;break}}if(!b){d=d.parentNode;e=d.tagName.toLowerCase()}}}if(e!=WYMeditor.BODY){return(d)}else{return(null)}}else{return(null)}};WYMeditor.editor.prototype.switchTo=function(c,d){var b=this._doc.createElement(d);var a=jQuery(c).html();c.parentNode.replaceChild(b,c);jQuery(b).html(a);this.setFocusToNode(b)};WYMeditor.editor.prototype.replaceStrings=function(sVal){if(!WYMeditor.STRINGS[this._options.lang]){try{eval(jQuery.ajax({url:this._options.langPath+this._options.lang+".js",async:false}).responseText)}catch(e){WYMeditor.console.error("WYMeditor: error while parsing language file.");return sVal}}for(var key in WYMeditor.STRINGS[this._options.lang]){sVal=WYMeditor.Helper.replaceAll(sVal,this._options.stringDelimiterLeft+key+this._options.stringDelimiterRight,WYMeditor.STRINGS[this._options.lang][key])}return(sVal)};WYMeditor.editor.prototype.encloseString=function(a){return(this._options.stringDelimiterLeft+a+this._options.stringDelimiterRight)};WYMeditor.editor.prototype.status=function(a){jQuery(this._box).find(this._options.statusSelector).html(a)};WYMeditor.editor.prototype.update=function(){var a;jQuery(this._doc.body).children(WYMeditor.BR).remove();a=this.xhtml();jQuery(this._element).val(a);jQuery(this._box).find(this._options.htmlValSelector).not(".hasfocus").val(a)};WYMeditor.editor.prototype.dialog=function(j,c,f){var a=c||this._wym._options.dialogFeatures;var d=window.open("","dialog",a);if(d){var b="";switch(j){case (WYMeditor.DIALOG_LINK):b=this._options.dialogLinkHtml;break;case (WYMeditor.DIALOG_IMAGE):b=this._options.dialogImageHtml;break;case (WYMeditor.DIALOG_TABLE):b=this._options.dialogTableHtml;break;case (WYMeditor.DIALOG_PASTE):b=this._options.dialogPasteHtml;break;case (WYMeditor.PREVIEW):b=this._options.dialogPreviewHtml;break;default:b=f}var e=WYMeditor.Helper;var g=this._options.dialogHtml;g=e.replaceAll(g,WYMeditor.BASE_PATH,this._options.basePath);g=e.replaceAll(g,WYMeditor.DIRECTION,this._options.direction);g=e.replaceAll(g,WYMeditor.CSS_PATH,this._options.skinPath+WYMeditor.SKINS_DEFAULT_CSS);g=e.replaceAll(g,WYMeditor.WYM_PATH,this._options.wymPath);g=e.replaceAll(g,WYMeditor.JQUERY_PATH,this._options.jQueryPath);g=e.replaceAll(g,WYMeditor.DIALOG_TITLE,this.encloseString(j));g=e.replaceAll(g,WYMeditor.DIALOG_BODY,b);g=e.replaceAll(g,WYMeditor.INDEX,this._index);g=this.replaceStrings(g);var i=d.document;i.write(g);i.close()}};WYMeditor.editor.prototype.toggleHtml=function(){jQuery(this._box).find(this._options.htmlSelector).toggle()};WYMeditor.editor.prototype.uniqueStamp=function(){var a=new Date();return("wym-"+a.getTime())};WYMeditor.editor.prototype.paste=function(g){var b=this.selected(),d="",e,f;e=g.split(new RegExp(this._newLine+"{2,}","g"));for(var c=0,a=e.length;c<a;c++){d+="<p>"+(e[c].split(this._newLine).join("<br />"))+"</p>"}if(b&&b.tagName.toLowerCase()!=WYMeditor.BODY){e=jQuery(d,this._doc).insertAfter(b);f=e[e.length-1]}else{e=jQuery(d,this._doc).appendTo(this._doc.body);f=e[e.length-1]}if(jQuery(b).text()==""){jQuery(b).remove()}jQuery("body > br",this._doc).remove();this.setFocusToNode(f)};WYMeditor.editor.prototype.insert=function(b){var c=this._iframe.contentWindow.getSelection(),a,d;if(c.focusNode!=null){a=c.getRangeAt(0);d=a.createContextualFragment(b);a.deleteContents();a.insertNode(d)}else{this.paste(b)}};WYMeditor.editor.prototype.wrap=function(b,a){this.insert(b+this._iframe.contentWindow.getSelection().toString()+a)};WYMeditor.editor.prototype.unwrap=function(){this.insert(this._iframe.contentWindow.getSelection().toString())};WYMeditor.editor.prototype.setFocusToNode=function(d,b){var a=this._doc.createRange(),c=this._iframe.contentWindow.getSelection();b=b?0:1;a.selectNodeContents(d);c.addRange(a);c.collapse(d,b);this._iframe.contentWindow.focus()};WYMeditor.editor.prototype.addCssRules=function(e,c){var b=e.styleSheets[0];if(b){for(var a=0;a<c.length;a++){var d=c[a];if(d.name&&d.css){this.addCssRule(b,d)}}}};WYMeditor.editor.prototype.computeBasePath=function(){return jQuery(jQuery.grep(jQuery("script"),function(a){return(a.src&&a.src.match(/jquery\.wymeditor(\.pack|\.min|\.packed)?\.js(\?.*)?$/))})).attr("src").replace(/jquery\.wymeditor(\.pack|\.min|\.packed)?\.js(\?.*)?$/,"")};WYMeditor.editor.prototype.computeWymPath=function(){return jQuery(jQuery.grep(jQuery("script"),function(a){return(a.src&&a.src.match(/jquery\.wymeditor(\.pack|\.min|\.packed)?\.js(\?.*)?$/))})).attr("src")};WYMeditor.editor.prototype.computeJqueryPath=function(){return jQuery(jQuery.grep(jQuery("script"),function(a){return(a.src&&a.src.match(/jquery(-(.*)){0,1}(\.pack|\.min|\.packed)?\.js(\?.*)?$/))})).attr("src")};WYMeditor.editor.prototype.computeCssPath=function(){return jQuery(jQuery.grep(jQuery("link"),function(a){return(a.href&&a.href.match(/wymeditor\/skins\/(.*)screen\.css(\?.*)?$/))})).attr("href")};WYMeditor.editor.prototype.configureEditorUsingRawCss=function(){var a=new WYMeditor.WymCssParser();if(this._options.stylesheet){a.parse(jQuery.ajax({url:this._options.stylesheet,async:false}).responseText)}else{a.parse(this._options.styles,false)}if(this._options.classesItems.length==0){this._options.classesItems=a.css_settings.classesItems}if(this._options.editorStyles.length==0){this._options.editorStyles=a.css_settings.editorStyles}if(this._options.dialogStyles.length==0){this._options.dialogStyles=a.css_settings.dialogStyles}};WYMeditor.editor.prototype.listen=function(){jQuery(this._doc.body).bind("mousedown",this.mousedown)};WYMeditor.editor.prototype.mousedown=function(a){var b=WYMeditor.INSTANCES[this.ownerDocument.title];b._selected_image=(a.target.tagName.toLowerCase()==WYMeditor.IMG)?a.target:null};WYMeditor.loadCss=function(a){var c=document.createElement("link");c.rel="stylesheet";c.href=a;var b=jQuery("head").get(0);b.appendChild(c)};WYMeditor.editor.prototype.loadSkin=function(){if(this._options.loadSkin&&!WYMeditor.SKINS[this._options.skin]){var found=false;var rExp=new RegExp(this._options.skin+"/"+WYMeditor.SKINS_DEFAULT_CSS+"$");jQuery("link").each(function(){if(this.href.match(rExp)){found=true}});if(!found){WYMeditor.loadCss(this._options.skinPath+WYMeditor.SKINS_DEFAULT_CSS)}}jQuery(this._box).addClass("wym_skin_"+this._options.skin);if(this._options.initSkin&&!WYMeditor.SKINS[this._options.skin]){eval(jQuery.ajax({url:this._options.skinPath+WYMeditor.SKINS_DEFAULT_JS,async:false}).responseText)}if(WYMeditor.SKINS[this._options.skin]&&WYMeditor.SKINS[this._options.skin].init){WYMeditor.SKINS[this._options.skin].init(this)}};WYMeditor.INIT_DIALOG=function(index){var wym=window.opener.WYMeditor.INSTANCES[index];var doc=window.document;var selected=wym.selected();var dialogType=jQuery(wym._options.dialogTypeSelector).val();var sStamp=wym.uniqueStamp();switch(dialogType){case WYMeditor.DIALOG_LINK:if(selected&&selected.tagName&&selected.tagName.toLowerCase!=WYMeditor.A){selected=jQuery(selected).parentsOrSelf(WYMeditor.A)}if(!selected&&wym._selected_image){selected=jQuery(wym._selected_image).parentsOrSelf(WYMeditor.A)}break}if(jQuery.isFunction(wym._options.preInitDialog)){wym._options.preInitDialog(wym,window)}var styles=doc.styleSheets[0];var aCss=eval(wym._options.dialogStyles);wym.addCssRules(doc,aCss);if(selected){jQuery(wym._options.hrefSelector).val(jQuery(selected).attr(WYMeditor.HREF));jQuery(wym._options.srcSelector).val(jQuery(selected).attr(WYMeditor.SRC));jQuery(wym._options.titleSelector).val(jQuery(selected).attr(WYMeditor.TITLE));jQuery(wym._options.relSelector).val(jQuery(selected).attr(WYMeditor.REL));jQuery(wym._options.altSelector).val(jQuery(selected).attr(WYMeditor.ALT))}if(wym._selected_image){jQuery(wym._options.dialogImageSelector+" "+wym._options.srcSelector).val(jQuery(wym._selected_image).attr(WYMeditor.SRC));jQuery(wym._options.dialogImageSelector+" "+wym._options.titleSelector).val(jQuery(wym._selected_image).attr(WYMeditor.TITLE));jQuery(wym._options.dialogImageSelector+" "+wym._options.altSelector).val(jQuery(wym._selected_image).attr(WYMeditor.ALT))}jQuery(wym._options.dialogLinkSelector+" "+wym._options.submitSelector).submit(function(){var sUrl=jQuery(wym._options.hrefSelector).val();if(sUrl.length>0){var link;if(selected[0]&&selected[0].tagName.toLowerCase()==WYMeditor.A){link=selected}else{wym._exec(WYMeditor.CREATE_LINK,sStamp);link=jQuery("a[href="+sStamp+"]",wym._doc.body)}link.attr(WYMeditor.HREF,sUrl).attr(WYMeditor.TITLE,jQuery(wym._options.titleSelector).val()).attr(WYMeditor.REL,jQuery(wym._options.relSelector).val())}window.close()});jQuery(wym._options.dialogImageSelector+" "+wym._options.submitSelector).submit(function(){var sUrl=jQuery(wym._options.srcSelector).val();if(sUrl.length>0){wym._exec(WYMeditor.INSERT_IMAGE,sStamp);jQuery("img[src$="+sStamp+"]",wym._doc.body).attr(WYMeditor.SRC,sUrl).attr(WYMeditor.TITLE,jQuery(wym._options.titleSelector).val()).attr(WYMeditor.ALT,jQuery(wym._options.altSelector).val())}window.close()});jQuery(wym._options.dialogTableSelector+" "+wym._options.submitSelector).submit(function(){var iRows=jQuery(wym._options.rowsSelector).val();var iCols=jQuery(wym._options.colsSelector).val();if(iRows>0&&iCols>0){var table=wym._doc.createElement(WYMeditor.TABLE);var newRow=null;var newCol=null;var sCaption=jQuery(wym._options.captionSelector).val();var newCaption=table.createCaption();newCaption.innerHTML=sCaption;for(x=0;x<iRows;x++){newRow=table.insertRow(x);for(y=0;y<iCols;y++){newRow.insertCell(y)}}jQuery(table).attr("summary",jQuery(wym._options.summarySelector).val());var node=jQuery(wym.findUp(wym.container(),WYMeditor.MAIN_CONTAINERS)).get(0);if(!node||!node.parentNode){jQuery(wym._doc.body).append(table)}else{jQuery(node).after(table)}}window.close()});jQuery(wym._options.dialogPasteSelector+" "+wym._options.submitSelector).submit(function(){var sText=jQuery(wym._options.textSelector).val();wym.paste(sText);window.close()});jQuery(wym._options.dialogPreviewSelector+" "+wym._options.previewSelector).html(wym.xhtml());jQuery(wym._options.cancelSelector).mousedown(function(){window.close()});if(jQuery.isFunction(wym._options.postInitDialog)){wym._options.postInitDialog(wym,window)}};WYMeditor.XmlHelper=function(){this._entitiesDiv=document.createElement("div");return this};WYMeditor.XmlHelper.prototype.tag=function(c,b,a){b=b||false;a=a||false;return"<"+c+(b?this.tagOptions(b):"")+(a?">":" />")};WYMeditor.XmlHelper.prototype.contentTag=function(b,c,a){a=a||false;return"<"+b+(a?this.tagOptions(a):"")+">"+c+"</"+b+">"};WYMeditor.XmlHelper.prototype.cdataSection=function(a){return"<![CDATA["+a+"]]>"};WYMeditor.XmlHelper.prototype.escapeOnce=function(a){return this._fixDoubleEscape(this.escapeEntities(a))};WYMeditor.XmlHelper.prototype._fixDoubleEscape=function(a){return a.replace(/&amp;([a-z]+|(#\d+));/ig,"&$1;")};WYMeditor.XmlHelper.prototype.tagOptions=function(b){var a=this;a._formated_options="";for(var c in b){var d="";var e=b[c];if(typeof e!="function"&&e.length>0){if(parseInt(c)==c&&typeof e=="object"){c=e.shift();e=e.pop()}if(c!=""&&e!=""){a._formated_options+=" "+c+'="'+a.escapeOnce(e)+'"'}}}return a._formated_options};WYMeditor.XmlHelper.prototype.escapeEntities=function(c,b){this._entitiesDiv.innerHTML=c;this._entitiesDiv.textContent=c;var a=this._entitiesDiv.innerHTML;if(typeof b=="undefined"){if(b!=false){a=a.replace('"',"&quot;")}if(b==true){a=a.replace('"',"&#039;")}}return a};WYMeditor.XmlHelper.prototype.parseAttributes=function(h){var a=[];var g=h.split(/((=\s*")(")("))|((=\s*\')(\')(\'))|((=\s*[^>\s]*))/g);if(g.toString()!=h){for(var d in g){var c=g[d];if(typeof c!="function"&&c.length!=0){var e=new RegExp("(\\w+)\\s*"+c);if(match=h.match(e)){var f=c.replace(/^[\s=]+/,"");var b=f.charAt(0);b=b=='"'?'"':(b=="'"?"'":"");if(b!=""){f=b=='"'?f.replace(/^"|"+$/g,""):f.replace(/^'|'+$/g,"")}h=h.replace(match[0],"");a.push([match[1],f])}}}}return a};WYMeditor.XhtmlValidator={_attributes:{core:{except:["base","head","html","meta","param","script","style","title"],attributes:["class","id","style","title","accesskey","tabindex"]},language:{except:["base","br","hr","iframe","param","script"],attributes:{dir:["ltr","rtl"],"0":"lang","1":"xml:lang"}},keyboard:{attributes:{accesskey:/^(\w){1}$/,tabindex:/^(\d)+$/}}},_events:{window:{only:["body"],attributes:["onload","onunload"]},form:{only:["form","input","textarea","select","a","label","button"],attributes:["onchange","onsubmit","onreset","onselect","onblur","onfocus"]},keyboard:{except:["base","bdo","br","frame","frameset","head","html","iframe","meta","param","script","style","title"],attributes:["onkeydown","onkeypress","onkeyup"]},mouse:{except:["base","bdo","br","head","html","meta","param","script","style","title"],attributes:["onclick","ondblclick","onmousedown","onmousemove","onmouseover","onmouseout","onmouseup"]}},_tags:{a:{attributes:{"0":"charset","1":"coords","2":"href","3":"hreflang","4":"name","5":"rel","6":"rev",shape:/^(rect|rectangle|circ|circle|poly|polygon)$/,"7":"type"}},"0":"abbr","1":"acronym","2":"address",area:{attributes:{"0":"alt","1":"coords","2":"href",nohref:/^(true|false)$/,shape:/^(rect|rectangle|circ|circle|poly|polygon)$/},required:["alt"]},"3":"b",base:{attributes:["href"],required:["href"]},bdo:{attributes:{dir:/^(ltr|rtl)$/},required:["dir"]},"4":"big",blockquote:{attributes:["cite"]},"5":"body","6":"br",button:{attributes:{disabled:/^(disabled)$/,type:/^(button|reset|submit)$/,"0":"value"},inside:"form"},"7":"caption","8":"cite","9":"code",col:{attributes:{align:/^(right|left|center|justify)$/,"0":"char","1":"charoff",span:/^(\d)+$/,valign:/^(top|middle|bottom|baseline)$/,"2":"width"},inside:"colgroup"},colgroup:{attributes:{align:/^(right|left|center|justify)$/,"0":"char","1":"charoff",span:/^(\d)+$/,valign:/^(top|middle|bottom|baseline)$/,"2":"width"}},"10":"dd",del:{attributes:{"0":"cite",datetime:/^([0-9]){8}/}},"11":"div","12":"dfn","13":"dl","14":"dt","15":"em",fieldset:{inside:"form"},form:{attributes:{"0":"action","1":"accept","2":"accept-charset","3":"enctype",method:/^(get|post)$/},required:["action"]},head:{attributes:["profile"]},"16":"h1","17":"h2","18":"h3","19":"h4","20":"h5","21":"h6","22":"hr",html:{attributes:["xmlns"]},"23":"i",img:{attributes:["alt","src","height","ismap","longdesc","usemap","width"],required:["alt","src"]},input:{attributes:{"0":"accept","1":"alt",checked:/^(checked)$/,disabled:/^(disabled)$/,maxlength:/^(\d)+$/,"2":"name",readonly:/^(readonly)$/,size:/^(\d)+$/,"3":"src",type:/^(button|checkbox|file|hidden|image|password|radio|reset|submit|text)$/,"4":"value"},inside:"form"},ins:{attributes:{"0":"cite",datetime:/^([0-9]){8}/}},"24":"kbd",label:{attributes:["for"],inside:"form"},"25":"legend","26":"li",link:{attributes:{"0":"charset","1":"href","2":"hreflang",media:/^(all|braille|print|projection|screen|speech|,|;| )+$/i,rel:/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,rev:/^(alternate|appendix|bookmark|chapter|contents|copyright|glossary|help|home|index|next|prev|section|start|stylesheet|subsection| |shortcut|icon)+$/i,"3":"type"},inside:"head"},map:{attributes:["id","name"],required:["id"]},meta:{attributes:{"0":"content","http-equiv":/^(content\-type|expires|refresh|set\-cookie)$/i,"1":"name","2":"scheme"},required:["content"]},"27":"noscript",object:{attributes:["archive","classid","codebase","codetype","data","declare","height","name","standby","type","usemap","width"]},"28":"ol",optgroup:{attributes:{"0":"label",disabled:/^(disabled)$/},required:["label"]},option:{attributes:{"0":"label",disabled:/^(disabled)$/,selected:/^(selected)$/,"1":"value"},inside:"select"},"29":"p",param:{attributes:{"0":"type",valuetype:/^(data|ref|object)$/,"1":"valuetype","2":"value"},required:["name"]},"30":"pre",q:{attributes:["cite"]},"31":"samp",script:{attributes:{type:/^(text\/ecmascript|text\/javascript|text\/jscript|text\/vbscript|text\/vbs|text\/xml)$/,"0":"charset",defer:/^(defer)$/,"1":"src"},required:["type"]},select:{attributes:{disabled:/^(disabled)$/,multiple:/^(multiple)$/,"0":"name","1":"size"},inside:"form"},"32":"small","33":"span","34":"strong",style:{attributes:{"0":"type",media:/^(screen|tty|tv|projection|handheld|print|braille|aural|all)$/},required:["type"]},"35":"sub","36":"sup",table:{attributes:{"0":"border","1":"cellpadding","2":"cellspacing",frame:/^(void|above|below|hsides|lhs|rhs|vsides|box|border)$/,rules:/^(none|groups|rows|cols|all)$/,"3":"summary","4":"width"}},tbody:{attributes:{align:/^(right|left|center|justify)$/,"0":"char","1":"charoff",valign:/^(top|middle|bottom|baseline)$/}},td:{attributes:{"0":"abbr",align:/^(left|right|center|justify|char)$/,"1":"axis","2":"char","3":"charoff",colspan:/^(\d)+$/,"4":"headers",rowspan:/^(\d)+$/,scope:/^(col|colgroup|row|rowgroup)$/,valign:/^(top|middle|bottom|baseline)$/}},textarea:{attributes:["cols","rows","disabled","name","readonly"],required:["cols","rows"],inside:"form"},tfoot:{attributes:{align:/^(right|left|center|justify)$/,"0":"char","1":"charoff",valign:/^(top|middle|bottom)$/,"2":"baseline"}},th:{attributes:{"0":"abbr",align:/^(left|right|center|justify|char)$/,"1":"axis","2":"char","3":"charoff",colspan:/^(\d)+$/,"4":"headers",rowspan:/^(\d)+$/,scope:/^(col|colgroup|row|rowgroup)$/,valign:/^(top|middle|bottom|baseline)$/}},thead:{attributes:{align:/^(right|left|center|justify)$/,"0":"char","1":"charoff",valign:/^(top|middle|bottom|baseline)$/}},"37":"title",tr:{attributes:{align:/^(right|left|center|justify|char)$/,"0":"char","1":"charoff",valign:/^(top|middle|bottom|baseline)$/}},"38":"tt","39":"ul","40":"var"},skiped_attributes:[],skiped_attribute_values:[],getValidTagAttributes:function(a,b){var c={};var g=this.getPossibleTagAttributes(a);for(var e in b){var f=b[e];var d=WYMeditor.Helper;if(!d.contains(this.skiped_attributes,e)&&!d.contains(this.skiped_attribute_values,f)){if(typeof f!="function"&&d.contains(g,e)){if(this.doesAttributeNeedsValidation(a,e)){if(this.validateAttribute(a,e,f)){c[e]=f}}else{c[e]=f}}}}return c},getUniqueAttributesAndEventsForTag:function(b){var a=[];if(this._tags[b]&&this._tags[b]["attributes"]){for(k in this._tags[b]["attributes"]){a.push(parseInt(k)==k?this._tags[b]["attributes"][k]:k)}}return a},getDefaultAttributesAndEventsForTags:function(){var a=[];for(var b in this._events){a.push(this._events[b])}for(var b in this._attributes){a.push(this._attributes[b])}return a},isValidTag:function(a){if(this._tags[a]){return true}for(var b in this._tags){if(this._tags[b]==a){return true}}return false},getDefaultAttributesAndEventsForTag:function(a){var i=[];if(this.isValidTag(a)){var g=this.getDefaultAttributesAndEventsForTags();for(var d in g){var f=g[d];if(typeof f=="object"){var e=WYMeditor.Helper;if((f.except&&e.contains(f.except,a))||(f.only&&!e.contains(f.only,a))){continue}var c=f.attributes?f.attributes:f.events;for(var b in c){i.push(typeof c[b]!="string"?b:c[b])}}}}return i},doesAttributeNeedsValidation:function(a,b){return this._tags[a]&&((this._tags[a]["attributes"]&&this._tags[a]["attributes"][b])||(this._tags[a]["required"]&&WYMeditor.Helper.contains(this._tags[a]["required"],b)))},validateAttribute:function(a,b,c){if(this._tags[a]&&(this._tags[a]["attributes"]&&this._tags[a]["attributes"][b]&&c.length>0&&!c.match(this._tags[a]["attributes"][b]))||(this._tags[a]&&this._tags[a]["required"]&&WYMeditor.Helper.contains(this._tags[a]["required"],b)&&c.length==0)){return false}return typeof this._tags[a]!="undefined"},getPossibleTagAttributes:function(a){if(!this._possible_tag_attributes){this._possible_tag_attributes={}}if(!this._possible_tag_attributes[a]){this._possible_tag_attributes[a]=this.getUniqueAttributesAndEventsForTag(a).concat(this.getDefaultAttributesAndEventsForTag(a))}return this._possible_tag_attributes[a]}};WYMeditor.ParallelRegex=function(a){this._case=a;this._patterns=[];this._labels=[];this._regex=null;return this};WYMeditor.ParallelRegex.prototype.addPattern=function(c,a){a=a||true;var b=this._patterns.length;this._patterns[b]=c;this._labels[b]=a;this._regex=null};WYMeditor.ParallelRegex.prototype.match=function(c){if(this._patterns.length==0){return[false,""]}var d=c.match(this._getCompoundedRegex());if(!d){return[false,""]}var a=d[0];for(var b=1;b<d.length;b++){if(d[b]){return[this._labels[b-1],a]}}return[true,d[0]]};WYMeditor.ParallelRegex.prototype._getCompoundedRegex=function(){if(this._regex==null){for(var a=0,b=this._patterns.length;a<b;a++){this._patterns[a]="("+this._untokenizeRegex(this._tokenizeRegex(this._patterns[a]).replace(/([\/\(\)])/g,"\\$1"))+")"}this._regex=new RegExp(this._patterns.join("|"),this._getPerlMatchingFlags())}return this._regex};WYMeditor.ParallelRegex.prototype._tokenizeRegex=function(a){return a.replace(/\(\?(i|m|s|x|U)\)/,"~~~~~~Tk1$1~~~~~~").replace(/\(\?(\-[i|m|s|x|U])\)/,"~~~~~~Tk2$1~~~~~~").replace(/\(\?\=(.*)\)/,"~~~~~~Tk3$1~~~~~~").replace(/\(\?\!(.*)\)/,"~~~~~~Tk4$1~~~~~~").replace(/\(\?\<\=(.*)\)/,"~~~~~~Tk5$1~~~~~~").replace(/\(\?\<\!(.*)\)/,"~~~~~~Tk6$1~~~~~~").replace(/\(\?\:(.*)\)/,"~~~~~~Tk7$1~~~~~~")};WYMeditor.ParallelRegex.prototype._untokenizeRegex=function(a){return a.replace(/~~~~~~Tk1(.{1})~~~~~~/,"(?$1)").replace(/~~~~~~Tk2(.{2})~~~~~~/,"(?$1)").replace(/~~~~~~Tk3(.*)~~~~~~/,"(?=$1)").replace(/~~~~~~Tk4(.*)~~~~~~/,"(?!$1)").replace(/~~~~~~Tk5(.*)~~~~~~/,"(?<=$1)").replace(/~~~~~~Tk6(.*)~~~~~~/,"(?<!$1)").replace(/~~~~~~Tk7(.*)~~~~~~/,"(?:$1)")};WYMeditor.ParallelRegex.prototype._getPerlMatchingFlags=function(){return(this._case?"m":"mi")};WYMeditor.StateStack=function(a){this._stack=[a];return this};WYMeditor.StateStack.prototype.getCurrent=function(){return this._stack[this._stack.length-1]};WYMeditor.StateStack.prototype.enter=function(a){this._stack.push(a)};WYMeditor.StateStack.prototype.leave=function(){if(this._stack.length==1){return false}this._stack.pop();return true};WYMeditor.LEXER_ENTER=1;WYMeditor.LEXER_MATCHED=2;WYMeditor.LEXER_UNMATCHED=3;WYMeditor.LEXER_EXIT=4;WYMeditor.LEXER_SPECIAL=5;WYMeditor.Lexer=function(c,b,a){b=b||"accept";this._case=a||false;this._regexes={};this._parser=c;this._mode=new WYMeditor.StateStack(b);this._mode_handlers={};this._mode_handlers[b]=b;return this};WYMeditor.Lexer.prototype.addPattern=function(a,b){var b=b||"accept";if(typeof this._regexes[b]=="undefined"){this._regexes[b]=new WYMeditor.ParallelRegex(this._case)}this._regexes[b].addPattern(a);if(typeof this._mode_handlers[b]=="undefined"){this._mode_handlers[b]=b}};WYMeditor.Lexer.prototype.addEntryPattern=function(b,c,a){if(typeof this._regexes[c]=="undefined"){this._regexes[c]=new WYMeditor.ParallelRegex(this._case)}this._regexes[c].addPattern(b,a);if(typeof this._mode_handlers[a]=="undefined"){this._mode_handlers[a]=a}};WYMeditor.Lexer.prototype.addExitPattern=function(a,b){if(typeof this._regexes[b]=="undefined"){this._regexes[b]=new WYMeditor.ParallelRegex(this._case)}this._regexes[b].addPattern(a,"__exit");if(typeof this._mode_handlers[b]=="undefined"){this._mode_handlers[b]=b}};WYMeditor.Lexer.prototype.addSpecialPattern=function(b,c,a){if(typeof this._regexes[c]=="undefined"){this._regexes[c]=new WYMeditor.ParallelRegex(this._case)}this._regexes[c].addPattern(b,"_"+a);if(typeof this._mode_handlers[a]=="undefined"){this._mode_handlers[a]=a}};WYMeditor.Lexer.prototype.mapHandler=function(b,a){this._mode_handlers[b]=a};WYMeditor.Lexer.prototype.parse=function(d){if(typeof this._parser=="undefined"){return false}var e=d.length;var c;while(typeof(c=this._reduce(d))=="object"){var d=c[0];var b=c[1];var a=c[2];var f=c[3];if(!this._dispatchTokens(b,a,f)){return false}if(d==""){return true}if(d.length==e){return false}e=d.length}if(!c){return false}return this._invokeParser(d,WYMeditor.LEXER_UNMATCHED)};WYMeditor.Lexer.prototype._dispatchTokens=function(b,a,c){c=c||false;if(!this._invokeParser(b,WYMeditor.LEXER_UNMATCHED)){return false}if(typeof c=="boolean"){return this._invokeParser(a,WYMeditor.LEXER_MATCHED)}if(this._isModeEnd(c)){if(!this._invokeParser(a,WYMeditor.LEXER_EXIT)){return false}return this._mode.leave()}if(this._isSpecialMode(c)){this._mode.enter(this._decodeSpecial(c));if(!this._invokeParser(a,WYMeditor.LEXER_SPECIAL)){return false}return this._mode.leave()}this._mode.enter(c);return this._invokeParser(a,WYMeditor.LEXER_ENTER)};WYMeditor.Lexer.prototype._isModeEnd=function(a){return(a==="__exit")};WYMeditor.Lexer.prototype._isSpecialMode=function(a){return(a.substring(0,1)=="_")};WYMeditor.Lexer.prototype._decodeSpecial=function(a){return a.substring(1)};WYMeditor.Lexer.prototype._invokeParser=function(content,is_match){if(content===""){return true}var current=this._mode.getCurrent();var handler=this._mode_handlers[current];var result;eval("result = this._parser."+handler+"(content, is_match);");return result};WYMeditor.Lexer.prototype._reduce=function(c){var a=this._regexes[this._mode.getCurrent()].match(c);var b=a[1];var e=a[0];if(e){var f=c.indexOf(b);var d=c.substr(0,f);c=c.substring(f+b.length);return[c,d,b,e]}return true};WYMeditor.XhtmlLexer=function(a){jQuery.extend(this,new WYMeditor.Lexer(a,"Text"));this.mapHandler("Text","Text");this.addTokens();this.init();return this};WYMeditor.XhtmlLexer.prototype.init=function(){};WYMeditor.XhtmlLexer.prototype.addTokens=function(){this.addCommentTokens("Text");this.addScriptTokens("Text");this.addCssTokens("Text");this.addTagTokens("Text")};WYMeditor.XhtmlLexer.prototype.addCommentTokens=function(a){this.addEntryPattern("<!--",a,"Comment");this.addExitPattern("-->","Comment")};WYMeditor.XhtmlLexer.prototype.addScriptTokens=function(a){this.addEntryPattern("<script",a,"Script");this.addExitPattern("<\/script>","Script")};WYMeditor.XhtmlLexer.prototype.addCssTokens=function(a){this.addEntryPattern("<style",a,"Css");this.addExitPattern("</style>","Css")};WYMeditor.XhtmlLexer.prototype.addTagTokens=function(a){this.addSpecialPattern("<\\s*[a-z0-9:-]+\\s*>",a,"OpeningTag");this.addEntryPattern("<[a-z0-9:-]+[\\/ \\>]+",a,"OpeningTag");this.addInTagDeclarationTokens("OpeningTag");this.addSpecialPattern("</\\s*[a-z0-9:-]+\\s*>",a,"ClosingTag")};WYMeditor.XhtmlLexer.prototype.addInTagDeclarationTokens=function(a){this.addSpecialPattern("\\s+",a,"Ignore");this.addAttributeTokens(a);this.addExitPattern("/>",a);this.addExitPattern(">",a)};WYMeditor.XhtmlLexer.prototype.addAttributeTokens=function(a){this.addSpecialPattern("\\s*[a-z-_0-9]*:?[a-z-_0-9]+\\s*(?==)\\s*",a,"TagAttributes");this.addEntryPattern('=\\s*"',a,"DoubleQuotedAttribute");this.addPattern('\\\\"',"DoubleQuotedAttribute");this.addExitPattern('"',"DoubleQuotedAttribute");this.addEntryPattern("=\\s*'",a,"SingleQuotedAttribute");this.addPattern("\\\\'","SingleQuotedAttribute");this.addExitPattern("'","SingleQuotedAttribute");this.addSpecialPattern("=\\s*[^>\\s]*",a,"UnquotedAttribute")};WYMeditor.XhtmlParser=function(a,b){var b=b||"Text";this._Lexer=new WYMeditor.XhtmlLexer(this);this._Listener=a;this._mode=b;this._matches=[];this._last_match="";this._current_match="";return this};WYMeditor.XhtmlParser.prototype.parse=function(a){this._Lexer.parse(this.beforeParsing(a));return this.afterParsing(this._Listener.getResult())};WYMeditor.XhtmlParser.prototype.beforeParsing=function(a){if(a.match(/class="MsoNormal"/)||a.match(/ns = "urn:schemas-microsoft-com/)){this._Listener.avoidStylingTagsAndAttributes()}return this._Listener.beforeParsing(a)};WYMeditor.XhtmlParser.prototype.afterParsing=function(a){if(this._Listener._avoiding_tags_implicitly){this._Listener.allowStylingTagsAndAttributes()}return this._Listener.afterParsing(a)};WYMeditor.XhtmlParser.prototype.Ignore=function(a,b){return true};WYMeditor.XhtmlParser.prototype.Text=function(a){this._Listener.addContent(a);return true};WYMeditor.XhtmlParser.prototype.Comment=function(b,a){return this._addNonTagBlock(b,a,"addComment")};WYMeditor.XhtmlParser.prototype.Script=function(b,a){return this._addNonTagBlock(b,a,"addScript")};WYMeditor.XhtmlParser.prototype.Css=function(b,a){return this._addNonTagBlock(b,a,"addCss")};WYMeditor.XhtmlParser.prototype._addNonTagBlock=function(a,c,b){switch(c){case WYMeditor.LEXER_ENTER:this._non_tag=a;break;case WYMeditor.LEXER_UNMATCHED:this._non_tag+=a;break;case WYMeditor.LEXER_EXIT:switch(b){case"addComment":this._Listener.addComment(this._non_tag+a);break;case"addScript":this._Listener.addScript(this._non_tag+a);break;case"addCss":this._Listener.addCss(this._non_tag+a);break}}return true};WYMeditor.XhtmlParser.prototype.OpeningTag=function(a,b){switch(b){case WYMeditor.LEXER_ENTER:this._tag=this.normalizeTag(a);this._tag_attributes={};break;case WYMeditor.LEXER_SPECIAL:this._callOpenTagListener(this.normalizeTag(a));break;case WYMeditor.LEXER_EXIT:this._callOpenTagListener(this._tag,this._tag_attributes)}return true};WYMeditor.XhtmlParser.prototype.ClosingTag=function(a,b){this._callCloseTagListener(this.normalizeTag(a));return true};WYMeditor.XhtmlParser.prototype._callOpenTagListener=function(a,b){var b=b||{};this.autoCloseUnclosedBeforeNewOpening(a);if(this._Listener.isBlockTag(a)){this._Listener._tag_stack.push(a);this._Listener.fixNestingBeforeOpeningBlockTag(a,b);this._Listener.openBlockTag(a,b);this._increaseOpenTagCounter(a)}else{if(this._Listener.isInlineTag(a)){this._Listener.inlineTag(a,b)}else{this._Listener.openUnknownTag(a,b);this._increaseOpenTagCounter(a)}}this._Listener.last_tag=a;this._Listener.last_tag_opened=true;this._Listener.last_tag_attributes=b};WYMeditor.XhtmlParser.prototype._callCloseTagListener=function(a){if(this._decreaseOpenTagCounter(a)){this.autoCloseUnclosedBeforeTagClosing(a);if(this._Listener.isBlockTag(a)){var b=this._Listener._tag_stack.pop();if(b==false){return}else{if(b!=a){a=b}}this._Listener.closeBlockTag(a)}else{this._Listener.closeUnknownTag(a)}}else{this._Listener.closeUnopenedTag(a)}this._Listener.last_tag=a;this._Listener.last_tag_opened=false};WYMeditor.XhtmlParser.prototype._increaseOpenTagCounter=function(a){this._Listener._open_tags[a]=this._Listener._open_tags[a]||0;this._Listener._open_tags[a]++};WYMeditor.XhtmlParser.prototype._decreaseOpenTagCounter=function(a){if(this._Listener._open_tags[a]){this._Listener._open_tags[a]--;if(this._Listener._open_tags[a]==0){this._Listener._open_tags[a]=undefined}return true}return false};WYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeNewOpening=function(a){this._autoCloseUnclosed(a,false)};WYMeditor.XhtmlParser.prototype.autoCloseUnclosedBeforeTagClosing=function(a){this._autoCloseUnclosed(a,true)};WYMeditor.XhtmlParser.prototype._autoCloseUnclosed=function(c,d){var d=d||false;if(this._Listener._open_tags){for(var a in this._Listener._open_tags){var b=this._Listener._open_tags[a];if(b>0&&this._Listener.shouldCloseTagAutomatically(a,c,d)){this._callCloseTagListener(a,true)}}}};WYMeditor.XhtmlParser.prototype.getTagReplacements=function(){return this._Listener.getTagReplacements()};WYMeditor.XhtmlParser.prototype.normalizeTag=function(a){a=a.replace(/^([\s<\/>]*)|([\s<\/>]*)$/gm,"").toLowerCase();var b=this._Listener.getTagReplacements();if(b[a]){return b[a]}return a};WYMeditor.XhtmlParser.prototype.TagAttributes=function(a,b){if(WYMeditor.LEXER_SPECIAL==b){this._current_attribute=a}return true};WYMeditor.XhtmlParser.prototype.DoubleQuotedAttribute=function(a,b){if(WYMeditor.LEXER_UNMATCHED==b){this._tag_attributes[this._current_attribute]=a}return true};WYMeditor.XhtmlParser.prototype.SingleQuotedAttribute=function(a,b){if(WYMeditor.LEXER_UNMATCHED==b){this._tag_attributes[this._current_attribute]=a}return true};WYMeditor.XhtmlParser.prototype.UnquotedAttribute=function(a,b){this._tag_attributes[this._current_attribute]=a.replace(/^=/,"");return true};WYMeditor.XhtmlSaxListener=function(){this.output="";this.helper=new WYMeditor.XmlHelper();this._open_tags={};this.validator=WYMeditor.XhtmlValidator;this._tag_stack=[];this.avoided_tags=[];this.entities={"&nbsp;":"&#160;","&iexcl;":"&#161;","&cent;":"&#162;","&pound;":"&#163;","&curren;":"&#164;","&yen;":"&#165;","&brvbar;":"&#166;","&sect;":"&#167;","&uml;":"&#168;","&copy;":"&#169;","&ordf;":"&#170;","&laquo;":"&#171;","&not;":"&#172;","&shy;":"&#173;","&reg;":"&#174;","&macr;":"&#175;","&deg;":"&#176;","&plusmn;":"&#177;","&sup2;":"&#178;","&sup3;":"&#179;","&acute;":"&#180;","&micro;":"&#181;","&para;":"&#182;","&middot;":"&#183;","&cedil;":"&#184;","&sup1;":"&#185;","&ordm;":"&#186;","&raquo;":"&#187;","&frac14;":"&#188;","&frac12;":"&#189;","&frac34;":"&#190;","&iquest;":"&#191;","&Agrave;":"&#192;","&Aacute;":"&#193;","&Acirc;":"&#194;","&Atilde;":"&#195;","&Auml;":"&#196;","&Aring;":"&#197;","&AElig;":"&#198;","&Ccedil;":"&#199;","&Egrave;":"&#200;","&Eacute;":"&#201;","&Ecirc;":"&#202;","&Euml;":"&#203;","&Igrave;":"&#204;","&Iacute;":"&#205;","&Icirc;":"&#206;","&Iuml;":"&#207;","&ETH;":"&#208;","&Ntilde;":"&#209;","&Ograve;":"&#210;","&Oacute;":"&#211;","&Ocirc;":"&#212;","&Otilde;":"&#213;","&Ouml;":"&#214;","&times;":"&#215;","&Oslash;":"&#216;","&Ugrave;":"&#217;","&Uacute;":"&#218;","&Ucirc;":"&#219;","&Uuml;":"&#220;","&Yacute;":"&#221;","&THORN;":"&#222;","&szlig;":"&#223;","&agrave;":"&#224;","&aacute;":"&#225;","&acirc;":"&#226;","&atilde;":"&#227;","&auml;":"&#228;","&aring;":"&#229;","&aelig;":"&#230;","&ccedil;":"&#231;","&egrave;":"&#232;","&eacute;":"&#233;","&ecirc;":"&#234;","&euml;":"&#235;","&igrave;":"&#236;","&iacute;":"&#237;","&icirc;":"&#238;","&iuml;":"&#239;","&eth;":"&#240;","&ntilde;":"&#241;","&ograve;":"&#242;","&oacute;":"&#243;","&ocirc;":"&#244;","&otilde;":"&#245;","&ouml;":"&#246;","&divide;":"&#247;","&oslash;":"&#248;","&ugrave;":"&#249;","&uacute;":"&#250;","&ucirc;":"&#251;","&uuml;":"&#252;","&yacute;":"&#253;","&thorn;":"&#254;","&yuml;":"&#255;","&OElig;":"&#338;","&oelig;":"&#339;","&Scaron;":"&#352;","&scaron;":"&#353;","&Yuml;":"&#376;","&fnof;":"&#402;","&circ;":"&#710;","&tilde;":"&#732;","&Alpha;":"&#913;","&Beta;":"&#914;","&Gamma;":"&#915;","&Delta;":"&#916;","&Epsilon;":"&#917;","&Zeta;":"&#918;","&Eta;":"&#919;","&Theta;":"&#920;","&Iota;":"&#921;","&Kappa;":"&#922;","&Lambda;":"&#923;","&Mu;":"&#924;","&Nu;":"&#925;","&Xi;":"&#926;","&Omicron;":"&#927;","&Pi;":"&#928;","&Rho;":"&#929;","&Sigma;":"&#931;","&Tau;":"&#932;","&Upsilon;":"&#933;","&Phi;":"&#934;","&Chi;":"&#935;","&Psi;":"&#936;","&Omega;":"&#937;","&alpha;":"&#945;","&beta;":"&#946;","&gamma;":"&#947;","&delta;":"&#948;","&epsilon;":"&#949;","&zeta;":"&#950;","&eta;":"&#951;","&theta;":"&#952;","&iota;":"&#953;","&kappa;":"&#954;","&lambda;":"&#955;","&mu;":"&#956;","&nu;":"&#957;","&xi;":"&#958;","&omicron;":"&#959;","&pi;":"&#960;","&rho;":"&#961;","&sigmaf;":"&#962;","&sigma;":"&#963;","&tau;":"&#964;","&upsilon;":"&#965;","&phi;":"&#966;","&chi;":"&#967;","&psi;":"&#968;","&omega;":"&#969;","&thetasym;":"&#977;","&upsih;":"&#978;","&piv;":"&#982;","&ensp;":"&#8194;","&emsp;":"&#8195;","&thinsp;":"&#8201;","&zwnj;":"&#8204;","&zwj;":"&#8205;","&lrm;":"&#8206;","&rlm;":"&#8207;","&ndash;":"&#8211;","&mdash;":"&#8212;","&lsquo;":"&#8216;","&rsquo;":"&#8217;","&sbquo;":"&#8218;","&ldquo;":"&#8220;","&rdquo;":"&#8221;","&bdquo;":"&#8222;","&dagger;":"&#8224;","&Dagger;":"&#8225;","&bull;":"&#8226;","&hellip;":"&#8230;","&permil;":"&#8240;","&prime;":"&#8242;","&Prime;":"&#8243;","&lsaquo;":"&#8249;","&rsaquo;":"&#8250;","&oline;":"&#8254;","&frasl;":"&#8260;","&euro;":"&#8364;","&image;":"&#8465;","&weierp;":"&#8472;","&real;":"&#8476;","&trade;":"&#8482;","&alefsym;":"&#8501;","&larr;":"&#8592;","&uarr;":"&#8593;","&rarr;":"&#8594;","&darr;":"&#8595;","&harr;":"&#8596;","&crarr;":"&#8629;","&lArr;":"&#8656;","&uArr;":"&#8657;","&rArr;":"&#8658;","&dArr;":"&#8659;","&hArr;":"&#8660;","&forall;":"&#8704;","&part;":"&#8706;","&exist;":"&#8707;","&empty;":"&#8709;","&nabla;":"&#8711;","&isin;":"&#8712;","&notin;":"&#8713;","&ni;":"&#8715;","&prod;":"&#8719;","&sum;":"&#8721;","&minus;":"&#8722;","&lowast;":"&#8727;","&radic;":"&#8730;","&prop;":"&#8733;","&infin;":"&#8734;","&ang;":"&#8736;","&and;":"&#8743;","&or;":"&#8744;","&cap;":"&#8745;","&cup;":"&#8746;","&int;":"&#8747;","&there4;":"&#8756;","&sim;":"&#8764;","&cong;":"&#8773;","&asymp;":"&#8776;","&ne;":"&#8800;","&equiv;":"&#8801;","&le;":"&#8804;","&ge;":"&#8805;","&sub;":"&#8834;","&sup;":"&#8835;","&nsub;":"&#8836;","&sube;":"&#8838;","&supe;":"&#8839;","&oplus;":"&#8853;","&otimes;":"&#8855;","&perp;":"&#8869;","&sdot;":"&#8901;","&lceil;":"&#8968;","&rceil;":"&#8969;","&lfloor;":"&#8970;","&rfloor;":"&#8971;","&lang;":"&#9001;","&rang;":"&#9002;","&loz;":"&#9674;","&spades;":"&#9824;","&clubs;":"&#9827;","&hearts;":"&#9829;","&diams;":"&#9830;"};this.block_tags=["a","abbr","acronym","address","area","b","base","bdo","big","blockquote","body","button","caption","cite","code","col","colgroup","dd","del","div","dfn","dl","dt","em","fieldset","form","head","h1","h2","h3","h4","h5","h6","html","i","ins","kbd","label","legend","li","map","noscript","object","ol","optgroup","option","p","param","pre","q","samp","script","select","small","span","strong","style","sub","sup","table","tbody","td","textarea","tfoot","th","thead","title","tr","tt","ul","var","extends"];this.inline_tags=["br","hr","img","input"];return this};WYMeditor.XhtmlSaxListener.prototype.shouldCloseTagAutomatically=function(a,c,b){var b=b||false;if(a=="td"){if((b&&c=="tr")||(!b&&c=="td")){return true}}if(a=="option"){if((b&&c=="select")||(!b&&c=="option")){return true}}return false};WYMeditor.XhtmlSaxListener.prototype.beforeParsing=function(a){this.output="";return a};WYMeditor.XhtmlSaxListener.prototype.afterParsing=function(a){a=this.replaceNamedEntities(a);a=this.joinRepeatedEntities(a);a=this.removeEmptyTags(a);a=this.removeBrInPre(a);return a};WYMeditor.XhtmlSaxListener.prototype.replaceNamedEntities=function(b){for(var a in this.entities){b=b.replace(new RegExp(a,"g"),this.entities[a])}return b};WYMeditor.XhtmlSaxListener.prototype.joinRepeatedEntities=function(b){var a="em|strong|sub|sup|acronym|pre|del|address";return b.replace(new RegExp("</("+a+")><\\1>",""),"").replace(new RegExp("(s*<("+a+")>s*){2}(.*)(s*</\\2>s*){2}",""),"<$2>$3<$2>")};WYMeditor.XhtmlSaxListener.prototype.removeEmptyTags=function(a){return a.replace(new RegExp("<("+this.block_tags.join("|").replace(/\|td/,"").replace(/\|th/,"")+")>(<br />|&#160;|&nbsp;|\\s)*</\\1>","g"),"")};WYMeditor.XhtmlSaxListener.prototype.removeBrInPre=function(c){var b=c.match(new RegExp("<pre[^>]*>(.*?)</pre>","gmi"));if(b){for(var a=0;a<b.length;a++){c=c.replace(b[a],b[a].replace(new RegExp("<br />","g"),String.fromCharCode(13,10)))}}return c};WYMeditor.XhtmlSaxListener.prototype.getResult=function(){return this.output};WYMeditor.XhtmlSaxListener.prototype.getTagReplacements=function(){return{b:"strong",i:"em"}};WYMeditor.XhtmlSaxListener.prototype.addContent=function(a){this.output+=a};WYMeditor.XhtmlSaxListener.prototype.addComment=function(a){if(this.remove_comments){this.output+=a}};WYMeditor.XhtmlSaxListener.prototype.addScript=function(a){if(!this.remove_scripts){this.output+=a}};WYMeditor.XhtmlSaxListener.prototype.addCss=function(a){if(!this.remove_embeded_styles){this.output+=a}};WYMeditor.XhtmlSaxListener.prototype.openBlockTag=function(a,b){this.output+=this.helper.tag(a,this.validator.getValidTagAttributes(a,b),true)};WYMeditor.XhtmlSaxListener.prototype.inlineTag=function(a,b){this.output+=this.helper.tag(a,this.validator.getValidTagAttributes(a,b))};WYMeditor.XhtmlSaxListener.prototype.openUnknownTag=function(a,b){};WYMeditor.XhtmlSaxListener.prototype.closeBlockTag=function(a){this.output=this.output.replace(/<br \/>$/,"")+this._getClosingTagContent("before",a)+"</"+a+">"+this._getClosingTagContent("after",a)};WYMeditor.XhtmlSaxListener.prototype.closeUnknownTag=function(a){};WYMeditor.XhtmlSaxListener.prototype.closeUnopenedTag=function(a){this.output+="</"+a+">"};WYMeditor.XhtmlSaxListener.prototype.avoidStylingTagsAndAttributes=function(){this.avoided_tags=["div","span"];this.validator.skiped_attributes=["style"];this.validator.skiped_attribute_values=["MsoNormal","main1"];this._avoiding_tags_implicitly=true};WYMeditor.XhtmlSaxListener.prototype.allowStylingTagsAndAttributes=function(){this.avoided_tags=[];this.validator.skiped_attributes=[];this.validator.skiped_attribute_values=[];this._avoiding_tags_implicitly=false};WYMeditor.XhtmlSaxListener.prototype.isBlockTag=function(a){return !WYMeditor.Helper.contains(this.avoided_tags,a)&&WYMeditor.Helper.contains(this.block_tags,a)};WYMeditor.XhtmlSaxListener.prototype.isInlineTag=function(a){return !WYMeditor.Helper.contains(this.avoided_tags,a)&&WYMeditor.Helper.contains(this.inline_tags,a)};WYMeditor.XhtmlSaxListener.prototype.insertContentAfterClosingTag=function(a,b){this._insertContentWhenClosingTag("after",a,b)};WYMeditor.XhtmlSaxListener.prototype.insertContentBeforeClosingTag=function(a,b){this._insertContentWhenClosingTag("before",a,b)};WYMeditor.XhtmlSaxListener.prototype.fixNestingBeforeOpeningBlockTag=function(a,b){if(a!="li"&&(a=="ul"||a=="ol")&&this.last_tag&&!this.last_tag_opened&&this.last_tag=="li"){this.output=this.output.replace(/<\/li>$/,"");this.insertContentAfterClosingTag(a,"</li>")}};WYMeditor.XhtmlSaxListener.prototype._insertContentWhenClosingTag=function(b,a,c){if(!this["_insert_"+b+"_closing"]){this["_insert_"+b+"_closing"]=[]}if(!this["_insert_"+b+"_closing"][a]){this["_insert_"+b+"_closing"][a]=[]}this["_insert_"+b+"_closing"][a].push(c)};WYMeditor.XhtmlSaxListener.prototype._getClosingTagContent=function(b,a){if(this["_insert_"+b+"_closing"]&&this["_insert_"+b+"_closing"][a]&&this["_insert_"+b+"_closing"][a].length>0){return this["_insert_"+b+"_closing"][a].pop()}return""};WYMeditor.WymCssLexer=function(b,a){var a=(typeof a=="undefined"?true:a);jQuery.extend(this,new WYMeditor.Lexer(b,(a?"Ignore":"WymCss")));this.mapHandler("WymCss","Ignore");if(a==true){this.addEntryPattern("/\\\x2a[<\\s]*WYMeditor[>\\s]*\\\x2a/","Ignore","WymCss");this.addExitPattern("/\\\x2a[</\\s]*WYMeditor[>\\s]*\\\x2a/","WymCss")}this.addSpecialPattern("[\\sa-z1-6]*\\\x2e[a-z-_0-9]+","WymCss","WymCssStyleDeclaration");this.addEntryPattern("/\\\x2a","WymCss","WymCssComment");this.addExitPattern("\\\x2a/","WymCssComment");this.addEntryPattern("\x7b","WymCss","WymCssStyle");this.addExitPattern("\x7d","WymCssStyle");this.addEntryPattern("/\\\x2a","WymCssStyle","WymCssFeedbackStyle");this.addExitPattern("\\\x2a/","WymCssFeedbackStyle");return this};WYMeditor.WymCssParser=function(){this._in_style=false;this._has_title=false;this.only_wym_blocks=true;this.css_settings={classesItems:[],editorStyles:[],dialogStyles:[]};return this};WYMeditor.WymCssParser.prototype.parse=function(a,b){var b=(typeof b=="undefined"?this.only_wym_blocks:b);this._Lexer=new WYMeditor.WymCssLexer(this,b);this._Lexer.parse(a)};WYMeditor.WymCssParser.prototype.Ignore=function(a,b){return true};WYMeditor.WymCssParser.prototype.WymCssComment=function(b,a){if(b.match(/end[a-z0-9\s]*wym[a-z0-9\s]*/mi)){return false}if(a==WYMeditor.LEXER_UNMATCHED){if(!this._in_style){this._has_title=true;this._current_item={title:WYMeditor.Helper.trim(b)}}else{if(this._current_item[this._current_element]){if(!this._current_item[this._current_element].expressions){this._current_item[this._current_element].expressions=[b]}else{this._current_item[this._current_element].expressions.push(b)}}}this._in_style=true}return true};WYMeditor.WymCssParser.prototype.WymCssStyle=function(b,a){if(a==WYMeditor.LEXER_UNMATCHED){b=WYMeditor.Helper.trim(b);if(b!=""){this._current_item[this._current_element].style=b}}else{if(a==WYMeditor.LEXER_EXIT){this._in_style=false;this._has_title=false;this.addStyleSetting(this._current_item)}}return true};WYMeditor.WymCssParser.prototype.WymCssFeedbackStyle=function(b,a){if(a==WYMeditor.LEXER_UNMATCHED){this._current_item[this._current_element].feedback_style=b.replace(/^([\s\/\*]*)|([\s\/\*]*)$/gm,"")}return true};WYMeditor.WymCssParser.prototype.WymCssStyleDeclaration=function(b){b=b.replace(/^([\s\.]*)|([\s\.*]*)$/gm,"");var a="";if(b.indexOf(".")>0){var c=b.split(".");this._current_element=c[1];var a=c[0]}else{this._current_element=b}if(!this._has_title){this._current_item={title:(!a?"":a.toUpperCase()+": ")+this._current_element};this._has_title=true}if(!this._current_item[this._current_element]){this._current_item[this._current_element]={name:this._current_element}}if(a){if(!this._current_item[this._current_element].tags){this._current_item[this._current_element].tags=[a]}else{this._current_item[this._current_element].tags.push(a)}}return true};WYMeditor.WymCssParser.prototype.addStyleSetting=function(a){for(var b in a){var c=a[b];if(typeof c=="object"&&b!="title"){this.css_settings.classesItems.push({name:WYMeditor.Helper.trim(c.name),title:a.title,expr:WYMeditor.Helper.trim((c.expressions||c.tags).join(", "))});if(c.feedback_style){this.css_settings.editorStyles.push({name:"."+WYMeditor.Helper.trim(c.name),css:c.feedback_style})}if(c.style){this.css_settings.dialogStyles.push({name:"."+WYMeditor.Helper.trim(c.name),css:c.style})}}}};jQuery.fn.isPhantomNode=function(){if(this[0].nodeType==3){return !(/[^\t\n\r ]/.test(this[0].data))}return false};WYMeditor.isPhantomNode=function(a){if(a.nodeType==3){return !(/[^\t\n\r ]/.test(a.data))}return false};WYMeditor.isPhantomString=function(a){return !(/[^\t\n\r ]/.test(a))};jQuery.fn.parentsOrSelf=function(b){var a=this;if(a[0].nodeType==3){a=a.parents().slice(0,1)}if(a.filter(b).size()==1){return a}else{return a.parents(b).slice(0,1)}};WYMeditor.Helper={replaceAll:function(d,a,c){var b=new RegExp(a,"g");return(d.replace(b,c))},insertAt:function(b,a,c){return(b.substr(0,c)+a+b.substring(c))},trim:function(a){return a.replace(/^(\s*)|(\s*)$/gm,"")},contains:function(a,c){for(var b=0;b<a.length;b++){if(a[b]===c){return true}}return false},indexOf:function(a,d){var b=-1;for(var c=0;c<a.length;c++){if(a[c]==d){b=c;break}}return(b)},findByName:function(a,b){for(var c=0;c<a.length;c++){var d=a[c];if(d.name==b){return(d)}}return(null)}};WYMeditor.WymClassExplorer=function(a){this._wym=a;this._class="className";this._newLine="\r\n"};WYMeditor.WymClassExplorer.prototype.initIframe=function(iframe){this._iframe=iframe;this._doc=iframe.contentWindow.document;var styles=this._doc.styleSheets[0];var aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss);this._doc.title=this._wym._index;jQuery("html",this._doc).attr("dir",this._options.direction);jQuery(this._doc.body).html(this._wym._html);var wym=this;this._doc.body.onfocus=function(){wym._doc.designMode="on";wym._doc=iframe.contentWindow.document};this._doc.onbeforedeactivate=function(){wym.saveCaret()};this._doc.onkeyup=function(){wym.saveCaret();wym.keyup()};this._doc.onclick=function(){wym.saveCaret()};this._doc.body.onbeforepaste=function(){wym._iframe.contentWindow.event.returnValue=false};this._doc.body.onpaste=function(){wym._iframe.contentWindow.event.returnValue=false;wym.paste(window.clipboardData.getData("Text"))};if(this._initialized){if(jQuery.isFunction(this._options.preBind)){this._options.preBind(this)}this._wym.bindEvents();if(jQuery.isFunction(this._options.postInit)){this._options.postInit(this)}this.listen()}this._initialized=true;this._doc.designMode="on";try{this._doc=iframe.contentWindow.document}catch(e){}};(function(a){WYMeditor.WymClassExplorer.prototype.loadSkin=function(){jQuery(this._box).find(this._options.containerSelector).attr("unselectable","on");a.call(this)}})(WYMeditor.editor.prototype.loadSkin);WYMeditor.WymClassExplorer.prototype._exec=function(c,d){switch(c){case WYMeditor.INDENT:case WYMeditor.OUTDENT:var a=this.findUp(this.container(),WYMeditor.LI);if(a){var b=a.parentNode.parentNode;if(a.parentNode.childNodes.length>1||b.tagName.toLowerCase()==WYMeditor.OL||b.tagName.toLowerCase()==WYMeditor.UL){this._doc.execCommand(c)}}break;default:if(d){this._doc.execCommand(c,false,d)}else{this._doc.execCommand(c)}break}};WYMeditor.WymClassExplorer.prototype.selected=function(){var a=this._iframe.contentWindow.document.caretPos;if(a!=null){if(a.parentElement!=undefined){return(a.parentElement())}}};WYMeditor.WymClassExplorer.prototype.saveCaret=function(){this._doc.caretPos=this._doc.selection.createRange()};WYMeditor.WymClassExplorer.prototype.addCssRule=function(c,d){var b=d.name.split(",");for(var a in b){c.addRule(b[a],d.css)}};WYMeditor.WymClassExplorer.prototype.insert=function(b){var a=this._doc.selection.createRange();if(jQuery(a.parentElement()).parents(this._options.iframeBodySelector).is("*")){try{a.pasteHTML(b)}catch(c){}}else{this.paste(b)}};WYMeditor.WymClassExplorer.prototype.wrap=function(d,b){var a=this._doc.selection.createRange();if(jQuery(a.parentElement()).parents(this._options.iframeBodySelector).is("*")){try{a.pasteHTML(d+a.text+b)}catch(c){}}};WYMeditor.WymClassExplorer.prototype.unwrap=function(){var a=this._doc.selection.createRange();if(jQuery(a.parentElement()).parents(this._options.iframeBodySelector).is("*")){try{var c=a.text;this._exec("Cut");a.pasteHTML(c)}catch(b){}}};WYMeditor.WymClassExplorer.prototype.keyup=function(){this._selected_image=null};WYMeditor.WymClassExplorer.prototype.setFocusToNode=function(c,b){var a=this._doc.selection.createRange();b=b?true:false;a.moveToElementText(c);a.collapse(b);a.select();c.focus()};WYMeditor.WymClassMozilla=function(a){this._wym=a;this._class="class";this._newLine="\n"};WYMeditor.WymClassMozilla.prototype.initIframe=function(iframe){var wym=this;this._iframe=iframe;this._doc=iframe.contentDocument;var styles=this._doc.styleSheets[0];var aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss);this._doc.title=this._wym._index;jQuery("html",this._doc).attr("dir",this._options.direction);this.html(this._wym._html);this.enableDesignMode();if(jQuery.isFunction(this._options.preBind)){this._options.preBind(this)}this._wym.bindEvents();jQuery(this._doc).bind("keydown",this.keydown);jQuery(this._doc).bind("keyup",this.keyup);jQuery(this._doc).bind("focus",function(){wym.enableDesignMode.call(wym)});if(jQuery.isFunction(this._options.postInit)){this._options.postInit(this)}this.listen()};WYMeditor.WymClassMozilla.prototype.html=function(a){if(typeof a==="string"){try{this._doc.designMode="off"}catch(b){}a=a.replace(/<em(\b[^>]*)>/gi,"<i$1>").replace(/<\/em>/gi,"</i>").replace(/<strong(\b[^>]*)>/gi,"<b$1>").replace(/<\/strong>/gi,"</b>");jQuery(this._doc.body).html(a);this.enableDesignMode()}else{return(jQuery(this._doc.body).html())}};WYMeditor.WymClassMozilla.prototype._exec=function(e,g){if(!this.selected()){return(false)}switch(e){case WYMeditor.INDENT:case WYMeditor.OUTDENT:var f=this.selected();var d=this._iframe.contentWindow.getSelection();var b=d.anchorNode;if(b.nodeName=="#text"){b=b.parentNode}f=this.findUp(f,WYMeditor.BLOCKS);b=this.findUp(b,WYMeditor.BLOCKS);if(f&&f==b&&f.tagName.toLowerCase()==WYMeditor.LI){var c=f.parentNode.parentNode;if(f.parentNode.childNodes.length>1||c.tagName.toLowerCase()==WYMeditor.OL||c.tagName.toLowerCase()==WYMeditor.UL){this._doc.execCommand(e,"",null)}}break;default:if(g){this._doc.execCommand(e,"",g)}else{this._doc.execCommand(e,"",null)}}var a=this.selected();if(a.tagName.toLowerCase()==WYMeditor.BODY){this._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}};WYMeditor.WymClassMozilla.prototype.selected=function(){var b=this._iframe.contentWindow.getSelection();var a=b.focusNode;if(a){if(a.nodeName=="#text"){return(a.parentNode)}else{return(a)}}else{return(null)}};WYMeditor.WymClassMozilla.prototype.addCssRule=function(a,b){a.insertRule(b.name+" {"+b.css+"}",a.cssRules.length)};WYMeditor.WymClassMozilla.prototype.keydown=function(b){var c=WYMeditor.INSTANCES[this.title];var a=null;if(b.ctrlKey){if(b.keyCode==66){c._exec(WYMeditor.BOLD);return false}if(b.keyCode==73){c._exec(WYMeditor.ITALIC);return false}}else{if(b.keyCode==13){if(!b.shiftKey){a=c.selected();if(a&&a.tagName.toLowerCase()==WYMeditor.PRE){b.preventDefault();c.insert("<p></p>")}}}}};WYMeditor.WymClassMozilla.prototype.keyup=function(b){var d=WYMeditor.INSTANCES[this.title];d._selected_image=null;var a=null;if(b.keyCode==13&&!b.shiftKey){jQuery(d._doc.body).children(WYMeditor.BR).remove()}if(b.keyCode!=8&&b.keyCode!=17&&b.keyCode!=46&&b.keyCode!=224&&!b.metaKey&&!b.ctrlKey){a=d.selected();var c=a.tagName.toLowerCase();if(c=="strong"||c=="b"||c=="em"||c=="i"||c=="sub"||c=="sup"||c=="a"){c=a.parentNode.tagName.toLowerCase()}if(c==WYMeditor.BODY){d._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}}};WYMeditor.WymClassMozilla.prototype.enableDesignMode=function(){if(this._doc.designMode=="off"){try{this._doc.designMode="on";this._doc.execCommand("styleWithCSS","",false)}catch(a){}}};WYMeditor.WymClassMozilla.prototype.openBlockTag=function(a,c){var c=this.validator.getValidTagAttributes(a,c);if(a=="span"&&c.style){var b=this.getTagForStyle(c.style);if(b){a=b;this._tag_stack.pop();this._tag_stack.push(a);c.style=""}}this.output+=this.helper.tag(a,c,true)};WYMeditor.WymClassMozilla.prototype.getTagForStyle=function(a){if(/bold/.test(a)){return"strong"}if(/italic/.test(a)){return"em"}if(/sub/.test(a)){return"sub"}if(/super/.test(a)){return"sup"}return false};WYMeditor.WymClassOpera=function(a){this._wym=a;this._class="class";this._newLine="\r\n"};WYMeditor.WymClassOpera.prototype.initIframe=function(iframe){this._iframe=iframe;this._doc=iframe.contentWindow.document;var styles=this._doc.styleSheets[0];var aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss);this._doc.title=this._wym._index;jQuery("html",this._doc).attr("dir",this._options.direction);this._doc.designMode="on";this.html(this._wym._html);if(jQuery.isFunction(this._options.preBind)){this._options.preBind(this)}this._wym.bindEvents();jQuery(this._doc).bind("keydown",this.keydown);jQuery(this._doc).bind("keyup",this.keyup);if(jQuery.isFunction(this._options.postInit)){this._options.postInit(this)}this.listen()};WYMeditor.WymClassOpera.prototype._exec=function(a,b){if(b){this._doc.execCommand(a,false,b)}else{this._doc.execCommand(a)}};WYMeditor.WymClassOpera.prototype.selected=function(){var b=this._iframe.contentWindow.getSelection();var a=b.focusNode;if(a){if(a.nodeName=="#text"){return(a.parentNode)}else{return(a)}}else{return(null)}};WYMeditor.WymClassOpera.prototype.addCssRule=function(a,b){a.insertRule(b.name+" {"+b.css+"}",a.cssRules.length)};WYMeditor.WymClassOpera.prototype.keydown=function(a){var c=WYMeditor.INSTANCES[this.title];var b=c._iframe.contentWindow.getSelection();startNode=b.getRangeAt(0).startContainer;if(!jQuery(startNode).parentsOrSelf(WYMeditor.MAIN_CONTAINERS.join(","))[0]&&!jQuery(startNode).parentsOrSelf("li")&&a.keyCode!=WYMeditor.KEY.ENTER&&a.keyCode!=WYMeditor.KEY.LEFT&&a.keyCode!=WYMeditor.KEY.UP&&a.keyCode!=WYMeditor.KEY.RIGHT&&a.keyCode!=WYMeditor.KEY.DOWN&&a.keyCode!=WYMeditor.KEY.BACKSPACE&&a.keyCode!=WYMeditor.KEY.DELETE){c._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}};WYMeditor.WymClassOpera.prototype.keyup=function(a){var b=WYMeditor.INSTANCES[this.title];b._selected_image=null};WYMeditor.WymClassSafari=function(a){this._wym=a;this._class="class";this._newLine="\n"};WYMeditor.WymClassSafari.prototype.initIframe=function(iframe){this._iframe=iframe;this._doc=iframe.contentDocument;var styles=this._doc.styleSheets[0];var aCss=eval(this._options.editorStyles);this.addCssRules(this._doc,aCss);this._doc.title=this._wym._index;jQuery("html",this._doc).attr("dir",this._options.direction);this._doc.designMode="on";this.html(this._wym._html);if(jQuery.isFunction(this._options.preBind)){this._options.preBind(this)}this._wym.bindEvents();jQuery(this._doc).bind("keydown",this.keydown);jQuery(this._doc).bind("keyup",this.keyup);if(jQuery.isFunction(this._options.postInit)){this._options.postInit(this)}this.listen()};WYMeditor.WymClassSafari.prototype._exec=function(e,g){if(!this.selected()){return(false)}switch(e){case WYMeditor.INDENT:case WYMeditor.OUTDENT:var f=this.selected();var d=this._iframe.contentWindow.getSelection();var b=d.anchorNode;if(b.nodeName=="#text"){b=b.parentNode}f=this.findUp(f,WYMeditor.BLOCKS);b=this.findUp(b,WYMeditor.BLOCKS);if(f&&f==b&&f.tagName.toLowerCase()==WYMeditor.LI){var c=f.parentNode.parentNode;if(f.parentNode.childNodes.length>1||c.tagName.toLowerCase()==WYMeditor.OL||c.tagName.toLowerCase()==WYMeditor.UL){this._doc.execCommand(e,"",null)}}break;case WYMeditor.INSERT_ORDEREDLIST:case WYMeditor.INSERT_UNORDEREDLIST:this._doc.execCommand(e,"",null);var f=this.selected();var a=this.findUp(f,WYMeditor.MAIN_CONTAINERS);if(a){jQuery(a).replaceWith(jQuery(a).html())}break;default:if(g){this._doc.execCommand(e,"",g)}else{this._doc.execCommand(e,"",null)}}var a=this.selected();if(a&&a.tagName.toLowerCase()==WYMeditor.BODY){this._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}};WYMeditor.WymClassSafari.prototype.selected=function(){var b=this._iframe.contentWindow.getSelection();var a=b.focusNode;if(a){if(a.nodeName=="#text"){return(a.parentNode)}else{return(a)}}else{return(null)}};WYMeditor.WymClassSafari.prototype.addCssRule=function(a,b){a.insertRule(b.name+" {"+b.css+"}",a.cssRules.length)};WYMeditor.WymClassSafari.prototype.keydown=function(b){var a=WYMeditor.INSTANCES[this.title];if(b.ctrlKey){if(b.keyCode==66){a._exec(WYMeditor.BOLD);b.preventDefault()}if(b.keyCode==73){a._exec(WYMeditor.ITALIC);b.preventDefault()}}else{if(b.shiftKey&&b.keyCode==13){a._exec("InsertLineBreak");b.preventDefault()}}};WYMeditor.WymClassSafari.prototype.keyup=function(b){var d=WYMeditor.INSTANCES[this.title];d._selected_image=null;var a=null;if(b.keyCode==13&&!b.shiftKey){jQuery(d._doc.body).children(WYMeditor.BR).remove();a=d.selected();if(a&&a.tagName.toLowerCase()==WYMeditor.PRE){d._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}}if(b.keyCode!=8&&b.keyCode!=17&&b.keyCode!=46&&b.keyCode!=224&&!b.metaKey&&!b.ctrlKey){a=d.selected();var c=a.tagName.toLowerCase();if(c=="strong"||c=="b"||c=="em"||c=="i"||c=="sub"||c=="sup"||c=="a"||c=="span"){c=a.parentNode.tagName.toLowerCase()}if(c==WYMeditor.BODY||c==WYMeditor.DIV){d._exec(WYMeditor.FORMAT_BLOCK,WYMeditor.P)}}};WYMeditor.WymClassSafari.prototype.openBlockTag=function(a,c){var c=this.validator.getValidTagAttributes(a,c);if(a=="span"&&c.style){var b=this.getTagForStyle(c.style);if(b){a=b;this._tag_stack.pop();this._tag_stack.push(a);c.style="";if(typeof c["class"]=="string"){c["class"]=c["class"].replace(/apple-style-span/gi,"")}}}this.output+=this.helper.tag(a,c,true)};WYMeditor.WymClassSafari.prototype.getTagForStyle=function(a){if(/bold/.test(a)){return"strong"}if(/italic/.test(a)){return"em"}if(/sub/.test(a)){return"sub"}if(/super/.test(a)){return"sup"}return false}; \ No newline at end of file
diff --git a/studio/static/js/wymeditor/jquery.wymeditor.mozilla.js b/studio/static/js/wymeditor/jquery.wymeditor.mozilla.js
new file mode 100644
index 0000000..3aa84b9
--- /dev/null
+++ b/studio/static/js/wymeditor/jquery.wymeditor.mozilla.js
@@ -0,0 +1,278 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.mozilla.js
+ * Gecko specific class and functions.
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ * Volker Mische (vmx a-t gmx dotde)
+ * Bermi Ferrer (wymeditor a-t bermi dotorg)
+ * Frédéric Palluel-Lafleur (fpalluel a-t gmail dotcom)
+ * Jonatan Lundin (jonatan.lundin a-t gmail dotcom)
+ */
+
+WYMeditor.WymClassMozilla = function(wym) {
+
+ this._wym = wym;
+ this._class = "class";
+ this._newLine = "\n";
+};
+
+WYMeditor.WymClassMozilla.prototype.initIframe = function(iframe) {
+ var wym = this;
+
+ this._iframe = iframe;
+ this._doc = iframe.contentDocument;
+
+ //add css rules from options
+
+ var styles = this._doc.styleSheets[0];
+ var aCss = eval(this._options.editorStyles);
+
+ this.addCssRules(this._doc, aCss);
+
+ this._doc.title = this._wym._index;
+
+ //set the text direction
+ jQuery('html', this._doc).attr('dir', this._options.direction);
+
+ //init html value
+ this.html(this._wym._html);
+
+ //init designMode
+ this.enableDesignMode();
+
+ //pre-bind functions
+ if(jQuery.isFunction(this._options.preBind)) this._options.preBind(this);
+
+ //bind external events
+ this._wym.bindEvents();
+
+ //bind editor keydown events
+ jQuery(this._doc).bind("keydown", this.keydown);
+
+ //bind editor keyup events
+ jQuery(this._doc).bind("keyup", this.keyup);
+
+ //bind editor focus events (used to reset designmode - Gecko bug)
+ jQuery(this._doc).bind("focus", function () {
+ // Fix scope
+ wym.enableDesignMode.call(wym);
+ });
+
+ //post-init functions
+ if(jQuery.isFunction(this._options.postInit)) this._options.postInit(this);
+
+ //add event listeners to doc elements, e.g. images
+ this.listen();
+};
+
+/* @name html
+ * @description Get/Set the html value
+ */
+WYMeditor.WymClassMozilla.prototype.html = function(html) {
+
+ if(typeof html === 'string') {
+
+ //disable designMode
+ try { this._doc.designMode = "off"; } catch(e) { };
+
+ //replace em by i and strong by bold
+ //(designMode issue)
+ html = html.replace(/<em(\b[^>]*)>/gi, "<i$1>")
+ .replace(/<\/em>/gi, "</i>")
+ .replace(/<strong(\b[^>]*)>/gi, "<b$1>")
+ .replace(/<\/strong>/gi, "</b>");
+
+ //update the html body
+ jQuery(this._doc.body).html(html);
+
+ //re-init designMode
+ this.enableDesignMode();
+ }
+ else return(jQuery(this._doc.body).html());
+};
+
+WYMeditor.WymClassMozilla.prototype._exec = function(cmd,param) {
+
+ if(!this.selected()) return(false);
+
+ switch(cmd) {
+
+ case WYMeditor.INDENT: case WYMeditor.OUTDENT:
+
+ var focusNode = this.selected();
+ var sel = this._iframe.contentWindow.getSelection();
+ var anchorNode = sel.anchorNode;
+ if(anchorNode.nodeName == "#text") anchorNode = anchorNode.parentNode;
+
+ focusNode = this.findUp(focusNode, WYMeditor.BLOCKS);
+ anchorNode = this.findUp(anchorNode, WYMeditor.BLOCKS);
+
+ if(focusNode && focusNode == anchorNode
+ && focusNode.tagName.toLowerCase() == WYMeditor.LI) {
+
+ var ancestor = focusNode.parentNode.parentNode;
+
+ if(focusNode.parentNode.childNodes.length>1
+ || ancestor.tagName.toLowerCase() == WYMeditor.OL
+ || ancestor.tagName.toLowerCase() == WYMeditor.UL)
+ this._doc.execCommand(cmd,'',null);
+ }
+
+ break;
+
+ default:
+
+ if(param) this._doc.execCommand(cmd,'',param);
+ else this._doc.execCommand(cmd,'',null);
+ }
+
+ //set to P if parent = BODY
+ var container = this.selected();
+ if(container.tagName.toLowerCase() == WYMeditor.BODY)
+ this._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
+};
+
+/* @name selected
+ * @description Returns the selected container
+ */
+WYMeditor.WymClassMozilla.prototype.selected = function() {
+
+ var sel = this._iframe.contentWindow.getSelection();
+ var node = sel.focusNode;
+ if(node) {
+ if(node.nodeName == "#text") return(node.parentNode);
+ else return(node);
+ } else return(null);
+};
+
+WYMeditor.WymClassMozilla.prototype.addCssRule = function(styles, oCss) {
+
+ styles.insertRule(oCss.name + " {" + oCss.css + "}",
+ styles.cssRules.length);
+};
+
+
+//keydown handler, mainly used for keyboard shortcuts
+WYMeditor.WymClassMozilla.prototype.keydown = function(evt) {
+
+ //'this' is the doc
+ var wym = WYMeditor.INSTANCES[this.title];
+ var container = null;
+
+ if(evt.ctrlKey){
+ if(evt.keyCode == 66){
+ //CTRL+b => STRONG
+ wym._exec(WYMeditor.BOLD);
+ return false;
+ }
+ if(evt.keyCode == 73){
+ //CTRL+i => EMPHASIS
+ wym._exec(WYMeditor.ITALIC);
+ return false;
+ }
+ }
+
+ else if(evt.keyCode == 13) {
+ if(!evt.shiftKey){
+ //fix PRE bug #73
+ container = wym.selected();
+ if(container && container.tagName.toLowerCase() == WYMeditor.PRE) {
+ evt.preventDefault();
+ wym.insert('<p></p>');
+ }
+ }
+ }
+};
+
+//keyup handler, mainly used for cleanups
+WYMeditor.WymClassMozilla.prototype.keyup = function(evt) {
+
+ //'this' is the doc
+ var wym = WYMeditor.INSTANCES[this.title];
+
+ wym._selected_image = null;
+ var container = null;
+
+ if(evt.keyCode == 13 && !evt.shiftKey) {
+
+ //RETURN key
+ //cleanup <br><br> between paragraphs
+ jQuery(wym._doc.body).children(WYMeditor.BR).remove();
+ }
+
+ if(evt.keyCode != 8
+ && evt.keyCode != 17
+ && evt.keyCode != 46
+ && evt.keyCode != 224
+ && !evt.metaKey
+ && !evt.ctrlKey) {
+
+ //NOT BACKSPACE, NOT DELETE, NOT CTRL, NOT COMMAND
+ //text nodes replaced by P
+
+ container = wym.selected();
+ var name = container.tagName.toLowerCase();
+
+ //fix forbidden main containers
+ if(
+ name == "strong" ||
+ name == "b" ||
+ name == "em" ||
+ name == "i" ||
+ name == "sub" ||
+ name == "sup" ||
+ name == "a"
+
+ ) name = container.parentNode.tagName.toLowerCase();
+
+ if(name == WYMeditor.BODY) wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
+ }
+};
+
+WYMeditor.WymClassMozilla.prototype.enableDesignMode = function() {
+ if(this._doc.designMode == "off") {
+ try {
+ this._doc.designMode = "on";
+ this._doc.execCommand("styleWithCSS", '', false);
+ } catch(e) { }
+ }
+};
+
+WYMeditor.WymClassMozilla.prototype.openBlockTag = function(tag, attributes)
+{
+ var attributes = this.validator.getValidTagAttributes(tag, attributes);
+
+ // Handle Mozilla styled spans
+ if (tag == 'span' && attributes.style) {
+ var new_tag = this.getTagForStyle(attributes.style);
+ if (new_tag) {
+ tag = new_tag;
+ this._tag_stack.pop();
+ this._tag_stack.push(tag);
+ attributes.style = '';
+ }
+ }
+
+ this.output += this.helper.tag(tag, attributes, true);
+};
+
+WYMeditor.WymClassMozilla.prototype.getTagForStyle = function(style) {
+
+ if(/bold/.test(style)) return 'strong';
+ if(/italic/.test(style)) return 'em';
+ if(/sub/.test(style)) return 'sub';
+ if(/super/.test(style)) return 'sup';
+ return false;
+};
+
diff --git a/studio/static/js/wymeditor/jquery.wymeditor.opera.js b/studio/static/js/wymeditor/jquery.wymeditor.opera.js
new file mode 100644
index 0000000..53c2232
--- /dev/null
+++ b/studio/static/js/wymeditor/jquery.wymeditor.opera.js
@@ -0,0 +1,119 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.opera.js
+ * Opera specific class and functions.
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ */
+
+WYMeditor.WymClassOpera = function(wym) {
+
+ this._wym = wym;
+ this._class = "class";
+ this._newLine = "\r\n";
+};
+
+WYMeditor.WymClassOpera.prototype.initIframe = function(iframe) {
+
+ this._iframe = iframe;
+ this._doc = iframe.contentWindow.document;
+
+ //add css rules from options
+ var styles = this._doc.styleSheets[0];
+ var aCss = eval(this._options.editorStyles);
+
+ this.addCssRules(this._doc, aCss);
+
+ this._doc.title = this._wym._index;
+
+ //set the text direction
+ jQuery('html', this._doc).attr('dir', this._options.direction);
+
+ //init designMode
+ this._doc.designMode = "on";
+
+ //init html value
+ this.html(this._wym._html);
+
+ //pre-bind functions
+ if(jQuery.isFunction(this._options.preBind)) this._options.preBind(this);
+
+ //bind external events
+ this._wym.bindEvents();
+
+ //bind editor keydown events
+ jQuery(this._doc).bind("keydown", this.keydown);
+
+ //bind editor events
+ jQuery(this._doc).bind("keyup", this.keyup);
+
+ //post-init functions
+ if(jQuery.isFunction(this._options.postInit)) this._options.postInit(this);
+
+ //add event listeners to doc elements, e.g. images
+ this.listen();
+};
+
+WYMeditor.WymClassOpera.prototype._exec = function(cmd,param) {
+
+ if(param) this._doc.execCommand(cmd,false,param);
+ else this._doc.execCommand(cmd);
+
+};
+
+WYMeditor.WymClassOpera.prototype.selected = function() {
+
+ var sel=this._iframe.contentWindow.getSelection();
+ var node=sel.focusNode;
+ if(node) {
+ if(node.nodeName=="#text")return(node.parentNode);
+ else return(node);
+ } else return(null);
+};
+
+WYMeditor.WymClassOpera.prototype.addCssRule = function(styles, oCss) {
+
+ styles.insertRule(oCss.name + " {" + oCss.css + "}",
+ styles.cssRules.length);
+};
+
+//keydown handler
+WYMeditor.WymClassOpera.prototype.keydown = function(evt) {
+
+ //'this' is the doc
+ var wym = WYMeditor.INSTANCES[this.title];
+ var sel = wym._iframe.contentWindow.getSelection();
+ startNode = sel.getRangeAt(0).startContainer;
+
+ //Get a P instead of no container
+ if(!jQuery(startNode).parentsOrSelf(
+ WYMeditor.MAIN_CONTAINERS.join(","))[0]
+ && !jQuery(startNode).parentsOrSelf('li')
+ && evt.keyCode != WYMeditor.KEY.ENTER
+ && evt.keyCode != WYMeditor.KEY.LEFT
+ && evt.keyCode != WYMeditor.KEY.UP
+ && evt.keyCode != WYMeditor.KEY.RIGHT
+ && evt.keyCode != WYMeditor.KEY.DOWN
+ && evt.keyCode != WYMeditor.KEY.BACKSPACE
+ && evt.keyCode != WYMeditor.KEY.DELETE)
+ wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
+
+};
+
+//keyup handler
+WYMeditor.WymClassOpera.prototype.keyup = function(evt) {
+
+ //'this' is the doc
+ var wym = WYMeditor.INSTANCES[this.title];
+ wym._selected_image = null;
+};
diff --git a/studio/static/js/wymeditor/jquery.wymeditor.pack.js b/studio/static/js/wymeditor/jquery.wymeditor.pack.js
new file mode 100644
index 0000000..427b621
--- /dev/null
+++ b/studio/static/js/wymeditor/jquery.wymeditor.pack.js
@@ -0,0 +1 @@
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('if(!f)o f={};(j(){if(!2n.4N||!4N.rN){o ae=["rM","rL","rK","rJ","9r","rI","3C","rH","rG","rF","rE","rD","5a","rC","cR","rB"];f.4N={};1j(o i=0;i<ae.Y;++i)f.4N[ae[i]]=j(){}}X f.4N=2n.4N})();D.55(f,{rA:"0.5-rz",2x:[],7K:[],5i:[],7P:"G",3Q:"{ry}",9X:"rx",dI:"{rw}",9n:"{rv}",9m:"{ru}",f1:"dB/",7w:"2Z.1b",dr:"2Z.js",f0:"3L/",9W:"{rt}",eZ:"1L/3U/",9l:"{rs}",9o:"{rr}",9V:"{rq}",9U:"{rp}",9M:"{ro}",9O:"{rn}",7S:"{rm}",9N:"{rl}",9S:"{rk}",9J:"{rj}",7R:"{ri}",9K:"{rh}",9T:"{rg}",9D:"{rf}",9G:"{rd}",9F:"{rc}",9E:"{rb}",7T:"{ra}",9R:"{r9}",9Q:"{r8}",9k:"{r7}",9j:"{r6}",dS:"3T",3w:"1i",ai:"N",P:"p",9A:"h1",9z:"h2",9y:"h3",9x:"h4",9w:"h5",9v:"h6",5r:"43",6e:"2H",A:"a",6o:"br",dz:"6V",dj:"3k",6g:"4E",5m:"5L",6s:"2G",6t:"ol",6v:"li",dT:"J",97:"1R",7u:"1V",64:"O",96:"5X",7t:"5c",68:"a5",7H:"a4",7G:"a2",7F:"a0",82:"eY",81:"eX",98:"eQ",94:"eP",dY:"eO",r5:"r4",dX:"eN",6x:"ad",6w:"ac",dW:"eM",4r:"r3",7E:"aa",r2:"ab",ak:"eT",al:"eU",6r:1g 6f("p","h1","h2","h3","h4","h5","h6","43","2H"),5v:1g 6f("6Q","2H","N","dl","2T","1M","h1","h2","h3","h4","h5","h6","hr","8w","ol","p","43","3k","2G","dd","dt","li","8v","4E","8u","5L","8t","6U"),3W:{ao:8,at:13,r1:35,r0:36,as:37,ar:38,aq:39,ap:40,qZ:1g 6f(37,38,39,40),an:46},qY:{qX:1,qW:2,qV:3},1h:j(5G,1S){c.3g=f.2x.1Y(c)-1;c.7J=5G;c.C=1S;c.4Q=D(5G).1A();if(c.C.Q)c.4Q=c.C.Q;c.C.4K=c.C.4K||c.dE();c.C.5j=c.C.5j||c.C.4K+f.f1+c.C.2Z+\'/\';c.C.7D=c.C.7D||c.dD();c.C.9s=c.C.9s||c.C.4K+f.f0;c.C.7U=c.C.7U||c.C.4K+f.eZ;c.C.7C=c.C.7C||c.dC();c.58()}});D.fn.5l=j(1S){1S=D.55({Q:"",4K:L,5j:L,7D:L,7U:L,7C:L,1E:L,4g:L,2Z:"3U",ds:S,52:S,3L:"en",4R:"8V",1x:"<N J=\'eL\'>"+"<N J=\'qU\'>"+f.9U+"</N>"+"<N J=\'qT\'></N>"+"<N J=\'qS\'>"+f.9T+f.9S+"</N>"+"<N J=\'qR\'>"+f.7T+f.9R+f.9Q+"</N>"+"<N J=\'qQ\'>"+f.9V+"</N>"+"</N>",ef:"<a J=\'qP\' "+"1R=\'8T://eB.5l.eA/\'>f</a>",4o:"<N J=\'a9 5p\'>"+"<1L "+"1V=\'"+f.9W+"qO.Q\' "+"4J=\'c.1I.qN.f.2x["+f.3Q+"].5y(c)\'"+"></1L>"+"</N>",3h:[],ee:"<N J=\'a8 5p\'>"+"<h2>{qM}</h2>"+"<2G>"+f.9M+"</2G>"+"</N>",e8:"<li J=\'"+f.9N+"\'><a 1R=\'#\' G=\'"+f.9O+"\' O=\'"+f.7S+"\'>"+f.7S+"</a></li>",e9:[{\'G\':\'eY\',\'O\':\'qL\',\'1b\':\'qK\'},{\'G\':\'eX\',\'O\':\'qJ\',\'1b\':\'qI\'},{\'G\':\'eW\',\'O\':\'eW\',\'1b\':\'qH\'},{\'G\':\'eV\',\'O\':\'eV\',\'1b\':\'qG\'},{\'G\':\'eU\',\'O\':\'qF\',\'1b\':\'qE\'},{\'G\':\'eT\',\'O\':\'qD\',\'1b\':\'qC\'},{\'G\':\'ad\',\'O\':\'ad\',\'1b\':\'qB\'},{\'G\':\'ac\',\'O\':\'ac\',\'1b\':\'qA\'},{\'G\':\'eS\',\'O\':\'eS\',\'1b\':\'qz\'},{\'G\':\'eR\',\'O\':\'eR\',\'1b\':\'qy\'},{\'G\':\'eQ\',\'O\':\'a5\',\'1b\':\'qx\'},{\'G\':\'ab\',\'O\':\'ab\',\'1b\':\'qw\'},{\'G\':\'eP\',\'O\':\'a4\',\'1b\':\'qv\'},{\'G\':\'eO\',\'O\':\'a2\',\'1b\':\'qu\'},{\'G\':\'eN\',\'O\':\'a0\',\'1b\':\'qt\'},{\'G\':\'eM\',\'O\':\'7T\',\'1b\':\'qs\'},{\'G\':\'aa\',\'O\':\'aa\',\'1b\':\'qr\'}],ed:"<N J=\'a7 5p\'>"+"<h2>{qq}</h2>"+"<2G>"+f.9D+"</2G>"+"</N>",e5:"<li J=\'"+f.9E+"\'>"+"<a 1R=\'#\' G=\'"+f.9G+"\'>"+f.9F+"</a></li>",e6:[{\'G\':\'P\',\'O\':\'qp\',\'1b\':\'qo\'},{\'G\':\'9A\',\'O\':\'qn\',\'1b\':\'qm\'},{\'G\':\'9z\',\'O\':\'ql\',\'1b\':\'qk\'},{\'G\':\'9y\',\'O\':\'qj\',\'1b\':\'qi\'},{\'G\':\'9x\',\'O\':\'qh\',\'1b\':\'qg\'},{\'G\':\'9w\',\'O\':\'qf\',\'1b\':\'qe\'},{\'G\':\'9v\',\'O\':\'qd\',\'1b\':\'qc\'},{\'G\':\'5r\',\'O\':\'qb\',\'1b\':\'qa\'},{\'G\':\'6e\',\'O\':\'q9\',\'1b\':\'q8\'},{\'G\':\'5m\',\'O\':\'q7\',\'1b\':\'q6\'}],ec:"<N J=\'a6 5p\'>"+"<h2>{q5}</h2><2G>"+f.9J+"</2G></N>",e7:"<li J=\'q4"+f.7R+"\'><a 1R=\'#\' G=\'"+f.7R+"\'>"+f.9K+"</a></li>",3Y:[],ea:"<N J=\'eJ 5p\'>"+"<h2>{q3}</h2>"+"</N>",eb:"<N J=\'eK 5p\'>"+"<h2>{q2}</h2>"+"<4F J=\'eI\'></4F>"+"</N>",q1:".eL",q0:".a8",pZ:" 2G",pY:".a7",pX:".a6",9g:".eK",pW:".a9 1L",6z:".a9",dR:".eJ",e3:".a8 a",88:".a7 a",e2:".a6 a",9q:".eI",99:".ew",7v:".es",63:".a3",95:".ev",7s:".er",dc:".eh",dm:".ek",dk:".ej",di:".eo",df:".el",62:"1M",d8:".6j",d9:"",dq:".6k",do:".ex",67:".eu",dn:".ep",de:".ei",da:".eg",e1:".pV",e0:"7Q",7I:"eH=no,eG=no,eF=no,eE=no"+",4I=eD,7m=eC,3q=0,2m=0",dV:"eH=no,eG=no,eF=no,eE=no"+",pU=pT,4I=eD,7m=eC,3q=0,2m=0",1H:"<!pS Q pR \'-//pQ//ez pP 1.0 pO//pN\'"+" \'8T://eB.pM.eA/pL/ey/ez/ey-pK.pJ\'>"+"<Q 3C=\'"+f.9o+"\'><2S>"+"<2w 5X=\'4g\' 1d=\'V/1b\' 8R=\'7k\'"+" 1R=\'"+f.9n+"\' />"+"<O>"+f.9k+"</O>"+"<2j 1d=\'V/8S\'"+" 1V=\'"+f.9l+"\'></2j>"+"<2j 1d=\'V/8S\'"+" 1V=\'"+f.9m+"\'></2j>"+"</2S>"+f.9j+"</Q>",dO:"<1i J=\'6i ex\'"+" 4J=\'f.5h("+f.3Q+")\'"+">"+"<1M>"+"<2T>"+"<1z 1d=\'5Y\' J=\'6k\' R=\'"+f.68+"\' />"+"<3l>{a5}</3l>"+"<N J=\'1N\'>"+"<1n>{et}</1n>"+"<1z 1d=\'V\' J=\'ew\' R=\'\' 2u=\'40\' />"+"</N>"+"<N J=\'1N\'>"+"<1n>{eq}</1n>"+"<1z 1d=\'V\' J=\'a3\' R=\'\' 2u=\'40\' />"+"</N>"+"<N J=\'1N\'>"+"<1n>{pI}</1n>"+"<1z 1d=\'V\' J=\'ev\' R=\'\' 2u=\'40\' />"+"</N>"+"<N J=\'1N 1N-a1\'>"+"<1z J=\'7Y\' 1d=\'3r\'"+" R=\'{7X}\' />"+"<1z J=\'6j\' 1d=\'3K\'"+"R=\'{7W}\' />"+"</N>"+"</2T>"+"</1M>"+"</1i>",dN:"<1i J=\'6i eu\'"+" 4J=\'f.5h("+f.3Q+")\'"+">"+"<1M>"+"<2T>"+"<1z 1d=\'5Y\' J=\'6k\' R=\'"+f.7H+"\' />"+"<3l>{a4}</3l>"+"<N J=\'1N\'>"+"<1n>{et}</1n>"+"<1z 1d=\'V\' J=\'es\' R=\'\' 2u=\'40\' />"+"</N>"+"<N J=\'1N\'>"+"<1n>{pH}</1n>"+"<1z 1d=\'V\' J=\'er\' R=\'\' 2u=\'40\' />"+"</N>"+"<N J=\'1N\'>"+"<1n>{eq}</1n>"+"<1z 1d=\'V\' J=\'a3\' R=\'\' 2u=\'40\' />"+"</N>"+"<N J=\'1N 1N-a1\'>"+"<1z J=\'7Y\' 1d=\'3r\'"+" R=\'{7X}\' />"+"<1z J=\'6j\' 1d=\'3K\'"+"R=\'{7W}\' />"+"</N>"+"</2T>"+"</1M>"+"</1i>",dM:"<1i J=\'6i ep\'"+" 4J=\'f.5h("+f.3Q+")\'"+">"+"<1M>"+"<2T>"+"<1z 1d=\'5Y\' J=\'6k\' R=\'"+f.7G+"\' />"+"<3l>{a2}</3l>"+"<N J=\'1N\'>"+"<1n>{pG}</1n>"+"<1z 1d=\'V\' J=\'eo\' R=\'\' 2u=\'40\' />"+"</N>"+"<N J=\'1N\'>"+"<1n>{pF}</1n>"+"<1z 1d=\'V\' J=\'el\' R=\'\' 2u=\'40\' />"+"</N>"+"<N J=\'1N\'>"+"<1n>{pE}</1n>"+"<1z 1d=\'V\' J=\'ek\' R=\'3\' 2u=\'3\' />"+"</N>"+"<N J=\'1N\'>"+"<1n>{pD}</1n>"+"<1z 1d=\'V\' J=\'ej\' R=\'2\' 2u=\'3\' />"+"</N>"+"<N J=\'1N 1N-a1\'>"+"<1z J=\'7Y\' 1d=\'3r\'"+" R=\'{7X}\' />"+"<1z J=\'6j\' 1d=\'3K\'"+"R=\'{7W}\' />"+"</N>"+"</2T>"+"</1M>"+"</1i>",dL:"<1i J=\'6i ei\'"+" 4J=\'f.5h("+f.3Q+")\'"+">"+"<1M>"+"<1z 1d=\'5Y\' J=\'6k\' R=\'"+f.7F+"\' />"+"<2T>"+"<3l>{a0}</3l>"+"<N J=\'1N\'>"+"<4F J=\'eh\' 7i=\'10\' 7j=\'50\'></4F>"+"</N>"+"<N J=\'1N\'>"+"<1z J=\'7Y\' 1d=\'3r\'"+" R=\'{7X}\' />"+"<1z J=\'6j\' 1d=\'3K\'"+"R=\'{7W}\' />"+"</N>"+"</2T>"+"</1M>"+"</1i>",dK:"<1i J=\'6i eg\'"+" 4J=\'f.5h("+f.3Q+")\'"+"></1i>",4z:[],6c:"{",6b:"}",9Z:1f,3B:1f,3z:1f,9a:1f,90:1f},1S);u c.dw(j(){1g f.1h(D(c),1S)})};D.55({pC:j(i){u(f.2x[i])}});f.1h.B.58=j(){if(D.7V.pB){o 4p=1g f.2t(c)}X if(D.7V.pA){o 4p=1g f.2C(c)}X if(D.7V.pz){o 4p=1g f.3V(c)}X if(D.7V.py){o 4p=1g f.3c(c)}if(4p){if(D.2A(c.C.9Z))c.C.9Z(c);o 9Y=1g f.1m();D.55(9Y,4p);c.42=1g f.1w(9Y);if(c.C.1E||c.C.4g){c.dA()}c.4O=1g f.2V();1j(o 6Z in 4p){c[6Z]=4p[6Z]}c.2f=D(c.7J).e4().6J(c.C.1x).8U().du(\'px\'+c.3g);if(D.2A(D.fn.4y)){D.4y(c.2f.5Z(0),f.9X,c.3g);D.4y(c.7J.5Z(0),f.9X,c.3g)}o h=f.1P;o 4o=c.C.4o;4o=h.1l(4o,f.3Q,c.3g);4o=h.1l(4o,f.9W,c.C.7U);o 1x=D(c.2f).Q();1x=h.1l(1x,f.9V,c.C.ef);1x=h.1l(1x,f.9U,c.C.ee);1x=h.1l(1x,f.9T,c.C.ed);1x=h.1l(1x,f.9S,c.C.ec);1x=h.1l(1x,f.7T,c.C.eb);1x=h.1l(1x,f.9R,4o);1x=h.1l(1x,f.9Q,c.C.ea);o 9P=2B(c.C.e9);o 9L="";1j(o i=0;i<9P.Y;i++){o 5o=9P[i];if(5o.G&&5o.O)o 4n=c.C.e8;o 4n=h.1l(4n,f.9O,5o.G);4n=h.1l(4n,f.7S,c.C.6c+5o.O+c.C.6b);4n=h.1l(4n,f.9N,5o.1b);9L+=4n}1x=h.1l(1x,f.9M,9L);o 6h=2B(c.C.3Y);o 9I="";1j(o i=0;i<6h.Y;i++){o 4l=6h[i];if(4l.G&&4l.O)o 4k=c.C.e7;4k=h.1l(4k,f.7R,4l.G);4k=h.1l(4k,f.9K,4l.O);9I+=4k}1x=h.1l(1x,f.9J,9I);o 9H=2B(c.C.e6);o 9C="";1j(o i=0;i<9H.Y;i++){o 5n=9H[i];if(5n.G&&5n.O)o 4m=c.C.e5;4m=h.1l(4m,f.9G,5n.G);4m=h.1l(4m,f.9F,c.C.6c+5n.O+c.C.6b);4m=h.1l(4m,f.9E,5n.1b);9C+=4m}1x=h.1l(1x,f.9D,9C);1x=c.9i(1x);D(c.2f).Q(1x);D(c.2f).3E(c.C.9g).e4();c.52()}};f.1h.B.5x=j(){o F=c;D(c.2f).3E(c.C.e3).7Q(j(){F.1K.1I.4W();F.dZ(D(c).1r(f.7P));u(L)});D(c.2f).3E(c.C.88).7Q(j(){F.K(D(c).1r(f.7P));u(L)});D(c.2f).3E(c.C.9q).2y(j(){D(F.I.1i).Q(D(c).1A())}).4W(j(){D(c).6d(\'9p\')}).pw(j(){D(c).6d(\'9p\')});D(c.2f).3E(c.C.e2).7Q(j(){o 6h=2B(F.C.3Y);o 9B=D(c).1r(f.7P);o 4l=f.1P.aH(6h,9B);if(4l){o 4x=4l.aO;F.6d(9B,4x)}F.1K.1I.4W();u(L)});D(c.C.e1).3A(c.C.e0,j(){F.6a()})};f.1h.B.pv=j(){u(c.I!=1f)};f.1h.B.co=j(){u(c.2f)};f.1h.B.Q=j(Q){if(1s Q===\'3T\')D(c.I.1i).Q(Q);X u(D(c.I.1i).Q())};f.1h.B.1v=j(){u c.42.3Z(c.Q())};f.1h.B.dZ=j(1F){3f(1F){1k f.98:o K=c.K();if(K||c.2l)c.4L(f.68);1p;1k f.94:c.4L(f.7H);1p;1k f.dY:c.4L(f.7G);1p;1k f.dX:c.4L(f.7F);1p;1k f.dW:c.6a();c.dG();1p;1k f.7E:c.4L(f.7E,c.C.dV);1p;3U:c.1O(1F);1p}};f.1h.B.K=j(3t){if(3t){o K=1f;if(3t.1q()==f.5m){K=c.K();3f(K.1t.1q()){1k f.6g:1k f.5m:1p;3U:o 7O=1g 6f(f.6g,f.5m);K=c.2K(c.K(),7O);1p}if(K!=1f){3t=(K.1t.1q()==f.6g)?f.5m:f.6g;c.9t(K,3t);c.6a()}}X{o 7O=1g 6f(f.P,f.9A,f.9z,f.9y,f.9x,f.9w,f.9v,f.5r,f.6e);K=c.2K(c.K(),7O);if(K){o 3R=1f;if(3t.1q()==f.6e){o 2H=c.2K(c.K(),f.6e);if(2H==1f){3R=c.I.61(3t);K.1B.dU(3R,K);3R.dx(K);c.4Z(3R.pu)}X{o 7N=2H.6u;o 9u=7N.Y;o 7M=1f;if(9u>0)7M=7N.4v(0);1j(o x=0;x<9u;x++){2H.1B.dU(7N.4v(0),2H)}2H.1B.pt(2H);if(7M)c.4Z(7M)}}X c.9t(K,3t);c.6a()}}}X u(c.1c())};f.1h.B.6d=j(4k,4x){o K=(c.2l?c.2l:D(c.1c()));K=D(K).4V(4x);D(K).6d(4k);if(!D(K).1r(f.dT))D(K).ps(c.5z)};f.1h.B.2K=j(Z,53){if(Z){o 4j=Z.1t.1q();if(1s(53)==f.dS){7c(4j!=53&&4j!=f.3w){Z=Z.1B;4j=Z.1t.1q()}}X{o 7L=L;7c(!7L&&4j!=f.3w){1j(o i=0;i<53.Y;i++){if(4j==53[i]){7L=S;1p}}if(!7L){Z=Z.1B;4j=Z.1t.1q()}}}if(4j!=f.3w)u(Z);X u(1f)}X u(1f)};f.1h.B.9t=j(Z,3t){o 3R=c.I.61(3t);o Q=D(Z).Q();Z.1B.pr(3R,Z);D(3R).Q(Q);c.4Z(3R)};f.1h.B.9i=j(4M){if(!f.7K[c.C.3L]){4u{2B(D.9e({9d:c.C.9s+c.C.3L+\'.js\',9c:L}).9b)}4t(e){f.4N.9r("f: 9r 7c pq d3 cP.");u 4M}}1j(o 1U in f.7K[c.C.3L]){4M=f.1P.1l(4M,c.C.6c+1U+c.C.6b,f.7K[c.C.3L][1U])};u(4M)};f.1h.B.dH=j(4M){u(c.C.6c+4M+c.C.6b)};f.1h.B.2p=j(dQ){D(c.2f).3E(c.C.dR).Q(dQ)};f.1h.B.6a=j(){o Q;D(c.I.1i).80(f.6o).5s();Q=c.1v();D(c.7J).1A(Q);D(c.2f).3E(c.C.9q).bt(\'.9p\').1A(Q);};f.1h.B.4L=j(69,7I,dJ){o dP=7I||c.1W.C.7I;o 9h=2n.60(\'\',\'4L\',dP);if(9h){o 4i="";3f(69){1k(f.68):4i=c.C.dO;1p;1k(f.7H):4i=c.C.dN;1p;1k(f.7G):4i=c.C.dM;1p;1k(f.7F):4i=c.C.dL;1p;1k(f.7E):4i=c.C.dK;1p;3U:4i=dJ}o h=f.1P;o 1H=c.C.1H;1H=h.1l(1H,f.dI,c.C.4K);1H=h.1l(1H,f.9o,c.C.4R);1H=h.1l(1H,f.9n,c.C.5j+f.7w);1H=h.1l(1H,f.9m,c.C.7D);1H=h.1l(1H,f.9l,c.C.7C);1H=h.1l(1H,f.9k,c.dH(69));1H=h.1l(1H,f.9j,4i);1H=h.1l(1H,f.3Q,c.3g);1H=c.9i(1H);o 4h=9h.3D;4h.pp(1H);4h.5f()}};f.1h.B.dG=j(){D(c.2f).3E(c.C.9g).po()};f.1h.B.dp=j(){o dF=1g pn();u("F-"+dF.pm())};f.1h.B.5E=j(2M){o K=c.1c(),Q=\'\',3s,1u;3s=2M.5F(1g 2N(c.4U+\'{2,}\',\'g\'));1j(o i=0,l=3s.Y;i<l;i++){Q+=\'<p>\'+(3s[i].5F(c.4U).5A(\'<br />\'))+\'</p>\'}if(K&&K.1t.1q()!=f.3w){3s=D(Q,c.I).pl(K);1u=3s[3s.Y-1]}X{3s=D(Q,c.I).pk(c.I.1i);1u=3s[3s.Y-1]}if(D(K).V()==\'\'){D(K).5s()}D(\'1i > br\',c.I).5s();c.4Z(1u)};f.1h.B.5B=j(Q){o 2L=c.1K.1I.3e(),1D,Z;if(2L.1u!=1f){1D=2L.au(0);Z=1D.pj(Q);1D.ph();1D.pg(Z)}X{c.5E(Q)}};f.1h.B.az=j(2m,2D){c.5B(2m+c.1K.1I.3e().8W()+2D)};f.1h.B.ay=j(){c.5B(c.1K.1I.3e().8W())};f.1h.B.4Z=j(Z,3X){o 1D=c.I.4Y(),2L=c.1K.1I.3e();3X=3X?0:1;1D.pf(Z);2L.pe(1D);2L.ax(Z,3X);c.1K.1I.4W()};f.1h.B.4S=j(4h,2s){o 1E=4h.4T[0];if(1E){1j(o i=0;i<2s.Y;i++){o 1Z=2s[i];if(1Z.G&&1Z.1b)c.5t(1E,1Z)}}};f.1h.B.dE=j(){u D(D.7x(D(\'2j\'),j(s){u(s.1V&&s.1V.M(/7B\\.5l(\\.7A|\\.7z|\\.7y)?\\.js(\\?.*)?$/))})).1r(\'1V\').W(/7B\\.5l(\\.7A|\\.7z|\\.7y)?\\.js(\\?.*)?$/,\'\')};f.1h.B.dD=j(){u D(D.7x(D(\'2j\'),j(s){u(s.1V&&s.1V.M(/7B\\.5l(\\.7A|\\.7z|\\.7y)?\\.js(\\?.*)?$/))})).1r(\'1V\')};f.1h.B.dC=j(){u D(D.7x(D(\'2j\'),j(s){u(s.1V&&s.1V.M(/7B(-(.*)){0,1}(\\.7A|\\.7z|\\.7y)?\\.js(\\?.*)?$/))})).1r(\'1V\')};f.1h.B.pd=j(){u D(D.7x(D(\'2w\'),j(s){u(s.1R&&s.1R.M(/5l\\/dB\\/(.*)7k\\.1b(\\?.*)?$/))})).1r(\'1R\')};f.1h.B.dA=j(){o 5k=1g f.3G();if(c.C.4g){5k.3Z(D.9e({9d:c.C.4g,9c:L}).9b)}X{5k.3Z(c.C.1E,L)}if(c.C.3Y.Y==0){c.C.3Y=5k.4A.3Y}if(c.C.3h.Y==0){c.C.3h=5k.4A.3h}if(c.C.4z.Y==0){c.C.4z=5k.4A.4z}};f.1h.B.5w=j(){D(c.I.1i).3A("7r",c.7r)};f.1h.B.7r=j(1e){o F=f.2x[c.pc.O];F.2l=(1e.dy.1t.1q()==f.dz)?1e.dy:1f};f.dv=j(1R){o 2w=3D.61(\'2w\');2w.5X=\'4g\';2w.1R=1R;o 2S=D(\'2S\').5Z(0);2S.dx(2w)};f.1h.B.52=j(){if(c.C.52&&!f.5i[c.C.2Z]){o 9f=L;o 6C=1g 2N(c.C.2Z+\'\\/\'+f.7w+\'$\');D(\'2w\').dw(j(){if(c.1R.M(6C))9f=S});if(!9f)f.dv(c.C.5j+f.7w)}D(c.2f).du("pb"+c.C.2Z);if(c.C.ds&&!f.5i[c.C.2Z]){2B(D.9e({9d:c.C.5j+f.dr,9c:L}).9b)}if(f.5i[c.C.2Z]&&f.5i[c.C.2Z].58)f.5i[c.C.2Z].58(c)};f.5h=j(7o){o F=2n.pa.f.2x[7o];o 4h=2n.3D;o 1c=F.1c();o 69=D(F.C.dq).1A();o 65=F.dp();3f(69){1k f.68:if(1c&&1c.1t&&1c.1t.1q!=f.A)1c=D(1c).4V(f.A);if(!1c&&F.2l)1c=D(F.2l).4V(f.A);1p}if(D.2A(F.C.9a))F.C.9a(F,2n);o 1E=4h.4T[0];o 2s=2B(F.C.4z);F.4S(4h,2s);if(1c){D(F.C.99).1A(D(1c).1r(f.97));D(F.C.7v).1A(D(1c).1r(f.7u));D(F.C.63).1A(D(1c).1r(f.64));D(F.C.95).1A(D(1c).1r(f.96));D(F.C.7s).1A(D(1c).1r(f.7t))}if(F.2l){D(F.C.67+" "+F.C.7v).1A(D(F.2l).1r(f.7u));D(F.C.67+" "+F.C.63).1A(D(F.2l).1r(f.64));D(F.C.67+" "+F.C.7s).1A(D(F.2l).1r(f.7t))}D(F.C.do+" "+F.C.62).3r(j(){o 5g=D(F.C.99).1A();if(5g.Y>0){o 2w;if(1c[0]&&1c[0].1t.1q()==f.A){2w=1c}X{F.1O(f.98,65);2w=D("a[1R="+65+"]",F.I.1i)}2w.1r(f.97,5g).1r(f.64,D(F.C.63).1A()).1r(f.96,D(F.C.95).1A())}2n.5f()});D(F.C.67+" "+F.C.62).3r(j(){o 5g=D(F.C.7v).1A();if(5g.Y>0){F.1O(f.94,65);D("6V[1V$="+65+"]",F.I.1i).1r(f.7u,5g).1r(f.64,D(F.C.63).1A()).1r(f.7t,D(F.C.7s).1A())}2n.5f()});D(F.C.dn+" "+F.C.62).3r(j(){o 93=D(F.C.dm).1A();o 92=D(F.C.dk).1A();if(93>0&&92>0){o 3k=F.I.61(f.dj);o 91=1f;o p9=1f;o dg=D(F.C.di).1A();o dh=3k.p8();dh.8X=dg;1j(x=0;x<93;x++){91=3k.p7(x);1j(y=0;y<92;y++){91.p6(y)}}D(3k).1r(\'cm\',D(F.C.df).1A());o Z=D(F.2K(F.K(),f.6r)).5Z(0);if(!Z||!Z.1B)D(F.I.1i).p5(3k);X D(Z).6J(3k)}2n.5f()});D(F.C.de+" "+F.C.62).3r(j(){o db=D(F.C.dc).1A();F.5E(db);2n.5f()});D(F.C.da+" "+F.C.d9).Q(F.1v());D(F.C.d8).7r(j(){2n.5f()});if(D.2A(F.C.90))F.C.90(F,2n)};f.2V=j(){c.7q=3D.61(\'N\');u c};f.2V.B.E=j(G,1S,60){1S=1S||L;60=60||L;u\'<\'+G+(1S?c.8Z(1S):\'\')+(60?\'>\':\' />\')};f.2V.B.p4=j(G,2c,1S){1S=1S||L;u\'<\'+G+(1S?c.8Z(1S):\'\')+\'>\'+2c+\'</\'+G+\'>\'};f.2V.B.p3=j(2c){u\'<![p2[\'+2c+\']]>\'};f.2V.B.d5=j(3P){u c.d7(c.d4(3P))};f.2V.B.d7=j(d6){u d6.W(/&p1;([a-z]+|(#\\d+));/ig,"&$1;")};f.2V.B.8Z=j(1S){o 3P=c;3P.8Y=\'\';1j(o 1U in 1S){o p0=\'\';o R=1S[1U];if(1s R!=\'j\'&&R.Y>0){if(cf(1U)==1U&&1s R==\'4B\'){1U=R.oZ();R=R.4P()}if(1U!=\'\'&&R!=\'\'){3P.8Y+=\' \'+1U+\'="\'+3P.d5(R)+\'"\'}}}u 3P.8Y};f.2V.B.d4=j(3T,7p){c.7q.8X=3T;c.7q.oY=3T;o 1Q=c.7q.8X;if(1s 7p==\'2e\'){if(7p!=L)1Q=1Q.W(\'"\',\'&oX;\');if(7p==S)1Q=1Q.W(\'"\',\'&#oW;\')}u 1Q};f.2V.B.oV=j(5d){o 1Q=[];o 2i=5d.5F(/((=\\s*")(")("))|((=\\s*\\\')(\\\')(\\\'))|((=\\s*[^>\\s]*))/g);if(2i.8W()!=5d){1j(o k in 2i){o v=2i[k];if(1s v!=\'j\'&&v.Y!=0){o re=1g 2N(\'(\\\\w+)\\\\s*\'+v);if(M=5d.M(re)){o R=v.W(/^[\\s=]+/,"");o 5e=R.oU(0);5e=5e==\'"\'?\'"\':(5e=="\'"?"\'":\'\');if(5e!=\'\'){R=5e==\'"\'?R.W(/^"|"+$/g,\'\'):R.W(/^\'|\'+$/g,\'\')}5d=5d.W(M[0],\'\');1Q.1Y([M[1],R])}}}}u 1Q};f.bu={"8N":{"oT":{"5b":["57","2S","Q","7n","1T","2j","1o","O"],"H":["J","id","1o","O","d2","d1"]},"d3":{"5b":["57","br","hr","1L","1T","2j"],"H":{"3C":["8V","cS"],"0":"3L","1":"3P:3L"}},"d0":{"H":{"d2":/^(\\w){1}$/,"d1":/^(\\d)+$/}}},"8O":{"2n":{"7g":["1i"],"H":["4J","oS"]},"1M":{"7g":["1M","1z","4F","4X","a","1n","3K"],"H":["oR","oQ","oP","oO","oN","aG"]},"d0":{"5b":["57","6X","br","cp","oM","2S","Q","1L","7n","1T","2j","1o","O"],"H":["oL","oK","aF"]},"oJ":{"5b":["57","6X","br","2S","Q","7n","1T","2j","1o","O"],"H":["aE","oI","oH","oG","oF","oE","oD"]}},"1J":{"a":{"H":{"0":"7l","1":"cZ","2":"1R","3":"cM","4":"G","5":"5X","6":"cL","cY":/^(cX|cW|8x|cV|cU|cT)$/,"7":"1d"}},"0":"6Y","1":"8q","2":"6Q","bp":{"H":{"0":"5c","1":"cZ","2":"1R","oC":/^(S|L)$/,"cY":/^(cX|cW|8x|cV|cU|cT)$/},"2d":["5c"]},"3":"b","57":{"H":["1R"],"2d":["1R"]},"6X":{"H":{"3C":/^(8V|cS)$/},"2d":["3C"]},"4":"bo","2H":{"H":["56"]},"5":"1i","6":"br","3K":{"H":{"2Y":/^(2Y)$/,"1d":/^(3K|cO|3r)$/,"0":"R"},"3O":"1M"},"7":"bn","8":"56","9":"bm","6W":{"H":{"4f":/^(2D|2m|4e|4d)$/,"0":"2X","1":"4c","3u":/^(\\d)+$/,"4b":/^(3q|4a|49|48)$/,"2":"4I"},"3O":"5N"},"5N":{"H":{"4f":/^(2D|2m|4e|4d)$/,"0":"2X","1":"4c","3u":/^(\\d)+$/,"4b":/^(3q|4a|49|48)$/,"2":"4I"}},"10":"dd","8p":{"H":{"0":"56","cN":/^([0-9]){8}/}},"11":"N","12":"bl","13":"dl","14":"dt","15":"em","2T":{"3O":"1M"},"1M":{"H":{"0":"5Q","1":"5T","2":"5T-7l","3":"oB","oA":/^(5Z|oz)$/},"2d":["5Q"]},"2S":{"H":["cR"]},"16":"h1","17":"h2","18":"h3","19":"h4","20":"h5","21":"h6","22":"hr","Q":{"H":["oy"]},"23":"i","6V":{"H":["5c","1V","7m","ox","ow","cw","4I"],"2d":["5c","1V"]},"1z":{"H":{"0":"5T","1":"5c","cQ":/^(cQ)$/,"2Y":/^(2Y)$/,"ov":/^(\\d)+$/,"2":"G","8P":/^(8P)$/,"2u":/^(\\d)+$/,"3":"1V","1d":/^(3K|ou|cP|5Y|bs|ot|os|cO|3r|V)$/,"4":"R"},"3O":"1M"},"bk":{"H":{"0":"56","cN":/^([0-9]){8}/}},"24":"bj","1n":{"H":["1j"],"3O":"1M"},"25":"3l","26":"li","2w":{"H":{"0":"7l","1":"1R","2":"cM","8R":/^(8Q|cq|cr|cs|7k|oq|,|;|)+$/i,"5X":/^(cK|cJ|cI|cH|cG|cF|cE|cD|cC|7o|8U|cB|cA|3p|4g|cz||cy|cx)+$/i,"cL":/^(cK|cJ|cI|cH|cG|cF|cE|cD|cC|7o|8U|cB|cA|3p|4g|cz||cy|cx)+$/i,"3":"1d"},"3O":"2S"},"bi":{"H":["id","G"],"2d":["id"]},"7n":{"H":{"0":"2c","8T-bq":/^(2c\\-1d|op|oo|om\\-ok)$/i,"1":"G","2":"oj"},"2d":["2c"]},"27":"8w","4B":{"H":["oi","oh","og","of","4y","oe","7m","G","od","1d","cw","4I"]},"28":"ol","bh":{"H":{"0":"1n","2Y":/^(2Y)$/},"2d":["1n"]},"6T":{"H":{"0":"1n","2Y":/^(2Y)$/,"1c":/^(1c)$/,"1":"R"},"3O":"4X"},"29":"p","1T":{"H":{"0":"1d","cv":/^(4y|oc|4B)$/,"1":"cv","2":"R"},"2d":["G"]},"30":"43","q":{"H":["56"]},"31":"bg","2j":{"H":{"1d":/^(V\\/ob|V\\/8S|V\\/oa|V\\/o9|V\\/o8|V\\/3P)$/,"0":"7l","cu":/^(cu)$/,"1":"1V"},"2d":["1d"]},"4X":{"H":{"2Y":/^(2Y)$/,"ct":/^(ct)$/,"0":"G","1":"2u"},"3O":"1M"},"32":"bf","33":"3u","34":"3b","1o":{"H":{"0":"1d","8R":/^(7k|o7|o6|cs|o5|cr|cq|o4|8Q)$/},"2d":["1d"]},"35":"3a","36":"3S","3k":{"H":{"0":"cn","1":"o3","2":"o2","cp":/^(o1|o0|nZ|nY|nX|nW|nV|co|cn)$/,"nU":/^(nT|nS|7i|7j|8Q)$/,"3":"cm","4":"4I"}},"8v":{"H":{"4f":/^(2D|2m|4e|4d)$/,"0":"2X","1":"4c","4b":/^(3q|4a|49|48)$/}},"4E":{"H":{"0":"6Y","4f":/^(2m|2D|4e|4d|2X)$/,"1":"cl","2":"2X","3":"4c","ck":/^(\\d)+$/,"4":"cj","ci":/^(\\d)+$/,"1G":/^(6W|5N|1N|ch)$/,"4b":/^(3q|4a|49|48)$/}},"4F":{"H":["7j","7i","2Y","G","8P"],"2d":["7j","7i"],"3O":"1M"},"8u":{"H":{"4f":/^(2D|2m|4e|4d)$/,"0":"2X","1":"4c","4b":/^(3q|4a|49)$/,"2":"48"}},"5L":{"H":{"0":"6Y","4f":/^(2m|2D|4e|4d|2X)$/,"1":"cl","2":"2X","3":"4c","ck":/^(\\d)+$/,"4":"cj","ci":/^(\\d)+$/,"1G":/^(6W|5N|1N|ch)$/,"4b":/^(3q|4a|49|48)$/}},"8t":{"H":{"4f":/^(2D|2m|4e|4d)$/,"0":"2X","1":"4c","4b":/^(3q|4a|49|48)$/}},"37":"O","6U":{"H":{"4f":/^(2D|2m|4e|4d|2X)$/,"0":"2X","1":"4c","4b":/^(3q|4a|49|48)$/}},"38":"be","39":"2G","40":"o"},6L:[],6K:[],5q:j(E,H){o 7h={};o cg=c.ca(E);1j(o 2k in H){o R=H[2k];o h=f.1P;if(!h.2E(c.6L,2k)&&!h.2E(c.6K,R)){if(1s R!=\'j\'&&h.2E(cg,2k)){if(c.cc(E,2k)){if(c.cb(E,2k,R)){7h[2k]=R}}X{7h[2k]=R}}}}u 7h},c9:j(E){o 1Q=[];if(c.1J[E]&&c.1J[E][\'H\']){1j(k in c.1J[E][\'H\']){1Q.1Y(cf(k)==k?c.1J[E][\'H\'][k]:k)}}u 1Q},cd:j(){o 1Q=[];1j(o 1U in c.8O){1Q.1Y(c.8O[1U])}1j(o 1U in c.8N){1Q.1Y(c.8N[1U])}u 1Q},ce:j(E){if(c.1J[E]){u S}1j(o 1U in c.1J){if(c.1J[1U]==E){u S}}u L},c8:j(E){o 8L=[];if(c.ce(E)){o 8M=c.cd();1j(o 1U in 8M){o 3N=8M[1U];if(1s 3N==\'4B\'){o h=f.1P;if((3N[\'5b\']&&h.2E(3N[\'5b\'],E))||(3N[\'7g\']&&!h.2E(3N[\'7g\'],E))){nR}o 7f=3N[\'H\']?3N[\'H\']:3N[\'nQ\'];1j(o k in 7f){8L.1Y(1s 7f[k]!=\'3T\'?k:7f[k])}}}}u 8L},cc:j(E,2k){u c.1J[E]&&((c.1J[E][\'H\']&&c.1J[E][\'H\'][2k])||(c.1J[E][\'2d\']&&f.1P.2E(c.1J[E][\'2d\'],2k)))},cb:j(E,2k,R){if(c.1J[E]&&(c.1J[E][\'H\']&&c.1J[E][\'H\'][2k]&&R.Y>0&&!R.M(c.1J[E][\'H\'][2k]))||(c.1J[E]&&c.1J[E][\'2d\']&&f.1P.2E(c.1J[E][\'2d\'],2k)&&R.Y==0)){u L}u 1s c.1J[E]!=\'2e\'},ca:j(E){if(!c.5W){c.5W={}}if(!c.5W[E]){c.5W[E]=c.c9(E).nP(c.c8(E))}u c.5W[E]}};f.2W=j(7d){c.4H=7d;c.47=[];c.8K=[];c.5V=1f;u c};f.2W.B.45=j(3o,1n){1n=1n||S;o 5a=c.47.Y;c.47[5a]=3o;c.8K[5a]=1n;c.5V=1f};f.2W.B.M=j(c7){if(c.47.Y==0){u[L,\'\']}o 2i=c7.M(c.c6());if(!2i){u[L,\'\']}o M=2i[0];1j(o i=1;i<2i.Y;i++){if(2i[i]){u[c.8K[i-1],M]}}u[S,2i[0]]};f.2W.B.c6=j(){if(c.5V==1f){1j(o i=0,5a=c.47.Y;i<5a;i++){c.47[i]=\'(\'+c.c4(c.c5(c.47[i]).W(/([\\/\\(\\)])/g,\'\\\\$1\'))+\')\'}c.5V=1g 2N(c.47.5A("|"),c.bW())}u c.5V};f.2W.B.c5=j(7e){u 7e.W(/\\(\\?(i|m|s|x|U)\\)/,\'~~~~~~c3\\$1~~~~~~\').W(/\\(\\?(\\-[i|m|s|x|U])\\)/,\'~~~~~~c2\\$1~~~~~~\').W(/\\(\\?\\=(.*)\\)/,\'~~~~~~c1\\$1~~~~~~\').W(/\\(\\?\\!(.*)\\)/,\'~~~~~~c0\\$1~~~~~~\').W(/\\(\\?\\<\\=(.*)\\)/,\'~~~~~~bZ\\$1~~~~~~\').W(/\\(\\?\\<\\!(.*)\\)/,\'~~~~~~bY\\$1~~~~~~\').W(/\\(\\?\\:(.*)\\)/,\'~~~~~~bX\\$1~~~~~~\')};f.2W.B.c4=j(7e){u 7e.W(/~~~~~~c3(.{1})~~~~~~/,"(?\\$1)").W(/~~~~~~c2(.{2})~~~~~~/,"(?\\$1)").W(/~~~~~~c1(.*)~~~~~~/,"(?=\\$1)").W(/~~~~~~c0(.*)~~~~~~/,"(?!\\$1)").W(/~~~~~~bZ(.*)~~~~~~/,"(?<=\\$1)").W(/~~~~~~bY(.*)~~~~~~/,"(?<!\\$1)").W(/~~~~~~bX(.*)~~~~~~/,"(?:\\$1)")};f.2W.B.bW=j(){u(c.4H?"m":"mi")};f.5U=j(3p){c.59=[3p];u c};f.5U.B.8G=j(){u c.59[c.59.Y-1]};f.5U.B.8I=j(2b){c.59.1Y(2b)};f.5U.B.8J=j(){if(c.59.Y==1){u L}c.59.4P();u S};f.77=1;f.bU=2;f.3H=3;f.5I=4;f.74=5;f.2h=j(42,3p,7d){3p=3p||\'5T\';c.4H=7d||L;c.2q={};c.8H=42;c.44=1g f.5U(3p);c.2I={};c.2I[3p]=3p;u c};f.2h.B.45=j(3o,T){o T=T||"5T";if(1s c.2q[T]==\'2e\'){c.2q[T]=1g f.2W(c.4H)}c.2q[T].45(3o);if(1s c.2I[T]==\'2e\'){c.2I[T]=T}};f.2h.B.2P=j(3o,T,5S){if(1s c.2q[T]==\'2e\'){c.2q[T]=1g f.2W(c.4H)}c.2q[T].45(3o,5S);if(1s c.2I[5S]==\'2e\'){c.2I[5S]=5S}};f.2h.B.2F=j(3o,T){if(1s c.2q[T]==\'2e\'){c.2q[T]=1g f.2W(c.4H)}c.2q[T].45(3o,"bS");if(1s c.2I[T]==\'2e\'){c.2I[T]=T}};f.2h.B.4D=j(3o,T,5R){if(1s c.2q[T]==\'2e\'){c.2q[T]=1g f.2W(c.4H)}c.2q[T].45(3o,\'bQ\'+5R);if(1s c.2I[5R]==\'2e\'){c.2I[5R]=5R}};f.2h.B.8i=j(T,7a){c.2I[T]=7a};f.2h.B.3Z=j(1y){if(1s c.8H==\'2e\'){u L}o Y=1y.Y;o 3M;7c(1s(3M=c.bM(1y))==\'4B\'){o 1y=3M[0];o 7b=3M[1];o 3n=3M[2];o T=3M[3];if(!c.bV(7b,3n,T)){u L}if(1y==\'\'){u S}if(1y.Y==Y){u L}Y=1y.Y}if(!3M){u L}u c.4G(1y,f.3H)};f.2h.B.bV=j(7b,3n,T){T=T||L;if(!c.4G(7b,f.3H)){u L}if(1s T==\'nO\'){u c.4G(3n,f.bU)}if(c.bT(T)){if(!c.4G(3n,f.5I)){u L}u c.44.8J()}if(c.bR(T)){c.44.8I(c.bP(T));if(!c.4G(3n,f.74)){u L}u c.44.8J()}c.44.8I(T);u c.4G(3n,f.77)};f.2h.B.bT=j(T){u(T==="bS")};f.2h.B.bR=j(T){u(T.6B(0,1)=="bQ")};f.2h.B.bP=j(T){u T.6B(1)};f.2h.B.4G=j(2c,bN){if(2c===\'\'){u S}o bO=c.44.8G();o 7a=c.2I[bO];o 1Q;2B(\'1Q = c.8H.\'+7a+\'(2c, bN);\');u 1Q};f.2h.B.bM=j(1y){o 3n=c.2q[c.44.8G()].M(1y);o M=3n[1];o 5Q=3n[0];if(5Q){o 8F=1y.8a(M);o bL=1y.aJ(0,8F);1y=1y.6B(8F+M.Y);u[1y,bL,M,5Q]}u S};f.3m=j(42){D.55(c,1g f.2h(42,\'3i\'));c.8i(\'3i\',\'3i\');c.bK();c.58();u c};f.3m.B.58=j(){};f.3m.B.bK=j(){c.bJ(\'3i\');c.bI(\'3i\');c.bH(\'3i\');c.bG(\'3i\')};f.3m.B.bJ=j(1G){c.2P("<!--",1G,\'8E\');c.2F("-->",\'8E\')};f.3m.B.bI=j(1G){c.2P("<2j",1G,\'8D\');c.2F("</2j>",\'8D\')};f.3m.B.bH=j(1G){c.2P("<1o",1G,\'8C\');c.2F("</1o>",\'8C\')};f.3m.B.bG=j(1G){c.4D("<\\\\s*[a-5J-9:\\-]+\\\\s*>",1G,\'78\');c.2P("<[a-5J-9:\\-]+"+\'[\\\\\\/ \\\\\\>]+\',1G,\'78\');c.bF(\'78\');c.4D("</\\\\s*[a-5J-9:\\-]+\\\\s*>",1G,\'bB\')};f.3m.B.bF=j(1G){c.4D(\'\\\\s+\',1G,\'54\');c.bE(1G);c.2F(\'/>\',1G);c.2F(\'>\',1G)};f.3m.B.bE=j(1G){c.4D("\\\\s*[a-z-8h-9]*:?[a-z-8h-9]+\\\\s*(?=\\=)\\\\s*",1G,\'bw\');c.2P(\'=\\\\s*"\',1G,\'72\');c.45("\\\\\\\\\\"",\'72\');c.2F(\'"\',\'72\');c.2P("=\\\\s*\'",1G,\'71\');c.45("\\\\\\\\\'",\'71\');c.2F("\'",\'71\');c.4D(\'=\\\\s*[^>\\\\s]*\',1G,\'bv\')};f.1w=j(bD,T){o T=T||\'3i\';c.6H=1g f.3m(c);c.1a=bD;c.44=T;c.nN=[];c.nM=\'\';c.nL=\'\';u c};f.1w.B.3Z=j(1y){c.6H.3Z(c.6S(1y));u c.6R(c.1a.b6())};f.1w.B.6S=j(1y){if(1y.M(/J="aY"/)||1y.M(/ns = "nK:nJ-nI-nH/)){c.1a.aZ()}u c.1a.6S(1y)};f.1w.B.6R=j(3M){if(c.1a.8o){c.1a.aX()}u c.1a.6R(3M)};f.1w.B.54=j(M,2b){u S};f.1w.B.3i=j(V){c.1a.b5(V);u S};f.1w.B.8E=j(M,2p){u c.79(M,2p,\'6O\')};f.1w.B.8D=j(M,2p){u c.79(M,2p,\'6N\')};f.1w.B.8C=j(M,2p){u c.79(M,2p,\'6M\')};f.1w.B.79=j(M,2b,1d){3f(2b){1k f.77:c.5P=M;1p;1k f.3H:c.5P+=M;1p;1k f.5I:3f(1d){1k\'6O\':c.1a.6O(c.5P+M);1p;1k\'6N\':c.1a.6N(c.5P+M);1p;1k\'6M\':c.1a.6M(c.5P+M);1p}}u S};f.1w.B.78=j(M,2b){3f(2b){1k f.77:c.bC=c.75(M);c.5O={};1p;1k f.74:c.8B(c.75(M));1p;1k f.5I:c.8B(c.bC,c.5O)}u S};f.1w.B.bB=j(M,2b){c.8y(c.75(M));u S};f.1w.B.8B=j(E,H){o H=H||{};c.bz(E);if(c.1a.8n(E)){c.1a.4q.1Y(E);c.1a.aT(E,H);c.1a.6m(E,H);c.8A(E)}X if(c.1a.aW(E)){c.1a.b4(E,H)}X{c.1a.b3(E,H);c.8A(E)}c.1a.6I=E;c.1a.8l=S;c.1a.nG=H};f.1w.B.8y=j(E){if(c.bA(E)){c.by(E);if(c.1a.8n(E)){o 76=c.1a.4q.4P();if(76==L){u}X if(76!=E){E=76}c.1a.b2(E)}X{c.1a.b1(E)}}X{c.1a.b0(E)}c.1a.6I=E;c.1a.8l=L};f.1w.B.8A=j(E){c.1a.2U[E]=c.1a.2U[E]||0;c.1a.2U[E]++};f.1w.B.bA=j(E){if(c.1a.2U[E]){c.1a.2U[E]--;if(c.1a.2U[E]==0){c.1a.2U[E]=2e}u S}u L};f.1w.B.bz=j(3d){c.8z(3d,L)};f.1w.B.by=j(E){c.8z(E,S)};f.1w.B.8z=j(3d,2R){o 2R=2R||L;if(c.1a.2U){1j(o E in c.1a.2U){o bx=c.1a.2U[E];if(bx>0&&c.1a.bd(E,3d,2R)){c.8y(E,S)}}}};f.1w.B.6P=j(){u c.1a.6P()};f.1w.B.75=j(E){E=E.W(/^([\\s<\\/>]*)|([\\s<\\/>]*)$/gm,\'\').1q();o 3j=c.1a.6P();if(3j[E]){u 3j[E]}u E};f.1w.B.bw=j(M,2b){if(f.74==2b){c.70=M}u S};f.1w.B.72=j(M,2b){if(f.3H==2b){c.5O[c.70]=M}u S};f.1w.B.71=j(M,2b){if(f.3H==2b){c.5O[c.70]=M}u S};f.1w.B.bv=j(M,2b){c.5O[c.70]=M.W(/^=/,\'\');u S};f.1m=j(){c.1X=\'\';c.4O=1g f.2V();c.2U={};c.3v=f.bu;c.4q=[];c.5K=[];c.8s={\'&b8;\':\'&#b9;\',\'&nF;\':\'&#nE;\',\'&nD;\':\'&#nC;\',\'&nB;\':\'&#nA;\',\'&nz;\':\'&#ny;\',\'&nx;\':\'&#nw;\',\'&nv;\':\'&#nt;\',\'&nr;\':\'&#nq;\',\'&np;\':\'&#nn;\',\'&nm;\':\'&#nl;\',\'&nk;\':\'&#nj;\',\'&nh;\':\'&#ng;\',\'&bt;\':\'&#nf;\',\'&nd;\':\'&#nc;\',\'&nb;\':\'&#na;\',\'&n9;\':\'&#n8;\',\'&n7;\':\'&#n6;\',\'&n5;\':\'&#n4;\',\'&n3;\':\'&#n2;\',\'&n1;\':\'&#n0;\',\'&mZ;\':\'&#mY;\',\'&mX;\':\'&#mW;\',\'&mV;\':\'&#mU;\',\'&mT;\':\'&#mS;\',\'&mR;\':\'&#mQ;\',\'&mP;\':\'&#mO;\',\'&mN;\':\'&#mM;\',\'&mL;\':\'&#mK;\',\'&mJ;\':\'&#mI;\',\'&mH;\':\'&#mG;\',\'&mF;\':\'&#mE;\',\'&mD;\':\'&#mC;\',\'&mB;\':\'&#mA;\',\'&mz;\':\'&#my;\',\'&mx;\':\'&#mw;\',\'&mv;\':\'&#mt;\',\'&ms;\':\'&#mr;\',\'&mq;\':\'&#mp;\',\'&mo;\':\'&#mn;\',\'&mm;\':\'&#ml;\',\'&mk;\':\'&#mj;\',\'&mh;\':\'&#mg;\',\'&mf;\':\'&#me;\',\'&md;\':\'&#mc;\',\'&mb;\':\'&#ma;\',\'&m9;\':\'&#m8;\',\'&m7;\':\'&#m6;\',\'&m5;\':\'&#m4;\',\'&m3;\':\'&#m2;\',\'&m1;\':\'&#m0;\',\'&lZ;\':\'&#lY;\',\'&lX;\':\'&#lW;\',\'&lV;\':\'&#lU;\',\'&lT;\':\'&#lS;\',\'&lR;\':\'&#lQ;\',\'&lP;\':\'&#lO;\',\'&lN;\':\'&#lM;\',\'&lL;\':\'&#lK;\',\'&lJ;\':\'&#lI;\',\'&lH;\':\'&#lG;\',\'&lF;\':\'&#lE;\',\'&lD;\':\'&#lC;\',\'&lB;\':\'&#lA;\',\'&lz;\':\'&#ly;\',\'&lx;\':\'&#7Z;\',\'&lw;\':\'&#lv;\',\'&lu;\':\'&#lt;\',\'&ls;\':\'&#lr;\',\'&lq;\':\'&#lp;\',\'&lo;\':\'&#ln;\',\'&lm;\':\'&#ll;\',\'&lk;\':\'&#lj;\',\'&lh;\':\'&#lg;\',\'&lf;\':\'&#ld;\',\'&lc;\':\'&#lb;\',\'&la;\':\'&#l9;\',\'&l8;\':\'&#l7;\',\'&l6;\':\'&#l5;\',\'&l4;\':\'&#l3;\',\'&l2;\':\'&#l1;\',\'&l0;\':\'&#kZ;\',\'&kY;\':\'&#kX;\',\'&kW;\':\'&#kV;\',\'&kU;\':\'&#kT;\',\'&kS;\':\'&#kR;\',\'&kQ;\':\'&#kP;\',\'&kO;\':\'&#kN;\',\'&kM;\':\'&#kL;\',\'&kK;\':\'&#kJ;\',\'&kI;\':\'&#kH;\',\'&kG;\':\'&#kF;\',\'&kE;\':\'&#kD;\',\'&kC;\':\'&#kB;\',\'&kA;\':\'&#kz;\',\'&ky;\':\'&#kx;\',\'&kw;\':\'&#kv;\',\'&ku;\':\'&#kt;\',\'&ks;\':\'&#kr;\',\'&kq;\':\'&#kp;\',\'&ko;\':\'&#kn;\',\'&km;\':\'&#kl;\',\'&kk;\':\'&#kj;\',\'&8x;\':\'&#ki;\',\'&kh;\':\'&#kg;\',\'&kf;\':\'&#ke;\',\'&kd;\':\'&#kc;\',\'&kb;\':\'&#ka;\',\'&k9;\':\'&#k8;\',\'&k7;\':\'&#k6;\',\'&k5;\':\'&#k4;\',\'&k3;\':\'&#k2;\',\'&k1;\':\'&#k0;\',\'&jZ;\':\'&#jY;\',\'&jX;\':\'&#jW;\',\'&jV;\':\'&#jU;\',\'&jT;\':\'&#jS;\',\'&jR;\':\'&#jQ;\',\'&jP;\':\'&#jO;\',\'&jN;\':\'&#jM;\',\'&jL;\':\'&#jK;\',\'&jJ;\':\'&#jI;\',\'&jH;\':\'&#jG;\',\'&jF;\':\'&#jE;\',\'&jD;\':\'&#jC;\',\'&jB;\':\'&#jA;\',\'&jz;\':\'&#jy;\',\'&jx;\':\'&#jw;\',\'&jv;\':\'&#ju;\',\'&jt;\':\'&#jr;\',\'&jq;\':\'&#jp;\',\'&jo;\':\'&#jn;\',\'&jm;\':\'&#jl;\',\'&jk;\':\'&#jj;\',\'&ji;\':\'&#jh;\',\'&jg;\':\'&#jf;\',\'&je;\':\'&#jd;\',\'&jc;\':\'&#jb;\',\'&ja;\':\'&#j9;\',\'&j8;\':\'&#j7;\',\'&mu;\':\'&#j6;\',\'&nu;\':\'&#j5;\',\'&j4;\':\'&#j3;\',\'&j2;\':\'&#j1;\',\'&pi;\':\'&#j0;\',\'&iZ;\':\'&#iY;\',\'&iX;\':\'&#iW;\',\'&iV;\':\'&#iU;\',\'&iT;\':\'&#iS;\',\'&iR;\':\'&#iQ;\',\'&iP;\':\'&#iO;\',\'&iN;\':\'&#iM;\',\'&iL;\':\'&#iK;\',\'&iJ;\':\'&#iI;\',\'&iH;\':\'&#iG;\',\'&iF;\':\'&#iE;\',\'&iD;\':\'&#iC;\',\'&iB;\':\'&#iA;\',\'&iz;\':\'&#iy;\',\'&ix;\':\'&#iw;\',\'&iv;\':\'&#iu;\',\'&it;\':\'&#ir;\',\'&iq;\':\'&#ip;\',\'&io;\':\'&#im;\',\'&il;\':\'&#ik;\',\'&ij;\':\'&#ii;\',\'&ih;\':\'&#ie;\',\'&ic;\':\'&#ib;\',\'&ia;\':\'&#i9;\',\'&i8;\':\'&#i7;\',\'&i6;\':\'&#i5;\',\'&i4;\':\'&#i3;\',\'&i2;\':\'&#i1;\',\'&i0;\':\'&#hZ;\',\'&hY;\':\'&#hX;\',\'&hW;\':\'&#hV;\',\'&hU;\':\'&#hT;\',\'&hS;\':\'&#hR;\',\'&hQ;\':\'&#hP;\',\'&hO;\':\'&#hN;\',\'&hM;\':\'&#hL;\',\'&hK;\':\'&#hJ;\',\'&hI;\':\'&#hH;\',\'&hG;\':\'&#hF;\',\'&bs;\':\'&#hE;\',\'&hD;\':\'&#hC;\',\'&hB;\':\'&#hA;\',\'&hz;\':\'&#hy;\',\'&hx;\':\'&#hw;\',\'&hv;\':\'&#hu;\',\'&ht;\':\'&#hs;\',\'&hq;\':\'&#hp;\',\'&ho;\':\'&#hn;\',\'&hm;\':\'&#hl;\',\'&hk;\':\'&#hj;\',\'&hi;\':\'&#hh;\',\'&hg;\':\'&#hf;\',\'&he;\':\'&#hd;\',\'&hc;\':\'&#hb;\',\'&ha;\':\'&#h9;\',\'&h8;\':\'&#h7;\',\'&h0;\':\'&#gZ;\',\'&gY;\':\'&#gX;\',\'&gW;\':\'&#gV;\',\'&gU;\':\'&#gT;\',\'&gS;\':\'&#gR;\',\'&gQ;\':\'&#gP;\',\'&ni;\':\'&#gO;\',\'&gN;\':\'&#gM;\',\'&gL;\':\'&#gK;\',\'&gJ;\':\'&#gI;\',\'&gH;\':\'&#gG;\',\'&gF;\':\'&#gE;\',\'&6Z;\':\'&#gD;\',\'&gC;\':\'&#gB;\',\'&gA;\':\'&#gz;\',\'&gy;\':\'&#gx;\',\'&or;\':\'&#gw;\',\'&gv;\':\'&#gu;\',\'&gt;\':\'&#gs;\',\'&gr;\':\'&#gq;\',\'&gp;\':\'&#go;\',\'&gn;\':\'&#gl;\',\'&gk;\':\'&#gj;\',\'&gh;\':\'&#gg;\',\'&ne;\':\'&#gf;\',\'&bq;\':\'&#gd;\',\'&le;\':\'&#gc;\',\'&ge;\':\'&#gb;\',\'&3a;\':\'&#ga;\',\'&3S;\':\'&#g9;\',\'&g8;\':\'&#g7;\',\'&g6;\':\'&#g5;\',\'&g4;\':\'&#g3;\',\'&g2;\':\'&#g1;\',\'&g0;\':\'&#fZ;\',\'&fY;\':\'&#fX;\',\'&fW;\':\'&#fV;\',\'&fU;\':\'&#fT;\',\'&fS;\':\'&#fR;\',\'&fQ;\':\'&#fP;\',\'&fO;\':\'&#fN;\',\'&3L;\':\'&#fM;\',\'&fL;\':\'&#fK;\',\'&fJ;\':\'&#fI;\',\'&fH;\':\'&#fG;\',\'&fF;\':\'&#fE;\',\'&fD;\':\'&#fC;\',\'&fB;\':\'&#fA;\'};c.8m=["a","6Y","8q","6Q","bp","b","57","6X","bo","2H","1i","3K","bn","56","bm","6W","5N","dd","8p","N","bl","dl","dt","em","2T","1M","2S","h1","h2","h3","h4","h5","h6","Q","i","bk","bj","1n","3l","li","bi","8w","4B","ol","bh","6T","p","1T","43","q","bg","2j","4X","bf","3u","3b","1o","3a","3S","3k","8v","4E","4F","8u","5L","8t","O","6U","be","2G","o","fz"];c.aV=["br","hr","6V","1z"];u c};f.1m.B.bd=j(E,5M,2R){o 2R=2R||L;if(E==\'4E\'){if((2R&&5M==\'6U\')||(!2R&&5M==\'4E\')){u S}}if(E==\'6T\'){if((2R&&5M==\'4X\')||(!2R&&5M==\'6T\')){u S}}u L};f.1m.B.6S=j(1y){c.1X=\'\';u 1y};f.1m.B.6R=j(1v){1v=c.bc(1v);1v=c.bb(1v);1v=c.ba(1v);1v=c.b7(1v);u 1v};f.1m.B.bc=j(1v){1j(o 8r in c.8s){1v=1v.W(1g 2N(8r,\'g\'),c.8s[8r])}u 1v};f.1m.B.bb=j(1v){o 3j=\'em|3b|3a|3S|8q|43|8p|6Q\';u 1v.W(1g 2N(\'<\\/(\'+3j+\')><\\\\1>\',\'\'),\'\').W(1g 2N(\'(\\s*<(\'+3j+\')>\\s*){2}(.*)(\\s*<\\/\\\\2>\\s*){2}\',\'\'),\'<\\$2>\\$3<\\$2>\')};f.1m.B.ba=j(1v){u 1v.W(1g 2N(\'<(\'+c.8m.5A("|").W(/\\|4E/,\'\').W(/\\|5L/,\'\')+\')>(<br \\/>|&#b9;|&b8;|\\\\s)*<\\/\\\\1>\',\'g\'),\'\')};f.1m.B.b7=j(1v){o 2i=1v.M(1g 2N(\'<43[^>]*>(.*?)<\\/43>\',\'fy\'));if(2i){1j(o i=0;i<2i.Y;i++){1v=1v.W(2i[i],2i[i].W(1g 2N(\'<br \\/>\',\'g\'),fx.fw(13,10)))}}u 1v};f.1m.B.b6=j(){u c.1X};f.1m.B.6P=j(){u{\'b\':\'3b\',\'i\':\'em\'}};f.1m.B.b5=j(V){c.1X+=V};f.1m.B.6O=j(V){if(c.fv){c.1X+=V}};f.1m.B.6N=j(V){if(!c.fu){c.1X+=V}};f.1m.B.6M=j(V){if(!c.ft){c.1X+=V}};f.1m.B.6m=j(E,H){c.1X+=c.4O.E(E,c.3v.5q(E,H),S)};f.1m.B.b4=j(E,H){c.1X+=c.4O.E(E,c.3v.5q(E,H))};f.1m.B.b3=j(E,H){};f.1m.B.b2=j(E){c.1X=c.1X.W(/<br \\/>$/,\'\')+c.8j(\'aU\',E)+"</"+E+">"+c.8j(\'6J\',E)};f.1m.B.b1=j(E){};f.1m.B.b0=j(E){c.1X+="</"+E+">"};f.1m.B.aZ=j(){c.5K=[\'N\',\'3u\'];c.3v.6L=[\'1o\'];c.3v.6K=[\'aY\',\'fs\'];c.8o=S};f.1m.B.aX=j(){c.5K=[];c.3v.6L=[];c.3v.6K=[];c.8o=L};f.1m.B.8n=j(E){u!f.1P.2E(c.5K,E)&&f.1P.2E(c.8m,E)};f.1m.B.aW=j(E){u!f.1P.2E(c.5K,E)&&f.1P.2E(c.aV,E)};f.1m.B.aS=j(E,2c){c.8k(\'6J\',E,2c)};f.1m.B.fr=j(E,2c){c.8k(\'aU\',E,2c)};f.1m.B.aT=j(E,H){if(E!=\'li\'&&(E==\'2G\'||E==\'ol\')&&c.6I&&!c.8l&&c.6I==\'li\'){c.1X=c.1X.W(/<\\/li>$/,\'\');c.aS(E,\'</li>\')}};f.1m.B.8k=j(2Q,E,2c){if(!c[\'3J\'+2Q+\'3I\']){c[\'3J\'+2Q+\'3I\']=[]}if(!c[\'3J\'+2Q+\'3I\'][E]){c[\'3J\'+2Q+\'3I\'][E]=[]}c[\'3J\'+2Q+\'3I\'][E].1Y(2c)};f.1m.B.8j=j(2Q,E){if(c[\'3J\'+2Q+\'3I\']&&c[\'3J\'+2Q+\'3I\'][E]&&c[\'3J\'+2Q+\'3I\'][E].Y>0){u c[\'3J\'+2Q+\'3I\'][E].4P()}u\'\'};f.aR=j(42,2v){o 2v=(1s 2v==\'2e\'?S:2v);D.55(c,1g f.2h(42,(2v?\'54\':\'4C\')));c.8i(\'4C\',\'54\');if(2v==S){c.2P("/\\\\\\41[<\\\\s]*f[>\\\\s]*\\\\\\41/",\'54\',\'4C\');c.2F("/\\\\\\41[<\\/\\\\s]*f[>\\\\s]*\\\\\\41/",\'4C\')}c.4D("[\\\\fq-fp-6]*\\\\\\fo[a-z-8h-9]+",\'4C\',\'aQ\');c.2P("/\\\\\\41",\'4C\',\'8g\');c.2F("\\\\\\41/",\'8g\');c.2P("\\fm",\'4C\',\'6G\');c.2F("\\fl",\'6G\');c.2P("/\\\\\\41",\'6G\',\'8f\');c.2F("\\\\\\41/",\'8f\');u c};f.3G=j(){c.6F=L;c.5H=L;c.2v=S;c.4A={\'3Y\':[],\'3h\':[],\'4z\':[]};u c};f.3G.B.3Z=j(1y,2v){o 2v=(1s 2v==\'2e\'?c.2v:2v);c.6H=1g f.aR(c,2v);c.6H.3Z(1y)};f.3G.B.54=j(M,2b){u S};f.3G.B.8g=j(V,2p){if(V.M(/fk[a-5J-9\\s]*F[a-5J-9\\s]*/mi)){u L}if(2p==f.3H){if(!c.6F){c.5H=S;c.2o={\'O\':f.1P.4w(V)}}X{if(c.2o[c.2g]){if(!c.2o[c.2g].6D){c.2o[c.2g].6D=[V]}X{c.2o[c.2g].6D.1Y(V)}}}c.6F=S}u S};f.3G.B.6G=j(M,2p){if(2p==f.3H){M=f.1P.4w(M);if(M!=\'\'){c.2o[c.2g].1o=M}}X if(2p==f.5I){c.6F=L;c.5H=L;c.aP(c.2o)}u S};f.3G.B.8f=j(M,2p){if(2p==f.3H){c.2o[c.2g].8d=M.W(/^([\\s\\/\\*]*)|([\\s\\/\\*]*)$/gm,\'\')}u S};f.3G.B.aQ=j(M){M=M.W(/^([\\s\\.]*)|([\\s\\.*]*)$/gm,\'\');o E=\'\';if(M.8a(\'.\')>0){o 8e=M.5F(\'.\');c.2g=8e[1];o E=8e[0]}X{c.2g=M}if(!c.5H){c.2o={\'O\':(!E?\'\':E.fj()+\': \')+c.2g};c.5H=S}if(!c.2o[c.2g]){c.2o[c.2g]={\'G\':c.2g}}if(E){if(!c.2o[c.2g].3j){c.2o[c.2g].3j=[E]}X{c.2o[c.2g].3j.1Y(E)}}u S};f.3G.B.aP=j(6E){1j(o G in 6E){o 2O=6E[G];if(1s 2O==\'4B\'&&G!=\'O\'){c.4A.3Y.1Y({\'G\':f.1P.4w(2O.G),\'O\':6E.O,\'aO\':f.1P.4w((2O.6D||2O.3j).5A(\', \'))});if(2O.8d){c.4A.3h.1Y({\'G\':\'.\'+f.1P.4w(2O.G),\'1b\':2O.8d})}if(2O.1o){c.4A.4z.1Y({\'G\':\'.\'+f.1P.4w(2O.G),\'1b\':2O.1o})}}}};D.fn.aN=j(){if(c[0].8c==3)u!(/[^\\t\\n\\r ]/.2J(c[0].4y));u L};f.aN=j(n){if(n.8c==3)u!(/[^\\t\\n\\r ]/.2J(n.4y));u L};f.fi=j(2M){u!(/[^\\t\\n\\r ]/.2J(2M))};D.fn.4V=j(4x){o n=c;if(n[0].8c==3)n=n.5C().aM(0,1);if(n.53(4x).2u()==1)u n;X u n.5C(4x).aM(0,1)};f.1P={1l:j(2M,aL,aK){o 6C=1g 2N(aL,"g");u(2M.W(6C,aK))},fh:j(2M,aI,8b){u(2M.aJ(0,8b)+aI+2M.6B(8b))},4w:j(2M){u 2M.W(/^(\\s*)|(\\s*)$/gm,\'\')},2E:j(3F,5G){1j(o i=0;i<3F.Y;i++){if(3F[i]===5G)u S}u L},8a:j(3F,4v){o 89=-1;1j(o i=0;i<3F.Y;i++){if(3F[i]==4v){89=i;1p}}u(89)},aH:j(3F,G){1j(o i=0;i<3F.Y;i++){o 4v=3F[i];if(4v.G==G)u(4v)}u(1f)}};f.2t=j(F){c.1W=F;c.5z="fg";c.4U="\\r\\n"};f.2t.B.5y=j(1L){c.1K=1L;c.I=1L.1I.3D;o 1E=c.I.4T[0];o 2s=2B(c.C.3h);c.4S(c.I,2s);c.I.O=c.1W.3g;D(\'Q\',c.I).1r(\'3C\',c.C.4R);D(c.I.1i).Q(c.1W.4Q);o F=c;c.I.1i.aG=j(){F.I.4s="on";F.I=1L.1I.3D};c.I.ff=j(){F.6A()};c.I.aF=j(){F.6A();F.2y()};c.I.aE=j(){F.6A()};c.I.1i.fe=j(){F.1K.1I.aD.aC=L};c.I.1i.fd=j(){F.1K.1I.aD.aC=L;F.5E(2n.fc.fb("3i"))};if(c.aB){if(D.2A(c.C.3B))c.C.3B(c);c.1W.5x();if(D.2A(c.C.3z))c.C.3z(c);c.5w()}c.aB=S;c.I.4s="on";4u{c.I=1L.1I.3D}4t(e){}};(j(aA){f.2t.B.52=j(){D(c.2f).3E(c.C.88).1r(\'fa\',\'on\');aA.aw(c)}})(f.1h.B.52);f.2t.B.1O=j(1F,1T){3f(1F){1k f.6x:1k f.6w:o K=c.2K(c.K(),f.6v);if(K){o 3y=K.1B.1B;if(K.1B.6u.Y>1||3y.1t.1q()==f.6t||3y.1t.1q()==f.6s)c.I.2r(1F)}1p;3U:if(1T)c.I.2r(1F,L,1T);X c.I.2r(1F);1p}};f.2t.B.1c=j(){o 51=c.1K.1I.3D.51;if(51!=1f){if(51.5D!=2e)u(51.5D())}};f.2t.B.6A=j(){c.I.51=c.I.2L.4Y()};f.2t.B.5t=j(1E,1Z){o 87=1Z.G.5F(\',\');1j(o i in 87){1E.f9(87[i],1Z.1b)}};f.2t.B.5B=j(Q){o 1D=c.I.2L.4Y();if(D(1D.5D()).5C(c.C.6z).is(\'*\')){4u{1D.86(Q)}4t(e){}}X{c.5E(Q)}};f.2t.B.az=j(2m,2D){o 1D=c.I.2L.4Y();if(D(1D.5D()).5C(c.C.6z).is(\'*\')){4u{1D.86(2m+1D.V+2D)}4t(e){}}};f.2t.B.ay=j(){o 1D=c.I.2L.4Y();if(D(1D.5D()).5C(c.C.6z).is(\'*\')){4u{o V=1D.V;c.1O(\'f8\');1D.86(V)}4t(e){}}};f.2t.B.2y=j(){c.2l=1f};f.2t.B.4Z=j(Z,3X){o 1D=c.I.2L.4Y();3X=3X?S:L;1D.f7(Z);1D.ax(3X);1D.4X();Z.4W()};f.2C=j(F){c.1W=F;c.5z="J";c.4U="\\n"};f.2C.B.5y=j(1L){o F=c;c.1K=1L;c.I=1L.am;o 1E=c.I.4T[0];o 2s=2B(c.C.3h);c.4S(c.I,2s);c.I.O=c.1W.3g;D(\'Q\',c.I).1r(\'3C\',c.C.4R);c.Q(c.1W.4Q);c.6y();if(D.2A(c.C.3B))c.C.3B(c);c.1W.5x();D(c.I).3A("3x",c.3x);D(c.I).3A("2y",c.2y);D(c.I).3A("4W",j(){F.6y.aw(F)});if(D.2A(c.C.3z))c.C.3z(c);c.5w()};f.2C.B.Q=j(Q){if(1s Q===\'3T\'){4u{c.I.4s="av"}4t(e){};Q=Q.W(/<em(\\b[^>]*)>/gi,"<i$1>").W(/<\\/em>/gi,"</i>").W(/<3b(\\b[^>]*)>/gi,"<b$1>").W(/<\\/3b>/gi,"</b>");D(c.I.1i).Q(Q);c.6y()}X u(D(c.I.1i).Q())};f.2C.B.1O=j(1F,1T){if(!c.1c())u(L);3f(1F){1k f.6x:1k f.6w:o 1u=c.1c();o 2z=c.1K.1I.3e();o 2a=2z.2a;if(2a.5u=="#V")2a=2a.1B;1u=c.2K(1u,f.5v);2a=c.2K(2a,f.5v);if(1u&&1u==2a&&1u.1t.1q()==f.6v){o 3y=1u.1B.1B;if(1u.1B.6u.Y>1||3y.1t.1q()==f.6t||3y.1t.1q()==f.6s)c.I.2r(1F,\'\',1f)}1p;3U:if(1T)c.I.2r(1F,\'\',1T);X c.I.2r(1F,\'\',1f)}o K=c.1c();if(K.1t.1q()==f.3w)c.1O(f.4r,f.P)};f.2C.B.1c=j(){o 2z=c.1K.1I.3e();o Z=2z.1u;if(Z){if(Z.5u=="#V")u(Z.1B);X u(Z)}X u(1f)};f.2C.B.5t=j(1E,1Z){1E.84(1Z.G+" {"+1Z.1b+"}",1E.83.Y)};f.2C.B.3x=j(1e){o F=f.2x[c.O];o K=1f;if(1e.6n){if(1e.1C==66){F.1O(f.82);u L}if(1e.1C==73){F.1O(f.81);u L}}X if(1e.1C==13){if(!1e.6p){K=F.1c();if(K&&K.1t.1q()==f.5r){1e.6q();F.5B(\'<p></p>\')}}}};f.2C.B.2y=j(1e){o F=f.2x[c.O];F.2l=1f;o K=1f;if(1e.1C==13&&!1e.6p){D(F.I.1i).80(f.6o).5s()}if(1e.1C!=8&&1e.1C!=17&&1e.1C!=46&&1e.1C!=7Z&&!1e.aj&&!1e.6n){K=F.1c();o G=K.1t.1q();if(G=="3b"||G=="b"||G=="em"||G=="i"||G=="3a"||G=="3S"||G=="a")G=K.1B.1t.1q();if(G==f.3w)F.1O(f.4r,f.P)}};f.2C.B.6y=j(){if(c.I.4s=="av"){4u{c.I.4s="on";c.I.2r("f6",\'\',L)}4t(e){}}};f.2C.B.6m=j(E,H){o H=c.3v.5q(E,H);if(E==\'3u\'&&H.1o){o 3d=c.6l(H.1o);if(3d){E=3d;c.4q.4P();c.4q.1Y(E);H.1o=\'\'}}c.1X+=c.4O.E(E,H,S)};f.2C.B.6l=j(1o){if(/ah/.2J(1o))u\'3b\';if(/ag/.2J(1o))u\'em\';if(/3a/.2J(1o))u\'3a\';if(/af/.2J(1o))u\'3S\';u L};f.3V=j(F){c.1W=F;c.5z="J";c.4U="\\r\\n"};f.3V.B.5y=j(1L){c.1K=1L;c.I=1L.1I.3D;o 1E=c.I.4T[0];o 2s=2B(c.C.3h);c.4S(c.I,2s);c.I.O=c.1W.3g;D(\'Q\',c.I).1r(\'3C\',c.C.4R);c.I.4s="on";c.Q(c.1W.4Q);if(D.2A(c.C.3B))c.C.3B(c);c.1W.5x();D(c.I).3A("3x",c.3x);D(c.I).3A("2y",c.2y);if(D.2A(c.C.3z))c.C.3z(c);c.5w()};f.3V.B.1O=j(1F,1T){if(1T)c.I.2r(1F,L,1T);X c.I.2r(1F)};f.3V.B.1c=j(){o 2z=c.1K.1I.3e();o Z=2z.1u;if(Z){if(Z.5u=="#V")u(Z.1B);X u(Z)}X u(1f)};f.3V.B.5t=j(1E,1Z){1E.84(1Z.G+" {"+1Z.1b+"}",1E.83.Y)};f.3V.B.3x=j(1e){o F=f.2x[c.O];o 2z=F.1K.1I.3e();85=2z.au(0).f5;if(!D(85).4V(f.6r.5A(","))[0]&&!D(85).4V(\'li\')&&1e.1C!=f.3W.at&&1e.1C!=f.3W.as&&1e.1C!=f.3W.ar&&1e.1C!=f.3W.aq&&1e.1C!=f.3W.ap&&1e.1C!=f.3W.ao&&1e.1C!=f.3W.an)F.1O(f.4r,f.P)};f.3V.B.2y=j(1e){o F=f.2x[c.O];F.2l=1f};f.3c=j(F){c.1W=F;c.5z="J";c.4U="\\n"};f.3c.B.5y=j(1L){c.1K=1L;c.I=1L.am;o 1E=c.I.4T[0];o 2s=2B(c.C.3h);c.4S(c.I,2s);c.I.O=c.1W.3g;D(\'Q\',c.I).1r(\'3C\',c.C.4R);c.I.4s="on";c.Q(c.1W.4Q);if(D.2A(c.C.3B))c.C.3B(c);c.1W.5x();D(c.I).3A("3x",c.3x);D(c.I).3A("2y",c.2y);if(D.2A(c.C.3z))c.C.3z(c);c.5w()};f.3c.B.1O=j(1F,1T){if(!c.1c())u(L);3f(1F){1k f.6x:1k f.6w:o 1u=c.1c();o 2z=c.1K.1I.3e();o 2a=2z.2a;if(2a.5u=="#V")2a=2a.1B;1u=c.2K(1u,f.5v);2a=c.2K(2a,f.5v);if(1u&&1u==2a&&1u.1t.1q()==f.6v){o 3y=1u.1B.1B;if(1u.1B.6u.Y>1||3y.1t.1q()==f.6t||3y.1t.1q()==f.6s)c.I.2r(1F,\'\',1f)}1p;1k f.al:1k f.ak:c.I.2r(1F,\'\',1f);o 1u=c.1c();o K=c.2K(1u,f.6r);if(K)D(K).f4(D(K).Q());1p;3U:if(1T)c.I.2r(1F,\'\',1T);X c.I.2r(1F,\'\',1f)}o K=c.1c();if(K&&K.1t.1q()==f.3w)c.1O(f.4r,f.P)};f.3c.B.1c=j(){o 2z=c.1K.1I.3e();o Z=2z.1u;if(Z){if(Z.5u=="#V")u(Z.1B);X u(Z)}X u(1f)};f.3c.B.5t=j(1E,1Z){1E.84(1Z.G+" {"+1Z.1b+"}",1E.83.Y)};f.3c.B.3x=j(e){o F=f.2x[c.O];if(e.6n){if(e.1C==66){F.1O(f.82);e.6q()}if(e.1C==73){F.1O(f.81);e.6q()}}X if(e.6p&&e.1C==13){F.1O(\'f3\');e.6q()}};f.3c.B.2y=j(1e){o F=f.2x[c.O];F.2l=1f;o K=1f;if(1e.1C==13&&!1e.6p){D(F.I.1i).80(f.6o).5s();K=F.1c();if(K&&K.1t.1q()==f.5r)F.1O(f.4r,f.P);}if(1e.1C!=8&&1e.1C!=17&&1e.1C!=46&&1e.1C!=7Z&&!1e.aj&&!1e.6n){K=F.1c();o G=K.1t.1q();if(G=="3b"||G=="b"||G=="em"||G=="i"||G=="3a"||G=="3S"||G=="a"||G=="3u")G=K.1B.1t.1q();if(G==f.3w||G==f.ai)F.1O(f.4r,f.P);}};f.3c.B.6m=j(E,H){o H=c.3v.5q(E,H);if(E==\'3u\'&&H.1o){o 3d=c.6l(H.1o);if(3d){E=3d;c.4q.4P();c.4q.1Y(E);H.1o=\'\';if(1s H[\'J\']==\'3T\'){H[\'J\']=H[\'J\'].W(/f2-1o-3u/gi,\'\')}}}c.1X+=c.4O.E(E,H,S)};f.3c.B.6l=j(1o){if(/ah/.2J(1o))u\'3b\';if(/ag/.2J(1o))u\'em\';if(/3a/.2J(1o))u\'3a\';if(/af/.2J(1o))u\'3S\';u L};',62,1724,'||||||||||||this|||WYMeditor||||function|||||var||||||return|||||||prototype|_options|jQuery|tag|wym|name|attributes|_doc|class|container|false|match|div|title||html|value|true|mode||text|replace|else|length|node|||||||||||_Listener|css|selected|type|evt|null|new|editor|body|for|case|replaceAll|XhtmlSaxListener|label|style|break|toLowerCase|attr|typeof|tagName|focusNode|xhtml|XhtmlParser|boxHtml|raw|input|val|parentNode|keyCode|range|styles|cmd|scope|dialogHtml|contentWindow|_tags|_iframe|iframe|form|row|_exec|Helper|result|href|options|param|key|src|_wym|output|push|oCss|||||||||||anchorNode|state|content|required|undefined|_box|_current_element|Lexer|matches|script|attribute|_selected_image|left|window|_current_item|status|_regexes|execCommand|aCss|WymClassExplorer|size|only_wym_blocks|link|INSTANCES|keyup|sel|isFunction|eval|WymClassMozilla|right|contains|addExitPattern|ul|blockquote|_mode_handlers|test|findUp|selection|str|RegExp|details|addEntryPattern|position|closing|head|fieldset|_open_tags|XmlHelper|ParallelRegex|char|disabled|skin|||||||||||sub|strong|WymClassSafari|new_tag|getSelection|switch|_index|editorStyles|Text|tags|table|legend|XhtmlLexer|matched|pattern|start|top|submit|paragraphs|sType|span|validator|BODY|keydown|ancestor|postInit|bind|preBind|dir|document|find|arr|WymCssParser|LEXER_UNMATCHED|_closing|_insert_|button|lang|parsed|defaults|inside|xml|INDEX|newNode|sup|string|default|WymClassOpera|KEY|toStart|classesItems|parse||x2a|parser|pre|_mode|addPattern||_patterns|baseline|bottom|middle|valign|charoff|justify|center|align|stylesheet|doc|sBodyHtml|tagname|sClass|oClass|sContainer|sTool|iframeHtml|WymClass|_tag_stack|FORMAT_BLOCK|designMode|catch|try|item|trim|jqexpr|data|dialogStyles|css_settings|object|WymCss|addSpecialPattern|td|textarea|_invokeParser|_case|width|onload|basePath|dialog|sVal|console|helper|pop|_html|direction|addCssRules|styleSheets|_newLine|parentsOrSelf|focus|select|createRange|setFocusToNode||caretPos|loadSkin|filter|Ignore|extend|cite|base|init|_stack|count|except|alt|tag_attributes|delimiter|close|sUrl|INIT_DIALOG|SKINS|skinPath|CssParser|wymeditor|TH|oContainer|oTool|wym_section|getValidTagAttributes|PRE|remove|addCssRule|nodeName|BLOCKS|listen|bindEvents|initIframe|_class|join|insert|parents|parentElement|paste|split|elem|_has_title|LEXER_EXIT|z0|avoided_tags|th|now_on_tag|colgroup|_tag_attributes|_non_tag|action|special|new_mode|accept|StateStack|_regex|_possible_tag_attributes|rel|hidden|get|open|createElement|submitSelector|titleSelector|TITLE|sStamp||dialogImageSelector|DIALOG_LINK|dialogType|update|stringDelimiterRight|stringDelimiterLeft|toggleClass|BLOCKQUOTE|Array|TD|aClasses|wym_dialog|wym_cancel|wym_dialog_type|getTagForStyle|openBlockTag|ctrlKey|BR|shiftKey|preventDefault|MAIN_CONTAINERS|UL|OL|childNodes|LI|OUTDENT|INDENT|enableDesignMode|iframeBodySelector|saveCaret|substring|rExp|expressions|style_details|_in_style|WymCssStyle|_Lexer|last_tag|after|skiped_attribute_values|skiped_attributes|addCss|addScript|addComment|getTagReplacements|address|afterParsing|beforeParsing|option|tr|img|col|bdo|abbr|prop|_current_attribute|SingleQuotedAttribute|DoubleQuotedAttribute||LEXER_SPECIAL|normalizeTag|expected_tag|LEXER_ENTER|OpeningTag|_addNonTagBlock|handler|unmatched|while|case_sensitive|regex|tag_defaults|only|valid_attributes|rows|cols|screen|charset|height|meta|index|escape_quotes|_entitiesDiv|mousedown|altSelector|ALT|SRC|srcSelector|SKINS_DEFAULT_CSS|grep|packed|min|pack|jquery|jQueryPath|wymPath|PREVIEW|DIALOG_PASTE|DIALOG_TABLE|DIALOG_IMAGE|dialogFeatures|_element|STRINGS|bFound|firstNode|nodes|aTypes|NAME|click|CLASS_NAME|TOOL_TITLE|HTML|iframeBasePath|browser|Cancel|Submit|wym_submit|224|children|ITALIC|BOLD|cssRules|insertRule|startNode|pasteHTML|selectors|containerSelector|ret|indexOf|pos|nodeType|feedback_style|parts|WymCssFeedbackStyle|WymCssComment|_0|mapHandler|_getClosingTagContent|_insertContentWhenClosingTag|last_tag_opened|block_tags|isBlockTag|_avoiding_tags_implicitly|del|acronym|entity|entities|thead|tfoot|tbody|noscript|circ|_callCloseTagListener|_autoCloseUnclosed|_increaseOpenTagCounter|_callOpenTagListener|Css|Script|Comment|unparsed_character_count|getCurrent|_parser|enter|leave|_labels|default_attributes|default_attributes_and_events|_attributes|_events|readonly|all|media|javascript|http|next|ltr|toString|innerHTML|_formated_options|tagOptions|postInitDialog|newRow|iCols|iRows|INSERT_IMAGE|relSelector|REL|HREF|CREATE_LINK|hrefSelector|preInitDialog|responseText|async|url|ajax|found|htmlSelector|wDialog|replaceStrings|DIALOG_BODY|DIALOG_TITLE|JQUERY_PATH|WYM_PATH|CSS_PATH|DIRECTION|hasfocus|htmlValSelector|error|langPath|switchTo|lgt|H6|H5|H4|H3|H2|H1|sName|sContainers|CONTAINERS_ITEMS|CONTAINER_CLASS|CONTAINER_TITLE|CONTAINER_NAME|aContainers|sClasses|CLASSES_ITEMS|CLASS_TITLE|sTools|TOOLS_ITEMS|TOOL_CLASS|TOOL_NAME|aTools|STATUS|IFRAME|CLASSES|CONTAINERS|TOOLS|LOGO|IFRAME_BASE_PATH|WYM_INDEX|SaxListener|preInit|Paste_From_Word|indent|Table|wym_title|Image|Link|wym_classes|wym_containers|wym_tools|wym_iframe|Preview|Unlink|Outdent|Indent|names|super|italic|bold|DIV|metaKey|INSERT_UNORDEREDLIST|INSERT_ORDEREDLIST|contentDocument|DELETE|BACKSPACE|DOWN|RIGHT|UP|LEFT|ENTER|getRangeAt|off|call|collapse|unwrap|wrap|editorLoadSkin|_initialized|returnValue|event|onclick|onkeyup|onfocus|findByName|inserted|substr|rep|old|slice|isPhantomNode|expr|addStyleSetting|WymCssStyleDeclaration|WymCssLexer|insertContentAfterClosingTag|fixNestingBeforeOpeningBlockTag|before|inline_tags|isInlineTag|allowStylingTagsAndAttributes|MsoNormal|avoidStylingTagsAndAttributes|closeUnopenedTag|closeUnknownTag|closeBlockTag|openUnknownTag|inlineTag|addContent|getResult|removeBrInPre|nbsp|160|removeEmptyTags|joinRepeatedEntities|replaceNamedEntities|shouldCloseTagAutomatically|tt|small|samp|optgroup|map|kbd|ins|dfn|code|caption|big|area|equiv||image|not|XhtmlValidator|UnquotedAttribute|TagAttributes|counter|autoCloseUnclosedBeforeTagClosing|autoCloseUnclosedBeforeNewOpening|_decreaseOpenTagCounter|ClosingTag|_tag|Listener|addAttributeTokens|addInTagDeclarationTokens|addTagTokens|addCssTokens|addScriptTokens|addCommentTokens|addTokens|unparsed|_reduce|is_match|current|_decodeSpecial|_|_isSpecialMode|__exit|_isModeEnd|LEXER_MATCHED|_dispatchTokens|_getPerlMatchingFlags|Tk7|Tk6|Tk5|Tk4|Tk3|Tk2|Tk1|_untokenizeRegex|_tokenizeRegex|_getCompoundedRegex|subject|getDefaultAttributesAndEventsForTag|getUniqueAttributesAndEventsForTag|getPossibleTagAttributes|validateAttribute|doesAttributeNeedsValidation|getDefaultAttributesAndEventsForTags|isValidTag|parseInt|possible_attributes|rowgroup|rowspan|headers|colspan|axis|summary|border|box|frame|braille|print|projection|multiple|defer|valuetype|usemap|icon|shortcut|subsection|section|prev|home|help|glossary|copyright|contents|chapter|bookmark|appendix|alternate|rev|hreflang|datetime|reset|file|checked|profile|rtl|polygon|poly|circle|rectangle|rect|shape|coords|keyboard|tabindex|accesskey|language|escapeEntities|escapeOnce|escaped|_fixDoubleEscape|cancelSelector|previewSelector|dialogPreviewSelector|sText|textSelector||dialogPasteSelector|summarySelector|sCaption|newCaption|captionSelector|TABLE|colsSelector||rowsSelector|dialogTableSelector|dialogLinkSelector|uniqueStamp|dialogTypeSelector|SKINS_DEFAULT_JS|initSkin||addClass|loadCss|each|appendChild|target|IMG|configureEditorUsingRawCss|skins|computeJqueryPath|computeWymPath|computeBasePath|now|toggleHtml|encloseString|BASE_PATH|bodyHtml|dialogPreviewHtml|dialogPasteHtml|dialogTableHtml|dialogImageHtml|dialogLinkHtml|features|sMessage|statusSelector|STRING|CLASS|insertBefore|dialogFeaturesPreview|TOGGLE_HTML|PASTE|INSERT_TABLE|exec|updateEvent|updateSelector|classSelector|toolSelector|hide|containersItemHtml|containersItems|classesItemHtml|toolsItemHtml|toolsItems|statusHtml|htmlHtml|classesHtml|containersHtml|toolsHtml|logoHtml|wym_dialog_preview|wym_text|wym_dialog_paste|wym_cols|wym_rows|wym_summary|||wym_caption|wym_dialog_table|Title|wym_alt|wym_src|URL|wym_dialog_image|wym_rel|wym_href|wym_dialog_link|xhtml1|DTD|org|www|300|560|resizable|toolbar|titlebar|menubar|wym_html_val|wym_status|wym_html|wym_box|ToggleHtml|Paste|InsertTable|InsertImage|CreateLink|Redo|Undo|InsertUnorderedList|InsertOrderedList|Subscript|Superscript|Italic|Bold|IFRAME_DEFAULT|LANG_DEFAULT_PATH|SKINS_DEFAULT_PATH|apple|InsertLineBreak|replaceWith|startContainer|styleWithCSS|moveToElementText|Cut|addRule|unselectable|getData|clipboardData|onpaste|onbeforepaste|onbeforedeactivate|className|insertAt|isPhantomString|toUpperCase|end|x7d|x7b||x2e|z1|sa|insertContentBeforeClosingTag|main1|remove_embeded_styles|remove_scripts|remove_comments|fromCharCode|String|gmi|extends|9830|diams|9829|hearts|9827|clubs|9824|spades|9674|loz|9002|rang|9001|8971|rfloor|8970|lfloor|8969|rceil|8968|lceil|8901|sdot|8869|perp|8855|otimes|8853|oplus|8839|supe|8838|sube|8836|nsub|8835|8834|8805|8804|8801||8800|8776|asymp||8773|cong|8764||sim|8756|there4|8747|int|8746|cup|8745|cap|8744|8743|and|8736|ang|8734|infin|8733|8730|radic|8727|lowast|8722|minus|8721|sum|8719|prod|8715|8713|notin|8712|isin|8711|nabla|8709|empty|8707|exist|8706|part|||||||8704|forall|8660|hArr|8659|dArr|8658|rArr|8657|uArr|8656|lArr|8629|crarr|8596|harr|8595|darr|8594|rarr||8593|uarr|8592|larr|8501|alefsym|8482|trade|8476|real|8472|weierp|8465|8364|euro|8260|frasl|8254|oline|8250|rsaquo|8249|lsaquo|8243|Prime|8242|prime|8240|permil|8230|hellip|8226|bull|8225|Dagger|8224|dagger|8222|bdquo|8221|rdquo|8220|ldquo|8218|sbquo|8217|rsquo||8216|||lsquo|8212|mdash|8211|ndash|8207||rlm|8206|lrm|8205||zwj|8204|zwnj|8201|thinsp|8195|emsp|8194|ensp|982|piv|978|upsih|977|thetasym|969|omega|968|psi|967|chi|966|phi|965|upsilon|964|tau|963|sigma|962|sigmaf|961|rho|960|959|omicron|958|xi|957|956|955|lambda|954|kappa|953|iota|952|theta|951|eta|950|zeta|949|epsilon|948|delta|947|gamma|946|beta|945||alpha|937|Omega|936|Psi|935|Chi|934|Phi|933|Upsilon|932|Tau|931|Sigma|929|Rho|928|Pi|927|Omicron|926|Xi|925|Nu|924|Mu|923|Lambda|922|Kappa|921|Iota|920|Theta|919|Eta|918|Zeta|917|Epsilon|916|Delta|915|Gamma|914|Beta|913|Alpha|732|tilde|710|402|fnof|376|Yuml|353|scaron|352|Scaron|339|oelig|338|OElig|255|yuml|254|thorn|253|yacute|252|uuml|251|ucirc|250|uacute|249|ugrave|248|oslash|247|divide|246|ouml|245|otilde|244|ocirc|243|oacute|242|ograve|241|ntilde|240|eth|239|iuml|238|icirc|237|iacute|236|igrave|235|euml|234|ecirc|233||eacute|232|egrave||231|ccedil|230|aelig|229|aring|228|auml|227|atilde|226|acirc|225|aacute|agrave|223|szlig|222|THORN|221|Yacute|220|Uuml|219|Ucirc|218|Uacute|217|Ugrave|216|Oslash|215|times|214|Ouml|213|Otilde|212|Ocirc|211|Oacute|210|Ograve|209|Ntilde|208|ETH|207|Iuml|206|Icirc|205|Iacute|204|Igrave|203|Euml|202|Ecirc|201|Eacute||200|Egrave|199|Ccedil|198|AElig|197|Aring|196|Auml|195||Atilde|194|Acirc|193|Aacute|192|Agrave|191|iquest|190|frac34|189|frac12|188|frac14|187|raquo|186|ordm|185|sup1|184|cedil|183|middot|182|para|181|micro|180|acute|179|sup3|178|sup2|177|plusmn|176|deg|175|macr|174|reg|173|shy||172|171|laquo||170|ordf|169|copy|168||uml|167|sect||166||brvbar|165|yen|164|curren|163|pound|162|cent|161|iexcl|last_tag_attributes|com|microsoft|schemas|urn|_current_match|_last_match|_matches|boolean|concat|events|continue|groups|none|rules|vsides|rhs|lhs|hsides|below|above|void|cellspacing|cellpadding|aural|handheld|tv|tty|vbs|vbscript|jscript|ecmascript|ref|standby|declare|codetype|codebase|classid|archive|scheme|cookie||set||refresh|expires|speech||radio|password|checkbox|maxlength|longdesc|ismap|xmlns|post|method|enctype|nohref|onmouseup|onmouseout|onmouseover|onmousemove|onmousedown|ondblclick|mouse|onkeypress|onkeydown|frameset|onblur|onselect|onreset|onsubmit|onchange|onunload|core|charAt|parseAttributes|039|quot|textContent|shift|formated_options|amp|CDATA|cdataSection|contentTag|append|insertCell|insertRow|createCaption|newCol|opener|wym_skin_|ownerDocument|computeCssPath|addRange|selectNodeContents|insertNode|deleteContents||createContextualFragment|appendTo|insertAfter|getTime|Date|toggle|write|parsing|replaceChild|removeAttr|removeChild|firstChild|ready|blur|wym_box_|safari|opera|mozilla|msie|wymeditors|Number_Of_Cols|Number_Of_Rows|Summary|Caption|Alternative_Text|Relationship|dtd|strict|TR|w3|EN|Strict|XHTML|W3C|PUBLIC|DOCTYPE|yes|scrollbars|wymupdate|iframeSelector|classesSelector|containersSelector|toolsListSelector|toolsSelector|boxSelector|Source_Code|Status|wym_classes_|Classes|wym_containers_th|Table_Header|wym_containers_blockquote|Blockquote|wym_containers_pre|Preformatted|wym_containers_h6|Heading_6|wym_containers_h5|Heading_5|wym_containers_h4|Heading_4|wym_containers_h3|Heading_3|wym_containers_h2|Heading_2|wym_containers_h1|Heading_1|wym_containers_p|Paragraph|Containers|wym_tools_preview|wym_tools_html|wym_tools_paste|wym_tools_table|wym_tools_image|wym_tools_unlink|wym_tools_link|wym_tools_redo|wym_tools_undo|wym_tools_outdent|wym_tools_indent|wym_tools_unordered_list|Unordered_List|wym_tools_ordered_list|Ordered_List|wym_tools_subscript|wym_tools_superscript|wym_tools_emphasis|Emphasis|wym_tools_strong|Strong|Tools|parent|wymiframe|wym_wymeditor_link|wym_area_bottom|wym_area_main|wym_area_right|wym_area_left|wym_area_top|TEXT|ATTRIBUTE|ELEMENT|NODE|CURSOR|HOME|END|UNLINK|FormatBlock|InsertHTML|INSERT_HTML|Wym_Dialog_Body|Wym_Dialog_Title|Wym_Status|Wym_Iframe|Wym_Html|Wym_Container_Class|Wym_Containers_Title|Wym_Container_Name||Wym_Containers_Items|Wym_Containers|Wym_Class_Title|Wym_Class_Name|Wym_Classes_Items|Wym_Classes|Wym_Tool_Class|Wym_Tool_Title|Wym_Tool_Name|Wym_Tools_Items|Wym_Tools|Wym_Logo|Wym_Direction|Wym_Jquery_Path|Wym_Iframe_Base_Path|Wym_Wym_Path|Wym_Css_Path|Wym_Base_Path|wym_index|Wym_Index|rc1|VERSION|profileEnd|trace|timeEnd|time|groupEnd|group|dirxml|assert|warn|info|debug|log|firebug'.split('|'),0,{}))
diff --git a/studio/static/js/wymeditor/jquery.wymeditor.safari.js b/studio/static/js/wymeditor/jquery.wymeditor.safari.js
new file mode 100644
index 0000000..e4b9739
--- /dev/null
+++ b/studio/static/js/wymeditor/jquery.wymeditor.safari.js
@@ -0,0 +1,247 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.safari.js
+ * Safari specific class and functions.
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ * Scott Lewis (lewiscot a-t gmail dotcom)
+ */
+
+WYMeditor.WymClassSafari = function(wym) {
+
+ this._wym = wym;
+ this._class = "class";
+ this._newLine = "\n";
+};
+
+WYMeditor.WymClassSafari.prototype.initIframe = function(iframe) {
+
+ this._iframe = iframe;
+ this._doc = iframe.contentDocument;
+
+ //add css rules from options
+
+ var styles = this._doc.styleSheets[0];
+ var aCss = eval(this._options.editorStyles);
+
+ this.addCssRules(this._doc, aCss);
+
+ this._doc.title = this._wym._index;
+
+ //set the text direction
+ jQuery('html', this._doc).attr('dir', this._options.direction);
+
+ //init designMode
+ this._doc.designMode = "on";
+
+ //init html value
+ this.html(this._wym._html);
+
+ //pre-bind functions
+ if(jQuery.isFunction(this._options.preBind)) this._options.preBind(this);
+
+ //bind external events
+ this._wym.bindEvents();
+
+ //bind editor keydown events
+ jQuery(this._doc).bind("keydown", this.keydown);
+
+ //bind editor keyup events
+ jQuery(this._doc).bind("keyup", this.keyup);
+
+ //post-init functions
+ if(jQuery.isFunction(this._options.postInit)) this._options.postInit(this);
+
+ //add event listeners to doc elements, e.g. images
+ this.listen();
+};
+
+WYMeditor.WymClassSafari.prototype._exec = function(cmd,param) {
+
+ if(!this.selected()) return(false);
+
+ switch(cmd) {
+
+ case WYMeditor.INDENT: case WYMeditor.OUTDENT:
+
+ var focusNode = this.selected();
+ var sel = this._iframe.contentWindow.getSelection();
+ var anchorNode = sel.anchorNode;
+ if(anchorNode.nodeName == "#text") anchorNode = anchorNode.parentNode;
+
+ focusNode = this.findUp(focusNode, WYMeditor.BLOCKS);
+ anchorNode = this.findUp(anchorNode, WYMeditor.BLOCKS);
+
+ if(focusNode && focusNode == anchorNode
+ && focusNode.tagName.toLowerCase() == WYMeditor.LI) {
+
+ var ancestor = focusNode.parentNode.parentNode;
+
+ if(focusNode.parentNode.childNodes.length>1
+ || ancestor.tagName.toLowerCase() == WYMeditor.OL
+ || ancestor.tagName.toLowerCase() == WYMeditor.UL)
+ this._doc.execCommand(cmd,'',null);
+ }
+
+ break;
+
+ case WYMeditor.INSERT_ORDEREDLIST: case WYMeditor.INSERT_UNORDEREDLIST:
+
+ this._doc.execCommand(cmd,'',null);
+
+ //Safari creates lists in e.g. paragraphs.
+ //Find the container, and remove it.
+ var focusNode = this.selected();
+ var container = this.findUp(focusNode, WYMeditor.MAIN_CONTAINERS);
+ if(container) jQuery(container).replaceWith(jQuery(container).html());
+
+ break;
+
+ default:
+
+ if(param) this._doc.execCommand(cmd,'',param);
+ else this._doc.execCommand(cmd,'',null);
+ }
+
+ //set to P if parent = BODY
+ var container = this.selected();
+ if(container && container.tagName.toLowerCase() == WYMeditor.BODY)
+ this._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P);
+
+};
+
+/* @name selected
+ * @description Returns the selected container
+ */
+WYMeditor.WymClassSafari.prototype.selected = function() {
+
+ var sel = this._iframe.contentWindow.getSelection();
+ var node = sel.focusNode;
+ if(node) {
+ if(node.nodeName == "#text") return(node.parentNode);
+ else return(node);
+ } else return(null);
+};
+
+WYMeditor.WymClassSafari.prototype.addCssRule = function(styles, oCss) {
+
+ styles.insertRule(oCss.name + " {" + oCss.css + "}",
+ styles.cssRules.length);
+};
+
+
+//keydown handler, mainly used for keyboard shortcuts
+WYMeditor.WymClassSafari.prototype.keydown = function(e) {
+
+ //'this' is the doc
+ var wym = WYMeditor.INSTANCES[this.title];
+
+ if(e.ctrlKey){
+ if(e.keyCode == 66){
+ //CTRL+b => STRONG
+ wym._exec(WYMeditor.BOLD);
+ e.preventDefault();
+ }
+ if(e.keyCode == 73){
+ //CTRL+i => EMPHASIS
+ wym._exec(WYMeditor.ITALIC);
+ e.preventDefault();
+ }
+ } else if(e.shiftKey && e.keyCode == 13) {
+ wym._exec('InsertLineBreak');
+ e.preventDefault();
+ }
+};
+
+//keyup handler, mainly used for cleanups
+WYMeditor.WymClassSafari.prototype.keyup = function(evt) {
+
+ //'this' is the doc
+ var wym = WYMeditor.INSTANCES[this.title];
+
+ wym._selected_image = null;
+ var container = null;
+
+ if(evt.keyCode == 13 && !evt.shiftKey) {
+
+ //RETURN key
+ //cleanup <br><br> between paragraphs
+ jQuery(wym._doc.body).children(WYMeditor.BR).remove();
+
+ //fix PRE bug #73
+ container = wym.selected();
+ if(container && container.tagName.toLowerCase() == WYMeditor.PRE)
+ wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //create P after PRE
+ }
+
+ if(evt.keyCode != 8
+ && evt.keyCode != 17
+ && evt.keyCode != 46
+ && evt.keyCode != 224
+ && !evt.metaKey
+ && !evt.ctrlKey) {
+
+ //NOT BACKSPACE, NOT DELETE, NOT CTRL, NOT COMMAND
+ //text nodes replaced by P
+
+ container = wym.selected();
+ var name = container.tagName.toLowerCase();
+
+ //fix forbidden main containers
+ if(
+ name == "strong" ||
+ name == "b" ||
+ name == "em" ||
+ name == "i" ||
+ name == "sub" ||
+ name == "sup" ||
+ name == "a" ||
+ name == "span" //fix #110
+
+ ) name = container.parentNode.tagName.toLowerCase();
+
+ if(name == WYMeditor.BODY || name == WYMeditor.DIV) wym._exec(WYMeditor.FORMAT_BLOCK, WYMeditor.P); //fix #110 for DIV
+ }
+};
+
+WYMeditor.WymClassSafari.prototype.openBlockTag = function(tag, attributes)
+{
+ var attributes = this.validator.getValidTagAttributes(tag, attributes);
+
+ // Handle Safari styled spans
+ if (tag == 'span' && attributes.style) {
+ var new_tag = this.getTagForStyle(attributes.style);
+ if (new_tag) {
+ tag = new_tag;
+ this._tag_stack.pop();
+ this._tag_stack.push(tag);
+ attributes.style = '';
+
+ // Should fix #125 - also removed the xhtml() override
+ if(typeof attributes['class'] == 'string') {
+ attributes['class'] = attributes['class'].replace(/apple-style-span/gi, '');
+ }
+ }
+ }
+
+ this.output += this.helper.tag(tag, attributes, true);
+};
+
+WYMeditor.WymClassSafari.prototype.getTagForStyle = function(style) {
+
+ if(/bold/.test(style)) return 'strong';
+ if(/italic/.test(style)) return 'em';
+ if(/sub/.test(style)) return 'sub';
+ if(/super/.test(style)) return 'sup';
+ return false;
+};
diff --git a/studio/static/js/wymeditor/lang/.svn/entries b/studio/static/js/wymeditor/lang/.svn/entries
new file mode 100644
index 0000000..2f4e246
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/entries
@@ -0,0 +1,912 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/lang
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2010-06-16T22:14:30.896087Z
+671
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+cs.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+8407c00954064ee8a4bb1c5534e9b0cf
+2008-10-06T17:56:42.178306Z
+556
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1683
+
+fr.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+de2243ddfc69cc11cde635d51c203f58
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1540
+
+es.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+15ddb1092fb54b243ebc27306c4ff185
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1548
+
+hr.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+d9f0b6c76b689f76243dcbafb6c4ca8b
+2009-03-12T10:43:31.861532Z
+585
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1517
+
+nl.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+16ecb01b57a7c6e627195c095ebd9664
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1537
+
+cy.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+26e73f813aac75243a4e2e2aa9eefc2d
+2010-03-31T20:26:06.993041Z
+651
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1542
+
+nn.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+f389e5577207f6125d3d95148f7f56ca
+2008-07-08T21:01:27.213276Z
+514
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1504
+
+pl.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+4170572c911e8dc00fe78b97eb034a87
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1563
+
+it.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+c267a9efc265501508b0c20beda2a202
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1523
+
+hu.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+87ec9def97fa4085049b2039af1e3cf5
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1553
+
+ca.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+ef8f5b258b41e4b85281c0ae810139bd
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1552
+
+pt.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+8de734032fe9edea9d37f4334cbbb64d
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1547
+
+pt-br.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+9f32ebcb89424e390b6d57668894987d
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1543
+
+tr.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+976fd75344b1893f9de9262bf43263f8
+2008-11-09T19:53:01.458305Z
+567
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1537
+
+ru.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+28782e8ac2861dfa57a39bbb6ab7c883
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1956
+
+fa.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+29d7bb6c7da2781c88503d9a75d7d93a
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2253
+
+de.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+c47599295200bd1ae30bc51c749c49f0
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1694
+
+bg.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+f1d85ab79383acf1698f7042773717e2
+2008-12-16T20:10:42.882950Z
+575
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1973
+
+sv.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+0d1671c35bb10efefecd9ac9d161abfc
+2010-06-16T22:14:30.896087Z
+671
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1518
+
+ja.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+db365bd23b03b84f9eaf7e0df5fe791a
+2010-06-11T10:15:56.250894Z
+666
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1311
+
+he.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+f119d047232bcdb436a238b716060138
+2008-09-10T20:50:59.861136Z
+539
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1812
+
+fi.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+c7fa6c1e747480b1695e86bff08c3f99
+2009-03-14T15:08:06.269083Z
+586
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1543
+
+nb.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+b51b573772a041858126df92a8a7cc3c
+2008-07-08T21:01:27.213276Z
+514
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1501
+
+zh_cn.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+83ba8a5406c3cb0ee1c480cb236ee6fa
+2008-06-05T19:53:16.438140Z
+508
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1206
+
+gl.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+3c1001043b99fed6be195252296a98ce
+2009-06-08T21:00:39.401508Z
+646
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1546
+
+en.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+ee76c7f82c1f407ac5ca8464dfcc6724
+2010-06-16T22:14:30.896087Z
+671
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1508
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/bg.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/bg.js.svn-base
new file mode 100644
index 0000000..576bca5
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/bg.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['bg'] = {
+ Strong: 'Получер',
+ Emphasis: 'Курсив',
+ Superscript: 'Горен индекс',
+ Subscript: 'Долен индекс',
+ Ordered_List: 'Подреден списък',
+ Unordered_List: 'Неподреден списък',
+ Indent: 'Блок навътре',
+ Outdent: 'Блок навън',
+ Undo: 'Стъпка назад',
+ Redo: 'Стъпка напред',
+ Link: 'Създай хипервръзка',
+ Unlink: 'Премахни хипервръзката',
+ Image: 'Изображение',
+ Table: 'Таблица',
+ HTML: 'HTML',
+ Paragraph: 'Абзац',
+ Heading_1: 'Заглавие 1',
+ Heading_2: 'Заглавие 2',
+ Heading_3: 'Заглавие 3',
+ Heading_4: 'Заглавие 4',
+ Heading_5: 'Заглавие 5',
+ Heading_6: 'Заглавие 6',
+ Preformatted: 'Преформатиран',
+ Blockquote: 'Цитат',
+ Table_Header: 'Заглавие на таблицата',
+ URL: 'URL',
+ Title: 'Заглавие',
+ Alternative_Text: 'Алтернативен текст',
+ Caption: 'Етикет',
+ Summary: 'Общо',
+ Number_Of_Rows: 'Брой редове',
+ Number_Of_Cols: 'Брой колони',
+ Submit: 'Изпрати',
+ Cancel: 'Отмени',
+ Choose: 'Затвори',
+ Preview: 'Предварителен преглед',
+ Paste_From_Word: 'Вмъкни от MS WORD',
+ Tools: 'Инструменти',
+ Containers: 'Контейнери',
+ Classes: 'Класове',
+ Status: 'Статус',
+ Source_Code: 'Източник, код'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/ca.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/ca.js.svn-base
new file mode 100644
index 0000000..c342406
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/ca.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['ca'] = {
+ Strong: 'Ressaltar',
+ Emphasis: 'Emfatitzar',
+ Superscript: 'Superindex',
+ Subscript: 'Subindex',
+ Ordered_List: 'Llistat ordenat',
+ Unordered_List: 'Llistat sense ordenar',
+ Indent: 'Indentat',
+ Outdent: 'Sense indentar',
+ Undo: 'Desfer',
+ Redo: 'Refer',
+ Link: 'Enllaçar',
+ Unlink: 'Eliminar enllaç',
+ Image: 'Imatge',
+ Table: 'Taula',
+ HTML: 'HTML',
+ Paragraph: 'Paràgraf',
+ Heading_1: 'Capçalera 1',
+ Heading_2: 'Capçalera 2',
+ Heading_3: 'Capçalera 3',
+ Heading_4: 'Capçalera 4',
+ Heading_5: 'Capçalera 5',
+ Heading_6: 'Capçalera 6',
+ Preformatted: 'Pre-formatejat',
+ Blockquote: 'Cita',
+ Table_Header: 'Capçalera de la taula',
+ URL: 'URL',
+ Title: 'Títol',
+ Alternative_Text: 'Text alternatiu',
+ Caption: 'Llegenda',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Nombre de files',
+ Number_Of_Cols: 'Nombre de columnes',
+ Submit: 'Enviar',
+ Cancel: 'Cancel·lar',
+ Choose: 'Triar',
+ Preview: 'Vista prèvia',
+ Paste_From_Word: 'Pegar des de Word',
+ Tools: 'Eines',
+ Containers: 'Contenidors',
+ Classes: 'Classes',
+ Status: 'Estat',
+ Source_Code: 'Codi font'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/cs.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/cs.js.svn-base
new file mode 100644
index 0000000..3939d71
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/cs.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['cs'] = {
+ Strong: 'Tučné',
+ Emphasis: 'Kurzíva',
+ Superscript: 'Horní index',
+ Subscript: 'Dolní index',
+ Ordered_List: 'Číslovaný seznam',
+ Unordered_List: 'Nečíslovaný seznam',
+ Indent: 'Zvětšit odsazení',
+ Outdent: 'Zmenšit odsazení',
+ Undo: 'Zpět',
+ Redo: 'Znovu',
+ Link: 'Vytvořit odkaz',
+ Unlink: 'Zrušit odkaz',
+ Image: 'Obrázek',
+ Table: 'Tabulka',
+ HTML: 'HTML',
+ Paragraph: 'Odstavec',
+ Heading_1: 'Nadpis 1. úrovně',
+ Heading_2: 'Nadpis 2. úrovně',
+ Heading_3: 'Nadpis 3. úrovně',
+ Heading_4: 'Nadpis 4. úrovně',
+ Heading_5: 'Nadpis 5. úrovně',
+ Heading_6: 'Nadpis 6. úrovně',
+ Preformatted: 'Předformátovaný text',
+ Blockquote: 'Citace',
+ Table_Header: 'Hlavičková buňka tabulky',
+ URL: 'Adresa',
+ Title: 'Text po najetí myší',
+ Alternative_Text: 'Text pro případ nezobrazení obrázku',
+ Caption: 'Titulek tabulky',
+ Summary: 'Shrnutí obsahu',
+ Number_Of_Rows: 'Počet řádek',
+ Number_Of_Cols: 'Počet sloupců',
+ Submit: 'Vytvořit',
+ Cancel: 'Zrušit',
+ Choose: 'Vybrat',
+ Preview: 'Náhled',
+ Paste_From_Word: 'Vložit z Wordu',
+ Tools: 'Nástroje',
+ Containers: 'Typy obsahu',
+ Classes: 'Třídy',
+ Status: 'Stav',
+ Source_Code: 'Zdrojový kód'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/cy.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/cy.js.svn-base
new file mode 100644
index 0000000..7d15b79
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/cy.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['cy'] = {
+ Strong: 'Bras',
+ Emphasis: 'Italig',
+ Superscript: 'Uwchsgript',
+ Subscript: 'Is-sgript',
+ Ordered_List: 'Rhestr mewn Trefn',
+ Unordered_List: 'Pwyntiau Bwled',
+ Indent: 'Mewnoli',
+ Outdent: 'Alloli',
+ Undo: 'Dadwneud',
+ Redo: 'Ailwneud',
+ Link: 'Cysylltu',
+ Unlink: 'Datgysylltu',
+ Image: 'Delwedd',
+ Table: 'Tabl',
+ HTML: 'HTML',
+ Paragraph: 'Paragraff',
+ Heading_1: 'Pennawd 1',
+ Heading_2: 'Pennawd 2',
+ Heading_3: 'Pennawd 3',
+ Heading_4: 'Pennawd 4',
+ Heading_5: 'Pennawd 5',
+ Heading_6: 'Pennawd 6',
+ Preformatted: 'Rhagfformat',
+ Blockquote: 'Bloc Dyfyniad',
+ Table_Header: 'Pennyn Tabl',
+ URL: 'URL',
+ Title: 'Teitl',
+ Alternative_Text: 'Testun Amgen',
+ Caption: 'Pennawd',
+ Summary: 'Crynodeb',
+ Number_Of_Rows: 'Nifer y rhesi',
+ Number_Of_Cols: 'Nifer y colofnau',
+ Submit: 'Anfon',
+ Cancel: 'Diddymu',
+ Choose: 'Dewis',
+ Preview: 'Rhagolwg',
+ Paste_From_Word: 'Gludo o Word',
+ Tools: 'Offer',
+ Containers: 'Cynhwysyddion',
+ Classes: 'Dosbarthiadau',
+ Status: 'Statws',
+ Source_Code: 'Cod ffynhonnell'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/de.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/de.js.svn-base
new file mode 100644
index 0000000..a1e01e1
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/de.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['de'] = {
+ Strong: 'Fett',
+ Emphasis: 'Kursiv',
+ Superscript: 'Text hochstellen',
+ Subscript: 'Text tiefstellen',
+ Ordered_List: 'Geordnete Liste einfügen',
+ Unordered_List: 'Ungeordnete Liste einfügen',
+ Indent: 'Einzug erhöhen',
+ Outdent: 'Einzug vermindern',
+ Undo: 'Befehle rückgängig machen',
+ Redo: 'Befehle wiederherstellen',
+ Link: 'Hyperlink einfügen',
+ Unlink: 'Hyperlink entfernen',
+ Image: 'Bild einfügen',
+ Table: 'Tabelle einfügen',
+ HTML: 'HTML anzeigen/verstecken',
+ Paragraph: 'Absatz',
+ Heading_1: 'Überschrift 1',
+ Heading_2: 'Überschrift 2',
+ Heading_3: 'Überschrift 3',
+ Heading_4: 'Überschrift 4',
+ Heading_5: 'Überschrift 5',
+ Heading_6: 'Überschrift 6',
+ Preformatted: 'Vorformatiert',
+ Blockquote: 'Zitat',
+ Table_Header: 'Tabellenüberschrift',
+ URL: 'URL',
+ Title: 'Titel',
+ Alternative_Text: 'Alternativer Text',
+ Caption: 'Tabellenüberschrift',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Anzahl Zeilen',
+ Number_Of_Cols: 'Anzahl Spalten',
+ Submit: 'Absenden',
+ Cancel: 'Abbrechen',
+ Choose: 'Auswählen',
+ Preview: 'Vorschau',
+ Paste_From_Word: 'Aus Word einfügen',
+ Tools: 'Werkzeuge',
+ Containers: 'Inhaltstyp',
+ Classes: 'Klassen',
+ Status: 'Status',
+ Source_Code: 'Quellcode'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/en.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/en.js.svn-base
new file mode 100644
index 0000000..dc7eb21
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/en.js.svn-base
@@ -0,0 +1,46 @@
+WYMeditor.STRINGS['en'] = {
+ Strong: 'Strong',
+ Emphasis: 'Emphasis',
+ Superscript: 'Superscript',
+ Subscript: 'Subscript',
+ Ordered_List: 'Ordered List',
+ Unordered_List: 'Unordered List',
+ Indent: 'Indent',
+ Outdent: 'Outdent',
+ Undo: 'Undo',
+ Redo: 'Redo',
+ Link: 'Link',
+ Unlink: 'Unlink',
+ Image: 'Image',
+ Table: 'Table',
+ HTML: 'HTML',
+ Paragraph: 'Paragraph',
+ Heading_1: 'Heading 1',
+ Heading_2: 'Heading 2',
+ Heading_3: 'Heading 3',
+ Heading_4: 'Heading 4',
+ Heading_5: 'Heading 5',
+ Heading_6: 'Heading 6',
+ Preformatted: 'Preformatted',
+ Blockquote: 'Blockquote',
+ Table_Header: 'Table Header',
+ URL: 'URL',
+ Title: 'Title',
+ Relationship: 'Relationship',
+ Alternative_Text: 'Alternative text',
+ Caption: 'Caption',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Number of rows',
+ Number_Of_Cols: 'Number of cols',
+ Submit: 'Submit',
+ Cancel: 'Cancel',
+ Choose: 'Choose',
+ Preview: 'Preview',
+ Paste_From_Word: 'Paste from Word',
+ Tools: 'Tools',
+ Containers: 'Containers',
+ Classes: 'Classes',
+ Status: 'Status',
+ Source_Code: 'Source code'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/es.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/es.js.svn-base
new file mode 100644
index 0000000..cdb03c1
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/es.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['es'] = {
+ Strong: 'Resaltar',
+ Emphasis: 'Enfatizar',
+ Superscript: 'Superindice',
+ Subscript: 'Subindice',
+ Ordered_List: 'Lista ordenada',
+ Unordered_List: 'Lista sin ordenar',
+ Indent: 'Indentado',
+ Outdent: 'Sin indentar',
+ Undo: 'Deshacer',
+ Redo: 'Rehacer',
+ Link: 'Enlazar',
+ Unlink: 'Eliminar enlace',
+ Image: 'Imagen',
+ Table: 'Tabla',
+ HTML: 'HTML',
+ Paragraph: 'Párrafo',
+ Heading_1: 'Cabecera 1',
+ Heading_2: 'Cabecera 2',
+ Heading_3: 'Cabecera 3',
+ Heading_4: 'Cabecera 4',
+ Heading_5: 'Cabecera 5',
+ Heading_6: 'Cabecera 6',
+ Preformatted: 'Preformateado',
+ Blockquote: 'Cita',
+ Table_Header: 'Cabecera de la tabla',
+ URL: 'URL',
+ Title: 'Título',
+ Alternative_Text: 'Texto alternativo',
+ Caption: 'Leyenda',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Número de filas',
+ Number_Of_Cols: 'Número de columnas',
+ Submit: 'Enviar',
+ Cancel: 'Cancelar',
+ Choose: 'Seleccionar',
+ Preview: 'Vista previa',
+ Paste_From_Word: 'Pegar desde Word',
+ Tools: 'Herramientas',
+ Containers: 'Contenedores',
+ Classes: 'Clases',
+ Status: 'Estado',
+ Source_Code: 'Código fuente'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/fa.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/fa.js.svn-base
new file mode 100644
index 0000000..9d70fcb
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/fa.js.svn-base
@@ -0,0 +1,46 @@
+//Translation To Persian: Ghassem Tofighi (http://ght.ir)
+WYMeditor.STRINGS['fa'] = {
+ Strong: 'پررنگ',//Strong
+ Emphasis: 'ایتالیک',//Emphasis
+ Superscript: 'بالانويس‌ ',//Superscript
+ Subscript: 'زيرنويس‌',//Subscript
+ Ordered_List: 'لیست مرتب',//Ordered List
+ Unordered_List: 'لیست نامرتب',//Unordered List
+ Indent: 'افزودن دندانه',//Indent
+ Outdent: 'کاهش دندانه',//Outdent
+ Undo: 'واگردانی',//Undo
+ Redo: 'تکرار',//Redo
+ Link: 'ساختن پیوند',//Link
+ Unlink: 'برداشتن پیوند',//Unlink
+ Image: 'تصویر',//Image
+ Table: 'جدول',//Table
+ HTML: 'HTML',//HTML
+ Paragraph: 'پاراگراف',//Paragraph
+ Heading_1: 'سرتیتر ۱',//Heading 1
+ Heading_2: 'سرتیتر ۲',//Heading 2
+ Heading_3: 'سرتیتر ۳',//Heading 3
+ Heading_4: 'سرتیتر ۴',//Heading 4
+ Heading_5: 'سرتیتر ۵',//Heading 5
+ Heading_6: 'سرتیتر ۶',//Heading 6
+ Preformatted: 'قالب آماده',//Preformatted
+ Blockquote: 'نقل قول',//Blockquote
+ Table_Header: 'سرجدول',//Table Header
+ URL: 'آدرس اینترنتی',//URL
+ Title: 'عنوان',//Title
+ Alternative_Text: 'متن جایگزین',//Alternative text
+ Caption: 'عنوان',//Caption
+ Summary: 'Summary',
+ Number_Of_Rows: 'تعداد سطرها',//Number of rows
+ Number_Of_Cols: 'تعداد ستون‌ها',//Number of cols
+ Submit: 'فرستادن',//Submit
+ Cancel: 'لغو',//Cancel
+ Choose: 'انتخاب',//Choose
+ Preview: 'پیش‌نمایش',//Preview
+ Paste_From_Word: 'انتقال از ورد',//Paste from Word
+ Tools: 'ابزار',//Tools
+ Containers: '‌قالب‌ها',//Containers
+ Classes: 'کلاس‌ها',//Classes
+ Status: 'وضعیت',//Status
+ Source_Code: 'کد مبدأ'//Source code
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/fi.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/fi.js.svn-base
new file mode 100644
index 0000000..fe1eab4
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/fi.js.svn-base
@@ -0,0 +1,44 @@
+WYMeditor.STRINGS['fi'] = {
+ Strong: 'Lihavoitu',
+ Emphasis: 'Korostus',
+ Superscript: 'Yläindeksi',
+ Subscript: 'Alaindeksi',
+ Ordered_List: 'Numeroitu lista',
+ Unordered_List: 'Luettelomerkit',
+ Indent: 'Suurenna sisennystä',
+ Outdent: 'Pienennä sisennystä',
+ Undo: 'Kumoa',
+ Redo: 'Toista',
+ Link: 'Linkitä',
+ Unlink: 'Poista linkitys',
+ Image: 'Kuva',
+ Table: 'Taulukko',
+ HTML: 'HTML',
+ Paragraph: 'Kappale',
+ Heading_1: 'Otsikko 1',
+ Heading_2: 'Otsikko 2',
+ Heading_3: 'Otsikko 3',
+ Heading_4: 'Otsikko 4',
+ Heading_5: 'Otsikko 5',
+ Heading_6: 'Otsikko 6',
+ Preformatted: 'Esimuotoilu',
+ Blockquote: 'Sitaatti',
+ Table_Header: 'Taulukon otsikko',
+ URL: 'URL',
+ Title: 'Otsikko',
+ Alternative_Text: 'Vaihtoehtoinen teksti',
+ Caption: 'Kuvateksti',
+ Summary: 'Yhteenveto',
+ Number_Of_Rows: 'Rivien määrä',
+ Number_Of_Cols: 'Palstojen määrä',
+ Submit: 'Lähetä',
+ Cancel: 'Peruuta',
+ Choose: 'Valitse',
+ Preview: 'Esikatsele',
+ Paste_From_Word: 'Tuo Wordista',
+ Tools: 'Työkalut',
+ Containers: 'Muotoilut',
+ Classes: 'Luokat',
+ Status: 'Tila',
+ Source_Code: 'Lähdekoodi'
+};
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/fr.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/fr.js.svn-base
new file mode 100644
index 0000000..9b6deb9
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/fr.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['fr'] = {
+ Strong: 'Mise en évidence',
+ Emphasis: 'Emphase',
+ Superscript: 'Exposant',
+ Subscript: 'Indice',
+ Ordered_List: 'Liste Ordonnée',
+ Unordered_List: 'Liste Non-Ordonnée',
+ Indent: 'Imbriqué',
+ Outdent: 'Non-imbriqué',
+ Undo: 'Annuler',
+ Redo: 'Rétablir',
+ Link: 'Lien',
+ Unlink: 'Supprimer le Lien',
+ Image: 'Image',
+ Table: 'Tableau',
+ HTML: 'HTML',
+ Paragraph: 'Paragraphe',
+ Heading_1: 'Titre 1',
+ Heading_2: 'Titre 2',
+ Heading_3: 'Titre 3',
+ Heading_4: 'Titre 4',
+ Heading_5: 'Titre 5',
+ Heading_6: 'Titre 6',
+ Preformatted: 'Pré-formatté',
+ Blockquote: 'Citation',
+ Table_Header: 'Cellule de titre',
+ URL: 'URL',
+ Title: 'Titre',
+ Alternative_Text: 'Texte alternatif',
+ Caption: 'Légende',
+ Summary: 'Résumé',
+ Number_Of_Rows: 'Nombre de lignes',
+ Number_Of_Cols: 'Nombre de colonnes',
+ Submit: 'Envoyer',
+ Cancel: 'Annuler',
+ Choose: 'Choisir',
+ Preview: 'Prévisualisation',
+ Paste_From_Word: 'Copier depuis Word',
+ Tools: 'Outils',
+ Containers: 'Type de texte',
+ Classes: 'Type de contenu',
+ Status: 'Infos',
+ Source_Code: 'Code source'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/gl.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/gl.js.svn-base
new file mode 100644
index 0000000..d4786b8
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/gl.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['gl'] = {
+ Strong: 'Moita énfase',
+ Emphasis: 'Énfase',
+ Superscript: 'Superíndice',
+ Subscript: 'Subíndice',
+ Ordered_List: 'Lista ordenada',
+ Unordered_List: 'Lista sen ordenar',
+ Indent: 'Aniñar',
+ Outdent: 'Desaniñar',
+ Undo: 'Desfacer',
+ Redo: 'Refacer',
+ Link: 'Ligazón',
+ Unlink: 'Desligar',
+ Image: 'Imaxe',
+ Table: 'Táboa',
+ HTML: 'HTML',
+ Paragraph: 'Parágrafo',
+ Heading_1: 'Título 1',
+ Heading_2: 'Título 2',
+ Heading_3: 'Título 3',
+ Heading_4: 'Título 4',
+ Heading_5: 'Título 5',
+ Heading_6: 'Título 6',
+ Preformatted: 'Preformatado',
+ Blockquote: 'Cita en parágrafo',
+ Table_Header: 'Cabeceira da táboa',
+ URL: 'URL',
+ Title: 'Título',
+ Alternative_Text: 'Texto alternativo',
+ Caption: 'Título',
+ Summary: 'Resumo',
+ Number_Of_Rows: 'Número de filas',
+ Number_Of_Cols: 'Número de columnas',
+ Submit: 'Enviar',
+ Cancel: 'Cancelar',
+ Choose: 'Escoller',
+ Preview: 'Previsualizar',
+ Paste_From_Word: 'Colar dende Word',
+ Tools: 'Ferramentas',
+ Containers: 'Contenedores',
+ Classes: 'Clases',
+ Status: 'Estado',
+ Source_Code: 'Código fonte'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/he.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/he.js.svn-base
new file mode 100644
index 0000000..97c9675
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/he.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['he'] = {
+ Strong: 'חזק',
+ Emphasis: 'מובלט',
+ Superscript: 'כתב עילי',
+ Subscript: 'כתב תחתי',
+ Ordered_List: 'רשימה ממוספרת',
+ Unordered_List: 'רשימה לא ממוספרת',
+ Indent: 'הזחה פנימה',
+ Outdent: 'הזחה החוצה',
+ Undo: 'בטל פעולה',
+ Redo: 'בצע מחדש פעולה',
+ Link: 'קישור',
+ Unlink: 'בטל קישור',
+ Image: 'תמונה',
+ Table: 'טבלה',
+ HTML: 'קוד HTML',
+ Paragraph: 'פסקה',
+ Heading_1: 'כותרת 1 ; תג &lt;h1&gt;',
+ Heading_2: 'כותרת 2 ; תג &lt;h2&gt;',
+ Heading_3: 'כותרת 3 ; תג &lt;h3&gt;',
+ Heading_4: 'כותרת 4 ; תג &lt;h4&gt;',
+ Heading_5: 'כותרת 5 ; תג &lt;h5&gt;',
+ Heading_6: 'כותרת 6 ; תג &lt;h6&gt;',
+ Preformatted: 'משמר רווחים',
+ Blockquote: 'ציטוט',
+ Table_Header: 'כותרת טבלה',
+ URL: 'קישור (URL)',
+ Title: 'כותרת',
+ Alternative_Text: 'טקסט חלופי',
+ Caption: 'כותרת',
+ Summary: 'סיכום',
+ Number_Of_Rows: 'מספר שורות',
+ Number_Of_Cols: 'מספר טורים',
+ Submit: 'שלח',
+ Cancel: 'בטל',
+ Choose: 'בחר',
+ Preview: 'תצוגה מקדימה',
+ Paste_From_Word: 'העתק מ-Word',
+ Tools: 'כלים',
+ Containers: 'מיכלים',
+ Classes: 'מחלקות',
+ Status: 'מצב',
+ Source_Code: 'קוד מקור'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/hr.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/hr.js.svn-base
new file mode 100644
index 0000000..193e31a
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/hr.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['hr'] = {
+ Strong: 'Podebljano',
+ Emphasis: 'Naglašeno',
+ Superscript: 'Iznad',
+ Subscript: 'Ispod',
+ Ordered_List: 'Pobrojana lista',
+ Unordered_List: 'Nepobrojana lista',
+ Indent: 'Uvuci',
+ Outdent: 'Izvuci',
+ Undo: 'Poništi promjenu',
+ Redo: 'Ponovno promjeni',
+ Link: 'Hiperveza',
+ Unlink: 'Ukloni hipervezu',
+ Image: 'Slika',
+ Table: 'Tablica',
+ HTML: 'HTML',
+ Paragraph: 'Paragraf',
+ Heading_1: 'Naslov 1',
+ Heading_2: 'Naslov 2',
+ Heading_3: 'Naslov 3',
+ Heading_4: 'Naslov 4',
+ Heading_5: 'Naslov 5',
+ Heading_6: 'Naslov 6',
+ Preformatted: 'Unaprijed formatirano',
+ Blockquote: 'Citat',
+ Table_Header: 'Zaglavlje tablice',
+ URL: 'URL',
+ Title: 'Naslov',
+ Alternative_Text: 'Alternativni tekst',
+ Caption: 'Zaglavlje',
+ Summary: 'Sažetak',
+ Number_Of_Rows: 'Broj redova',
+ Number_Of_Cols: 'Broj kolona',
+ Submit: 'Snimi',
+ Cancel: 'Odustani',
+ Choose: 'Izaberi',
+ Preview: 'Pregled',
+ Paste_From_Word: 'Zalijepi iz Word-a',
+ Tools: 'Alati',
+ Containers: 'Kontejneri',
+ Classes: 'Klase',
+ Status: 'Status',
+ Source_Code: 'Izvorni kod'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/hu.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/hu.js.svn-base
new file mode 100644
index 0000000..a8cdbc6
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/hu.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['hu'] = {
+ Strong: 'Félkövér',
+ Emphasis: 'Kiemelt',
+ Superscript: 'Felső index',
+ Subscript: 'Alsó index',
+ Ordered_List: 'Rendezett lista',
+ Unordered_List: 'Rendezetlen lista',
+ Indent: 'Bekezdés',
+ Outdent: 'Bekezdés törlése',
+ Undo: 'Visszavon',
+ Redo: 'Visszaállít',
+ Link: 'Link',
+ Unlink: 'Link törlése',
+ Image: 'Kép',
+ Table: 'Tábla',
+ HTML: 'HTML',
+ Paragraph: 'Bekezdés',
+ Heading_1: 'Címsor 1',
+ Heading_2: 'Címsor 2',
+ Heading_3: 'Címsor 3',
+ Heading_4: 'Címsor 4',
+ Heading_5: 'Címsor 5',
+ Heading_6: 'Címsor 6',
+ Preformatted: 'Előformázott',
+ Blockquote: 'Idézet',
+ Table_Header: 'Tábla Fejléc',
+ URL: 'Webcím',
+ Title: 'Megnevezés',
+ Alternative_Text: 'Alternatív szöveg',
+ Caption: 'Fejléc',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Sorok száma',
+ Number_Of_Cols: 'Oszlopok száma',
+ Submit: 'Elküld',
+ Cancel: 'Mégsem',
+ Choose: 'Választ',
+ Preview: 'Előnézet',
+ Paste_From_Word: 'Másolás Word-ból',
+ Tools: 'Eszközök',
+ Containers: 'Tartalmak',
+ Classes: 'Osztályok',
+ Status: 'Állapot',
+ Source_Code: 'Forráskód'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/it.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/it.js.svn-base
new file mode 100644
index 0000000..ca632a9
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/it.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['it'] = {
+ Strong: 'Grassetto',
+ Emphasis: 'Corsetto',
+ Superscript: 'Apice',
+ Subscript: 'Pedice',
+ Ordered_List: 'Lista Ordinata',
+ Unordered_List: 'Lista Puntata',
+ Indent: 'Indenta',
+ Outdent: 'Caccia',
+ Undo: 'Indietro',
+ Redo: 'Avanti',
+ Link: 'Inserisci Link',
+ Unlink: 'Togli Link',
+ Image: 'Inserisci Immagine',
+ Table: 'Inserisci Tabella',
+ HTML: 'HTML',
+ Paragraph: 'Paragrafo',
+ Heading_1: 'Heading 1',
+ Heading_2: 'Heading 2',
+ Heading_3: 'Heading 3',
+ Heading_4: 'Heading 4',
+ Heading_5: 'Heading 5',
+ Heading_6: 'Heading 6',
+ Preformatted: 'Preformattato',
+ Blockquote: 'Blockquote',
+ Table_Header: 'Header Tabella',
+ URL: 'Indirizzo',
+ Title: 'Titolo',
+ Alternative_Text: 'Testo Alternativo',
+ Caption: 'Caption',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Numero di Righe',
+ Number_Of_Cols: 'Numero di Colonne',
+ Submit: 'Invia',
+ Cancel: 'Cancella',
+ Choose: 'Scegli',
+ Preview: 'Anteprima',
+ Paste_From_Word: 'Incolla',
+ Tools: 'Tools',
+ Containers: 'Contenitori',
+ Classes: 'Classi',
+ Status: 'Stato',
+ Source_Code: 'Codice Sorgente'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/ja.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/ja.js.svn-base
new file mode 100644
index 0000000..c9b6410
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/ja.js.svn-base
@@ -0,0 +1,44 @@
+WYMeditor.STRINGS['ja'] = {
+ Strong: '強調<strong>',
+ Emphasis: '強調<em>',
+ Superscript: '上付き',
+ Subscript: '下付き',
+ Ordered_List: '番号付きリスト',
+ Unordered_List: '番号無リスト',
+ Indent: 'インデントを増やす',
+ Outdent: 'インデントを減らす',
+ Undo: '元に戻す',
+ Redo: 'やり直す',
+ Link: 'リンク',
+ Unlink: 'リンク取消',
+ Image: '画像',
+ Table: 'テーブル',
+ HTML: 'HTML',
+ Paragraph: '段落',
+ Heading_1: '見出し 1',
+ Heading_2: '見出し 2',
+ Heading_3: '見出し 3',
+ Heading_4: '見出し 4',
+ Heading_5: '見出し 5',
+ Heading_6: '見出し 6',
+ Preformatted: '整形済みテキスト',
+ Blockquote: '引用文',
+ Table_Header: '表見出し',
+ URL: 'URL',
+ Title: 'タイトル',
+ Alternative_Text: '代替テキスト',
+ Caption: 'キャプション',
+ Summary: 'サマリー',
+ Number_Of_Rows: '行数',
+ Number_Of_Cols: '列数',
+ Submit: '送信',
+ Cancel: 'キャンセル',
+ Choose: '選択',
+ Preview: 'プレビュー',
+ Paste_From_Word: '貼り付け',
+ Tools: 'ツール',
+ Containers: 'コンテナ',
+ Classes: 'クラス',
+ Status: 'ステータス',
+ Source_Code: 'ソースコード'
+};
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/nb.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/nb.js.svn-base
new file mode 100644
index 0000000..7573b78
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/nb.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['nb'] = {
+ Strong: 'Fet',
+ Emphasis: 'Uthevet',
+ Superscript: 'Opphøyet',
+ Subscript: 'Nedsenket',
+ Ordered_List: 'Nummerert liste',
+ Unordered_List: 'Punktliste',
+ Indent: 'Rykk inn',
+ Outdent: 'Rykk ut',
+ Undo: 'Angre',
+ Redo: 'Gjenta',
+ Link: 'Lenke',
+ Unlink: 'Ta bort lenken',
+ Image: 'Bilde',
+ Table: 'Tabell',
+ HTML: 'HTML',
+ Paragraph: 'Avsnitt',
+ Heading_1: 'Overskrift 1',
+ Heading_2: 'Overskrift 2',
+ Heading_3: 'Overskrift 3',
+ Heading_4: 'Overskrift 4',
+ Heading_5: 'Overskrift 5',
+ Heading_6: 'Overskrift 6',
+ Preformatted: 'Preformatert',
+ Blockquote: 'Sitat',
+ Table_Header: 'Tabelloverskrift',
+ URL: 'URL',
+ Title: 'Tittel',
+ Alternative_Text: 'Alternativ tekst',
+ Caption: 'Overskrift',
+ Summary: 'Sammendrag',
+ Number_Of_Rows: 'Antall rader',
+ Number_Of_Cols: 'Antall kolonner',
+ Submit: 'Ok',
+ Cancel: 'Avbryt',
+ Choose: 'Velg',
+ Preview: 'Forhåndsvis',
+ Paste_From_Word: 'Lim inn fra Word',
+ Tools: 'Verktøy',
+ Containers: 'Formatering',
+ Classes: 'Klasser',
+ Status: 'Status',
+ Source_Code: 'Kildekode'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/nl.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/nl.js.svn-base
new file mode 100644
index 0000000..cdfa21c
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/nl.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['nl'] = {
+ Strong: 'Sterk benadrukken',
+ Emphasis: 'Benadrukken',
+ Superscript: 'Bovenschrift',
+ Subscript: 'Onderschrift',
+ Ordered_List: 'Geordende lijst',
+ Unordered_List: 'Ongeordende lijst',
+ Indent: 'Inspringen',
+ Outdent: 'Terugspringen',
+ Undo: 'Ongedaan maken',
+ Redo: 'Opnieuw uitvoeren',
+ Link: 'Linken',
+ Unlink: 'Ontlinken',
+ Image: 'Afbeelding',
+ Table: 'Tabel',
+ HTML: 'HTML',
+ Paragraph: 'Paragraaf',
+ Heading_1: 'Kop 1',
+ Heading_2: 'Kop 2',
+ Heading_3: 'Kop 3',
+ Heading_4: 'Kop 4',
+ Heading_5: 'Kop 5',
+ Heading_6: 'Kop 6',
+ Preformatted: 'Voorgeformatteerd',
+ Blockquote: 'Citaat',
+ Table_Header: 'Tabel-kop',
+ URL: 'URL',
+ Title: 'Titel',
+ Alternative_Text: 'Alternatieve tekst',
+ Caption: 'Bijschrift',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Aantal rijen',
+ Number_Of_Cols: 'Aantal kolommen',
+ Submit: 'Versturen',
+ Cancel: 'Annuleren',
+ Choose: 'Kiezen',
+ Preview: 'Voorbeeld bekijken',
+ Paste_From_Word: 'Plakken uit Word',
+ Tools: 'Hulpmiddelen',
+ Containers: 'Teksttypes',
+ Classes: 'Klassen',
+ Status: 'Status',
+ Source_Code: 'Broncode'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/nn.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/nn.js.svn-base
new file mode 100644
index 0000000..51cec2b
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/nn.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['nn'] = {
+ Strong: 'Feit',
+ Emphasis: 'Utheva',
+ Superscript: 'Opphøgd',
+ Subscript: 'Nedsenka',
+ Ordered_List: 'Nummerert liste',
+ Unordered_List: 'Punktliste',
+ Indent: 'Rykk inn',
+ Outdent: 'Rykk ut',
+ Undo: 'Angre',
+ Redo: 'Gjentaka',
+ Link: 'Lenkje',
+ Unlink: 'Ta bort lenkja',
+ Image: 'Bilete',
+ Table: 'Tabell',
+ HTML: 'HTML',
+ Paragraph: 'Avsnitt',
+ Heading_1: 'Overskrift 1',
+ Heading_2: 'Overskrift 2',
+ Heading_3: 'Overskrift 3',
+ Heading_4: 'Overskrift 4',
+ Heading_5: 'Overskrift 5',
+ Heading_6: 'Overskrift 6',
+ Preformatted: 'Preformatert',
+ Blockquote: 'Sitat',
+ Table_Header: 'Tabelloverskrift',
+ URL: 'URL',
+ Title: 'Tittel',
+ Alternative_Text: 'Alternativ tekst',
+ Caption: 'Overskrift',
+ Summary: 'Samandrag',
+ Number_Of_Rows: 'Tal på rader',
+ Number_Of_Cols: 'Tal på kolonnar',
+ Submit: 'Ok',
+ Cancel: 'Avbryt',
+ Choose: 'Vel',
+ Preview: 'Førehandsvis',
+ Paste_From_Word: 'Lim inn frå Word',
+ Tools: 'Verkty',
+ Containers: 'Formatering',
+ Classes: 'Klassar',
+ Status: 'Status',
+ Source_Code: 'Kjeldekode'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/pl.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/pl.js.svn-base
new file mode 100644
index 0000000..d6c0471
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/pl.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['pl'] = {
+ Strong: 'Nacisk',
+ Emphasis: 'Emfaza',
+ Superscript: 'Indeks górny',
+ Subscript: 'Indeks dolny',
+ Ordered_List: 'Lista numerowana',
+ Unordered_List: 'Lista wypunktowana',
+ Indent: 'Zwiększ wcięcie',
+ Outdent: 'Zmniejsz wcięcie',
+ Undo: 'Cofnij',
+ Redo: 'Ponów',
+ Link: 'Wstaw link',
+ Unlink: 'Usuń link',
+ Image: 'Obraz',
+ Table: 'Tabela',
+ HTML: 'Źródło HTML',
+ Paragraph: 'Akapit',
+ Heading_1: 'Nagłówek 1',
+ Heading_2: 'Nagłówek 2',
+ Heading_3: 'Nagłówek 3',
+ Heading_4: 'Nagłówek 4',
+ Heading_5: 'Nagłówek 5',
+ Heading_6: 'Nagłówek 6',
+ Preformatted: 'Preformatowany',
+ Blockquote: 'Cytat blokowy',
+ Table_Header: 'Nagłówek tabeli',
+ URL: 'URL',
+ Title: 'Tytuł',
+ Alternative_Text: 'Tekst alternatywny',
+ Caption: 'Tytuł tabeli',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Liczba wierszy',
+ Number_Of_Cols: 'Liczba kolumn',
+ Submit: 'Wyślij',
+ Cancel: 'Anuluj',
+ Choose: 'Wybierz',
+ Preview: 'Podgląd',
+ Paste_From_Word: 'Wklej z Worda',
+ Tools: 'Narzędzia',
+ Containers: 'Format',
+ Classes: 'Styl',
+ Status: 'Status',
+ Source_Code: 'Kod źródłowy'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/pt-br.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/pt-br.js.svn-base
new file mode 100644
index 0000000..2ec18fe
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/pt-br.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['pt-br'] = {
+ Strong: 'Resaltar',
+ Emphasis: 'Enfatizar',
+ Superscript: 'Sobre escrito',
+ Subscript: 'Sub escrito ',
+ Ordered_List: 'Lista ordenada',
+ Unordered_List: 'Lista desordenada',
+ Indent: 'Indentado',
+ Outdent: 'Desidentar',
+ Undo: 'Desfazer',
+ Redo: 'Refazer',
+ Link: 'Link',
+ Unlink: 'Remover Link',
+ Image: 'Imagem',
+ Table: 'Tabela',
+ HTML: 'HTML',
+ Paragraph: 'Parágrafo',
+ Heading_1: 'Título 1',
+ Heading_2: 'Título 2',
+ Heading_3: 'Título 3',
+ Heading_4: 'Título 4',
+ Heading_5: 'Título 5',
+ Heading_6: 'Título 6',
+ Preformatted: 'Preformatado',
+ Blockquote: 'Citação',
+ Table_Header: 'Título de tabela',
+ URL: 'URL',
+ Title: 'Título',
+ Alternative_Text: 'Texto alternativo',
+ Caption: 'Legenda',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Número de linhas',
+ Number_Of_Cols: 'Número de colunas',
+ Submit: 'Enviar',
+ Cancel: 'Cancelar',
+ Choose: 'Selecionar',
+ Preview: 'Previsualizar',
+ Paste_From_Word: 'Copiar do Word',
+ Tools: 'Ferramentas',
+ Containers: 'Conteneiners',
+ Classes: 'Classes',
+ Status: 'Estado',
+ Source_Code: 'Código fonte'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/pt.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/pt.js.svn-base
new file mode 100644
index 0000000..a3d1a17
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/pt.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['pt'] = {
+ Strong: 'Negrito',
+ Emphasis: 'Itálico',
+ Superscript: 'Sobrescrito',
+ Subscript: 'Subsescrito',
+ Ordered_List: 'Lista Numerada',
+ Unordered_List: 'Lista Marcada',
+ Indent: 'Aumentar Indentaçã',
+ Outdent: 'Diminuir Indentaçã',
+ Undo: 'Desfazer',
+ Redo: 'Restaurar',
+ Link: 'Link',
+ Unlink: 'Tirar link',
+ Image: 'Imagem',
+ Table: 'Tabela',
+ HTML: 'HTML',
+ Paragraph: 'Parágrafo',
+ Heading_1: 'Título 1',
+ Heading_2: 'Título 2',
+ Heading_3: 'Título 3',
+ Heading_4: 'Título 4',
+ Heading_5: 'Título 5',
+ Heading_6: 'Título 6',
+ Preformatted: 'Pré-formatado',
+ Blockquote: 'Citação',
+ Table_Header: 'Cabeçalho Tabela',
+ URL: 'URL',
+ Title: 'Título',
+ Alternative_Text: 'Texto Alterativo',
+ Caption: 'Título Tabela',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Número de Linhas',
+ Number_Of_Cols: 'Número de Colunas',
+ Submit: 'Enviar',
+ Cancel: 'Cancelar',
+ Choose: 'Escolha',
+ Preview: 'Prever',
+ Paste_From_Word: 'Colar do Word',
+ Tools: 'Ferramentas',
+ Containers: 'Containers',
+ Classes: 'Classes',
+ Status: 'Status',
+ Source_Code: 'Código Fonte'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/ru.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/ru.js.svn-base
new file mode 100644
index 0000000..7895f8d
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/ru.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['ru'] = {
+ Strong: 'Жирный',
+ Emphasis: 'Наклонный',
+ Superscript: 'Надстрочный',
+ Subscript: 'Подстрочный',
+ Ordered_List: 'Нумерованый список',
+ Unordered_List: 'Ненумерованый список',
+ Indent: 'Увеличить отступ',
+ Outdent: 'Уменьшить отступ',
+ Undo: 'Отменить',
+ Redo: 'Повторить',
+ Link: 'Ссылка',
+ Unlink: 'Удалить ссылку',
+ Image: 'Изображение',
+ Table: 'Таблица',
+ HTML: 'Править HTML',
+ Paragraph: 'Параграф',
+ Heading_1: 'Заголовок 1',
+ Heading_2: 'Заголовок 2',
+ Heading_3: 'Заголовок 3',
+ Heading_4: 'Заголовок 4',
+ Heading_5: 'Заголовок 5',
+ Heading_6: 'Заголовок 6',
+ Preformatted: 'Preformatted',
+ Blockquote: 'Цитата',
+ Table_Header: 'Заголовок таблицы',
+ URL: 'URL',
+ Title: 'Заголовок',
+ Alternative_Text: 'Альтернативный текст',
+ Caption: 'Надпись',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Кол-во строк',
+ Number_Of_Cols: 'Кол-во столбцов',
+ Submit: 'Отправить',
+ Cancel: 'Отмена',
+ Choose: 'Выбор',
+ Preview: 'Просмотр',
+ Paste_From_Word: 'Вставить из Word',
+ Tools: 'Инструменты',
+ Containers: 'Контейнеры',
+ Classes: 'Классы',
+ Status: 'Статус',
+ Source_Code: 'Исходный код'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/sv.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/sv.js.svn-base
new file mode 100644
index 0000000..6347956
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/sv.js.svn-base
@@ -0,0 +1,46 @@
+WYMeditor.STRINGS['sv'] = {
+ Strong: 'Viktigt',
+ Emphasis: 'Betoning',
+ Superscript: 'Upphöjt',
+ Subscript: 'Nedsänkt',
+ Ordered_List: 'Nummerlista',
+ Unordered_List: 'Punktlista',
+ Indent: 'Indrag',
+ Outdent: 'Utdrag',
+ Undo: 'Ångra',
+ Redo: 'Gör om',
+ Link: 'Länk',
+ Unlink: 'Ta bort länk',
+ Image: 'Bild',
+ Table: 'Tabell',
+ HTML: 'HTML',
+ Paragraph: 'Paragraf',
+ Heading_1: 'Rubrik 1',
+ Heading_2: 'Rubrik 2',
+ Heading_3: 'Rubrik 3',
+ Heading_4: 'Rubrik 4',
+ Heading_5: 'Rubrik 5',
+ Heading_6: 'Rubrik 6',
+ Preformatted: 'Förformaterad',
+ Blockquote: 'Blockcitat',
+ Table_Header: 'Tabellrubrik',
+ URL: 'URL',
+ Title: 'Titel',
+ Relationship: 'Relation',
+ Alternative_Text: 'Alternativ text',
+ Caption: 'Överskrift',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Antal rader',
+ Number_Of_Cols: 'Antal kolumner',
+ Submit: 'Skicka',
+ Cancel: 'Avbryt',
+ Choose: 'Välj',
+ Preview: 'Förhandsgranska',
+ Paste_From_Word: 'Klistra in från Word',
+ Tools: 'Verktyg',
+ Containers: 'Formatering',
+ Classes: 'Klasser',
+ Status: 'Status',
+ Source_Code: 'Källkod'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/tr.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/tr.js.svn-base
new file mode 100644
index 0000000..d26f0ff
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/tr.js.svn-base
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['tr'] = {
+ Strong: 'Kalın',
+ Emphasis: 'Vurgu',
+ Superscript: 'Superscript',
+ Subscript: 'Subscript',
+ Ordered_List: 'Sıralı List',
+ Unordered_List: 'Sırasız List',
+ Indent: 'İçerlek',
+ Outdent: 'Çıkıntılı',
+ Undo: 'Geri Al',
+ Redo: 'Yinele',
+ Link: 'Bağlantı',
+ Unlink: 'Bağlantıyı Kaldır',
+ Image: 'İmaj',
+ Table: 'Tablo',
+ HTML: 'HTML',
+ Paragraph: 'Parağraf',
+ Heading_1: 'Başlık 1',
+ Heading_2: 'Başlık 2',
+ Heading_3: 'Başlık 3',
+ Heading_4: 'Başlık 4',
+ Heading_5: 'Başlık 5',
+ Heading_6: 'Başlık 6',
+ Preformatted: 'Önceden Formatlı',
+ Blockquote: 'Alıntı',
+ Table_Header: 'Tablo Başlığı',
+ URL: 'URL',
+ Title: 'Başlık',
+ Alternative_Text: 'Alternatif Metin',
+ Caption: 'Etiket',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Satır sayısı',
+ Number_Of_Cols: 'Sütun sayısı',
+ Submit: 'Gönder',
+ Cancel: 'İptal',
+ Choose: 'Seç',
+ Preview: 'Önizleme',
+ Paste_From_Word: 'Wordden yapıştır',
+ Tools: 'Araçlar',
+ Containers: 'Kapsayıcılar',
+ Classes: 'Sınıflar',
+ Status: 'Durum',
+ Source_Code: 'Kaynak Kodu'
+};
+
diff --git a/studio/static/js/wymeditor/lang/.svn/text-base/zh_cn.js.svn-base b/studio/static/js/wymeditor/lang/.svn/text-base/zh_cn.js.svn-base
new file mode 100644
index 0000000..72f5aaf
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/.svn/text-base/zh_cn.js.svn-base
@@ -0,0 +1,47 @@
+WYMeditor.STRINGS['zh_cn'] = {
+ Strong: '加粗',
+ Emphasis: '斜体',
+ Superscript: '上标',
+ Subscript: '下标',
+ Ordered_List: '有序列表',
+ Unordered_List: '无序列表',
+ Indent: '增加缩进',
+ Outdent: '减少缩进',
+ Undo: '撤消',
+ Redo: '重做',
+ Link: '链接',
+ Unlink: '取消链接',
+ Image: '图片',
+ Table: '表格',
+ HTML: 'HTML源代码',
+ Paragraph: '段落',
+ Heading_1: '标题 1',
+ Heading_2: '标题 2',
+ Heading_3: '标题 3',
+ Heading_4: '标题 4',
+ Heading_5: '标题 5',
+ Heading_6: '标题 6',
+ Preformatted: '原始文本',
+ Blockquote: '引语',
+ Table_Header: '表头',
+ URL: '地址',
+ Title: '提示文字',
+ Alternative_Text: '失效文字',
+ Caption: '标题',
+ Summary: 'Summary',
+ Number_Of_Rows: '行数',
+ Number_Of_Cols: '列数',
+ Submit: '提交',
+ Cancel: '放弃',
+ Choose: '选择',
+ Preview: '预览',
+ Paste_From_Word: '从Word粘贴纯文本',
+ Tools: '工具',
+ Containers: '容器',
+ Classes: '预定义样式',
+ Status: '状态',
+ Source_Code: '源代码',
+ Attachment: '附件',
+ NewParagraph: '新段落'
+};
+
diff --git a/studio/static/js/wymeditor/lang/bg.js b/studio/static/js/wymeditor/lang/bg.js
new file mode 100644
index 0000000..576bca5
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/bg.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['bg'] = {
+ Strong: 'Получер',
+ Emphasis: 'Курсив',
+ Superscript: 'Горен индекс',
+ Subscript: 'Долен индекс',
+ Ordered_List: 'Подреден списък',
+ Unordered_List: 'Неподреден списък',
+ Indent: 'Блок навътре',
+ Outdent: 'Блок навън',
+ Undo: 'Стъпка назад',
+ Redo: 'Стъпка напред',
+ Link: 'Създай хипервръзка',
+ Unlink: 'Премахни хипервръзката',
+ Image: 'Изображение',
+ Table: 'Таблица',
+ HTML: 'HTML',
+ Paragraph: 'Абзац',
+ Heading_1: 'Заглавие 1',
+ Heading_2: 'Заглавие 2',
+ Heading_3: 'Заглавие 3',
+ Heading_4: 'Заглавие 4',
+ Heading_5: 'Заглавие 5',
+ Heading_6: 'Заглавие 6',
+ Preformatted: 'Преформатиран',
+ Blockquote: 'Цитат',
+ Table_Header: 'Заглавие на таблицата',
+ URL: 'URL',
+ Title: 'Заглавие',
+ Alternative_Text: 'Алтернативен текст',
+ Caption: 'Етикет',
+ Summary: 'Общо',
+ Number_Of_Rows: 'Брой редове',
+ Number_Of_Cols: 'Брой колони',
+ Submit: 'Изпрати',
+ Cancel: 'Отмени',
+ Choose: 'Затвори',
+ Preview: 'Предварителен преглед',
+ Paste_From_Word: 'Вмъкни от MS WORD',
+ Tools: 'Инструменти',
+ Containers: 'Контейнери',
+ Classes: 'Класове',
+ Status: 'Статус',
+ Source_Code: 'Източник, код'
+};
+
diff --git a/studio/static/js/wymeditor/lang/ca.js b/studio/static/js/wymeditor/lang/ca.js
new file mode 100644
index 0000000..c342406
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/ca.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['ca'] = {
+ Strong: 'Ressaltar',
+ Emphasis: 'Emfatitzar',
+ Superscript: 'Superindex',
+ Subscript: 'Subindex',
+ Ordered_List: 'Llistat ordenat',
+ Unordered_List: 'Llistat sense ordenar',
+ Indent: 'Indentat',
+ Outdent: 'Sense indentar',
+ Undo: 'Desfer',
+ Redo: 'Refer',
+ Link: 'Enllaçar',
+ Unlink: 'Eliminar enllaç',
+ Image: 'Imatge',
+ Table: 'Taula',
+ HTML: 'HTML',
+ Paragraph: 'Paràgraf',
+ Heading_1: 'Capçalera 1',
+ Heading_2: 'Capçalera 2',
+ Heading_3: 'Capçalera 3',
+ Heading_4: 'Capçalera 4',
+ Heading_5: 'Capçalera 5',
+ Heading_6: 'Capçalera 6',
+ Preformatted: 'Pre-formatejat',
+ Blockquote: 'Cita',
+ Table_Header: 'Capçalera de la taula',
+ URL: 'URL',
+ Title: 'Títol',
+ Alternative_Text: 'Text alternatiu',
+ Caption: 'Llegenda',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Nombre de files',
+ Number_Of_Cols: 'Nombre de columnes',
+ Submit: 'Enviar',
+ Cancel: 'Cancel·lar',
+ Choose: 'Triar',
+ Preview: 'Vista prèvia',
+ Paste_From_Word: 'Pegar des de Word',
+ Tools: 'Eines',
+ Containers: 'Contenidors',
+ Classes: 'Classes',
+ Status: 'Estat',
+ Source_Code: 'Codi font'
+};
+
diff --git a/studio/static/js/wymeditor/lang/cs.js b/studio/static/js/wymeditor/lang/cs.js
new file mode 100644
index 0000000..3939d71
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/cs.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['cs'] = {
+ Strong: 'Tučné',
+ Emphasis: 'Kurzíva',
+ Superscript: 'Horní index',
+ Subscript: 'Dolní index',
+ Ordered_List: 'Číslovaný seznam',
+ Unordered_List: 'Nečíslovaný seznam',
+ Indent: 'Zvětšit odsazení',
+ Outdent: 'Zmenšit odsazení',
+ Undo: 'Zpět',
+ Redo: 'Znovu',
+ Link: 'Vytvořit odkaz',
+ Unlink: 'Zrušit odkaz',
+ Image: 'Obrázek',
+ Table: 'Tabulka',
+ HTML: 'HTML',
+ Paragraph: 'Odstavec',
+ Heading_1: 'Nadpis 1. úrovně',
+ Heading_2: 'Nadpis 2. úrovně',
+ Heading_3: 'Nadpis 3. úrovně',
+ Heading_4: 'Nadpis 4. úrovně',
+ Heading_5: 'Nadpis 5. úrovně',
+ Heading_6: 'Nadpis 6. úrovně',
+ Preformatted: 'Předformátovaný text',
+ Blockquote: 'Citace',
+ Table_Header: 'Hlavičková buňka tabulky',
+ URL: 'Adresa',
+ Title: 'Text po najetí myší',
+ Alternative_Text: 'Text pro případ nezobrazení obrázku',
+ Caption: 'Titulek tabulky',
+ Summary: 'Shrnutí obsahu',
+ Number_Of_Rows: 'Počet řádek',
+ Number_Of_Cols: 'Počet sloupců',
+ Submit: 'Vytvořit',
+ Cancel: 'Zrušit',
+ Choose: 'Vybrat',
+ Preview: 'Náhled',
+ Paste_From_Word: 'Vložit z Wordu',
+ Tools: 'Nástroje',
+ Containers: 'Typy obsahu',
+ Classes: 'Třídy',
+ Status: 'Stav',
+ Source_Code: 'Zdrojový kód'
+};
+
diff --git a/studio/static/js/wymeditor/lang/cy.js b/studio/static/js/wymeditor/lang/cy.js
new file mode 100644
index 0000000..7d15b79
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/cy.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['cy'] = {
+ Strong: 'Bras',
+ Emphasis: 'Italig',
+ Superscript: 'Uwchsgript',
+ Subscript: 'Is-sgript',
+ Ordered_List: 'Rhestr mewn Trefn',
+ Unordered_List: 'Pwyntiau Bwled',
+ Indent: 'Mewnoli',
+ Outdent: 'Alloli',
+ Undo: 'Dadwneud',
+ Redo: 'Ailwneud',
+ Link: 'Cysylltu',
+ Unlink: 'Datgysylltu',
+ Image: 'Delwedd',
+ Table: 'Tabl',
+ HTML: 'HTML',
+ Paragraph: 'Paragraff',
+ Heading_1: 'Pennawd 1',
+ Heading_2: 'Pennawd 2',
+ Heading_3: 'Pennawd 3',
+ Heading_4: 'Pennawd 4',
+ Heading_5: 'Pennawd 5',
+ Heading_6: 'Pennawd 6',
+ Preformatted: 'Rhagfformat',
+ Blockquote: 'Bloc Dyfyniad',
+ Table_Header: 'Pennyn Tabl',
+ URL: 'URL',
+ Title: 'Teitl',
+ Alternative_Text: 'Testun Amgen',
+ Caption: 'Pennawd',
+ Summary: 'Crynodeb',
+ Number_Of_Rows: 'Nifer y rhesi',
+ Number_Of_Cols: 'Nifer y colofnau',
+ Submit: 'Anfon',
+ Cancel: 'Diddymu',
+ Choose: 'Dewis',
+ Preview: 'Rhagolwg',
+ Paste_From_Word: 'Gludo o Word',
+ Tools: 'Offer',
+ Containers: 'Cynhwysyddion',
+ Classes: 'Dosbarthiadau',
+ Status: 'Statws',
+ Source_Code: 'Cod ffynhonnell'
+};
+
diff --git a/studio/static/js/wymeditor/lang/de.js b/studio/static/js/wymeditor/lang/de.js
new file mode 100644
index 0000000..a1e01e1
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/de.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['de'] = {
+ Strong: 'Fett',
+ Emphasis: 'Kursiv',
+ Superscript: 'Text hochstellen',
+ Subscript: 'Text tiefstellen',
+ Ordered_List: 'Geordnete Liste einfügen',
+ Unordered_List: 'Ungeordnete Liste einfügen',
+ Indent: 'Einzug erhöhen',
+ Outdent: 'Einzug vermindern',
+ Undo: 'Befehle rückgängig machen',
+ Redo: 'Befehle wiederherstellen',
+ Link: 'Hyperlink einfügen',
+ Unlink: 'Hyperlink entfernen',
+ Image: 'Bild einfügen',
+ Table: 'Tabelle einfügen',
+ HTML: 'HTML anzeigen/verstecken',
+ Paragraph: 'Absatz',
+ Heading_1: 'Überschrift 1',
+ Heading_2: 'Überschrift 2',
+ Heading_3: 'Überschrift 3',
+ Heading_4: 'Überschrift 4',
+ Heading_5: 'Überschrift 5',
+ Heading_6: 'Überschrift 6',
+ Preformatted: 'Vorformatiert',
+ Blockquote: 'Zitat',
+ Table_Header: 'Tabellenüberschrift',
+ URL: 'URL',
+ Title: 'Titel',
+ Alternative_Text: 'Alternativer Text',
+ Caption: 'Tabellenüberschrift',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Anzahl Zeilen',
+ Number_Of_Cols: 'Anzahl Spalten',
+ Submit: 'Absenden',
+ Cancel: 'Abbrechen',
+ Choose: 'Auswählen',
+ Preview: 'Vorschau',
+ Paste_From_Word: 'Aus Word einfügen',
+ Tools: 'Werkzeuge',
+ Containers: 'Inhaltstyp',
+ Classes: 'Klassen',
+ Status: 'Status',
+ Source_Code: 'Quellcode'
+};
+
diff --git a/studio/static/js/wymeditor/lang/en.js b/studio/static/js/wymeditor/lang/en.js
new file mode 100644
index 0000000..dc7eb21
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/en.js
@@ -0,0 +1,46 @@
+WYMeditor.STRINGS['en'] = {
+ Strong: 'Strong',
+ Emphasis: 'Emphasis',
+ Superscript: 'Superscript',
+ Subscript: 'Subscript',
+ Ordered_List: 'Ordered List',
+ Unordered_List: 'Unordered List',
+ Indent: 'Indent',
+ Outdent: 'Outdent',
+ Undo: 'Undo',
+ Redo: 'Redo',
+ Link: 'Link',
+ Unlink: 'Unlink',
+ Image: 'Image',
+ Table: 'Table',
+ HTML: 'HTML',
+ Paragraph: 'Paragraph',
+ Heading_1: 'Heading 1',
+ Heading_2: 'Heading 2',
+ Heading_3: 'Heading 3',
+ Heading_4: 'Heading 4',
+ Heading_5: 'Heading 5',
+ Heading_6: 'Heading 6',
+ Preformatted: 'Preformatted',
+ Blockquote: 'Blockquote',
+ Table_Header: 'Table Header',
+ URL: 'URL',
+ Title: 'Title',
+ Relationship: 'Relationship',
+ Alternative_Text: 'Alternative text',
+ Caption: 'Caption',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Number of rows',
+ Number_Of_Cols: 'Number of cols',
+ Submit: 'Submit',
+ Cancel: 'Cancel',
+ Choose: 'Choose',
+ Preview: 'Preview',
+ Paste_From_Word: 'Paste from Word',
+ Tools: 'Tools',
+ Containers: 'Containers',
+ Classes: 'Classes',
+ Status: 'Status',
+ Source_Code: 'Source code'
+};
+
diff --git a/studio/static/js/wymeditor/lang/es.js b/studio/static/js/wymeditor/lang/es.js
new file mode 100644
index 0000000..cdb03c1
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/es.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['es'] = {
+ Strong: 'Resaltar',
+ Emphasis: 'Enfatizar',
+ Superscript: 'Superindice',
+ Subscript: 'Subindice',
+ Ordered_List: 'Lista ordenada',
+ Unordered_List: 'Lista sin ordenar',
+ Indent: 'Indentado',
+ Outdent: 'Sin indentar',
+ Undo: 'Deshacer',
+ Redo: 'Rehacer',
+ Link: 'Enlazar',
+ Unlink: 'Eliminar enlace',
+ Image: 'Imagen',
+ Table: 'Tabla',
+ HTML: 'HTML',
+ Paragraph: 'Párrafo',
+ Heading_1: 'Cabecera 1',
+ Heading_2: 'Cabecera 2',
+ Heading_3: 'Cabecera 3',
+ Heading_4: 'Cabecera 4',
+ Heading_5: 'Cabecera 5',
+ Heading_6: 'Cabecera 6',
+ Preformatted: 'Preformateado',
+ Blockquote: 'Cita',
+ Table_Header: 'Cabecera de la tabla',
+ URL: 'URL',
+ Title: 'Título',
+ Alternative_Text: 'Texto alternativo',
+ Caption: 'Leyenda',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Número de filas',
+ Number_Of_Cols: 'Número de columnas',
+ Submit: 'Enviar',
+ Cancel: 'Cancelar',
+ Choose: 'Seleccionar',
+ Preview: 'Vista previa',
+ Paste_From_Word: 'Pegar desde Word',
+ Tools: 'Herramientas',
+ Containers: 'Contenedores',
+ Classes: 'Clases',
+ Status: 'Estado',
+ Source_Code: 'Código fuente'
+};
+
diff --git a/studio/static/js/wymeditor/lang/fa.js b/studio/static/js/wymeditor/lang/fa.js
new file mode 100644
index 0000000..9d70fcb
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/fa.js
@@ -0,0 +1,46 @@
+//Translation To Persian: Ghassem Tofighi (http://ght.ir)
+WYMeditor.STRINGS['fa'] = {
+ Strong: 'پررنگ',//Strong
+ Emphasis: 'ایتالیک',//Emphasis
+ Superscript: 'بالانويس‌ ',//Superscript
+ Subscript: 'زيرنويس‌',//Subscript
+ Ordered_List: 'لیست مرتب',//Ordered List
+ Unordered_List: 'لیست نامرتب',//Unordered List
+ Indent: 'افزودن دندانه',//Indent
+ Outdent: 'کاهش دندانه',//Outdent
+ Undo: 'واگردانی',//Undo
+ Redo: 'تکرار',//Redo
+ Link: 'ساختن پیوند',//Link
+ Unlink: 'برداشتن پیوند',//Unlink
+ Image: 'تصویر',//Image
+ Table: 'جدول',//Table
+ HTML: 'HTML',//HTML
+ Paragraph: 'پاراگراف',//Paragraph
+ Heading_1: 'سرتیتر ۱',//Heading 1
+ Heading_2: 'سرتیتر ۲',//Heading 2
+ Heading_3: 'سرتیتر ۳',//Heading 3
+ Heading_4: 'سرتیتر ۴',//Heading 4
+ Heading_5: 'سرتیتر ۵',//Heading 5
+ Heading_6: 'سرتیتر ۶',//Heading 6
+ Preformatted: 'قالب آماده',//Preformatted
+ Blockquote: 'نقل قول',//Blockquote
+ Table_Header: 'سرجدول',//Table Header
+ URL: 'آدرس اینترنتی',//URL
+ Title: 'عنوان',//Title
+ Alternative_Text: 'متن جایگزین',//Alternative text
+ Caption: 'عنوان',//Caption
+ Summary: 'Summary',
+ Number_Of_Rows: 'تعداد سطرها',//Number of rows
+ Number_Of_Cols: 'تعداد ستون‌ها',//Number of cols
+ Submit: 'فرستادن',//Submit
+ Cancel: 'لغو',//Cancel
+ Choose: 'انتخاب',//Choose
+ Preview: 'پیش‌نمایش',//Preview
+ Paste_From_Word: 'انتقال از ورد',//Paste from Word
+ Tools: 'ابزار',//Tools
+ Containers: '‌قالب‌ها',//Containers
+ Classes: 'کلاس‌ها',//Classes
+ Status: 'وضعیت',//Status
+ Source_Code: 'کد مبدأ'//Source code
+};
+
diff --git a/studio/static/js/wymeditor/lang/fi.js b/studio/static/js/wymeditor/lang/fi.js
new file mode 100644
index 0000000..fe1eab4
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/fi.js
@@ -0,0 +1,44 @@
+WYMeditor.STRINGS['fi'] = {
+ Strong: 'Lihavoitu',
+ Emphasis: 'Korostus',
+ Superscript: 'Yläindeksi',
+ Subscript: 'Alaindeksi',
+ Ordered_List: 'Numeroitu lista',
+ Unordered_List: 'Luettelomerkit',
+ Indent: 'Suurenna sisennystä',
+ Outdent: 'Pienennä sisennystä',
+ Undo: 'Kumoa',
+ Redo: 'Toista',
+ Link: 'Linkitä',
+ Unlink: 'Poista linkitys',
+ Image: 'Kuva',
+ Table: 'Taulukko',
+ HTML: 'HTML',
+ Paragraph: 'Kappale',
+ Heading_1: 'Otsikko 1',
+ Heading_2: 'Otsikko 2',
+ Heading_3: 'Otsikko 3',
+ Heading_4: 'Otsikko 4',
+ Heading_5: 'Otsikko 5',
+ Heading_6: 'Otsikko 6',
+ Preformatted: 'Esimuotoilu',
+ Blockquote: 'Sitaatti',
+ Table_Header: 'Taulukon otsikko',
+ URL: 'URL',
+ Title: 'Otsikko',
+ Alternative_Text: 'Vaihtoehtoinen teksti',
+ Caption: 'Kuvateksti',
+ Summary: 'Yhteenveto',
+ Number_Of_Rows: 'Rivien määrä',
+ Number_Of_Cols: 'Palstojen määrä',
+ Submit: 'Lähetä',
+ Cancel: 'Peruuta',
+ Choose: 'Valitse',
+ Preview: 'Esikatsele',
+ Paste_From_Word: 'Tuo Wordista',
+ Tools: 'Työkalut',
+ Containers: 'Muotoilut',
+ Classes: 'Luokat',
+ Status: 'Tila',
+ Source_Code: 'Lähdekoodi'
+};
diff --git a/studio/static/js/wymeditor/lang/fr.js b/studio/static/js/wymeditor/lang/fr.js
new file mode 100644
index 0000000..9b6deb9
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/fr.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['fr'] = {
+ Strong: 'Mise en évidence',
+ Emphasis: 'Emphase',
+ Superscript: 'Exposant',
+ Subscript: 'Indice',
+ Ordered_List: 'Liste Ordonnée',
+ Unordered_List: 'Liste Non-Ordonnée',
+ Indent: 'Imbriqué',
+ Outdent: 'Non-imbriqué',
+ Undo: 'Annuler',
+ Redo: 'Rétablir',
+ Link: 'Lien',
+ Unlink: 'Supprimer le Lien',
+ Image: 'Image',
+ Table: 'Tableau',
+ HTML: 'HTML',
+ Paragraph: 'Paragraphe',
+ Heading_1: 'Titre 1',
+ Heading_2: 'Titre 2',
+ Heading_3: 'Titre 3',
+ Heading_4: 'Titre 4',
+ Heading_5: 'Titre 5',
+ Heading_6: 'Titre 6',
+ Preformatted: 'Pré-formatté',
+ Blockquote: 'Citation',
+ Table_Header: 'Cellule de titre',
+ URL: 'URL',
+ Title: 'Titre',
+ Alternative_Text: 'Texte alternatif',
+ Caption: 'Légende',
+ Summary: 'Résumé',
+ Number_Of_Rows: 'Nombre de lignes',
+ Number_Of_Cols: 'Nombre de colonnes',
+ Submit: 'Envoyer',
+ Cancel: 'Annuler',
+ Choose: 'Choisir',
+ Preview: 'Prévisualisation',
+ Paste_From_Word: 'Copier depuis Word',
+ Tools: 'Outils',
+ Containers: 'Type de texte',
+ Classes: 'Type de contenu',
+ Status: 'Infos',
+ Source_Code: 'Code source'
+};
+
diff --git a/studio/static/js/wymeditor/lang/gl.js b/studio/static/js/wymeditor/lang/gl.js
new file mode 100644
index 0000000..d4786b8
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/gl.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['gl'] = {
+ Strong: 'Moita énfase',
+ Emphasis: 'Énfase',
+ Superscript: 'Superíndice',
+ Subscript: 'Subíndice',
+ Ordered_List: 'Lista ordenada',
+ Unordered_List: 'Lista sen ordenar',
+ Indent: 'Aniñar',
+ Outdent: 'Desaniñar',
+ Undo: 'Desfacer',
+ Redo: 'Refacer',
+ Link: 'Ligazón',
+ Unlink: 'Desligar',
+ Image: 'Imaxe',
+ Table: 'Táboa',
+ HTML: 'HTML',
+ Paragraph: 'Parágrafo',
+ Heading_1: 'Título 1',
+ Heading_2: 'Título 2',
+ Heading_3: 'Título 3',
+ Heading_4: 'Título 4',
+ Heading_5: 'Título 5',
+ Heading_6: 'Título 6',
+ Preformatted: 'Preformatado',
+ Blockquote: 'Cita en parágrafo',
+ Table_Header: 'Cabeceira da táboa',
+ URL: 'URL',
+ Title: 'Título',
+ Alternative_Text: 'Texto alternativo',
+ Caption: 'Título',
+ Summary: 'Resumo',
+ Number_Of_Rows: 'Número de filas',
+ Number_Of_Cols: 'Número de columnas',
+ Submit: 'Enviar',
+ Cancel: 'Cancelar',
+ Choose: 'Escoller',
+ Preview: 'Previsualizar',
+ Paste_From_Word: 'Colar dende Word',
+ Tools: 'Ferramentas',
+ Containers: 'Contenedores',
+ Classes: 'Clases',
+ Status: 'Estado',
+ Source_Code: 'Código fonte'
+};
+
diff --git a/studio/static/js/wymeditor/lang/he.js b/studio/static/js/wymeditor/lang/he.js
new file mode 100644
index 0000000..97c9675
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/he.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['he'] = {
+ Strong: 'חזק',
+ Emphasis: 'מובלט',
+ Superscript: 'כתב עילי',
+ Subscript: 'כתב תחתי',
+ Ordered_List: 'רשימה ממוספרת',
+ Unordered_List: 'רשימה לא ממוספרת',
+ Indent: 'הזחה פנימה',
+ Outdent: 'הזחה החוצה',
+ Undo: 'בטל פעולה',
+ Redo: 'בצע מחדש פעולה',
+ Link: 'קישור',
+ Unlink: 'בטל קישור',
+ Image: 'תמונה',
+ Table: 'טבלה',
+ HTML: 'קוד HTML',
+ Paragraph: 'פסקה',
+ Heading_1: 'כותרת 1 ; תג &lt;h1&gt;',
+ Heading_2: 'כותרת 2 ; תג &lt;h2&gt;',
+ Heading_3: 'כותרת 3 ; תג &lt;h3&gt;',
+ Heading_4: 'כותרת 4 ; תג &lt;h4&gt;',
+ Heading_5: 'כותרת 5 ; תג &lt;h5&gt;',
+ Heading_6: 'כותרת 6 ; תג &lt;h6&gt;',
+ Preformatted: 'משמר רווחים',
+ Blockquote: 'ציטוט',
+ Table_Header: 'כותרת טבלה',
+ URL: 'קישור (URL)',
+ Title: 'כותרת',
+ Alternative_Text: 'טקסט חלופי',
+ Caption: 'כותרת',
+ Summary: 'סיכום',
+ Number_Of_Rows: 'מספר שורות',
+ Number_Of_Cols: 'מספר טורים',
+ Submit: 'שלח',
+ Cancel: 'בטל',
+ Choose: 'בחר',
+ Preview: 'תצוגה מקדימה',
+ Paste_From_Word: 'העתק מ-Word',
+ Tools: 'כלים',
+ Containers: 'מיכלים',
+ Classes: 'מחלקות',
+ Status: 'מצב',
+ Source_Code: 'קוד מקור'
+};
+
diff --git a/studio/static/js/wymeditor/lang/hr.js b/studio/static/js/wymeditor/lang/hr.js
new file mode 100644
index 0000000..193e31a
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/hr.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['hr'] = {
+ Strong: 'Podebljano',
+ Emphasis: 'Naglašeno',
+ Superscript: 'Iznad',
+ Subscript: 'Ispod',
+ Ordered_List: 'Pobrojana lista',
+ Unordered_List: 'Nepobrojana lista',
+ Indent: 'Uvuci',
+ Outdent: 'Izvuci',
+ Undo: 'Poništi promjenu',
+ Redo: 'Ponovno promjeni',
+ Link: 'Hiperveza',
+ Unlink: 'Ukloni hipervezu',
+ Image: 'Slika',
+ Table: 'Tablica',
+ HTML: 'HTML',
+ Paragraph: 'Paragraf',
+ Heading_1: 'Naslov 1',
+ Heading_2: 'Naslov 2',
+ Heading_3: 'Naslov 3',
+ Heading_4: 'Naslov 4',
+ Heading_5: 'Naslov 5',
+ Heading_6: 'Naslov 6',
+ Preformatted: 'Unaprijed formatirano',
+ Blockquote: 'Citat',
+ Table_Header: 'Zaglavlje tablice',
+ URL: 'URL',
+ Title: 'Naslov',
+ Alternative_Text: 'Alternativni tekst',
+ Caption: 'Zaglavlje',
+ Summary: 'Sažetak',
+ Number_Of_Rows: 'Broj redova',
+ Number_Of_Cols: 'Broj kolona',
+ Submit: 'Snimi',
+ Cancel: 'Odustani',
+ Choose: 'Izaberi',
+ Preview: 'Pregled',
+ Paste_From_Word: 'Zalijepi iz Word-a',
+ Tools: 'Alati',
+ Containers: 'Kontejneri',
+ Classes: 'Klase',
+ Status: 'Status',
+ Source_Code: 'Izvorni kod'
+};
+
diff --git a/studio/static/js/wymeditor/lang/hu.js b/studio/static/js/wymeditor/lang/hu.js
new file mode 100644
index 0000000..a8cdbc6
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/hu.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['hu'] = {
+ Strong: 'Félkövér',
+ Emphasis: 'Kiemelt',
+ Superscript: 'Felső index',
+ Subscript: 'Alsó index',
+ Ordered_List: 'Rendezett lista',
+ Unordered_List: 'Rendezetlen lista',
+ Indent: 'Bekezdés',
+ Outdent: 'Bekezdés törlése',
+ Undo: 'Visszavon',
+ Redo: 'Visszaállít',
+ Link: 'Link',
+ Unlink: 'Link törlése',
+ Image: 'Kép',
+ Table: 'Tábla',
+ HTML: 'HTML',
+ Paragraph: 'Bekezdés',
+ Heading_1: 'Címsor 1',
+ Heading_2: 'Címsor 2',
+ Heading_3: 'Címsor 3',
+ Heading_4: 'Címsor 4',
+ Heading_5: 'Címsor 5',
+ Heading_6: 'Címsor 6',
+ Preformatted: 'Előformázott',
+ Blockquote: 'Idézet',
+ Table_Header: 'Tábla Fejléc',
+ URL: 'Webcím',
+ Title: 'Megnevezés',
+ Alternative_Text: 'Alternatív szöveg',
+ Caption: 'Fejléc',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Sorok száma',
+ Number_Of_Cols: 'Oszlopok száma',
+ Submit: 'Elküld',
+ Cancel: 'Mégsem',
+ Choose: 'Választ',
+ Preview: 'Előnézet',
+ Paste_From_Word: 'Másolás Word-ból',
+ Tools: 'Eszközök',
+ Containers: 'Tartalmak',
+ Classes: 'Osztályok',
+ Status: 'Állapot',
+ Source_Code: 'Forráskód'
+};
+
diff --git a/studio/static/js/wymeditor/lang/it.js b/studio/static/js/wymeditor/lang/it.js
new file mode 100644
index 0000000..ca632a9
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/it.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['it'] = {
+ Strong: 'Grassetto',
+ Emphasis: 'Corsetto',
+ Superscript: 'Apice',
+ Subscript: 'Pedice',
+ Ordered_List: 'Lista Ordinata',
+ Unordered_List: 'Lista Puntata',
+ Indent: 'Indenta',
+ Outdent: 'Caccia',
+ Undo: 'Indietro',
+ Redo: 'Avanti',
+ Link: 'Inserisci Link',
+ Unlink: 'Togli Link',
+ Image: 'Inserisci Immagine',
+ Table: 'Inserisci Tabella',
+ HTML: 'HTML',
+ Paragraph: 'Paragrafo',
+ Heading_1: 'Heading 1',
+ Heading_2: 'Heading 2',
+ Heading_3: 'Heading 3',
+ Heading_4: 'Heading 4',
+ Heading_5: 'Heading 5',
+ Heading_6: 'Heading 6',
+ Preformatted: 'Preformattato',
+ Blockquote: 'Blockquote',
+ Table_Header: 'Header Tabella',
+ URL: 'Indirizzo',
+ Title: 'Titolo',
+ Alternative_Text: 'Testo Alternativo',
+ Caption: 'Caption',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Numero di Righe',
+ Number_Of_Cols: 'Numero di Colonne',
+ Submit: 'Invia',
+ Cancel: 'Cancella',
+ Choose: 'Scegli',
+ Preview: 'Anteprima',
+ Paste_From_Word: 'Incolla',
+ Tools: 'Tools',
+ Containers: 'Contenitori',
+ Classes: 'Classi',
+ Status: 'Stato',
+ Source_Code: 'Codice Sorgente'
+};
+
diff --git a/studio/static/js/wymeditor/lang/ja.js b/studio/static/js/wymeditor/lang/ja.js
new file mode 100644
index 0000000..c9b6410
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/ja.js
@@ -0,0 +1,44 @@
+WYMeditor.STRINGS['ja'] = {
+ Strong: '強調<strong>',
+ Emphasis: '強調<em>',
+ Superscript: '上付き',
+ Subscript: '下付き',
+ Ordered_List: '番号付きリスト',
+ Unordered_List: '番号無リスト',
+ Indent: 'インデントを増やす',
+ Outdent: 'インデントを減らす',
+ Undo: '元に戻す',
+ Redo: 'やり直す',
+ Link: 'リンク',
+ Unlink: 'リンク取消',
+ Image: '画像',
+ Table: 'テーブル',
+ HTML: 'HTML',
+ Paragraph: '段落',
+ Heading_1: '見出し 1',
+ Heading_2: '見出し 2',
+ Heading_3: '見出し 3',
+ Heading_4: '見出し 4',
+ Heading_5: '見出し 5',
+ Heading_6: '見出し 6',
+ Preformatted: '整形済みテキスト',
+ Blockquote: '引用文',
+ Table_Header: '表見出し',
+ URL: 'URL',
+ Title: 'タイトル',
+ Alternative_Text: '代替テキスト',
+ Caption: 'キャプション',
+ Summary: 'サマリー',
+ Number_Of_Rows: '行数',
+ Number_Of_Cols: '列数',
+ Submit: '送信',
+ Cancel: 'キャンセル',
+ Choose: '選択',
+ Preview: 'プレビュー',
+ Paste_From_Word: '貼り付け',
+ Tools: 'ツール',
+ Containers: 'コンテナ',
+ Classes: 'クラス',
+ Status: 'ステータス',
+ Source_Code: 'ソースコード'
+};
diff --git a/studio/static/js/wymeditor/lang/nb.js b/studio/static/js/wymeditor/lang/nb.js
new file mode 100644
index 0000000..7573b78
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/nb.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['nb'] = {
+ Strong: 'Fet',
+ Emphasis: 'Uthevet',
+ Superscript: 'Opphøyet',
+ Subscript: 'Nedsenket',
+ Ordered_List: 'Nummerert liste',
+ Unordered_List: 'Punktliste',
+ Indent: 'Rykk inn',
+ Outdent: 'Rykk ut',
+ Undo: 'Angre',
+ Redo: 'Gjenta',
+ Link: 'Lenke',
+ Unlink: 'Ta bort lenken',
+ Image: 'Bilde',
+ Table: 'Tabell',
+ HTML: 'HTML',
+ Paragraph: 'Avsnitt',
+ Heading_1: 'Overskrift 1',
+ Heading_2: 'Overskrift 2',
+ Heading_3: 'Overskrift 3',
+ Heading_4: 'Overskrift 4',
+ Heading_5: 'Overskrift 5',
+ Heading_6: 'Overskrift 6',
+ Preformatted: 'Preformatert',
+ Blockquote: 'Sitat',
+ Table_Header: 'Tabelloverskrift',
+ URL: 'URL',
+ Title: 'Tittel',
+ Alternative_Text: 'Alternativ tekst',
+ Caption: 'Overskrift',
+ Summary: 'Sammendrag',
+ Number_Of_Rows: 'Antall rader',
+ Number_Of_Cols: 'Antall kolonner',
+ Submit: 'Ok',
+ Cancel: 'Avbryt',
+ Choose: 'Velg',
+ Preview: 'Forhåndsvis',
+ Paste_From_Word: 'Lim inn fra Word',
+ Tools: 'Verktøy',
+ Containers: 'Formatering',
+ Classes: 'Klasser',
+ Status: 'Status',
+ Source_Code: 'Kildekode'
+};
+
diff --git a/studio/static/js/wymeditor/lang/nl.js b/studio/static/js/wymeditor/lang/nl.js
new file mode 100644
index 0000000..cdfa21c
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/nl.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['nl'] = {
+ Strong: 'Sterk benadrukken',
+ Emphasis: 'Benadrukken',
+ Superscript: 'Bovenschrift',
+ Subscript: 'Onderschrift',
+ Ordered_List: 'Geordende lijst',
+ Unordered_List: 'Ongeordende lijst',
+ Indent: 'Inspringen',
+ Outdent: 'Terugspringen',
+ Undo: 'Ongedaan maken',
+ Redo: 'Opnieuw uitvoeren',
+ Link: 'Linken',
+ Unlink: 'Ontlinken',
+ Image: 'Afbeelding',
+ Table: 'Tabel',
+ HTML: 'HTML',
+ Paragraph: 'Paragraaf',
+ Heading_1: 'Kop 1',
+ Heading_2: 'Kop 2',
+ Heading_3: 'Kop 3',
+ Heading_4: 'Kop 4',
+ Heading_5: 'Kop 5',
+ Heading_6: 'Kop 6',
+ Preformatted: 'Voorgeformatteerd',
+ Blockquote: 'Citaat',
+ Table_Header: 'Tabel-kop',
+ URL: 'URL',
+ Title: 'Titel',
+ Alternative_Text: 'Alternatieve tekst',
+ Caption: 'Bijschrift',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Aantal rijen',
+ Number_Of_Cols: 'Aantal kolommen',
+ Submit: 'Versturen',
+ Cancel: 'Annuleren',
+ Choose: 'Kiezen',
+ Preview: 'Voorbeeld bekijken',
+ Paste_From_Word: 'Plakken uit Word',
+ Tools: 'Hulpmiddelen',
+ Containers: 'Teksttypes',
+ Classes: 'Klassen',
+ Status: 'Status',
+ Source_Code: 'Broncode'
+};
+
diff --git a/studio/static/js/wymeditor/lang/nn.js b/studio/static/js/wymeditor/lang/nn.js
new file mode 100644
index 0000000..51cec2b
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/nn.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['nn'] = {
+ Strong: 'Feit',
+ Emphasis: 'Utheva',
+ Superscript: 'Opphøgd',
+ Subscript: 'Nedsenka',
+ Ordered_List: 'Nummerert liste',
+ Unordered_List: 'Punktliste',
+ Indent: 'Rykk inn',
+ Outdent: 'Rykk ut',
+ Undo: 'Angre',
+ Redo: 'Gjentaka',
+ Link: 'Lenkje',
+ Unlink: 'Ta bort lenkja',
+ Image: 'Bilete',
+ Table: 'Tabell',
+ HTML: 'HTML',
+ Paragraph: 'Avsnitt',
+ Heading_1: 'Overskrift 1',
+ Heading_2: 'Overskrift 2',
+ Heading_3: 'Overskrift 3',
+ Heading_4: 'Overskrift 4',
+ Heading_5: 'Overskrift 5',
+ Heading_6: 'Overskrift 6',
+ Preformatted: 'Preformatert',
+ Blockquote: 'Sitat',
+ Table_Header: 'Tabelloverskrift',
+ URL: 'URL',
+ Title: 'Tittel',
+ Alternative_Text: 'Alternativ tekst',
+ Caption: 'Overskrift',
+ Summary: 'Samandrag',
+ Number_Of_Rows: 'Tal på rader',
+ Number_Of_Cols: 'Tal på kolonnar',
+ Submit: 'Ok',
+ Cancel: 'Avbryt',
+ Choose: 'Vel',
+ Preview: 'Førehandsvis',
+ Paste_From_Word: 'Lim inn frå Word',
+ Tools: 'Verkty',
+ Containers: 'Formatering',
+ Classes: 'Klassar',
+ Status: 'Status',
+ Source_Code: 'Kjeldekode'
+};
+
diff --git a/studio/static/js/wymeditor/lang/pl.js b/studio/static/js/wymeditor/lang/pl.js
new file mode 100644
index 0000000..d6c0471
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/pl.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['pl'] = {
+ Strong: 'Nacisk',
+ Emphasis: 'Emfaza',
+ Superscript: 'Indeks górny',
+ Subscript: 'Indeks dolny',
+ Ordered_List: 'Lista numerowana',
+ Unordered_List: 'Lista wypunktowana',
+ Indent: 'Zwiększ wcięcie',
+ Outdent: 'Zmniejsz wcięcie',
+ Undo: 'Cofnij',
+ Redo: 'Ponów',
+ Link: 'Wstaw link',
+ Unlink: 'Usuń link',
+ Image: 'Obraz',
+ Table: 'Tabela',
+ HTML: 'Źródło HTML',
+ Paragraph: 'Akapit',
+ Heading_1: 'Nagłówek 1',
+ Heading_2: 'Nagłówek 2',
+ Heading_3: 'Nagłówek 3',
+ Heading_4: 'Nagłówek 4',
+ Heading_5: 'Nagłówek 5',
+ Heading_6: 'Nagłówek 6',
+ Preformatted: 'Preformatowany',
+ Blockquote: 'Cytat blokowy',
+ Table_Header: 'Nagłówek tabeli',
+ URL: 'URL',
+ Title: 'Tytuł',
+ Alternative_Text: 'Tekst alternatywny',
+ Caption: 'Tytuł tabeli',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Liczba wierszy',
+ Number_Of_Cols: 'Liczba kolumn',
+ Submit: 'Wyślij',
+ Cancel: 'Anuluj',
+ Choose: 'Wybierz',
+ Preview: 'Podgląd',
+ Paste_From_Word: 'Wklej z Worda',
+ Tools: 'Narzędzia',
+ Containers: 'Format',
+ Classes: 'Styl',
+ Status: 'Status',
+ Source_Code: 'Kod źródłowy'
+};
+
diff --git a/studio/static/js/wymeditor/lang/pt-br.js b/studio/static/js/wymeditor/lang/pt-br.js
new file mode 100644
index 0000000..2ec18fe
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/pt-br.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['pt-br'] = {
+ Strong: 'Resaltar',
+ Emphasis: 'Enfatizar',
+ Superscript: 'Sobre escrito',
+ Subscript: 'Sub escrito ',
+ Ordered_List: 'Lista ordenada',
+ Unordered_List: 'Lista desordenada',
+ Indent: 'Indentado',
+ Outdent: 'Desidentar',
+ Undo: 'Desfazer',
+ Redo: 'Refazer',
+ Link: 'Link',
+ Unlink: 'Remover Link',
+ Image: 'Imagem',
+ Table: 'Tabela',
+ HTML: 'HTML',
+ Paragraph: 'Parágrafo',
+ Heading_1: 'Título 1',
+ Heading_2: 'Título 2',
+ Heading_3: 'Título 3',
+ Heading_4: 'Título 4',
+ Heading_5: 'Título 5',
+ Heading_6: 'Título 6',
+ Preformatted: 'Preformatado',
+ Blockquote: 'Citação',
+ Table_Header: 'Título de tabela',
+ URL: 'URL',
+ Title: 'Título',
+ Alternative_Text: 'Texto alternativo',
+ Caption: 'Legenda',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Número de linhas',
+ Number_Of_Cols: 'Número de colunas',
+ Submit: 'Enviar',
+ Cancel: 'Cancelar',
+ Choose: 'Selecionar',
+ Preview: 'Previsualizar',
+ Paste_From_Word: 'Copiar do Word',
+ Tools: 'Ferramentas',
+ Containers: 'Conteneiners',
+ Classes: 'Classes',
+ Status: 'Estado',
+ Source_Code: 'Código fonte'
+};
+
diff --git a/studio/static/js/wymeditor/lang/pt.js b/studio/static/js/wymeditor/lang/pt.js
new file mode 100644
index 0000000..a3d1a17
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/pt.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['pt'] = {
+ Strong: 'Negrito',
+ Emphasis: 'Itálico',
+ Superscript: 'Sobrescrito',
+ Subscript: 'Subsescrito',
+ Ordered_List: 'Lista Numerada',
+ Unordered_List: 'Lista Marcada',
+ Indent: 'Aumentar Indentaçã',
+ Outdent: 'Diminuir Indentaçã',
+ Undo: 'Desfazer',
+ Redo: 'Restaurar',
+ Link: 'Link',
+ Unlink: 'Tirar link',
+ Image: 'Imagem',
+ Table: 'Tabela',
+ HTML: 'HTML',
+ Paragraph: 'Parágrafo',
+ Heading_1: 'Título 1',
+ Heading_2: 'Título 2',
+ Heading_3: 'Título 3',
+ Heading_4: 'Título 4',
+ Heading_5: 'Título 5',
+ Heading_6: 'Título 6',
+ Preformatted: 'Pré-formatado',
+ Blockquote: 'Citação',
+ Table_Header: 'Cabeçalho Tabela',
+ URL: 'URL',
+ Title: 'Título',
+ Alternative_Text: 'Texto Alterativo',
+ Caption: 'Título Tabela',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Número de Linhas',
+ Number_Of_Cols: 'Número de Colunas',
+ Submit: 'Enviar',
+ Cancel: 'Cancelar',
+ Choose: 'Escolha',
+ Preview: 'Prever',
+ Paste_From_Word: 'Colar do Word',
+ Tools: 'Ferramentas',
+ Containers: 'Containers',
+ Classes: 'Classes',
+ Status: 'Status',
+ Source_Code: 'Código Fonte'
+};
+
diff --git a/studio/static/js/wymeditor/lang/ru.js b/studio/static/js/wymeditor/lang/ru.js
new file mode 100644
index 0000000..7895f8d
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/ru.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['ru'] = {
+ Strong: 'Жирный',
+ Emphasis: 'Наклонный',
+ Superscript: 'Надстрочный',
+ Subscript: 'Подстрочный',
+ Ordered_List: 'Нумерованый список',
+ Unordered_List: 'Ненумерованый список',
+ Indent: 'Увеличить отступ',
+ Outdent: 'Уменьшить отступ',
+ Undo: 'Отменить',
+ Redo: 'Повторить',
+ Link: 'Ссылка',
+ Unlink: 'Удалить ссылку',
+ Image: 'Изображение',
+ Table: 'Таблица',
+ HTML: 'Править HTML',
+ Paragraph: 'Параграф',
+ Heading_1: 'Заголовок 1',
+ Heading_2: 'Заголовок 2',
+ Heading_3: 'Заголовок 3',
+ Heading_4: 'Заголовок 4',
+ Heading_5: 'Заголовок 5',
+ Heading_6: 'Заголовок 6',
+ Preformatted: 'Preformatted',
+ Blockquote: 'Цитата',
+ Table_Header: 'Заголовок таблицы',
+ URL: 'URL',
+ Title: 'Заголовок',
+ Alternative_Text: 'Альтернативный текст',
+ Caption: 'Надпись',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Кол-во строк',
+ Number_Of_Cols: 'Кол-во столбцов',
+ Submit: 'Отправить',
+ Cancel: 'Отмена',
+ Choose: 'Выбор',
+ Preview: 'Просмотр',
+ Paste_From_Word: 'Вставить из Word',
+ Tools: 'Инструменты',
+ Containers: 'Контейнеры',
+ Classes: 'Классы',
+ Status: 'Статус',
+ Source_Code: 'Исходный код'
+};
+
diff --git a/studio/static/js/wymeditor/lang/sv.js b/studio/static/js/wymeditor/lang/sv.js
new file mode 100644
index 0000000..6347956
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/sv.js
@@ -0,0 +1,46 @@
+WYMeditor.STRINGS['sv'] = {
+ Strong: 'Viktigt',
+ Emphasis: 'Betoning',
+ Superscript: 'Upphöjt',
+ Subscript: 'Nedsänkt',
+ Ordered_List: 'Nummerlista',
+ Unordered_List: 'Punktlista',
+ Indent: 'Indrag',
+ Outdent: 'Utdrag',
+ Undo: 'Ångra',
+ Redo: 'Gör om',
+ Link: 'Länk',
+ Unlink: 'Ta bort länk',
+ Image: 'Bild',
+ Table: 'Tabell',
+ HTML: 'HTML',
+ Paragraph: 'Paragraf',
+ Heading_1: 'Rubrik 1',
+ Heading_2: 'Rubrik 2',
+ Heading_3: 'Rubrik 3',
+ Heading_4: 'Rubrik 4',
+ Heading_5: 'Rubrik 5',
+ Heading_6: 'Rubrik 6',
+ Preformatted: 'Förformaterad',
+ Blockquote: 'Blockcitat',
+ Table_Header: 'Tabellrubrik',
+ URL: 'URL',
+ Title: 'Titel',
+ Relationship: 'Relation',
+ Alternative_Text: 'Alternativ text',
+ Caption: 'Överskrift',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Antal rader',
+ Number_Of_Cols: 'Antal kolumner',
+ Submit: 'Skicka',
+ Cancel: 'Avbryt',
+ Choose: 'Välj',
+ Preview: 'Förhandsgranska',
+ Paste_From_Word: 'Klistra in från Word',
+ Tools: 'Verktyg',
+ Containers: 'Formatering',
+ Classes: 'Klasser',
+ Status: 'Status',
+ Source_Code: 'Källkod'
+};
+
diff --git a/studio/static/js/wymeditor/lang/tr.js b/studio/static/js/wymeditor/lang/tr.js
new file mode 100644
index 0000000..d26f0ff
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/tr.js
@@ -0,0 +1,45 @@
+WYMeditor.STRINGS['tr'] = {
+ Strong: 'Kalın',
+ Emphasis: 'Vurgu',
+ Superscript: 'Superscript',
+ Subscript: 'Subscript',
+ Ordered_List: 'Sıralı List',
+ Unordered_List: 'Sırasız List',
+ Indent: 'İçerlek',
+ Outdent: 'Çıkıntılı',
+ Undo: 'Geri Al',
+ Redo: 'Yinele',
+ Link: 'Bağlantı',
+ Unlink: 'Bağlantıyı Kaldır',
+ Image: 'İmaj',
+ Table: 'Tablo',
+ HTML: 'HTML',
+ Paragraph: 'Parağraf',
+ Heading_1: 'Başlık 1',
+ Heading_2: 'Başlık 2',
+ Heading_3: 'Başlık 3',
+ Heading_4: 'Başlık 4',
+ Heading_5: 'Başlık 5',
+ Heading_6: 'Başlık 6',
+ Preformatted: 'Önceden Formatlı',
+ Blockquote: 'Alıntı',
+ Table_Header: 'Tablo Başlığı',
+ URL: 'URL',
+ Title: 'Başlık',
+ Alternative_Text: 'Alternatif Metin',
+ Caption: 'Etiket',
+ Summary: 'Summary',
+ Number_Of_Rows: 'Satır sayısı',
+ Number_Of_Cols: 'Sütun sayısı',
+ Submit: 'Gönder',
+ Cancel: 'İptal',
+ Choose: 'Seç',
+ Preview: 'Önizleme',
+ Paste_From_Word: 'Wordden yapıştır',
+ Tools: 'Araçlar',
+ Containers: 'Kapsayıcılar',
+ Classes: 'Sınıflar',
+ Status: 'Durum',
+ Source_Code: 'Kaynak Kodu'
+};
+
diff --git a/studio/static/js/wymeditor/lang/zh_cn.js b/studio/static/js/wymeditor/lang/zh_cn.js
new file mode 100644
index 0000000..72f5aaf
--- /dev/null
+++ b/studio/static/js/wymeditor/lang/zh_cn.js
@@ -0,0 +1,47 @@
+WYMeditor.STRINGS['zh_cn'] = {
+ Strong: '加粗',
+ Emphasis: '斜体',
+ Superscript: '上标',
+ Subscript: '下标',
+ Ordered_List: '有序列表',
+ Unordered_List: '无序列表',
+ Indent: '增加缩进',
+ Outdent: '减少缩进',
+ Undo: '撤消',
+ Redo: '重做',
+ Link: '链接',
+ Unlink: '取消链接',
+ Image: '图片',
+ Table: '表格',
+ HTML: 'HTML源代码',
+ Paragraph: '段落',
+ Heading_1: '标题 1',
+ Heading_2: '标题 2',
+ Heading_3: '标题 3',
+ Heading_4: '标题 4',
+ Heading_5: '标题 5',
+ Heading_6: '标题 6',
+ Preformatted: '原始文本',
+ Blockquote: '引语',
+ Table_Header: '表头',
+ URL: '地址',
+ Title: '提示文字',
+ Alternative_Text: '失效文字',
+ Caption: '标题',
+ Summary: 'Summary',
+ Number_Of_Rows: '行数',
+ Number_Of_Cols: '列数',
+ Submit: '提交',
+ Cancel: '放弃',
+ Choose: '选择',
+ Preview: '预览',
+ Paste_From_Word: '从Word粘贴纯文本',
+ Tools: '工具',
+ Containers: '容器',
+ Classes: '预定义样式',
+ Status: '状态',
+ Source_Code: '源代码',
+ Attachment: '附件',
+ NewParagraph: '新段落'
+};
+
diff --git a/studio/static/js/wymeditor/plugins/.svn/entries b/studio/static/js/wymeditor/plugins/.svn/entries
new file mode 100644
index 0000000..e6a5e96
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/.svn/entries
@@ -0,0 +1,43 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/plugins
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2010-04-11T19:53:07.572530Z
+659
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+resizable
+dir
+
+fullscreen
+dir
+
+hovertools
+dir
+
+tidy
+dir
+
+embed
+dir
+
diff --git a/studio/static/js/wymeditor/plugins/embed/.svn/entries b/studio/static/js/wymeditor/plugins/embed/.svn/entries
new file mode 100644
index 0000000..20f177e
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/embed/.svn/entries
@@ -0,0 +1,62 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/plugins/embed
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2010-04-11T12:17:24.397707Z
+655
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+jquery.wymeditor.embed.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+9a97b387093aa3d7406470f11d31a9c9
+2010-04-11T12:17:24.397707Z
+655
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1517
+
diff --git a/studio/static/js/wymeditor/plugins/embed/.svn/text-base/jquery.wymeditor.embed.js.svn-base b/studio/static/js/wymeditor/plugins/embed/.svn/text-base/jquery.wymeditor.embed.js.svn-base
new file mode 100644
index 0000000..e553c3e
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/embed/.svn/text-base/jquery.wymeditor.embed.js.svn-base
@@ -0,0 +1,52 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.embed.js
+ * Experimental embed plugin
+ *
+ * File Authors:
+ * Jonatan Lundin (jonatan.lundin a-t gmail dotcom)
+ */
+
+/*
+ * ISSUES:
+ * - The closing object tag seems to be stripped out...
+ */
+(function() {
+ if (WYMeditor && WYMeditor.XhtmlValidator['_tags']['param']['attributes']) {
+
+ WYMeditor.XhtmlValidator['_tags']["embed"] = {
+ "attributes":[
+ "allowscriptaccess",
+ "allowfullscreen",
+ "height",
+ "src",
+ "type",
+ "width"
+ ]
+ };
+
+ WYMeditor.XhtmlValidator['_tags']['param']['attributes'] = {
+ '0':'name',
+ '1':'type',
+ 'valuetype':/^(data|ref|object)$/,
+ '2':'valuetype',
+ '3':'value'
+ };
+
+ var XhtmlSaxListener = WYMeditor.XhtmlSaxListener;
+ WYMeditor.XhtmlSaxListener = function () {
+ var listener = XhtmlSaxListener.call(this);
+ listener.block_tags.push('embed');
+ return listener;
+ };
+ WYMeditor.XhtmlSaxListener.prototype = XhtmlSaxListener.prototype;
+ }
+})();
diff --git a/studio/static/js/wymeditor/plugins/embed/jquery.wymeditor.embed.js b/studio/static/js/wymeditor/plugins/embed/jquery.wymeditor.embed.js
new file mode 100644
index 0000000..e553c3e
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/embed/jquery.wymeditor.embed.js
@@ -0,0 +1,52 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.embed.js
+ * Experimental embed plugin
+ *
+ * File Authors:
+ * Jonatan Lundin (jonatan.lundin a-t gmail dotcom)
+ */
+
+/*
+ * ISSUES:
+ * - The closing object tag seems to be stripped out...
+ */
+(function() {
+ if (WYMeditor && WYMeditor.XhtmlValidator['_tags']['param']['attributes']) {
+
+ WYMeditor.XhtmlValidator['_tags']["embed"] = {
+ "attributes":[
+ "allowscriptaccess",
+ "allowfullscreen",
+ "height",
+ "src",
+ "type",
+ "width"
+ ]
+ };
+
+ WYMeditor.XhtmlValidator['_tags']['param']['attributes'] = {
+ '0':'name',
+ '1':'type',
+ 'valuetype':/^(data|ref|object)$/,
+ '2':'valuetype',
+ '3':'value'
+ };
+
+ var XhtmlSaxListener = WYMeditor.XhtmlSaxListener;
+ WYMeditor.XhtmlSaxListener = function () {
+ var listener = XhtmlSaxListener.call(this);
+ listener.block_tags.push('embed');
+ return listener;
+ };
+ WYMeditor.XhtmlSaxListener.prototype = XhtmlSaxListener.prototype;
+ }
+})();
diff --git a/studio/static/js/wymeditor/plugins/fullscreen/.svn/entries b/studio/static/js/wymeditor/plugins/fullscreen/.svn/entries
new file mode 100644
index 0000000..c18dcf7
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/fullscreen/.svn/entries
@@ -0,0 +1,96 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/plugins/fullscreen
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2010-04-11T19:53:07.572530Z
+659
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+jquery.wymeditor.fullscreen.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+503112698b04abb0774b8697d6309576
+2010-04-11T19:53:07.572530Z
+659
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4383
+
+icon_fullscreen.gif
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+f443297ce16c5a70b10874e2a3e90b0a
+2009-02-07T19:29:43.660231Z
+576
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+509
+
diff --git a/studio/static/js/wymeditor/plugins/fullscreen/.svn/prop-base/icon_fullscreen.gif.svn-base b/studio/static/js/wymeditor/plugins/fullscreen/.svn/prop-base/icon_fullscreen.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/fullscreen/.svn/prop-base/icon_fullscreen.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/plugins/fullscreen/.svn/text-base/icon_fullscreen.gif.svn-base b/studio/static/js/wymeditor/plugins/fullscreen/.svn/text-base/icon_fullscreen.gif.svn-base
new file mode 100644
index 0000000..d2a8b0a
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/fullscreen/.svn/text-base/icon_fullscreen.gif.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/plugins/fullscreen/.svn/text-base/jquery.wymeditor.fullscreen.js.svn-base b/studio/static/js/wymeditor/plugins/fullscreen/.svn/text-base/jquery.wymeditor.fullscreen.js.svn-base
new file mode 100644
index 0000000..275c816
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/fullscreen/.svn/text-base/jquery.wymeditor.fullscreen.js.svn-base
@@ -0,0 +1,127 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.fullscreen.js
+ * Fullscreen plugin for WYMeditor
+ *
+ * File Authors:
+ * Luis Santos (luis.santos a-t openquest dotpt)
+ * Jonatan Lundin (jonatan.lundin a-t gmail dotcom)
+ * Gerd Riesselmann (gerd a-t gyro-php dot org) : Fixed issue with new skin layout
+ */
+
+//Extend WYMeditor
+WYMeditor.editor.prototype.fullscreen = function() {
+ var wym = this,
+ $box = jQuery(this._box),
+ $iframe = jQuery(this._iframe),
+ $overlay = null,
+ $window = jQuery(window),
+
+ editorMargin = 15; // Margin from window (without padding)
+
+
+ //construct the button's html
+ var html = "<li class='wym_tools_fullscreen'>"
+ + "<a name='Fullscreen' href='#'"
+ + " style='background-image:"
+ + " url(" + wym._options.basePath +"plugins/fullscreen/icon_fullscreen.gif)'>"
+ + "Fullscreen"
+ + "</a></li>";
+
+ //add the button to the tools box
+ $box.find(wym._options.toolsSelector + wym._options.toolsListSelector)
+ .append(html);
+
+ function resize () {
+ // Calculate margins
+ var uiHeight = $box.outerHeight(true)
+ - $iframe.outerHeight(true),
+ editorPadding = $box.outerWidth() - $box.width(),
+
+ // Calculate heights
+ screenHeight = $window.height(),
+ iframeHeight = (screenHeight
+ - uiHeight
+ - (editorMargin * 2)) + 'px',
+
+ // Calculate witdths
+ screenWidth = $window.width(),
+ boxWidth = (screenWidth
+ - editorPadding
+ - (editorMargin * 2)) + 'px';
+
+ $box.css('width', boxWidth);
+ $iframe.css('height', iframeHeight);
+ $overlay.css({
+ 'height': screenHeight + 'px',
+ 'width': screenWidth + 'px'
+ });
+ };
+
+ //handle click event
+ $box.find('li.wym_tools_fullscreen a').click(function() {
+ if ($box.css('position') != 'fixed') {
+ // Store previous inline styles
+ $box.data('wym-inline-css', $box.attr('style'));
+ $iframe.data('wym-inline-css', $iframe.attr('style'));
+
+ // Create overlay
+ $overlay = jQuery('<div id="wym-fullscreen-overlay"></div>')
+ .appendTo('body').css({
+ 'position': 'fixed',
+ 'background-color': 'rgb(0, 0, 0)',
+ 'opacity': '0.75',
+ 'z-index': '98',
+ 'top': '0px',
+ 'left': '0px'
+ });
+
+ // Possition the editor
+ $box.css({
+ 'position': 'fixed',
+ 'z-index': '99',
+ 'top': editorMargin + 'px',
+ 'left': editorMargin + 'px'
+ });
+
+ // Bind event listeners
+ $window.bind('resize', resize);
+ $box.find('li.wym_tools_html a').bind('click', resize);
+
+ // Force resize
+ resize();
+ } else {
+ // Unbind event listeners
+ $window.unbind('resize', resize);
+ $box.find('li.wym_tools_html a').unbind('click', resize);
+
+ // Remove inline styles
+ $box.css({
+ 'position': 'static',
+ 'z-index': '',
+ 'width': '',
+ 'top': '',
+ 'left': ''
+ });
+ $iframe.css('height', '');
+
+ // Remove overlay
+ $overlay.remove();
+ $overlay = null;
+
+ // Retore previous inline styles
+ $box.attr('style', $box.data('wym-inline-css'));
+ $iframe.attr('style', $iframe.data('wym-inline-css'));
+ }
+
+ return false;
+ });
+};
diff --git a/studio/static/js/wymeditor/plugins/fullscreen/icon_fullscreen.gif b/studio/static/js/wymeditor/plugins/fullscreen/icon_fullscreen.gif
new file mode 100644
index 0000000..d2a8b0a
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/fullscreen/icon_fullscreen.gif
Binary files differ
diff --git a/studio/static/js/wymeditor/plugins/fullscreen/jquery.wymeditor.fullscreen.js b/studio/static/js/wymeditor/plugins/fullscreen/jquery.wymeditor.fullscreen.js
new file mode 100644
index 0000000..275c816
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/fullscreen/jquery.wymeditor.fullscreen.js
@@ -0,0 +1,127 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.fullscreen.js
+ * Fullscreen plugin for WYMeditor
+ *
+ * File Authors:
+ * Luis Santos (luis.santos a-t openquest dotpt)
+ * Jonatan Lundin (jonatan.lundin a-t gmail dotcom)
+ * Gerd Riesselmann (gerd a-t gyro-php dot org) : Fixed issue with new skin layout
+ */
+
+//Extend WYMeditor
+WYMeditor.editor.prototype.fullscreen = function() {
+ var wym = this,
+ $box = jQuery(this._box),
+ $iframe = jQuery(this._iframe),
+ $overlay = null,
+ $window = jQuery(window),
+
+ editorMargin = 15; // Margin from window (without padding)
+
+
+ //construct the button's html
+ var html = "<li class='wym_tools_fullscreen'>"
+ + "<a name='Fullscreen' href='#'"
+ + " style='background-image:"
+ + " url(" + wym._options.basePath +"plugins/fullscreen/icon_fullscreen.gif)'>"
+ + "Fullscreen"
+ + "</a></li>";
+
+ //add the button to the tools box
+ $box.find(wym._options.toolsSelector + wym._options.toolsListSelector)
+ .append(html);
+
+ function resize () {
+ // Calculate margins
+ var uiHeight = $box.outerHeight(true)
+ - $iframe.outerHeight(true),
+ editorPadding = $box.outerWidth() - $box.width(),
+
+ // Calculate heights
+ screenHeight = $window.height(),
+ iframeHeight = (screenHeight
+ - uiHeight
+ - (editorMargin * 2)) + 'px',
+
+ // Calculate witdths
+ screenWidth = $window.width(),
+ boxWidth = (screenWidth
+ - editorPadding
+ - (editorMargin * 2)) + 'px';
+
+ $box.css('width', boxWidth);
+ $iframe.css('height', iframeHeight);
+ $overlay.css({
+ 'height': screenHeight + 'px',
+ 'width': screenWidth + 'px'
+ });
+ };
+
+ //handle click event
+ $box.find('li.wym_tools_fullscreen a').click(function() {
+ if ($box.css('position') != 'fixed') {
+ // Store previous inline styles
+ $box.data('wym-inline-css', $box.attr('style'));
+ $iframe.data('wym-inline-css', $iframe.attr('style'));
+
+ // Create overlay
+ $overlay = jQuery('<div id="wym-fullscreen-overlay"></div>')
+ .appendTo('body').css({
+ 'position': 'fixed',
+ 'background-color': 'rgb(0, 0, 0)',
+ 'opacity': '0.75',
+ 'z-index': '98',
+ 'top': '0px',
+ 'left': '0px'
+ });
+
+ // Possition the editor
+ $box.css({
+ 'position': 'fixed',
+ 'z-index': '99',
+ 'top': editorMargin + 'px',
+ 'left': editorMargin + 'px'
+ });
+
+ // Bind event listeners
+ $window.bind('resize', resize);
+ $box.find('li.wym_tools_html a').bind('click', resize);
+
+ // Force resize
+ resize();
+ } else {
+ // Unbind event listeners
+ $window.unbind('resize', resize);
+ $box.find('li.wym_tools_html a').unbind('click', resize);
+
+ // Remove inline styles
+ $box.css({
+ 'position': 'static',
+ 'z-index': '',
+ 'width': '',
+ 'top': '',
+ 'left': ''
+ });
+ $iframe.css('height', '');
+
+ // Remove overlay
+ $overlay.remove();
+ $overlay = null;
+
+ // Retore previous inline styles
+ $box.attr('style', $box.data('wym-inline-css'));
+ $iframe.attr('style', $iframe.data('wym-inline-css'));
+ }
+
+ return false;
+ });
+};
diff --git a/studio/static/js/wymeditor/plugins/hovertools/.svn/entries b/studio/static/js/wymeditor/plugins/hovertools/.svn/entries
new file mode 100644
index 0000000..dcb85a5
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/hovertools/.svn/entries
@@ -0,0 +1,62 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/plugins/hovertools
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+jquery.wymeditor.hovertools.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+9128791ae94a2438f6f6f751204e9827
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1644
+
diff --git a/studio/static/js/wymeditor/plugins/hovertools/.svn/text-base/jquery.wymeditor.hovertools.js.svn-base b/studio/static/js/wymeditor/plugins/hovertools/.svn/text-base/jquery.wymeditor.hovertools.js.svn-base
new file mode 100644
index 0000000..2c71ba5
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/hovertools/.svn/text-base/jquery.wymeditor.hovertools.js.svn-base
@@ -0,0 +1,57 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.hovertools.js
+ * hovertools plugin for WYMeditor
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ */
+
+//Extend WYMeditor
+WYMeditor.editor.prototype.hovertools = function() {
+
+ var wym = this;
+
+ //bind events on buttons
+ jQuery(this._box).find(this._options.toolSelector).hover(
+ function() {
+ wym.status(jQuery(this).html());
+ },
+ function() {
+ wym.status('&nbsp;');
+ }
+ );
+
+ //classes: add/remove a style attr to matching elems
+ //while mouseover/mouseout
+ jQuery(this._box).find(this._options.classSelector).hover(
+ function() {
+ var aClasses = eval(wym._options.classesItems);
+ var sName = jQuery(this).attr(WYMeditor.NAME);
+ var oClass = WYMeditor.Helper.findByName(aClasses, sName);
+
+ if(oClass){
+ jqexpr = oClass.expr;
+ //don't use jQuery.find() on the iframe body
+ //because of MSIE + jQuery + expando issue (#JQ1143)
+ if(!jQuery.browser.msie)
+ jQuery(wym._doc).find(jqexpr).css('background-color','#cfc');
+ }
+ },
+ function() {
+ //don't use jQuery.find() on the iframe body
+ //because of MSIE + jQuery + expando issue (#JQ1143)
+ if(!jQuery.browser.msie)
+ jQuery(wym._doc).find('*').removeAttr('style');
+ }
+ );
+
+};
diff --git a/studio/static/js/wymeditor/plugins/hovertools/jquery.wymeditor.hovertools.js b/studio/static/js/wymeditor/plugins/hovertools/jquery.wymeditor.hovertools.js
new file mode 100644
index 0000000..2c71ba5
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/hovertools/jquery.wymeditor.hovertools.js
@@ -0,0 +1,57 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.hovertools.js
+ * hovertools plugin for WYMeditor
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ */
+
+//Extend WYMeditor
+WYMeditor.editor.prototype.hovertools = function() {
+
+ var wym = this;
+
+ //bind events on buttons
+ jQuery(this._box).find(this._options.toolSelector).hover(
+ function() {
+ wym.status(jQuery(this).html());
+ },
+ function() {
+ wym.status('&nbsp;');
+ }
+ );
+
+ //classes: add/remove a style attr to matching elems
+ //while mouseover/mouseout
+ jQuery(this._box).find(this._options.classSelector).hover(
+ function() {
+ var aClasses = eval(wym._options.classesItems);
+ var sName = jQuery(this).attr(WYMeditor.NAME);
+ var oClass = WYMeditor.Helper.findByName(aClasses, sName);
+
+ if(oClass){
+ jqexpr = oClass.expr;
+ //don't use jQuery.find() on the iframe body
+ //because of MSIE + jQuery + expando issue (#JQ1143)
+ if(!jQuery.browser.msie)
+ jQuery(wym._doc).find(jqexpr).css('background-color','#cfc');
+ }
+ },
+ function() {
+ //don't use jQuery.find() on the iframe body
+ //because of MSIE + jQuery + expando issue (#JQ1143)
+ if(!jQuery.browser.msie)
+ jQuery(wym._doc).find('*').removeAttr('style');
+ }
+ );
+
+};
diff --git a/studio/static/js/wymeditor/plugins/resizable/.svn/entries b/studio/static/js/wymeditor/plugins/resizable/.svn/entries
new file mode 100644
index 0000000..8afaf68
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/resizable/.svn/entries
@@ -0,0 +1,96 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/plugins/resizable
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2009-04-28T19:42:37.044706Z
+614
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+jquery.wymeditor.resizable.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+dfe19ff3f55ea32c465ecd64c8b4b8bc
+2009-04-28T19:42:37.044706Z
+614
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2913
+
+readme.txt
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+779875a11fe8526a6d246829afda4f1c
+2008-07-05T12:52:55.176122Z
+510
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4273
+
diff --git a/studio/static/js/wymeditor/plugins/resizable/.svn/text-base/jquery.wymeditor.resizable.js.svn-base b/studio/static/js/wymeditor/plugins/resizable/.svn/text-base/jquery.wymeditor.resizable.js.svn-base
new file mode 100644
index 0000000..1ba2d2e
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/resizable/.svn/text-base/jquery.wymeditor.resizable.js.svn-base
@@ -0,0 +1,91 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.resizable.js
+ * resize plugin for WYMeditor
+ *
+ * File Authors:
+ * Peter Eschler (peschler _at_ gmail.com)
+ * Jean-Francois Hovinne - http://www.hovinne.com/
+ *
+ * Version:
+ * 0.4
+ *
+ * Changelog:
+ *
+ * 0.4
+ * - Removed UI and UI.resizable scripts loading - see #167 (jfh).
+ *
+ * 0.3
+ * - Added 'iframeOriginalSize' and removed 'ui.instance' calls (jfh).
+ *
+ * 0.2
+ * - Added full support for all jQueryUI resizable plugin options.
+ * - Refactored and documented code.
+ * 0.1
+ * - Initial release.
+ */
+
+/**
+ * The resizable plugin makes the wymeditor box vertically resizable.
+ * It it based on the ui.resizable.js plugin of the jQuery UI library.
+ *
+ * The WYMeditor resizable plugin supports all parameters of the jQueryUI
+ * resizable plugin. The parameters are passed like this:
+ *
+ * wym.resizable({ handles: "s,e",
+ * maxHeight: 600 });
+ *
+ * DEPENDENCIES: jQuery UI, jQuery UI resizable
+ *
+ * @param options options for the plugin
+ */
+WYMeditor.editor.prototype.resizable = function(options) {
+
+ var wym = this;
+ var iframe = jQuery(wym._box).find('iframe');
+ var iframeOriginalSize = {};
+
+ // Define some default options
+ var default_options = {
+ start: function(e, ui) {
+ iframeOriginalSize = {
+ width: jQuery(iframe).width(),
+ height: jQuery(iframe).height()
+ }
+ },
+
+ // resize is called by the jQuery resizable plugin whenever the
+ // client area was resized.
+ resize: function(e, ui) {
+ var diff = ui.size.height - ui.originalSize.height;
+ jQuery(iframe).height( iframeOriginalSize.height + diff );
+
+ // If the plugin has horizontal resizing disabled we need to
+ // adjust the "width" attribute of the area css, because the
+ // resizing will set a fixed width (which breaks liquid layout
+ // of the wymeditor area).
+ if( !ui.options.handles['w'] && !ui.options.handles['e'] ) {
+ ui.size.width = "inherit";
+ }
+ },
+ handles: "s,e,se",
+ minHeight: 250,
+ maxHeight: 600
+ };
+
+ // Merge given options with default options. Given options override
+ // default ones.
+ var final_options = jQuery.extend(default_options, options);
+
+ if(jQuery.isFunction( jQuery.fn.resizable )) jQuery(wym._box).resizable(final_options);
+ else WYMeditor.console.error('Oops, jQuery UI.resizable unavailable.');
+
+};
diff --git a/studio/static/js/wymeditor/plugins/resizable/.svn/text-base/readme.txt.svn-base b/studio/static/js/wymeditor/plugins/resizable/.svn/text-base/readme.txt.svn-base
new file mode 100644
index 0000000..2a0444e
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/resizable/.svn/text-base/readme.txt.svn-base
@@ -0,0 +1,124 @@
+
+
+resizable plugin for WYMeditor
+##############################
+
+The ``resizable`` plugin for WYMeditor_ enables vertical resizing of the
+editor area. The plugin is based on the jQuery UI library.
+
+Requirements
+============
+The following packages are required for using the WYMeditor ``resizable``
+plugin:
+
+* jQuery (tested with jQuery ``jquery-1.2.4a.js`` from ``jquery.ui`` package)
+* WYMeditor SVN trunk (Revision: 482)
+* jQuery-UI (tested with ``jquery.ui-1.5b2``)
+
+It should be possible to use this plugin with ``WYMeditor-0.4`` but I have not
+tried.
+
+Download
+========
+You can download the WYMeditor ``resizable`` plugin here:
+
+* wymeditor-resizable-plugin-0.2.tgz_
+* wymeditor-resizable-plugin-0.1.tgz_
+
+See the Changelog_ for more infos about the releases.
+
+.. _wymeditor-resizable-plugin-0.2.tgz: http://pyjax.net/download/wymeditor-resizable-plugin-0.2.tgz
+.. _wymeditor-resizable-plugin-0.1.tgz: http://pyjax.net/download/wymeditor-resizable-plugin-0.1.tgz
+
+Installation
+============
+Just extract the downloaded archive into your WYMeditor's ``plugin``
+directory.
+
+Usage
+=====
+For general instructions on WYMeditor plugins please refer to the `WYMeditor
+plugin page`_.
+
+To use the ``resizable`` plugin simply include the plugin's JavaScript file in
+your code. You **do not** need to include the jQuery UI files - this is done
+automatically by the plugin (see `Internals`_)::
+
+ <script type="text/javascript"
+ src="/js/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js">
+ </script>
+
+Make sure to adjust the ``src`` attribute to your needs, then initialize the
+plugin in WYMeditor's ``postInit`` function::
+
+ wymeditor({postInit: function(wym) {
+ wym.hovertools(); // other plugins...
+ wym.resizable({handles: "s,e",
+ maxHeight: 600});
+ }
+ })
+
+The ``resizable`` plugin takes exactly one parameter, which is an object literal
+containing the options of the plugin. The WYMeditor ``resizable`` plugin
+supports all options of the jQuery UI ``resizable`` plugin. These are the
+default values used by the plugin::
+
+ handles: "s,e,se",
+ minHeight: 250,
+ maxHeight: 600
+
+See the `jQuery UI resizable plugin docs`_ for a list of all options.
+
+That's it! You are now able to resize the WYMeditor vertically, horizontally or
+both, depending on your options.
+
+.. _jQuery UI resizable plugin docs: http://docs.jquery.com/UI/Resizables
+
+Internals
+=========
+The plugin takes care of loading the necessary jQuery UI files (``base`` and
+``resizable``) from the same path the jQuery library was loaded. Here's how
+it's done::
+
+ // Get the jQuery path from the editor, stripping away the jQuery file.
+ // see http://www.oreilly.com/catalog/regex/chapter/ch04.html
+ // The match result array contains the path and the filename.
+ var jQueryPath = wym.computeJqueryPath().match(/^(.*)\/(.*)$/)[1];
+
+ // Make an array of the external JavaScript files required by the plugin.
+ var jQueryPlugins = [jQueryPath + '/ui.base.js',
+ jQueryPath + '/ui.resizable.js'];
+
+ // First get the jQuery UI base file
+ $.getScript(jQueryPlugins[0]);
+
+ // Get the jQuery UI resizeable plugin and then init the wymeditor resizable
+ // plugin. It is import to do the initialisation after loading the
+ // necessary jQuery UI files has finished, otherwise the "resizable" method
+ // would not be available.
+ $.getScript(jQueryPlugins[1], function() {
+ jQuery(wym._box).resizable(final_options);
+ });
+
+An alternative approach would be to use an AJAX queue when getting the script
+files to ensure that all jQuery files are loaded before the initialisation code
+of the plugin is executed. There is an `jQuery AJAX queue plugin`_ which does
+that.
+
+.. _jQuery AJAX queue plugin: http://plugins.jquery.com/project/ajaxqueue
+
+Changelog
+=========
+
+0.2
+---
+- Added full support for all jQuery UI resizable plugin options.
+- Refactored and documented code.
+- Now contains a packed version (775 bytes).
+
+0.1
+---
+- Initial release.
+
+.. _WYMeditor: http://www.wymeditor.org/
+.. _WYMeditor plugin page: http://trac.wymeditor.org/trac/wiki/0.4/Plugins
diff --git a/studio/static/js/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js b/studio/static/js/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js
new file mode 100644
index 0000000..1ba2d2e
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js
@@ -0,0 +1,91 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.resizable.js
+ * resize plugin for WYMeditor
+ *
+ * File Authors:
+ * Peter Eschler (peschler _at_ gmail.com)
+ * Jean-Francois Hovinne - http://www.hovinne.com/
+ *
+ * Version:
+ * 0.4
+ *
+ * Changelog:
+ *
+ * 0.4
+ * - Removed UI and UI.resizable scripts loading - see #167 (jfh).
+ *
+ * 0.3
+ * - Added 'iframeOriginalSize' and removed 'ui.instance' calls (jfh).
+ *
+ * 0.2
+ * - Added full support for all jQueryUI resizable plugin options.
+ * - Refactored and documented code.
+ * 0.1
+ * - Initial release.
+ */
+
+/**
+ * The resizable plugin makes the wymeditor box vertically resizable.
+ * It it based on the ui.resizable.js plugin of the jQuery UI library.
+ *
+ * The WYMeditor resizable plugin supports all parameters of the jQueryUI
+ * resizable plugin. The parameters are passed like this:
+ *
+ * wym.resizable({ handles: "s,e",
+ * maxHeight: 600 });
+ *
+ * DEPENDENCIES: jQuery UI, jQuery UI resizable
+ *
+ * @param options options for the plugin
+ */
+WYMeditor.editor.prototype.resizable = function(options) {
+
+ var wym = this;
+ var iframe = jQuery(wym._box).find('iframe');
+ var iframeOriginalSize = {};
+
+ // Define some default options
+ var default_options = {
+ start: function(e, ui) {
+ iframeOriginalSize = {
+ width: jQuery(iframe).width(),
+ height: jQuery(iframe).height()
+ }
+ },
+
+ // resize is called by the jQuery resizable plugin whenever the
+ // client area was resized.
+ resize: function(e, ui) {
+ var diff = ui.size.height - ui.originalSize.height;
+ jQuery(iframe).height( iframeOriginalSize.height + diff );
+
+ // If the plugin has horizontal resizing disabled we need to
+ // adjust the "width" attribute of the area css, because the
+ // resizing will set a fixed width (which breaks liquid layout
+ // of the wymeditor area).
+ if( !ui.options.handles['w'] && !ui.options.handles['e'] ) {
+ ui.size.width = "inherit";
+ }
+ },
+ handles: "s,e,se",
+ minHeight: 250,
+ maxHeight: 600
+ };
+
+ // Merge given options with default options. Given options override
+ // default ones.
+ var final_options = jQuery.extend(default_options, options);
+
+ if(jQuery.isFunction( jQuery.fn.resizable )) jQuery(wym._box).resizable(final_options);
+ else WYMeditor.console.error('Oops, jQuery UI.resizable unavailable.');
+
+};
diff --git a/studio/static/js/wymeditor/plugins/resizable/readme.txt b/studio/static/js/wymeditor/plugins/resizable/readme.txt
new file mode 100644
index 0000000..2a0444e
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/resizable/readme.txt
@@ -0,0 +1,124 @@
+
+
+resizable plugin for WYMeditor
+##############################
+
+The ``resizable`` plugin for WYMeditor_ enables vertical resizing of the
+editor area. The plugin is based on the jQuery UI library.
+
+Requirements
+============
+The following packages are required for using the WYMeditor ``resizable``
+plugin:
+
+* jQuery (tested with jQuery ``jquery-1.2.4a.js`` from ``jquery.ui`` package)
+* WYMeditor SVN trunk (Revision: 482)
+* jQuery-UI (tested with ``jquery.ui-1.5b2``)
+
+It should be possible to use this plugin with ``WYMeditor-0.4`` but I have not
+tried.
+
+Download
+========
+You can download the WYMeditor ``resizable`` plugin here:
+
+* wymeditor-resizable-plugin-0.2.tgz_
+* wymeditor-resizable-plugin-0.1.tgz_
+
+See the Changelog_ for more infos about the releases.
+
+.. _wymeditor-resizable-plugin-0.2.tgz: http://pyjax.net/download/wymeditor-resizable-plugin-0.2.tgz
+.. _wymeditor-resizable-plugin-0.1.tgz: http://pyjax.net/download/wymeditor-resizable-plugin-0.1.tgz
+
+Installation
+============
+Just extract the downloaded archive into your WYMeditor's ``plugin``
+directory.
+
+Usage
+=====
+For general instructions on WYMeditor plugins please refer to the `WYMeditor
+plugin page`_.
+
+To use the ``resizable`` plugin simply include the plugin's JavaScript file in
+your code. You **do not** need to include the jQuery UI files - this is done
+automatically by the plugin (see `Internals`_)::
+
+ <script type="text/javascript"
+ src="/js/wymeditor/plugins/resizable/jquery.wymeditor.resizable.js">
+ </script>
+
+Make sure to adjust the ``src`` attribute to your needs, then initialize the
+plugin in WYMeditor's ``postInit`` function::
+
+ wymeditor({postInit: function(wym) {
+ wym.hovertools(); // other plugins...
+ wym.resizable({handles: "s,e",
+ maxHeight: 600});
+ }
+ })
+
+The ``resizable`` plugin takes exactly one parameter, which is an object literal
+containing the options of the plugin. The WYMeditor ``resizable`` plugin
+supports all options of the jQuery UI ``resizable`` plugin. These are the
+default values used by the plugin::
+
+ handles: "s,e,se",
+ minHeight: 250,
+ maxHeight: 600
+
+See the `jQuery UI resizable plugin docs`_ for a list of all options.
+
+That's it! You are now able to resize the WYMeditor vertically, horizontally or
+both, depending on your options.
+
+.. _jQuery UI resizable plugin docs: http://docs.jquery.com/UI/Resizables
+
+Internals
+=========
+The plugin takes care of loading the necessary jQuery UI files (``base`` and
+``resizable``) from the same path the jQuery library was loaded. Here's how
+it's done::
+
+ // Get the jQuery path from the editor, stripping away the jQuery file.
+ // see http://www.oreilly.com/catalog/regex/chapter/ch04.html
+ // The match result array contains the path and the filename.
+ var jQueryPath = wym.computeJqueryPath().match(/^(.*)\/(.*)$/)[1];
+
+ // Make an array of the external JavaScript files required by the plugin.
+ var jQueryPlugins = [jQueryPath + '/ui.base.js',
+ jQueryPath + '/ui.resizable.js'];
+
+ // First get the jQuery UI base file
+ $.getScript(jQueryPlugins[0]);
+
+ // Get the jQuery UI resizeable plugin and then init the wymeditor resizable
+ // plugin. It is import to do the initialisation after loading the
+ // necessary jQuery UI files has finished, otherwise the "resizable" method
+ // would not be available.
+ $.getScript(jQueryPlugins[1], function() {
+ jQuery(wym._box).resizable(final_options);
+ });
+
+An alternative approach would be to use an AJAX queue when getting the script
+files to ensure that all jQuery files are loaded before the initialisation code
+of the plugin is executed. There is an `jQuery AJAX queue plugin`_ which does
+that.
+
+.. _jQuery AJAX queue plugin: http://plugins.jquery.com/project/ajaxqueue
+
+Changelog
+=========
+
+0.2
+---
+- Added full support for all jQuery UI resizable plugin options.
+- Refactored and documented code.
+- Now contains a packed version (775 bytes).
+
+0.1
+---
+- Initial release.
+
+.. _WYMeditor: http://www.wymeditor.org/
+.. _WYMeditor plugin page: http://trac.wymeditor.org/trac/wiki/0.4/Plugins
diff --git a/studio/static/js/wymeditor/plugins/tidy/.svn/entries b/studio/static/js/wymeditor/plugins/tidy/.svn/entries
new file mode 100644
index 0000000..3acea50
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/.svn/entries
@@ -0,0 +1,164 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/plugins/tidy
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2010-04-11T19:34:57.530630Z
+658
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+tidy.php
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+3355fbc23378052db8213dbdcd4fe31f
+2007-04-26T12:45:23.848206Z
+245
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1052
+
+jquery.wymeditor.tidy.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+3a2dee9a16df26d6d1b36886f77880c8
+2010-04-11T19:34:57.530630Z
+658
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2157
+
+wand.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+22d8038ebf5ac63b0062ebf361e8261c
+2007-04-23T11:42:06.279227Z
+233
+d.reszka
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+715
+
+README
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+b31aaf6b3928608a98b2028c2d9f523e
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+607
+
diff --git a/studio/static/js/wymeditor/plugins/tidy/.svn/prop-base/wand.png.svn-base b/studio/static/js/wymeditor/plugins/tidy/.svn/prop-base/wand.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/.svn/prop-base/wand.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/README.svn-base b/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/README.svn-base
new file mode 100644
index 0000000..acc7ffd
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/README.svn-base
@@ -0,0 +1,19 @@
+WYMeditor : what you see is What You Mean web-based editor
+Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+Dual licensed under the MIT (MIT-license.txt)
+and GPL (GPL-license.txt) licenses.
+
+For further information visit:
+ http://www.wymeditor.org/
+
+File Name:
+ README - HTML Tidy plugin for WYMeditor
+
+File Authors:
+ Jean-François Hovinne (jf.hovinne a-t wymeditor dotorg)
+
+Credits:
+ 'HTML Tidy' by Dave Ragget - http://tidy.sourceforge.net/
+ Icon 'wand' by Mark James - http://famfamfam.com/
+
+WYMeditor documentation is available online at http://www.wymeditor.org/
diff --git a/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/jquery.wymeditor.tidy.js.svn-base b/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/jquery.wymeditor.tidy.js.svn-base
new file mode 100644
index 0000000..bf30c4c
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/jquery.wymeditor.tidy.js.svn-base
@@ -0,0 +1,82 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.tidy.js
+ * HTML Tidy plugin for WYMeditor
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ */
+
+//Extend WYMeditor
+WYMeditor.editor.prototype.tidy = function(options) {
+ var tidy = new WymTidy(options, this);
+ return(tidy);
+};
+
+//WymTidy constructor
+function WymTidy(options, wym) {
+
+ options = jQuery.extend({
+
+ sUrl: wym._options.basePath + "plugins/tidy/tidy.php",
+ sButtonHtml: "<li class='wym_tools_tidy'>"
+ + "<a name='CleanUp' href='#'"
+ + " style='background-image:"
+ + " url(" + wym._options.basePath + "plugins/tidy/wand.png)'>"
+ + "Clean up HTML"
+ + "</a></li>",
+
+ sButtonSelector: "li.wym_tools_tidy a"
+
+ }, options);
+
+ this._options = options;
+ this._wym = wym;
+
+};
+
+//WymTidy initialization
+WymTidy.prototype.init = function() {
+
+ var tidy = this;
+
+ jQuery(this._wym._box).find(
+ this._wym._options.toolsSelector + this._wym._options.toolsListSelector)
+ .append(this._options.sButtonHtml);
+
+ //handle click event
+ jQuery(this._wym._box).find(this._options.sButtonSelector).click(function() {
+ tidy.cleanup();
+ return(false);
+ });
+
+};
+
+//WymTidy cleanup
+WymTidy.prototype.cleanup = function() {
+
+ var wym = this._wym;
+ var html = "<html><body>" + wym.xhtml() + "</body></html>";
+
+ jQuery.post(this._options.sUrl, { html: html}, function(data) {
+
+ if(data.length > 0 && data != '0') {
+ if(data.indexOf("<?php") == 0) {
+ wym.status("Ooops... Is PHP installed?");
+ } else {
+ wym.html(data);
+ wym.status("HTML has been cleaned up.");
+ }
+ } else {
+ wym.status("An error occurred.");
+ }
+ });
+};
diff --git a/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/tidy.php.svn-base b/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/tidy.php.svn-base
new file mode 100644
index 0000000..23b9bec
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/tidy.php.svn-base
@@ -0,0 +1,36 @@
+<?php
+
+if (get_magic_quotes_gpc()) $html = stripslashes($_REQUEST['html']);
+else $html = $_REQUEST['html'];
+
+if(strlen($html) > 0) {
+
+ // Specify configuration
+ $config = array(
+ 'bare' => true,
+ 'clean' => true,
+ 'doctype' => 'strict',
+ 'drop-empty-paras' => true,
+ 'drop-font-tags' => true,
+ 'drop-proprietary-attributes' => true,
+ 'enclose-block-text' => true,
+ 'indent' => false,
+ 'join-classes' => true,
+ 'join-styles' => true,
+ 'logical-emphasis' => true,
+ 'output-xhtml' => true,
+ 'show-body-only' => true,
+ 'wrap' => 0);
+
+ // Tidy
+ $tidy = new tidy;
+ $tidy->parseString($html, $config, 'utf8');
+ $tidy->cleanRepair();
+
+ // Output
+ echo $tidy;
+} else {
+
+echo ('0');
+}
+?>
diff --git a/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/wand.png.svn-base b/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/wand.png.svn-base
new file mode 100644
index 0000000..bb55eea
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/.svn/text-base/wand.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/plugins/tidy/README b/studio/static/js/wymeditor/plugins/tidy/README
new file mode 100644
index 0000000..acc7ffd
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/README
@@ -0,0 +1,19 @@
+WYMeditor : what you see is What You Mean web-based editor
+Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+Dual licensed under the MIT (MIT-license.txt)
+and GPL (GPL-license.txt) licenses.
+
+For further information visit:
+ http://www.wymeditor.org/
+
+File Name:
+ README - HTML Tidy plugin for WYMeditor
+
+File Authors:
+ Jean-François Hovinne (jf.hovinne a-t wymeditor dotorg)
+
+Credits:
+ 'HTML Tidy' by Dave Ragget - http://tidy.sourceforge.net/
+ Icon 'wand' by Mark James - http://famfamfam.com/
+
+WYMeditor documentation is available online at http://www.wymeditor.org/
diff --git a/studio/static/js/wymeditor/plugins/tidy/jquery.wymeditor.tidy.js b/studio/static/js/wymeditor/plugins/tidy/jquery.wymeditor.tidy.js
new file mode 100644
index 0000000..bf30c4c
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/jquery.wymeditor.tidy.js
@@ -0,0 +1,82 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * jquery.wymeditor.tidy.js
+ * HTML Tidy plugin for WYMeditor
+ *
+ * File Authors:
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+ */
+
+//Extend WYMeditor
+WYMeditor.editor.prototype.tidy = function(options) {
+ var tidy = new WymTidy(options, this);
+ return(tidy);
+};
+
+//WymTidy constructor
+function WymTidy(options, wym) {
+
+ options = jQuery.extend({
+
+ sUrl: wym._options.basePath + "plugins/tidy/tidy.php",
+ sButtonHtml: "<li class='wym_tools_tidy'>"
+ + "<a name='CleanUp' href='#'"
+ + " style='background-image:"
+ + " url(" + wym._options.basePath + "plugins/tidy/wand.png)'>"
+ + "Clean up HTML"
+ + "</a></li>",
+
+ sButtonSelector: "li.wym_tools_tidy a"
+
+ }, options);
+
+ this._options = options;
+ this._wym = wym;
+
+};
+
+//WymTidy initialization
+WymTidy.prototype.init = function() {
+
+ var tidy = this;
+
+ jQuery(this._wym._box).find(
+ this._wym._options.toolsSelector + this._wym._options.toolsListSelector)
+ .append(this._options.sButtonHtml);
+
+ //handle click event
+ jQuery(this._wym._box).find(this._options.sButtonSelector).click(function() {
+ tidy.cleanup();
+ return(false);
+ });
+
+};
+
+//WymTidy cleanup
+WymTidy.prototype.cleanup = function() {
+
+ var wym = this._wym;
+ var html = "<html><body>" + wym.xhtml() + "</body></html>";
+
+ jQuery.post(this._options.sUrl, { html: html}, function(data) {
+
+ if(data.length > 0 && data != '0') {
+ if(data.indexOf("<?php") == 0) {
+ wym.status("Ooops... Is PHP installed?");
+ } else {
+ wym.html(data);
+ wym.status("HTML has been cleaned up.");
+ }
+ } else {
+ wym.status("An error occurred.");
+ }
+ });
+};
diff --git a/studio/static/js/wymeditor/plugins/tidy/tidy.php b/studio/static/js/wymeditor/plugins/tidy/tidy.php
new file mode 100644
index 0000000..23b9bec
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/tidy.php
@@ -0,0 +1,36 @@
+<?php
+
+if (get_magic_quotes_gpc()) $html = stripslashes($_REQUEST['html']);
+else $html = $_REQUEST['html'];
+
+if(strlen($html) > 0) {
+
+ // Specify configuration
+ $config = array(
+ 'bare' => true,
+ 'clean' => true,
+ 'doctype' => 'strict',
+ 'drop-empty-paras' => true,
+ 'drop-font-tags' => true,
+ 'drop-proprietary-attributes' => true,
+ 'enclose-block-text' => true,
+ 'indent' => false,
+ 'join-classes' => true,
+ 'join-styles' => true,
+ 'logical-emphasis' => true,
+ 'output-xhtml' => true,
+ 'show-body-only' => true,
+ 'wrap' => 0);
+
+ // Tidy
+ $tidy = new tidy;
+ $tidy->parseString($html, $config, 'utf8');
+ $tidy->cleanRepair();
+
+ // Output
+ echo $tidy;
+} else {
+
+echo ('0');
+}
+?>
diff --git a/studio/static/js/wymeditor/plugins/tidy/wand.png b/studio/static/js/wymeditor/plugins/tidy/wand.png
new file mode 100644
index 0000000..bb55eea
--- /dev/null
+++ b/studio/static/js/wymeditor/plugins/tidy/wand.png
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/.svn/entries b/studio/static/js/wymeditor/skins/.svn/entries
new file mode 100644
index 0000000..81655ae
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/.svn/entries
@@ -0,0 +1,77 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/skins
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2010-06-20T14:29:05.352766Z
+675
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+default
+dir
+
+silver
+dir
+
+compact
+dir
+
+minimal
+dir
+
+twopanels
+dir
+
+wymeditor_icon.png
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+d43650efc0228099352fc9998573dbb6
+2007-08-22T15:06:37.289602Z
+413
+d.reszka
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1028
+
diff --git a/studio/static/js/wymeditor/skins/.svn/prop-base/wymeditor_icon.png.svn-base b/studio/static/js/wymeditor/skins/.svn/prop-base/wymeditor_icon.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/.svn/prop-base/wymeditor_icon.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/.svn/text-base/wymeditor_icon.png.svn-base b/studio/static/js/wymeditor/skins/.svn/text-base/wymeditor_icon.png.svn-base
new file mode 100644
index 0000000..d4fc155
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/.svn/text-base/wymeditor_icon.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/compact/.svn/entries b/studio/static/js/wymeditor/skins/compact/.svn/entries
new file mode 100644
index 0000000..4218693
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/compact/.svn/entries
@@ -0,0 +1,130 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/skins/compact
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+skin.js
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+eb8726f426d41a0cb87a3a6831cf2848
+2009-04-20T15:16:38.336253Z
+595
+totoro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1155
+
+skin.css
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+85d1cb084ccc301c9306974311a86df7
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+7937
+
+icons.png
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+45a781288dc799f892fa517355ff80b6
+2009-04-18T11:14:41.598474Z
+592
+totoro
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3651
+
diff --git a/studio/static/js/wymeditor/skins/compact/.svn/prop-base/icons.png.svn-base b/studio/static/js/wymeditor/skins/compact/.svn/prop-base/icons.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/compact/.svn/prop-base/icons.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/compact/.svn/text-base/icons.png.svn-base b/studio/static/js/wymeditor/skins/compact/.svn/text-base/icons.png.svn-base
new file mode 100644
index 0000000..c6eb463
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/compact/.svn/text-base/icons.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/compact/.svn/text-base/skin.css.svn-base b/studio/static/js/wymeditor/skins/compact/.svn/text-base/skin.css.svn-base
new file mode 100644
index 0000000..4a6a0c6
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/compact/.svn/text-base/skin.css.svn-base
@@ -0,0 +1,134 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * screen.css
+ * main stylesheet for the WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+*/
+
+/*TRYING TO RESET STYLES THAT MAY INTERFERE WITH WYMEDITOR*/
+ .wym_skin_compact p, .wym_skin_compact h2, .wym_skin_compact h3,
+ .wym_skin_compact ul, .wym_skin_compact li { background: transparent url(); margin: 0; padding: 0; border-width:0; list-style: none; }
+
+
+/*HIDDEN BY DEFAULT*/
+ .wym_skin_compact .wym_area_left { display: none; }
+ .wym_skin_compact .wym_area_right { display: none; }
+
+
+/*TYPO*/
+ .wym_skin_compact { font-size: 10px; font-family: Verdana, Arial, sans-serif; }
+ .wym_skin_compact h2 { font-size: 110%; /* = 11px */}
+ .wym_skin_compact h3 { font-size: 100%; /* = 10px */}
+ .wym_skin_compact li { font-size: 100%; /* = 10px */}
+
+
+/*WYM_BOX*/
+ .wym_skin_compact { border: 1px solid gray; padding: 5px}
+
+ /*auto-clear the wym_box*/
+ .wym_skin_compact:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_compact { height: 1%;}
+
+
+/*WYM_HTML*/
+ .wym_skin_compact .wym_html { width: 98%;}
+ .wym_skin_compact .wym_html textarea { font-size: 120%; width: 100%; height: 200px; border: 1px solid gray; background: white; }
+
+
+/*WYM_IFRAME*/
+ .wym_skin_compact .wym_iframe { width: 98%;}
+ .wym_skin_compact .wym_iframe iframe { width: 100%; height: 200px; border: 1px solid gray; background: white }
+
+
+/*AREAS*/
+ .wym_skin_compact .wym_area_left { width: 100px; float: left;}
+ .wym_skin_compact .wym_area_right { width: 150px; float: right;}
+ .wym_skin_compact .wym_area_bottom { height: 1%; clear: both;}
+ * html .wym_skin_compact .wym_area_main { height: 1%;}
+ * html .wym_skin_compact .wym_area_top { height: 1%;}
+ *+html .wym_skin_compact .wym_area_top { height: 1%;}
+
+/*SECTIONS SYSTEM*/
+
+ /*common defaults for all sections*/
+ .wym_skin_compact .wym_section { margin-bottom: 5px; }
+ .wym_skin_compact .wym_section h2,
+ .wym_skin_compact .wym_section h3 { padding: 1px 3px; margin: 0; }
+ .wym_skin_compact .wym_section a { padding: 0 3px; display: block; text-decoration: none; color: black; }
+ .wym_skin_compact .wym_section a:hover { background-color: yellow; }
+ /*hide section titles by default*/
+ .wym_skin_compact .wym_section h2 { display: none; }
+ /*disable any margin-collapse*/
+ .wym_skin_compact .wym_section { padding-top: 1px; padding-bottom: 1px; }
+ /*auto-clear sections*/
+ .wym_skin_compact .wym_section ul:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_compact .wym_section ul { height: 1%;}
+
+ /*option: add this class to a section to make it render as a panel*/
+ .wym_skin_compact .wym_panel { }
+ .wym_skin_compact .wym_panel h2 { display: block; }
+
+ /*option: add this class to a section to make it render as a dropdown menu*/
+ .wym_skin_compact .wym_dropdown h2 { display: block; }
+ .wym_skin_compact .wym_dropdown ul { display: none; position: absolute; background: white; }
+ .wym_skin_compact .wym_dropdown:hover ul,
+ .wym_skin_compact .wym_dropdown.hover ul { display: block; }
+
+ /*option: add this class to a section to make its elements render buttons (icons are only available for the wym_tools section for now)*/
+ .wym_skin_compact .wym_buttons li { float:left;}
+ .wym_skin_compact .wym_buttons a { width: 20px; height: 20px; overflow: hidden; padding: 2px }
+ /*image replacements*/
+ .wym_skin_compact .wym_buttons li a { background: url(icons.png) no-repeat; text-indent: -9999px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_strong a { background-position: 0 -382px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_emphasis a { background-position: 0 -22px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_superscript a { background-position: 0 -430px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_subscript a { background-position: 0 -454px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_ordered_list a { background-position: 0 -48px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_unordered_list a{ background-position: 0 -72px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_indent a { background-position: 0 -574px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_outdent a { background-position: 0 -598px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_undo a { background-position: 0 -502px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_redo a { background-position: 0 -526px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_link a { background-position: 0 -96px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_unlink a { background-position: 0 -168px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_image a { background-position: 0 -121px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_table a { background-position: 0 -144px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_paste a { background-position: 0 -552px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_html a { background-position: 0 -193px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_preview a { background-position: 0 -408px;}
+
+/*DECORATION*/
+ .wym_skin_compact .wym_section h2 { background: #f0f0f0; border: solid gray; border-width: 0 0 1px;}
+ .wym_skin_compact .wym_section h2 span { color: gray;}
+ .wym_skin_compact .wym_panel { padding: 0; border: solid gray; border-width: 1px; background: white;}
+ .wym_skin_compact .wym_panel ul { margin: 2px 0 5px; }
+ .wym_skin_compact .wym_dropdown { padding: 0; border: solid gray; border-width: 1px 1px 0 1px; }
+ .wym_skin_compact .wym_dropdown ul { border: solid gray; border-width: 0 1px 1px 1px; margin-left: -1px; padding: 5px 10px 5px 3px;}
+
+/*DIALOGS*/
+ .wym_dialog div.row { margin-bottom: 5px;}
+ .wym_dialog div.row input { margin-right: 5px;}
+ .wym_dialog div.row label { float: left; width: 150px; display: block; text-align: right; margin-right: 10px; }
+ .wym_dialog div.row-indent { padding-left: 160px; }
+ /*autoclearing*/
+ .wym_dialog div.row:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ .wym_dialog div.row { display: inline-block; }
+ /* Hides from IE-mac \*/
+ * html .wym_dialog div.row { height: 1%; }
+ .wym_dialog div.row { display: block; }
+ /* End hide from IE-mac */
+
+/*WYMEDITOR_LINK*/
+ a.wym_wymeditor_link { text-indent: -9999px; float: right; display: block; width: 50px; height: 15px; background: url(../wymeditor_icon.png); overflow: hidden; text-decoration: none; }
diff --git a/studio/static/js/wymeditor/skins/compact/.svn/text-base/skin.js.svn-base b/studio/static/js/wymeditor/skins/compact/.svn/text-base/skin.js.svn-base
new file mode 100644
index 0000000..cfb7cc1
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/compact/.svn/text-base/skin.js.svn-base
@@ -0,0 +1,35 @@
+WYMeditor.SKINS['compact'] = {
+
+ init: function(wym) {
+
+ //move the containers panel to the top area
+ jQuery(wym._options.containersSelector + ', '
+ + wym._options.classesSelector, wym._box)
+ .appendTo( jQuery("div.wym_area_top", wym._box) )
+ .addClass("wym_dropdown")
+ .css({"margin-right": "10px", "width": "120px", "float": "left"});
+
+ //render following sections as buttons
+ jQuery(wym._options.toolsSelector, wym._box)
+ .addClass("wym_buttons")
+ .css({"margin-right": "10px", "float": "left"});
+
+ //make hover work under IE < 7
+ jQuery(".wym_section", wym._box).hover(function(){
+ jQuery(this).addClass("hover");
+ },function(){
+ jQuery(this).removeClass("hover");
+ });
+
+ var postInit = wym._options.postInit;
+ wym._options.postInit = function(wym) {
+
+ if(postInit) postInit.call(wym, wym);
+ var rule = {
+ name: 'body',
+ css: 'background-color: #f0f0f0;'
+ };
+ wym.addCssRule( wym._doc.styleSheets[0], rule);
+ };
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/compact/icons.png b/studio/static/js/wymeditor/skins/compact/icons.png
new file mode 100644
index 0000000..c6eb463
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/compact/icons.png
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/compact/skin.css b/studio/static/js/wymeditor/skins/compact/skin.css
new file mode 100644
index 0000000..4a6a0c6
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/compact/skin.css
@@ -0,0 +1,134 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * screen.css
+ * main stylesheet for the WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+ * Jean-Francois Hovinne (jf.hovinne a-t wymeditor dotorg)
+*/
+
+/*TRYING TO RESET STYLES THAT MAY INTERFERE WITH WYMEDITOR*/
+ .wym_skin_compact p, .wym_skin_compact h2, .wym_skin_compact h3,
+ .wym_skin_compact ul, .wym_skin_compact li { background: transparent url(); margin: 0; padding: 0; border-width:0; list-style: none; }
+
+
+/*HIDDEN BY DEFAULT*/
+ .wym_skin_compact .wym_area_left { display: none; }
+ .wym_skin_compact .wym_area_right { display: none; }
+
+
+/*TYPO*/
+ .wym_skin_compact { font-size: 10px; font-family: Verdana, Arial, sans-serif; }
+ .wym_skin_compact h2 { font-size: 110%; /* = 11px */}
+ .wym_skin_compact h3 { font-size: 100%; /* = 10px */}
+ .wym_skin_compact li { font-size: 100%; /* = 10px */}
+
+
+/*WYM_BOX*/
+ .wym_skin_compact { border: 1px solid gray; padding: 5px}
+
+ /*auto-clear the wym_box*/
+ .wym_skin_compact:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_compact { height: 1%;}
+
+
+/*WYM_HTML*/
+ .wym_skin_compact .wym_html { width: 98%;}
+ .wym_skin_compact .wym_html textarea { font-size: 120%; width: 100%; height: 200px; border: 1px solid gray; background: white; }
+
+
+/*WYM_IFRAME*/
+ .wym_skin_compact .wym_iframe { width: 98%;}
+ .wym_skin_compact .wym_iframe iframe { width: 100%; height: 200px; border: 1px solid gray; background: white }
+
+
+/*AREAS*/
+ .wym_skin_compact .wym_area_left { width: 100px; float: left;}
+ .wym_skin_compact .wym_area_right { width: 150px; float: right;}
+ .wym_skin_compact .wym_area_bottom { height: 1%; clear: both;}
+ * html .wym_skin_compact .wym_area_main { height: 1%;}
+ * html .wym_skin_compact .wym_area_top { height: 1%;}
+ *+html .wym_skin_compact .wym_area_top { height: 1%;}
+
+/*SECTIONS SYSTEM*/
+
+ /*common defaults for all sections*/
+ .wym_skin_compact .wym_section { margin-bottom: 5px; }
+ .wym_skin_compact .wym_section h2,
+ .wym_skin_compact .wym_section h3 { padding: 1px 3px; margin: 0; }
+ .wym_skin_compact .wym_section a { padding: 0 3px; display: block; text-decoration: none; color: black; }
+ .wym_skin_compact .wym_section a:hover { background-color: yellow; }
+ /*hide section titles by default*/
+ .wym_skin_compact .wym_section h2 { display: none; }
+ /*disable any margin-collapse*/
+ .wym_skin_compact .wym_section { padding-top: 1px; padding-bottom: 1px; }
+ /*auto-clear sections*/
+ .wym_skin_compact .wym_section ul:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_compact .wym_section ul { height: 1%;}
+
+ /*option: add this class to a section to make it render as a panel*/
+ .wym_skin_compact .wym_panel { }
+ .wym_skin_compact .wym_panel h2 { display: block; }
+
+ /*option: add this class to a section to make it render as a dropdown menu*/
+ .wym_skin_compact .wym_dropdown h2 { display: block; }
+ .wym_skin_compact .wym_dropdown ul { display: none; position: absolute; background: white; }
+ .wym_skin_compact .wym_dropdown:hover ul,
+ .wym_skin_compact .wym_dropdown.hover ul { display: block; }
+
+ /*option: add this class to a section to make its elements render buttons (icons are only available for the wym_tools section for now)*/
+ .wym_skin_compact .wym_buttons li { float:left;}
+ .wym_skin_compact .wym_buttons a { width: 20px; height: 20px; overflow: hidden; padding: 2px }
+ /*image replacements*/
+ .wym_skin_compact .wym_buttons li a { background: url(icons.png) no-repeat; text-indent: -9999px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_strong a { background-position: 0 -382px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_emphasis a { background-position: 0 -22px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_superscript a { background-position: 0 -430px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_subscript a { background-position: 0 -454px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_ordered_list a { background-position: 0 -48px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_unordered_list a{ background-position: 0 -72px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_indent a { background-position: 0 -574px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_outdent a { background-position: 0 -598px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_undo a { background-position: 0 -502px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_redo a { background-position: 0 -526px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_link a { background-position: 0 -96px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_unlink a { background-position: 0 -168px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_image a { background-position: 0 -121px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_table a { background-position: 0 -144px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_paste a { background-position: 0 -552px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_html a { background-position: 0 -193px;}
+ .wym_skin_compact .wym_buttons li.wym_tools_preview a { background-position: 0 -408px;}
+
+/*DECORATION*/
+ .wym_skin_compact .wym_section h2 { background: #f0f0f0; border: solid gray; border-width: 0 0 1px;}
+ .wym_skin_compact .wym_section h2 span { color: gray;}
+ .wym_skin_compact .wym_panel { padding: 0; border: solid gray; border-width: 1px; background: white;}
+ .wym_skin_compact .wym_panel ul { margin: 2px 0 5px; }
+ .wym_skin_compact .wym_dropdown { padding: 0; border: solid gray; border-width: 1px 1px 0 1px; }
+ .wym_skin_compact .wym_dropdown ul { border: solid gray; border-width: 0 1px 1px 1px; margin-left: -1px; padding: 5px 10px 5px 3px;}
+
+/*DIALOGS*/
+ .wym_dialog div.row { margin-bottom: 5px;}
+ .wym_dialog div.row input { margin-right: 5px;}
+ .wym_dialog div.row label { float: left; width: 150px; display: block; text-align: right; margin-right: 10px; }
+ .wym_dialog div.row-indent { padding-left: 160px; }
+ /*autoclearing*/
+ .wym_dialog div.row:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ .wym_dialog div.row { display: inline-block; }
+ /* Hides from IE-mac \*/
+ * html .wym_dialog div.row { height: 1%; }
+ .wym_dialog div.row { display: block; }
+ /* End hide from IE-mac */
+
+/*WYMEDITOR_LINK*/
+ a.wym_wymeditor_link { text-indent: -9999px; float: right; display: block; width: 50px; height: 15px; background: url(../wymeditor_icon.png); overflow: hidden; text-decoration: none; }
diff --git a/studio/static/js/wymeditor/skins/compact/skin.js b/studio/static/js/wymeditor/skins/compact/skin.js
new file mode 100644
index 0000000..cfb7cc1
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/compact/skin.js
@@ -0,0 +1,35 @@
+WYMeditor.SKINS['compact'] = {
+
+ init: function(wym) {
+
+ //move the containers panel to the top area
+ jQuery(wym._options.containersSelector + ', '
+ + wym._options.classesSelector, wym._box)
+ .appendTo( jQuery("div.wym_area_top", wym._box) )
+ .addClass("wym_dropdown")
+ .css({"margin-right": "10px", "width": "120px", "float": "left"});
+
+ //render following sections as buttons
+ jQuery(wym._options.toolsSelector, wym._box)
+ .addClass("wym_buttons")
+ .css({"margin-right": "10px", "float": "left"});
+
+ //make hover work under IE < 7
+ jQuery(".wym_section", wym._box).hover(function(){
+ jQuery(this).addClass("hover");
+ },function(){
+ jQuery(this).removeClass("hover");
+ });
+
+ var postInit = wym._options.postInit;
+ wym._options.postInit = function(wym) {
+
+ if(postInit) postInit.call(wym, wym);
+ var rule = {
+ name: 'body',
+ css: 'background-color: #f0f0f0;'
+ };
+ wym.addCssRule( wym._doc.styleSheets[0], rule);
+ };
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/default/.svn/entries b/studio/static/js/wymeditor/skins/default/.svn/entries
new file mode 100644
index 0000000..3893f6d
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/default/.svn/entries
@@ -0,0 +1,130 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/skins/default
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2010-06-20T14:29:05.352766Z
+675
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+skin.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+cbb79789e5a95dc8cbdcff294dd67ea0
+2010-06-20T14:29:05.352766Z
+675
+mr_lundis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1386
+
+skin.css
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+c8b6d612f048cbf5c1b8a54f816dc5db
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+7890
+
+icons.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+45a781288dc799f892fa517355ff80b6
+2007-03-06T13:53:36.153298Z
+149
+d.reszka
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3651
+
diff --git a/studio/static/js/wymeditor/skins/default/.svn/prop-base/icons.png.svn-base b/studio/static/js/wymeditor/skins/default/.svn/prop-base/icons.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/default/.svn/prop-base/icons.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/default/.svn/text-base/icons.png.svn-base b/studio/static/js/wymeditor/skins/default/.svn/text-base/icons.png.svn-base
new file mode 100644
index 0000000..c6eb463
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/default/.svn/text-base/icons.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/default/.svn/text-base/skin.css.svn-base b/studio/static/js/wymeditor/skins/default/.svn/text-base/skin.css.svn-base
new file mode 100644
index 0000000..eb4680f
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/default/.svn/text-base/skin.css.svn-base
@@ -0,0 +1,133 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * skin.css
+ * main stylesheet for the default WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+*/
+
+/*TRYING TO RESET STYLES THAT MAY INTERFERE WITH WYMEDITOR*/
+ .wym_skin_default p, .wym_skin_default h2, .wym_skin_default h3,
+ .wym_skin_default ul, .wym_skin_default li { background: transparent url(); margin: 0; padding: 0; border-width:0; list-style: none; }
+
+
+/*HIDDEN BY DEFAULT*/
+ .wym_skin_default .wym_area_left { display: none; }
+ .wym_skin_default .wym_area_right { display: block; }
+
+
+/*TYPO*/
+ .wym_skin_default { font-size: 62.5%; font-family: Verdana, Arial, sans-serif; }
+ .wym_skin_default h2 { font-size: 110%; /* = 11px */}
+ .wym_skin_default h3 { font-size: 100%; /* = 10px */}
+ .wym_skin_default li { font-size: 100%; /* = 10px */}
+
+
+/*WYM_BOX*/
+ .wym_skin_default { border: 1px solid gray; background: #f2f2f2; padding: 5px}
+
+ /*auto-clear the wym_box*/
+ .wym_skin_default:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_default { height: 1%;}
+
+
+/*WYM_HTML*/
+ .wym_skin_default .wym_html { width: 98%;}
+ .wym_skin_default .wym_html textarea { width: 100%; height: 200px; border: 1px solid gray; background: white; }
+
+
+/*WYM_IFRAME*/
+ .wym_skin_default .wym_iframe { width: 98%;}
+ .wym_skin_default .wym_iframe iframe { width: 100%; height: 200px; border: 1px solid gray; background: white }
+
+
+/*AREAS*/
+ .wym_skin_default .wym_area_left { width: 150px; float: left;}
+ .wym_skin_default .wym_area_right { width: 150px; float: right;}
+ .wym_skin_default .wym_area_bottom { height: 1%; clear: both;}
+ * html .wym_skin_default .wym_area_main { height: 1%;}
+ * html .wym_skin_default .wym_area_top { height: 1%;}
+ *+html .wym_skin_default .wym_area_top { height: 1%;}
+
+/*SECTIONS SYSTEM*/
+
+ /*common defaults for all sections*/
+ .wym_skin_default .wym_section { margin-bottom: 5px; }
+ .wym_skin_default .wym_section h2,
+ .wym_skin_default .wym_section h3 { padding: 1px 3px; margin: 0; }
+ .wym_skin_default .wym_section a { padding: 0 3px; display: block; text-decoration: none; color: black; }
+ .wym_skin_default .wym_section a:hover { background-color: yellow; }
+ /*hide section titles by default*/
+ .wym_skin_default .wym_section h2 { display: none; }
+ /*disable any margin-collapse*/
+ .wym_skin_default .wym_section { padding-top: 1px; padding-bottom: 1px; }
+ /*auto-clear sections*/
+ .wym_skin_default .wym_section ul:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_default .wym_section ul { height: 1%;}
+
+ /*option: add this class to a section to make it render as a panel*/
+ .wym_skin_default .wym_panel { }
+ .wym_skin_default .wym_panel h2 { display: block; }
+
+ /*option: add this class to a section to make it render as a dropdown menu*/
+ .wym_skin_default .wym_dropdown h2 { display: block; }
+ .wym_skin_default .wym_dropdown ul { display: none; position: absolute; background: white; }
+ .wym_skin_default .wym_dropdown:hover ul,
+ .wym_skin_default .wym_dropdown.hover ul { display: block; }
+
+ /*option: add this class to a section to make its elements render buttons (icons are only available for the wym_tools section for now)*/
+ .wym_skin_default .wym_buttons li { float:left;}
+ .wym_skin_default .wym_buttons a { width: 20px; height: 20px; overflow: hidden; padding: 2px }
+ /*image replacements*/
+ .wym_skin_default .wym_buttons li a { background: url(icons.png) no-repeat; text-indent: -9999px;}
+ .wym_skin_default .wym_buttons li.wym_tools_strong a { background-position: 0 -382px;}
+ .wym_skin_default .wym_buttons li.wym_tools_emphasis a { background-position: 0 -22px;}
+ .wym_skin_default .wym_buttons li.wym_tools_superscript a { background-position: 0 -430px;}
+ .wym_skin_default .wym_buttons li.wym_tools_subscript a { background-position: 0 -454px;}
+ .wym_skin_default .wym_buttons li.wym_tools_ordered_list a { background-position: 0 -48px;}
+ .wym_skin_default .wym_buttons li.wym_tools_unordered_list a{ background-position: 0 -72px;}
+ .wym_skin_default .wym_buttons li.wym_tools_indent a { background-position: 0 -574px;}
+ .wym_skin_default .wym_buttons li.wym_tools_outdent a { background-position: 0 -598px;}
+ .wym_skin_default .wym_buttons li.wym_tools_undo a { background-position: 0 -502px;}
+ .wym_skin_default .wym_buttons li.wym_tools_redo a { background-position: 0 -526px;}
+ .wym_skin_default .wym_buttons li.wym_tools_link a { background-position: 0 -96px;}
+ .wym_skin_default .wym_buttons li.wym_tools_unlink a { background-position: 0 -168px;}
+ .wym_skin_default .wym_buttons li.wym_tools_image a { background-position: 0 -121px;}
+ .wym_skin_default .wym_buttons li.wym_tools_table a { background-position: 0 -144px;}
+ .wym_skin_default .wym_buttons li.wym_tools_paste a { background-position: 0 -552px;}
+ .wym_skin_default .wym_buttons li.wym_tools_html a { background-position: 0 -193px;}
+ .wym_skin_default .wym_buttons li.wym_tools_preview a { background-position: 0 -408px;}
+
+/*DECORATION*/
+ .wym_skin_default .wym_section h2 { background: #ddd; border: solid gray; border-width: 0 0 1px;}
+ .wym_skin_default .wym_section h2 span { color: gray;}
+ .wym_skin_default .wym_panel { padding: 0; border: solid gray; border-width: 1px; background: white;}
+ .wym_skin_default .wym_panel ul { margin: 2px 0 5px; }
+ .wym_skin_default .wym_dropdown { padding: 0; border: solid gray; border-width: 1px 1px 0 1px; }
+ .wym_skin_default .wym_dropdown ul { border: solid gray; border-width: 0 1px 1px 1px; margin-left: -1px; padding: 5px 10px 5px 3px;}
+
+/*DIALOGS*/
+ .wym_dialog div.row { margin-bottom: 5px;}
+ .wym_dialog div.row input { margin-right: 5px;}
+ .wym_dialog div.row label { float: left; width: 150px; display: block; text-align: right; margin-right: 10px; }
+ .wym_dialog div.row-indent { padding-left: 160px; }
+ /*autoclearing*/
+ .wym_dialog div.row:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ .wym_dialog div.row { display: inline-block; }
+ /* Hides from IE-mac \*/
+ * html .wym_dialog div.row { height: 1%; }
+ .wym_dialog div.row { display: block; }
+ /* End hide from IE-mac */
+
+/*WYMEDITOR_LINK*/
+ a.wym_wymeditor_link { text-indent: -9999px; float: right; display: block; width: 50px; height: 15px; background: url(../wymeditor_icon.png); overflow: hidden; text-decoration: none; }
diff --git a/studio/static/js/wymeditor/skins/default/.svn/text-base/skin.js.svn-base b/studio/static/js/wymeditor/skins/default/.svn/text-base/skin.js.svn-base
new file mode 100644
index 0000000..5f6d97e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/default/.svn/text-base/skin.js.svn-base
@@ -0,0 +1,40 @@
+WYMeditor.SKINS['default'] = {
+
+ init: function(wym) {
+
+ //render following sections as panels
+ jQuery(wym._box).find(wym._options.classesSelector)
+ .addClass("wym_panel");
+
+ //render following sections as buttons
+ jQuery(wym._box).find(wym._options.toolsSelector)
+ .addClass("wym_buttons");
+
+ //render following sections as dropdown menus
+ jQuery(wym._box).find(wym._options.containersSelector)
+ .addClass("wym_dropdown")
+ .find(WYMeditor.H2)
+ .append("<span> ></span>");
+
+ // auto add some margin to the main area sides if left area
+ // or right area are not empty (if they contain sections)
+ jQuery(wym._box).find("div.wym_area_right ul")
+ .parents("div.wym_area_right").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-right": "155px"});
+
+ jQuery(wym._box).find("div.wym_area_left ul")
+ .parents("div.wym_area_left").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-left": "155px"});
+
+ //make hover work under IE < 7
+ jQuery(wym._box).find(".wym_section").hover(function(){
+ jQuery(this).addClass("hover");
+ },function(){
+ jQuery(this).removeClass("hover");
+ });
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/default/icons.png b/studio/static/js/wymeditor/skins/default/icons.png
new file mode 100644
index 0000000..c6eb463
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/default/icons.png
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/default/skin.css b/studio/static/js/wymeditor/skins/default/skin.css
new file mode 100644
index 0000000..eb4680f
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/default/skin.css
@@ -0,0 +1,133 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * skin.css
+ * main stylesheet for the default WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+*/
+
+/*TRYING TO RESET STYLES THAT MAY INTERFERE WITH WYMEDITOR*/
+ .wym_skin_default p, .wym_skin_default h2, .wym_skin_default h3,
+ .wym_skin_default ul, .wym_skin_default li { background: transparent url(); margin: 0; padding: 0; border-width:0; list-style: none; }
+
+
+/*HIDDEN BY DEFAULT*/
+ .wym_skin_default .wym_area_left { display: none; }
+ .wym_skin_default .wym_area_right { display: block; }
+
+
+/*TYPO*/
+ .wym_skin_default { font-size: 62.5%; font-family: Verdana, Arial, sans-serif; }
+ .wym_skin_default h2 { font-size: 110%; /* = 11px */}
+ .wym_skin_default h3 { font-size: 100%; /* = 10px */}
+ .wym_skin_default li { font-size: 100%; /* = 10px */}
+
+
+/*WYM_BOX*/
+ .wym_skin_default { border: 1px solid gray; background: #f2f2f2; padding: 5px}
+
+ /*auto-clear the wym_box*/
+ .wym_skin_default:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_default { height: 1%;}
+
+
+/*WYM_HTML*/
+ .wym_skin_default .wym_html { width: 98%;}
+ .wym_skin_default .wym_html textarea { width: 100%; height: 200px; border: 1px solid gray; background: white; }
+
+
+/*WYM_IFRAME*/
+ .wym_skin_default .wym_iframe { width: 98%;}
+ .wym_skin_default .wym_iframe iframe { width: 100%; height: 200px; border: 1px solid gray; background: white }
+
+
+/*AREAS*/
+ .wym_skin_default .wym_area_left { width: 150px; float: left;}
+ .wym_skin_default .wym_area_right { width: 150px; float: right;}
+ .wym_skin_default .wym_area_bottom { height: 1%; clear: both;}
+ * html .wym_skin_default .wym_area_main { height: 1%;}
+ * html .wym_skin_default .wym_area_top { height: 1%;}
+ *+html .wym_skin_default .wym_area_top { height: 1%;}
+
+/*SECTIONS SYSTEM*/
+
+ /*common defaults for all sections*/
+ .wym_skin_default .wym_section { margin-bottom: 5px; }
+ .wym_skin_default .wym_section h2,
+ .wym_skin_default .wym_section h3 { padding: 1px 3px; margin: 0; }
+ .wym_skin_default .wym_section a { padding: 0 3px; display: block; text-decoration: none; color: black; }
+ .wym_skin_default .wym_section a:hover { background-color: yellow; }
+ /*hide section titles by default*/
+ .wym_skin_default .wym_section h2 { display: none; }
+ /*disable any margin-collapse*/
+ .wym_skin_default .wym_section { padding-top: 1px; padding-bottom: 1px; }
+ /*auto-clear sections*/
+ .wym_skin_default .wym_section ul:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_default .wym_section ul { height: 1%;}
+
+ /*option: add this class to a section to make it render as a panel*/
+ .wym_skin_default .wym_panel { }
+ .wym_skin_default .wym_panel h2 { display: block; }
+
+ /*option: add this class to a section to make it render as a dropdown menu*/
+ .wym_skin_default .wym_dropdown h2 { display: block; }
+ .wym_skin_default .wym_dropdown ul { display: none; position: absolute; background: white; }
+ .wym_skin_default .wym_dropdown:hover ul,
+ .wym_skin_default .wym_dropdown.hover ul { display: block; }
+
+ /*option: add this class to a section to make its elements render buttons (icons are only available for the wym_tools section for now)*/
+ .wym_skin_default .wym_buttons li { float:left;}
+ .wym_skin_default .wym_buttons a { width: 20px; height: 20px; overflow: hidden; padding: 2px }
+ /*image replacements*/
+ .wym_skin_default .wym_buttons li a { background: url(icons.png) no-repeat; text-indent: -9999px;}
+ .wym_skin_default .wym_buttons li.wym_tools_strong a { background-position: 0 -382px;}
+ .wym_skin_default .wym_buttons li.wym_tools_emphasis a { background-position: 0 -22px;}
+ .wym_skin_default .wym_buttons li.wym_tools_superscript a { background-position: 0 -430px;}
+ .wym_skin_default .wym_buttons li.wym_tools_subscript a { background-position: 0 -454px;}
+ .wym_skin_default .wym_buttons li.wym_tools_ordered_list a { background-position: 0 -48px;}
+ .wym_skin_default .wym_buttons li.wym_tools_unordered_list a{ background-position: 0 -72px;}
+ .wym_skin_default .wym_buttons li.wym_tools_indent a { background-position: 0 -574px;}
+ .wym_skin_default .wym_buttons li.wym_tools_outdent a { background-position: 0 -598px;}
+ .wym_skin_default .wym_buttons li.wym_tools_undo a { background-position: 0 -502px;}
+ .wym_skin_default .wym_buttons li.wym_tools_redo a { background-position: 0 -526px;}
+ .wym_skin_default .wym_buttons li.wym_tools_link a { background-position: 0 -96px;}
+ .wym_skin_default .wym_buttons li.wym_tools_unlink a { background-position: 0 -168px;}
+ .wym_skin_default .wym_buttons li.wym_tools_image a { background-position: 0 -121px;}
+ .wym_skin_default .wym_buttons li.wym_tools_table a { background-position: 0 -144px;}
+ .wym_skin_default .wym_buttons li.wym_tools_paste a { background-position: 0 -552px;}
+ .wym_skin_default .wym_buttons li.wym_tools_html a { background-position: 0 -193px;}
+ .wym_skin_default .wym_buttons li.wym_tools_preview a { background-position: 0 -408px;}
+
+/*DECORATION*/
+ .wym_skin_default .wym_section h2 { background: #ddd; border: solid gray; border-width: 0 0 1px;}
+ .wym_skin_default .wym_section h2 span { color: gray;}
+ .wym_skin_default .wym_panel { padding: 0; border: solid gray; border-width: 1px; background: white;}
+ .wym_skin_default .wym_panel ul { margin: 2px 0 5px; }
+ .wym_skin_default .wym_dropdown { padding: 0; border: solid gray; border-width: 1px 1px 0 1px; }
+ .wym_skin_default .wym_dropdown ul { border: solid gray; border-width: 0 1px 1px 1px; margin-left: -1px; padding: 5px 10px 5px 3px;}
+
+/*DIALOGS*/
+ .wym_dialog div.row { margin-bottom: 5px;}
+ .wym_dialog div.row input { margin-right: 5px;}
+ .wym_dialog div.row label { float: left; width: 150px; display: block; text-align: right; margin-right: 10px; }
+ .wym_dialog div.row-indent { padding-left: 160px; }
+ /*autoclearing*/
+ .wym_dialog div.row:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ .wym_dialog div.row { display: inline-block; }
+ /* Hides from IE-mac \*/
+ * html .wym_dialog div.row { height: 1%; }
+ .wym_dialog div.row { display: block; }
+ /* End hide from IE-mac */
+
+/*WYMEDITOR_LINK*/
+ a.wym_wymeditor_link { text-indent: -9999px; float: right; display: block; width: 50px; height: 15px; background: url(../wymeditor_icon.png); overflow: hidden; text-decoration: none; }
diff --git a/studio/static/js/wymeditor/skins/default/skin.js b/studio/static/js/wymeditor/skins/default/skin.js
new file mode 100644
index 0000000..5f6d97e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/default/skin.js
@@ -0,0 +1,40 @@
+WYMeditor.SKINS['default'] = {
+
+ init: function(wym) {
+
+ //render following sections as panels
+ jQuery(wym._box).find(wym._options.classesSelector)
+ .addClass("wym_panel");
+
+ //render following sections as buttons
+ jQuery(wym._box).find(wym._options.toolsSelector)
+ .addClass("wym_buttons");
+
+ //render following sections as dropdown menus
+ jQuery(wym._box).find(wym._options.containersSelector)
+ .addClass("wym_dropdown")
+ .find(WYMeditor.H2)
+ .append("<span> ></span>");
+
+ // auto add some margin to the main area sides if left area
+ // or right area are not empty (if they contain sections)
+ jQuery(wym._box).find("div.wym_area_right ul")
+ .parents("div.wym_area_right").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-right": "155px"});
+
+ jQuery(wym._box).find("div.wym_area_left ul")
+ .parents("div.wym_area_left").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-left": "155px"});
+
+ //make hover work under IE < 7
+ jQuery(wym._box).find(".wym_section").hover(function(){
+ jQuery(this).addClass("hover");
+ },function(){
+ jQuery(this).removeClass("hover");
+ });
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/minimal/.svn/entries b/studio/static/js/wymeditor/skins/minimal/.svn/entries
new file mode 100644
index 0000000..fb50d46
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/.svn/entries
@@ -0,0 +1,99 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/skins/minimal
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+skin.js
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+4f493f73bfb815d0dfff9c39d15a14e8
+2008-06-02T20:02:11.870601Z
+505
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+868
+
+images
+dir
+
+skin.css
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+b24eafed148e80826464943a977ba2ad
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2743
+
diff --git a/studio/static/js/wymeditor/skins/minimal/.svn/text-base/skin.css.svn-base b/studio/static/js/wymeditor/skins/minimal/.svn/text-base/skin.css.svn-base
new file mode 100644
index 0000000..cea8d84
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/.svn/text-base/skin.css.svn-base
@@ -0,0 +1,131 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * skin.css
+ * main stylesheet for the minimal WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne
+ * Scott Lewis (see Silver skin)
+*/
+
+/* Set iframe */
+.wym_skin_minimal div.wym_iframe iframe {
+ width: 90%;
+ height: 200px;
+}
+
+/* Hide h2 by default */
+.wym_skin_minimal h2 {
+ display: none;
+}
+
+/* Show specific h2 */
+.wym_skin_minimal div.wym_tools h2,
+.wym_skin_minimal div.wym_containers h2,
+.wym_skin_minimal div.wym_classes h2 {
+ display: block;
+}
+
+.wym_skin_minimal div.wym_section ul {
+ margin: 0;
+}
+
+.wym_skin_minimal div.wym_section ul li {
+ float: left;
+ list-style-type: none;
+ margin-right: 5px;
+}
+
+.wym_skin_minimal div.wym_area_top,
+.wym_skin_minimal div.wym_area_right,
+.wym_skin_minimal div.wym_containers,
+.wym_skin_minimal div.wym_classes {
+ float: left;
+}
+
+.wym_skin_minimal div.wym_area_main {
+ clear: both;
+}
+
+.wym_skin_minimal div.wym_html {
+ width: 90%;
+}
+
+.wym_skin_minimal textarea.wym_html_val {
+ width: 100%;
+ height: 100px;
+}
+
+/* DROPDOWNS (see Silver skin) */
+.wym_skin_minimal div.wym_dropdown {
+ cursor: pointer;
+ margin: 0px 4px 10px 0px;
+ padding: 0px;
+ z-index: 1001;
+ display: block;
+}
+
+.wym_skin_minimal div.wym_dropdown ul {
+ display: none;
+ width: 124px;
+ padding: 0px;
+ margin: 0px;
+ list-style-type: none;
+ list-style-image: none;
+ z-index: 1002;
+ position: absolute;
+ border-top: 1px solid #AAA;
+}
+
+.wym_skin_minimal div.wym_dropdown ul li {
+ width: 146px;
+ height: 20px;
+ padding: 0px;
+ margin: 0px;
+ border: 1px solid #777;
+ border-top: none;
+ background: #EEE;
+ list-style-image: none;
+}
+
+.wym_skin_minimal div.wym_dropdown h2 {
+ width: 138px;
+ height: 16px;
+ color: #000;
+ background-image: url(images/bg.selector.silver.gif);
+ background-position: 0px -18px;
+ background-repeat: no-repeat;
+ border: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px;
+ font-weight: bold;
+ padding: 2px 0px 0px 10px;
+ margin: 0px;
+}
+
+.wym_skin_minimal div.wym_dropdown a {
+ text-decoration: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px;
+ padding: 5px 0px 0px 10px;
+ display: block;
+ width: 136px;
+ height: 15px;
+ color: #000;
+ text-align: left;
+ margin-left: 0px;
+}
+
+.wym_skin_minimal div.wym_dropdown a:hover {
+ background: #BBB;
+ border-bottom: none;
+}
diff --git a/studio/static/js/wymeditor/skins/minimal/.svn/text-base/skin.js.svn-base b/studio/static/js/wymeditor/skins/minimal/.svn/text-base/skin.js.svn-base
new file mode 100644
index 0000000..af29ed4
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/.svn/text-base/skin.js.svn-base
@@ -0,0 +1,30 @@
+jQuery.fn.selectify = function() {
+ return this.each(function() {
+ jQuery(this).hover(
+ function() {
+ jQuery("h2", this).css("background-position", "0px -18px");
+ jQuery("ul", this).fadeIn("fast");
+ },
+ function() {
+ jQuery("h2", this).css("background-position", "");
+ jQuery("ul", this).fadeOut("fast");
+ }
+ );
+ });
+};
+
+WYMeditor.SKINS['minimal'] = {
+ //placeholder for the skin JS, if needed
+
+ //init the skin
+ //wym is the WYMeditor.editor instance
+ init: function(wym) {
+
+ //render following sections as dropdown menus
+ jQuery(wym._box).find(wym._options.toolsSelector + ', ' + wym._options.containersSelector + ', ' + wym._options.classesSelector)
+ .addClass("wym_dropdown")
+ .selectify();
+
+
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/minimal/images/.svn/entries b/studio/static/js/wymeditor/skins/minimal/images/.svn/entries
new file mode 100644
index 0000000..ff30362
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/.svn/entries
@@ -0,0 +1,164 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/skins/minimal/images
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2008-06-02T20:02:11.870601Z
+505
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+icons.silver.gif
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+3d55143203f242061d02ed4387e3c498
+2008-06-02T20:02:11.870601Z
+505
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+15382
+
+bg.header.gif
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+4871b677b0af34f02d3a51046dd51f20
+2008-06-02T20:02:11.870601Z
+505
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+781
+
+bg.wymeditor.png
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+dae577218f4bdd6f59197e3d8c8c9ea6
+2008-06-02T20:02:11.870601Z
+505
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+498
+
+bg.selector.silver.gif
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+1101554f412121db5ad6157f366515e3
+2008-06-02T20:02:11.870601Z
+505
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1621
+
diff --git a/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.header.gif.svn-base b/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.header.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.header.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.selector.silver.gif.svn-base b/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.selector.silver.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.selector.silver.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.wymeditor.png.svn-base b/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.wymeditor.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/bg.wymeditor.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/icons.silver.gif.svn-base b/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/icons.silver.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/.svn/prop-base/icons.silver.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.header.gif.svn-base b/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.header.gif.svn-base
new file mode 100644
index 0000000..b2d2907
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.header.gif.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.selector.silver.gif.svn-base b/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.selector.silver.gif.svn-base
new file mode 100644
index 0000000..e65976b
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.selector.silver.gif.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.wymeditor.png.svn-base b/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.wymeditor.png.svn-base
new file mode 100644
index 0000000..1e84813
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/bg.wymeditor.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/icons.silver.gif.svn-base b/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/icons.silver.gif.svn-base
new file mode 100644
index 0000000..8c6a4fb
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/.svn/text-base/icons.silver.gif.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/minimal/images/bg.header.gif b/studio/static/js/wymeditor/skins/minimal/images/bg.header.gif
new file mode 100644
index 0000000..b2d2907
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/bg.header.gif
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/minimal/images/bg.selector.silver.gif b/studio/static/js/wymeditor/skins/minimal/images/bg.selector.silver.gif
new file mode 100644
index 0000000..e65976b
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/bg.selector.silver.gif
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/minimal/images/bg.wymeditor.png b/studio/static/js/wymeditor/skins/minimal/images/bg.wymeditor.png
new file mode 100644
index 0000000..1e84813
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/bg.wymeditor.png
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/minimal/images/icons.silver.gif b/studio/static/js/wymeditor/skins/minimal/images/icons.silver.gif
new file mode 100644
index 0000000..8c6a4fb
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/images/icons.silver.gif
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/minimal/skin.css b/studio/static/js/wymeditor/skins/minimal/skin.css
new file mode 100644
index 0000000..cea8d84
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/skin.css
@@ -0,0 +1,131 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * skin.css
+ * main stylesheet for the minimal WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Jean-Francois Hovinne
+ * Scott Lewis (see Silver skin)
+*/
+
+/* Set iframe */
+.wym_skin_minimal div.wym_iframe iframe {
+ width: 90%;
+ height: 200px;
+}
+
+/* Hide h2 by default */
+.wym_skin_minimal h2 {
+ display: none;
+}
+
+/* Show specific h2 */
+.wym_skin_minimal div.wym_tools h2,
+.wym_skin_minimal div.wym_containers h2,
+.wym_skin_minimal div.wym_classes h2 {
+ display: block;
+}
+
+.wym_skin_minimal div.wym_section ul {
+ margin: 0;
+}
+
+.wym_skin_minimal div.wym_section ul li {
+ float: left;
+ list-style-type: none;
+ margin-right: 5px;
+}
+
+.wym_skin_minimal div.wym_area_top,
+.wym_skin_minimal div.wym_area_right,
+.wym_skin_minimal div.wym_containers,
+.wym_skin_minimal div.wym_classes {
+ float: left;
+}
+
+.wym_skin_minimal div.wym_area_main {
+ clear: both;
+}
+
+.wym_skin_minimal div.wym_html {
+ width: 90%;
+}
+
+.wym_skin_minimal textarea.wym_html_val {
+ width: 100%;
+ height: 100px;
+}
+
+/* DROPDOWNS (see Silver skin) */
+.wym_skin_minimal div.wym_dropdown {
+ cursor: pointer;
+ margin: 0px 4px 10px 0px;
+ padding: 0px;
+ z-index: 1001;
+ display: block;
+}
+
+.wym_skin_minimal div.wym_dropdown ul {
+ display: none;
+ width: 124px;
+ padding: 0px;
+ margin: 0px;
+ list-style-type: none;
+ list-style-image: none;
+ z-index: 1002;
+ position: absolute;
+ border-top: 1px solid #AAA;
+}
+
+.wym_skin_minimal div.wym_dropdown ul li {
+ width: 146px;
+ height: 20px;
+ padding: 0px;
+ margin: 0px;
+ border: 1px solid #777;
+ border-top: none;
+ background: #EEE;
+ list-style-image: none;
+}
+
+.wym_skin_minimal div.wym_dropdown h2 {
+ width: 138px;
+ height: 16px;
+ color: #000;
+ background-image: url(images/bg.selector.silver.gif);
+ background-position: 0px -18px;
+ background-repeat: no-repeat;
+ border: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px;
+ font-weight: bold;
+ padding: 2px 0px 0px 10px;
+ margin: 0px;
+}
+
+.wym_skin_minimal div.wym_dropdown a {
+ text-decoration: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px;
+ padding: 5px 0px 0px 10px;
+ display: block;
+ width: 136px;
+ height: 15px;
+ color: #000;
+ text-align: left;
+ margin-left: 0px;
+}
+
+.wym_skin_minimal div.wym_dropdown a:hover {
+ background: #BBB;
+ border-bottom: none;
+}
diff --git a/studio/static/js/wymeditor/skins/minimal/skin.js b/studio/static/js/wymeditor/skins/minimal/skin.js
new file mode 100644
index 0000000..af29ed4
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/minimal/skin.js
@@ -0,0 +1,30 @@
+jQuery.fn.selectify = function() {
+ return this.each(function() {
+ jQuery(this).hover(
+ function() {
+ jQuery("h2", this).css("background-position", "0px -18px");
+ jQuery("ul", this).fadeIn("fast");
+ },
+ function() {
+ jQuery("h2", this).css("background-position", "");
+ jQuery("ul", this).fadeOut("fast");
+ }
+ );
+ });
+};
+
+WYMeditor.SKINS['minimal'] = {
+ //placeholder for the skin JS, if needed
+
+ //init the skin
+ //wym is the WYMeditor.editor instance
+ init: function(wym) {
+
+ //render following sections as dropdown menus
+ jQuery(wym._box).find(wym._options.toolsSelector + ', ' + wym._options.containersSelector + ', ' + wym._options.classesSelector)
+ .addClass("wym_dropdown")
+ .selectify();
+
+
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/silver/.svn/entries b/studio/static/js/wymeditor/skins/silver/.svn/entries
new file mode 100644
index 0000000..2969c6b
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/.svn/entries
@@ -0,0 +1,167 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/skins/silver
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+skin.js
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+7f55ea883250c072ce72cf60c2d77064
+2008-05-12T20:05:54.287558Z
+494
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2024
+
+images
+dir
+
+COPYING
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+d32239bcb673463ab874e80d47fae504
+2008-05-12T20:05:54.287558Z
+494
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+35147
+
+skin.css
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+4af1f9844350d87d34bfeeca2702ea0c
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+13023
+
+README
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+649465d1c305caedb34adc02b8cc0ea8
+2008-05-12T20:05:54.287558Z
+494
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+725
+
diff --git a/studio/static/js/wymeditor/skins/silver/.svn/prop-base/COPYING.svn-base b/studio/static/js/wymeditor/skins/silver/.svn/prop-base/COPYING.svn-base
new file mode 100644
index 0000000..869ac71
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/.svn/prop-base/COPYING.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/studio/static/js/wymeditor/skins/silver/.svn/prop-base/README.svn-base b/studio/static/js/wymeditor/skins/silver/.svn/prop-base/README.svn-base
new file mode 100644
index 0000000..869ac71
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/.svn/prop-base/README.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/studio/static/js/wymeditor/skins/silver/.svn/text-base/COPYING.svn-base b/studio/static/js/wymeditor/skins/silver/.svn/text-base/COPYING.svn-base
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/.svn/text-base/COPYING.svn-base
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/studio/static/js/wymeditor/skins/silver/.svn/text-base/README.svn-base b/studio/static/js/wymeditor/skins/silver/.svn/text-base/README.svn-base
new file mode 100644
index 0000000..130dc46
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/.svn/text-base/README.svn-base
@@ -0,0 +1,27 @@
+/**
+* @version Alpha 0.1 2008-05-10 23:28:43 $
+* @package Silver skin for WYMeditor
+* @copyright Copyright (C) 2008 Scott Edwin Lewis. All rights reserved.
+* @license GNU/GPL, see COPYING
+* Silver skin for WYMeditor is free software and is licensed under the
+* GNU General Public License. See COPYING for copyright notices and details.
+*/
+
+Adds custom buttons and color palette to the WYMeditor XHTML Editor.
+
+INSTALLATION:
+
+1. Copy the entire /silver/ directory to /wymeditor/skins/
+2. Initialize the WYMeditor 'skin' option as below:
+
+<script type="text/javascript">
+jQuery(function() {
+
+ jQuery('.wymeditor').wymeditor({
+ skin: 'silver'
+ });
+
+});
+</script>
+
+That's it. You're done.
diff --git a/studio/static/js/wymeditor/skins/silver/.svn/text-base/skin.css.svn-base b/studio/static/js/wymeditor/skins/silver/.svn/text-base/skin.css.svn-base
new file mode 100644
index 0000000..8284d81
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/.svn/text-base/skin.css.svn-base
@@ -0,0 +1,297 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * screen.css
+ * main stylesheet for the default WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+ * Scott Edwin Lewis
+*/
+
+/*TRYING TO RESET STYLES THAT MAY INTERFERE WITH WYMEDITOR*/
+ .wym_skin_silver p, .wym_skin_silver h2, .wym_skin_silver h3,
+ .wym_skin_silver ul, .wym_skin_silver li { background: transparent url(); margin: 0; padding: 0; border-width:0; list-style: none; }
+
+
+/*HIDDEN BY DEFAULT*/
+ .wym_skin_silver .wym_area_left { display: none; }
+ .wym_skin_silver .wym_area_right { display: block; }
+
+
+/*TYPO*/
+ .wym_skin_silver { font-size: 62.5%; font-family: Verdana, Arial, sans-serif; }
+ .wym_skin_silver h2 { font-size: 110%; /* = 11px */}
+ .wym_skin_silver h3 { font-size: 100%; /* = 10px */}
+ .wym_skin_silver li { font-size: 100%; /* = 10px */}
+
+
+/*WYM_BOX*/
+ .wym_skin_silver { border: 1px solid gray; background: #f2f2f2; padding: 0px; margin: 0px;}
+
+ /*auto-clear the wym_box*/
+ .wym_skin_silver:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_silver { height: 1%;}
+
+
+/*WYM_HTML*/
+ .wym_skin_silver .wym_html { width: 98%;}
+ .wym_skin_silver .wym_html textarea { width: 100%; height: 200px; border: 1px solid gray; background: white; }
+
+
+/*WYM_IFRAME*/
+ .wym_skin_silver .wym_iframe { width: 98%;}
+ .wym_skin_silver .wym_iframe iframe { width: 100%; height: 200px; border: 1px solid gray; background: white }
+
+
+/*AREAS*/
+ .wym_skin_silver .wym_area_left { width: 150px; float: left;}
+ .wym_skin_silver .wym_area_right { width: 150px; float: right;}
+ .wym_skin_silver .wym_area_bottom { height: 1%; clear: both;}
+ * html .wym_skin_silver .wym_area_main { height: 1%;}
+ * html .wym_skin_silver .wym_area_top { height: 1%;}
+ *+html .wym_skin_silver .wym_area_top { height: 1%;}
+
+/*SECTIONS SYSTEM*/
+
+ /*common defaults for all sections*/
+ .wym_skin_silver .wym_section { margin-bottom: 5px; }
+ .wym_skin_silver .wym_section h2,
+ .wym_skin_silver .wym_section h3 { padding: 1px 3px; margin: 0; cursor: pointer; }
+ .wym_skin_silver .wym_section a { padding: 5px 0px 0px 10px; display: block; text-decoration: none; color: black; }
+ .wym_skin_silver .wym_section a:hover { /*background-color: #DDD;*/}
+ /*hide section titles by default*/
+ .wym_skin_silver .wym_section h2 { display: none; }
+ /*disable any margin-collapse*/
+ .wym_skin_silver .wym_section { padding-top: 1px; padding-bottom: 1px; }
+ /*auto-clear sections*/
+ .wym_skin_silver .wym_section ul:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; padding: 0px; }
+ * html .wym_skin_silver .wym_section ul { height: 1%;}
+ .wym_skin_silver .wym_section li {}
+
+ /*option: add this class to a section to make it render as a panel*/
+ .wym_skin_silver .wym_panel { }
+ .wym_skin_silver .wym_panel h2 { display: block; font-size: 11px; }
+
+ /*option: add this class to a section to make it render as a dropdown menu*/
+ .wym_skin_silver .wym_dropdown h2 { display: block; font-size: 11px;}
+ .wym_skin_silver .wym_dropdown ul { position: absolute; background: white; padding: 0px;}
+ .wym_skin_silver .wym_dropdown:hover ul,
+ .wym_skin_silver .wym_dropdown.hover ul { cursor: pointer;}
+ .wym_skin_silver .wym_dropdown ul li a {/*border-bottom: 1px solid #AAA;*/}
+
+ /*option: add this class to a section to make its elements render buttons (icons are only available for the wym_tools section for now)*/
+ .wym_skin_silver .wym_buttons li { float:left;}
+ .wym_skin_silver .wym_buttons a { width: 20px; height: 20px; overflow: hidden; padding: 2px; text-decoration: none !important; border: 1px solid #666; }
+ .wym_skin_silver .wym_buttons a:hover { text-decoration: none !important; border: 1px solid #000;}
+ /*image replacements*/
+ .wym_skin_silver .wym_buttons li a { background: url(images/icons.silver.gif) no-repeat; text-indent: -9999px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_strong a { background-position: 0 -384px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_emphasis a { background-position: 0 -24px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_superscript a { background-position: 0 -432px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_subscript a { background-position: 0 -456px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_ordered_list a { background-position: 0 -48px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_unordered_list a{ background-position: 0 -72px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_indent a { background-position: 0 -600px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_outdent a { background-position: 0 -624px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_undo a { background-position: 0 -504px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_redo a { background-position: 0 -528px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_link a { background-position: 0 -96px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_unlink a { background-position: 0 -168px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_image a { background-position: 0 -120px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_table a { background-position: 0 -144px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_paste a { background-position: 0 -552px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_html a { background-position: 0 -192px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_preview a { background-position: 0 -408px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_gadget a { background-position: 0 -576px;}
+
+ .wym_skin_silver .wym_buttons li.wym_tools_strong a:hover { background-position: -24px -384px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_emphasis a:hover { background-position: -24px -24px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_superscript a:hover { background-position: -24px -432px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_subscript a:hover { background-position: -24px -456px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_ordered_list a:hover { background-position: -24px -48px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_unordered_list a:hover{ background-position: -24px -72px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_indent a:hover { background-position: -24px -600px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_outdent a:hover { background-position: -24px -624px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_undo a:hover { background-position: -24px -504px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_redo a:hover { background-position: -24px -528px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_link a:hover { background-position: -24px -96px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_unlink a:hover { background-position: -24px -168px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_image a:hover { background-position: -24px -120px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_table a:hover { background-position: -24px -144px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_paste a:hover { background-position: -24px -552px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_html a:hover { background-position: -24px -192px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_preview a:hover { background-position: -24px -408px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_gadget a:hover { background-position: -24px -576px;}
+
+/*DECORATION*/
+ .wym_skin_silver .wym_section h2 { background: #ddd; border: none;}
+ .wym_skin_silver .wym_section h2 span { color: gray;}
+ .wym_skin_silver .wym_panel { padding: 0; border: solid gray; border-width: 0px;}
+ .wym_skin_silver .wym_panel ul { margin: 2px 0 5px; }
+ .wym_skin_silver .wym_dropdown { padding: 0; border: none; }
+ .wym_skin_silver .wym_dropdown ul { border: none; margin-left: -1px; padding: 0px;}
+
+/*DIALOGS*/
+ .wym_dialog div.row { margin-bottom: 5px;}
+ .wym_dialog div.row input { margin-right: 5px;}
+ .wym_dialog div.row label { float: left; width: 150px; display: block; text-align: right; margin-right: 10px; }
+ .wym_dialog div.row-indent { padding-left: 160px; }
+ /*autoclearing*/
+ .wym_dialog div.row:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ .wym_dialog div.row { display: inline-block; }
+ /* Hides from IE-mac \*/
+ * html .wym_dialog div.row { height: 1%; }
+ .wym_dialog div.row { display: block; }
+ /* End hide from IE-mac */
+
+/*WYMEDITOR_LINK*/
+ a.wym_wymeditor_link
+ {
+ text-indent: -9999px;
+ float: right;
+ display: block;
+ width: 50px;
+ height: 15px;
+ background: url(../wymeditor_icon.png);
+ background-position: 1px 1px;
+ background-repeat: no-repeat;
+ overflow: hidden;
+ text-decoration: none;
+ padding: 1px !important;
+ border: 1px solid #333 !important;
+ background-color: #FFF !important;
+ }
+
+.wym_box
+{
+ padding: 0px !important;
+ margin: 0px;
+}
+.wym_inner
+{
+ border-left: 1px solid #FFF;
+ border-top: 1px solid #FFF;
+ border-right: 1px solid #FFF;
+ border-bottom: 1px solid #FFF;
+ padding: 5px;
+ background-color: #B8C1C4;
+ height: auto;
+}
+
+.clear {clear: both;}
+
+div.wym_dropdown
+{
+ cursor: pointer;
+ width: 138px !important;
+ margin: 0px 4px 10px 0px !important;
+ padding: 0px;
+ z-index: 1001;
+ display: block;
+ border: 1px solid red;
+}
+
+div.wym_dropdown ul
+{
+ display: none;
+ width: 124px;
+ padding: 0px !important;
+ margin: 0px !important;
+ list-style-type: none;
+ list-style-image: none;
+ z-index: 1002;
+ position: absolute;
+ border-top: 1px solid #AAA;
+}
+
+div.wym_dropdown ul li
+{
+ width: 146px;
+ height: 20px;
+ padding: 0px !important;
+ margin: 0px;
+ border: 1px solid #777;
+ border-top: none;
+ background: #DDD;
+ list-style-image: none;
+}
+
+div.wym_dropdown h2
+{
+ width: 138px;
+ height: 16px;
+ color: #000 !important;
+ background-image: url(images/bg.selector.silver.gif) !important;
+ background-position: 0px -18px;
+ background-repeat: no-repeat;
+ border: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px !important;
+ font-weight: bold !important;
+ padding: 2px 0px 0px 10px !important;
+ margin: 0px !important;
+}
+
+.wym_skin_silver .wym_panel h2
+{
+ width: 138px;
+ height: 16px;
+ color: #000 !important;
+ background-image: url(images/bg.header.gif) !important;
+ background-position: 0px 0px;
+ background-repeat: no-repeat;
+ border: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px !important;
+ font-weight: bold !important;
+ padding: 2px 0px 0px 10px !important;
+ margin: 0px !important;
+}
+
+.wym_skin_silver .wym_panel ul
+{
+ margin-top: 0px !important;
+}
+
+.wym_skin_silver .wym_panel ul li
+{
+ width: 146px;
+ height: 20px;
+ padding: 0px !important;
+ margin: 0px;
+ border: 1px solid #777;
+ border-top: none;
+ background: #DDD;
+ list-style-image: none;
+}
+
+.wym_skin_silver .wym_panel a,
+div.wym_dropdown a
+{
+ text-decoration: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px;
+ padding: 5px 0px 0px 10px !important;
+ display: block;
+ width: 136px;
+ height: 15px;
+ color: #000;
+ text-align: left !important;
+ margin-left: 0px !important;
+}
+
+div.wym_dropdown a:hover,
+.wym_skin_silver .wym_panel a:hover
+{
+ background: #BBB;
+ border-bottom: none !important;
+}
diff --git a/studio/static/js/wymeditor/skins/silver/.svn/text-base/skin.js.svn-base b/studio/static/js/wymeditor/skins/silver/.svn/text-base/skin.js.svn-base
new file mode 100644
index 0000000..948ed91
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/.svn/text-base/skin.js.svn-base
@@ -0,0 +1,61 @@
+/* This file is part of the Silver skin for WYMeditor by Scott Edwin Lewis */
+
+jQuery.fn.selectify = function() {
+ return this.each(function() {
+ jQuery(this).hover(
+ function() {
+ jQuery("h2", this).css("background-position", "0px -18px");
+ jQuery("ul", this).fadeIn("fast");
+ },
+ function() {
+ jQuery("h2", this).css("background-position", "");
+ jQuery("ul", this).fadeOut("fast");
+ }
+ );
+ });
+};
+
+WYMeditor.SKINS['silver'] = {
+
+ init: function(wym) {
+
+ //add some elements to improve the rendering
+ jQuery(wym._box)
+ .append('<div class="clear"></div>')
+ .wrapInner('<div class="wym_inner"></div>');
+
+ //render following sections as panels
+ jQuery(wym._box).find(wym._options.classesSelector)
+ .addClass("wym_panel");
+
+ //render following sections as buttons
+ jQuery(wym._box).find(wym._options.toolsSelector)
+ .addClass("wym_buttons");
+
+ //render following sections as dropdown menus
+ jQuery(wym._box).find(wym._options.containersSelector)
+ .addClass("wym_dropdown")
+ .selectify();
+
+ // auto add some margin to the main area sides if left area
+ // or right area are not empty (if they contain sections)
+ jQuery(wym._box).find("div.wym_area_right ul")
+ .parents("div.wym_area_right").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-right": "155px"});
+
+ jQuery(wym._box).find("div.wym_area_left ul")
+ .parents("div.wym_area_left").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-left": "155px"});
+
+ //make hover work under IE < 7
+ jQuery(wym._box).find(".wym_section").hover(function(){
+ jQuery(this).addClass("hover");
+ },function(){
+ jQuery(this).removeClass("hover");
+ });
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/silver/COPYING b/studio/static/js/wymeditor/skins/silver/COPYING
new file mode 100755
index 0000000..94a9ed0
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/studio/static/js/wymeditor/skins/silver/README b/studio/static/js/wymeditor/skins/silver/README
new file mode 100755
index 0000000..130dc46
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/README
@@ -0,0 +1,27 @@
+/**
+* @version Alpha 0.1 2008-05-10 23:28:43 $
+* @package Silver skin for WYMeditor
+* @copyright Copyright (C) 2008 Scott Edwin Lewis. All rights reserved.
+* @license GNU/GPL, see COPYING
+* Silver skin for WYMeditor is free software and is licensed under the
+* GNU General Public License. See COPYING for copyright notices and details.
+*/
+
+Adds custom buttons and color palette to the WYMeditor XHTML Editor.
+
+INSTALLATION:
+
+1. Copy the entire /silver/ directory to /wymeditor/skins/
+2. Initialize the WYMeditor 'skin' option as below:
+
+<script type="text/javascript">
+jQuery(function() {
+
+ jQuery('.wymeditor').wymeditor({
+ skin: 'silver'
+ });
+
+});
+</script>
+
+That's it. You're done.
diff --git a/studio/static/js/wymeditor/skins/silver/images/.svn/entries b/studio/static/js/wymeditor/skins/silver/images/.svn/entries
new file mode 100644
index 0000000..d70fd13
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/.svn/entries
@@ -0,0 +1,164 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/skins/silver/images
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2008-05-12T20:05:54.287558Z
+494
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+icons.silver.gif
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+3d55143203f242061d02ed4387e3c498
+2008-05-12T20:05:54.287558Z
+494
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+15382
+
+bg.header.gif
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+4871b677b0af34f02d3a51046dd51f20
+2008-05-12T20:05:54.287558Z
+494
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+781
+
+bg.wymeditor.png
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+dae577218f4bdd6f59197e3d8c8c9ea6
+2008-05-12T20:05:54.287558Z
+494
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+498
+
+bg.selector.silver.gif
+file
+
+
+
+
+2011-07-13T16:45:39.000000Z
+1101554f412121db5ad6157f366515e3
+2008-05-12T20:05:54.287558Z
+494
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1621
+
diff --git a/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.header.gif.svn-base b/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.header.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.header.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.selector.silver.gif.svn-base b/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.selector.silver.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.selector.silver.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.wymeditor.png.svn-base b/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.wymeditor.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/bg.wymeditor.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/icons.silver.gif.svn-base b/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/icons.silver.gif.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/.svn/prop-base/icons.silver.gif.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.header.gif.svn-base b/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.header.gif.svn-base
new file mode 100644
index 0000000..b2d2907
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.header.gif.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.selector.silver.gif.svn-base b/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.selector.silver.gif.svn-base
new file mode 100644
index 0000000..e65976b
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.selector.silver.gif.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.wymeditor.png.svn-base b/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.wymeditor.png.svn-base
new file mode 100644
index 0000000..1e84813
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/bg.wymeditor.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/icons.silver.gif.svn-base b/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/icons.silver.gif.svn-base
new file mode 100644
index 0000000..8c6a4fb
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/.svn/text-base/icons.silver.gif.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/silver/images/bg.header.gif b/studio/static/js/wymeditor/skins/silver/images/bg.header.gif
new file mode 100644
index 0000000..b2d2907
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/bg.header.gif
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/silver/images/bg.selector.silver.gif b/studio/static/js/wymeditor/skins/silver/images/bg.selector.silver.gif
new file mode 100644
index 0000000..e65976b
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/bg.selector.silver.gif
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/silver/images/bg.wymeditor.png b/studio/static/js/wymeditor/skins/silver/images/bg.wymeditor.png
new file mode 100644
index 0000000..1e84813
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/bg.wymeditor.png
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/silver/images/icons.silver.gif b/studio/static/js/wymeditor/skins/silver/images/icons.silver.gif
new file mode 100644
index 0000000..8c6a4fb
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/images/icons.silver.gif
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/silver/skin.css b/studio/static/js/wymeditor/skins/silver/skin.css
new file mode 100644
index 0000000..56e3248
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/skin.css
@@ -0,0 +1,297 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * screen.css
+ * main stylesheet for the default WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+ * Scott Edwin Lewis
+*/
+
+/*TRYING TO RESET STYLES THAT MAY INTERFERE WITH WYMEDITOR*/
+ .wym_skin_silver p, .wym_skin_silver h2, .wym_skin_silver h3,
+ .wym_skin_silver ul, .wym_skin_silver li { background: transparent url(); margin: 0; padding: 0; border-width:0; list-style: none; }
+
+
+/*HIDDEN BY DEFAULT*/
+ .wym_skin_silver .wym_area_left { display: none; }
+ .wym_skin_silver .wym_area_right { display: block; }
+
+
+/*TYPO*/
+ .wym_skin_silver { font-size: 62.5%; font-family: Verdana, Arial, sans-serif; }
+ .wym_skin_silver h2 { font-size: 110%; /* = 11px */}
+ .wym_skin_silver h3 { font-size: 100%; /* = 10px */}
+ .wym_skin_silver li { font-size: 100%; /* = 10px */}
+
+
+/*WYM_BOX*/
+ .wym_skin_silver { border: 1px solid gray; background: #E8E8E8; padding: 0px; margin: 0px;}
+
+ /*auto-clear the wym_box*/
+ .wym_skin_silver:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_silver { height: 1%;}
+
+
+/*WYM_HTML*/
+ .wym_skin_silver .wym_html { width: 98%;}
+ .wym_skin_silver .wym_html textarea { width: 100%; height: 200px; border: 1px solid gray; background: white; }
+
+
+/*WYM_IFRAME*/
+ .wym_skin_silver .wym_iframe { width: 98%;}
+ .wym_skin_silver .wym_iframe iframe { width: 100%; height: 200px; border: 1px solid gray; background: white }
+
+
+/*AREAS*/
+ .wym_skin_silver .wym_area_left { width: 150px; float: left;}
+ .wym_skin_silver .wym_area_right { width: 150px; float: right;}
+ .wym_skin_silver .wym_area_bottom { height: 1%; clear: both;}
+ * html .wym_skin_silver .wym_area_main { height: 1%;}
+ * html .wym_skin_silver .wym_area_top { height: 1%;}
+ *+html .wym_skin_silver .wym_area_top { height: 1%;}
+
+/*SECTIONS SYSTEM*/
+
+ /*common defaults for all sections*/
+ .wym_skin_silver .wym_section { margin-bottom: 5px; }
+ .wym_skin_silver .wym_section h2,
+ .wym_skin_silver .wym_section h3 { padding: 1px 3px; margin: 0; cursor: pointer; }
+ .wym_skin_silver .wym_section a { padding: 5px 0px 0px 10px; display: block; text-decoration: none; color: black; }
+ .wym_skin_silver .wym_section a:hover { /*background-color: #DDD;*/}
+ /*hide section titles by default*/
+ .wym_skin_silver .wym_section h2 { display: none; }
+ /*disable any margin-collapse*/
+ .wym_skin_silver .wym_section { padding-top: 1px; padding-bottom: 1px; }
+ /*auto-clear sections*/
+ .wym_skin_silver .wym_section ul:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; padding: 0px; }
+ * html .wym_skin_silver .wym_section ul { height: 1%;}
+ .wym_skin_silver .wym_section li {}
+
+ /*option: add this class to a section to make it render as a panel*/
+ .wym_skin_silver .wym_panel { }
+ .wym_skin_silver .wym_panel h2 { display: block; font-size: 11px; }
+
+ /*option: add this class to a section to make it render as a dropdown menu*/
+ .wym_skin_silver .wym_dropdown h2 { display: block; font-size: 11px;}
+ .wym_skin_silver .wym_dropdown ul { position: absolute; background: white; padding: 0px;}
+ .wym_skin_silver .wym_dropdown:hover ul,
+ .wym_skin_silver .wym_dropdown.hover ul { cursor: pointer;}
+ .wym_skin_silver .wym_dropdown ul li a {/*border-bottom: 1px solid #AAA;*/}
+
+ /*option: add this class to a section to make its elements render buttons (icons are only available for the wym_tools section for now)*/
+ .wym_skin_silver .wym_buttons li { float:left;}
+ .wym_skin_silver .wym_buttons a { width: 20px; height: 20px; overflow: hidden; padding: 2px; text-decoration: none !important; border: 1px solid #666; }
+ .wym_skin_silver .wym_buttons a:hover { text-decoration: none !important; border: 1px solid #000;}
+ /*image replacements*/
+ .wym_skin_silver .wym_buttons li a { background: url(images/icons.silver.gif) no-repeat; text-indent: -9999px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_strong a { background-position: 0 -384px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_emphasis a { background-position: 0 -24px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_superscript a { background-position: 0 -432px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_subscript a { background-position: 0 -456px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_ordered_list a { background-position: 0 -48px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_unordered_list a{ background-position: 0 -72px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_indent a { background-position: 0 -600px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_outdent a { background-position: 0 -624px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_undo a { background-position: 0 -504px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_redo a { background-position: 0 -528px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_link a { background-position: 0 -96px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_unlink a { background-position: 0 -168px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_image a { background-position: 0 -120px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_table a { background-position: 0 -144px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_paste a { background-position: 0 -552px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_html a { background-position: 0 -192px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_preview a { background-position: 0 -408px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_gadget a { background-position: 0 -576px;}
+
+ .wym_skin_silver .wym_buttons li.wym_tools_strong a:hover { background-position: -24px -384px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_emphasis a:hover { background-position: -24px -24px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_superscript a:hover { background-position: -24px -432px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_subscript a:hover { background-position: -24px -456px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_ordered_list a:hover { background-position: -24px -48px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_unordered_list a:hover{ background-position: -24px -72px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_indent a:hover { background-position: -24px -600px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_outdent a:hover { background-position: -24px -624px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_undo a:hover { background-position: -24px -504px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_redo a:hover { background-position: -24px -528px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_link a:hover { background-position: -24px -96px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_unlink a:hover { background-position: -24px -168px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_image a:hover { background-position: -24px -120px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_table a:hover { background-position: -24px -144px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_paste a:hover { background-position: -24px -552px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_html a:hover { background-position: -24px -192px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_preview a:hover { background-position: -24px -408px;}
+ .wym_skin_silver .wym_buttons li.wym_tools_gadget a:hover { background-position: -24px -576px;}
+
+/*DECORATION*/
+ .wym_skin_silver .wym_section h2 { background: #ddd; border: none;}
+ .wym_skin_silver .wym_section h2 span { color: gray;}
+ .wym_skin_silver .wym_panel { padding: 0; border: solid gray; border-width: 0px;}
+ .wym_skin_silver .wym_panel ul { margin: 2px 0 5px; }
+ .wym_skin_silver .wym_dropdown { padding: 0; border: none; }
+ .wym_skin_silver .wym_dropdown ul { border: none; margin-left: -1px; padding: 0px;}
+
+/*DIALOGS*/
+ .wym_dialog div.row { margin-bottom: 5px;}
+ .wym_dialog div.row input { margin-right: 5px;}
+ .wym_dialog div.row label { float: left; width: 150px; display: block; text-align: right; margin-right: 10px; }
+ .wym_dialog div.row-indent { padding-left: 160px; }
+ /*autoclearing*/
+ .wym_dialog div.row:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ .wym_dialog div.row { display: inline-block; }
+ /* Hides from IE-mac \*/
+ * html .wym_dialog div.row { height: 1%; }
+ .wym_dialog div.row { display: block; }
+ /* End hide from IE-mac */
+
+/*WYMEDITOR_LINK*/
+ a.wym_wymeditor_link
+ {
+ text-indent: -9999px;
+ float: right;
+ display: block;
+ width: 50px;
+ height: 15px;
+ background: url(../wymeditor_icon.png);
+ background-position: 1px 1px;
+ background-repeat: no-repeat;
+ overflow: hidden;
+ text-decoration: none;
+ padding: 1px !important;
+ border: 1px solid #333 !important;
+ background-color: #FFF !important;
+ }
+
+.wym_box
+{
+ padding: 0px !important;
+ margin: 0px;
+}
+.wym_inner
+{
+ border-left: 1px solid #FFF;
+ border-top: 1px solid #FFF;
+ border-right: 1px solid #FFF;
+ border-bottom: 1px solid #FFF;
+ padding: 5px;
+ background-color: #E8E8E8;
+ height: auto;
+}
+
+.clear {clear: both;}
+
+div.wym_dropdown
+{
+ cursor: pointer;
+ width: 138px !important;
+ margin: 0px 4px 10px 0px !important;
+ padding: 0px;
+ z-index: 1001;
+ display: block;
+ border: 1px solid red;
+}
+
+div.wym_dropdown ul
+{
+ display: none;
+ width: 124px;
+ padding: 0px !important;
+ margin: 0px !important;
+ list-style-type: none;
+ list-style-image: none;
+ z-index: 1002;
+ position: absolute;
+ border-top: 1px solid #AAA;
+}
+
+div.wym_dropdown ul li
+{
+ width: 146px;
+ height: 20px;
+ padding: 0px !important;
+ margin: 0px;
+ border: 1px solid #777;
+ border-top: none;
+ background: #DDD;
+ list-style-image: none;
+}
+
+div.wym_dropdown h2
+{
+ width: 138px;
+ height: 16px;
+ color: #000 !important;
+ background-image: url(images/bg.selector.silver.gif) !important;
+ background-position: 0px -18px;
+ background-repeat: no-repeat;
+ border: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px !important;
+ font-weight: bold !important;
+ padding: 2px 0px 0px 10px !important;
+ margin: 0px !important;
+}
+
+.wym_skin_silver .wym_panel h2
+{
+ width: 138px;
+ height: 16px;
+ color: #000 !important;
+ background-image: url(images/bg.header.gif) !important;
+ background-position: 0px 0px;
+ background-repeat: no-repeat;
+ border: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px !important;
+ font-weight: bold !important;
+ padding: 2px 0px 0px 10px !important;
+ margin: 0px !important;
+}
+
+.wym_skin_silver .wym_panel ul
+{
+ margin-top: 0px !important;
+}
+
+.wym_skin_silver .wym_panel ul li
+{
+ width: 146px;
+ height: 20px;
+ padding: 0px !important;
+ margin: 0px;
+ border: 1px solid #777;
+ border-top: none;
+ background: #DDD;
+ list-style-image: none;
+}
+
+.wym_skin_silver .wym_panel a,
+div.wym_dropdown a
+{
+ text-decoration: none;
+ font-family: "Trebuchet MS", Verdana, Arial, Helvetica, Sanserif;
+ font-size: 12px;
+ padding: 5px 0px 0px 10px !important;
+ display: block;
+ width: 136px;
+ height: 15px;
+ color: #000;
+ text-align: left !important;
+ margin-left: 0px !important;
+}
+
+div.wym_dropdown a:hover,
+.wym_skin_silver .wym_panel a:hover
+{
+ background: #BBB;
+ border-bottom: none !important;
+}
diff --git a/studio/static/js/wymeditor/skins/silver/skin.js b/studio/static/js/wymeditor/skins/silver/skin.js
new file mode 100644
index 0000000..948ed91
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/silver/skin.js
@@ -0,0 +1,61 @@
+/* This file is part of the Silver skin for WYMeditor by Scott Edwin Lewis */
+
+jQuery.fn.selectify = function() {
+ return this.each(function() {
+ jQuery(this).hover(
+ function() {
+ jQuery("h2", this).css("background-position", "0px -18px");
+ jQuery("ul", this).fadeIn("fast");
+ },
+ function() {
+ jQuery("h2", this).css("background-position", "");
+ jQuery("ul", this).fadeOut("fast");
+ }
+ );
+ });
+};
+
+WYMeditor.SKINS['silver'] = {
+
+ init: function(wym) {
+
+ //add some elements to improve the rendering
+ jQuery(wym._box)
+ .append('<div class="clear"></div>')
+ .wrapInner('<div class="wym_inner"></div>');
+
+ //render following sections as panels
+ jQuery(wym._box).find(wym._options.classesSelector)
+ .addClass("wym_panel");
+
+ //render following sections as buttons
+ jQuery(wym._box).find(wym._options.toolsSelector)
+ .addClass("wym_buttons");
+
+ //render following sections as dropdown menus
+ jQuery(wym._box).find(wym._options.containersSelector)
+ .addClass("wym_dropdown")
+ .selectify();
+
+ // auto add some margin to the main area sides if left area
+ // or right area are not empty (if they contain sections)
+ jQuery(wym._box).find("div.wym_area_right ul")
+ .parents("div.wym_area_right").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-right": "155px"});
+
+ jQuery(wym._box).find("div.wym_area_left ul")
+ .parents("div.wym_area_left").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-left": "155px"});
+
+ //make hover work under IE < 7
+ jQuery(wym._box).find(".wym_section").hover(function(){
+ jQuery(this).addClass("hover");
+ },function(){
+ jQuery(this).removeClass("hover");
+ });
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/twopanels/.svn/entries b/studio/static/js/wymeditor/skins/twopanels/.svn/entries
new file mode 100644
index 0000000..a477f85
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/twopanels/.svn/entries
@@ -0,0 +1,130 @@
+10
+
+dir
+677
+svn://svn.wymeditor.org/wymeditor/trunk/src/wymeditor/skins/twopanels
+svn://svn.wymeditor.org/wymeditor
+
+
+
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+89e89e35-0a13-0410-8f61-920bba073fa9
+
+skin.js
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+d47d82f6cda558d258263f3949d815f1
+2008-05-30T19:59:08.978756Z
+502
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1380
+
+skin.css
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+5da884f153705d38e473d5cf4bdc7deb
+2009-05-27T19:20:55.910061Z
+632
+jf.hovinne
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+8045
+
+icons.png
+file
+
+
+
+
+2011-07-13T16:45:40.000000Z
+45a781288dc799f892fa517355ff80b6
+2008-05-30T19:59:08.978756Z
+502
+jf.hovinne
+has-props
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3651
+
diff --git a/studio/static/js/wymeditor/skins/twopanels/.svn/prop-base/icons.png.svn-base b/studio/static/js/wymeditor/skins/twopanels/.svn/prop-base/icons.png.svn-base
new file mode 100644
index 0000000..5e9587e
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/twopanels/.svn/prop-base/icons.png.svn-base
@@ -0,0 +1,5 @@
+K 13
+svn:mime-type
+V 24
+application/octet-stream
+END
diff --git a/studio/static/js/wymeditor/skins/twopanels/.svn/text-base/icons.png.svn-base b/studio/static/js/wymeditor/skins/twopanels/.svn/text-base/icons.png.svn-base
new file mode 100644
index 0000000..c6eb463
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/twopanels/.svn/text-base/icons.png.svn-base
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/twopanels/.svn/text-base/skin.css.svn-base b/studio/static/js/wymeditor/skins/twopanels/.svn/text-base/skin.css.svn-base
new file mode 100644
index 0000000..7e6b8fd
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/twopanels/.svn/text-base/skin.css.svn-base
@@ -0,0 +1,134 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * screen.css
+ * main stylesheet for the WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+ * Jean-Francois Hovinne
+*/
+
+/*TRYING TO RESET STYLES THAT MAY INTERFERE WITH WYMEDITOR*/
+ .wym_skin_twopanels p, .wym_skin_twopanels h2, .wym_skin_twopanels h3,
+ .wym_skin_twopanels ul, .wym_skin_twopanels li { background: transparent url(); margin: 0; padding: 0; border-width:0; list-style: none; }
+
+
+/*HIDDEN BY DEFAULT*/
+ .wym_skin_twopanels .wym_area_left { display: block; }
+ .wym_skin_twopanels .wym_area_right { display: block; }
+
+
+/*TYPO*/
+ .wym_skin_twopanels { font-size: 62.5%; font-family: Verdana, Arial, sans-serif; }
+ .wym_skin_twopanels h2 { font-size: 110%; /* = 11px */}
+ .wym_skin_twopanels h3 { font-size: 100%; /* = 10px */}
+ .wym_skin_twopanels li { font-size: 100%; /* = 10px */}
+
+
+/*WYM_BOX*/
+ .wym_skin_twopanels { border: 1px solid gray; background: #f2f2f2; padding: 5px}
+
+ /*auto-clear the wym_box*/
+ .wym_skin_twopanels:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_twopanels { height: 1%;}
+
+
+/*WYM_HTML*/
+ .wym_skin_twopanels .wym_html { width: 98%;}
+ .wym_skin_twopanels .wym_html textarea { width: 100%; height: 200px; border: 1px solid gray; background: white; }
+
+
+/*WYM_IFRAME*/
+ .wym_skin_twopanels .wym_iframe { width: 98%;}
+ .wym_skin_twopanels .wym_iframe iframe { width: 100%; height: 200px; border: 1px solid gray; background: white }
+
+
+/*AREAS*/
+ .wym_skin_twopanels .wym_area_left { width: 100px; float: left;}
+ .wym_skin_twopanels .wym_area_right { width: 150px; float: right;}
+ .wym_skin_twopanels .wym_area_bottom { height: 1%; clear: both;}
+ * html .wym_skin_twopanels .wym_area_main { height: 1%;}
+ * html .wym_skin_twopanels .wym_area_top { height: 1%;}
+ *+html .wym_skin_twopanels .wym_area_top { height: 1%;}
+
+/*SECTIONS SYSTEM*/
+
+ /*common defaults for all sections*/
+ .wym_skin_twopanels .wym_section { margin-bottom: 5px; }
+ .wym_skin_twopanels .wym_section h2,
+ .wym_skin_twopanels .wym_section h3 { padding: 1px 3px; margin: 0; }
+ .wym_skin_twopanels .wym_section a { padding: 0 3px; display: block; text-decoration: none; color: black; }
+ .wym_skin_twopanels .wym_section a:hover { background-color: yellow; }
+ /*hide section titles by default*/
+ .wym_skin_twopanels .wym_section h2 { display: none; }
+ /*disable any margin-collapse*/
+ .wym_skin_twopanels .wym_section { padding-top: 1px; padding-bottom: 1px; }
+ /*auto-clear sections*/
+ .wym_skin_twopanels .wym_section ul:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_twopanels .wym_section ul { height: 1%;}
+
+ /*option: add this class to a section to make it render as a panel*/
+ .wym_skin_twopanels .wym_panel { }
+ .wym_skin_twopanels .wym_panel h2 { display: block; }
+
+ /*option: add this class to a section to make it render as a dropdown menu*/
+ .wym_skin_twopanels .wym_dropdown h2 { display: block; }
+ .wym_skin_twopanels .wym_dropdown ul { display: none; position: absolute; background: white; }
+ .wym_skin_twopanels .wym_dropdown:hover ul,
+ .wym_skin_twopanels .wym_dropdown.hover ul { display: block; }
+
+ /*option: add this class to a section to make its elements render buttons (icons are only available for the wym_tools section for now)*/
+ .wym_skin_twopanels .wym_buttons li { float:left;}
+ .wym_skin_twopanels .wym_buttons a { width: 20px; height: 20px; overflow: hidden; padding: 2px }
+ /*image replacements*/
+ .wym_skin_twopanels .wym_buttons li a { background: url(icons.png) no-repeat; text-indent: -9999px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_strong a { background-position: 0 -382px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_emphasis a { background-position: 0 -22px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_superscript a { background-position: 0 -430px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_subscript a { background-position: 0 -454px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_ordered_list a { background-position: 0 -48px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_unordered_list a{ background-position: 0 -72px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_indent a { background-position: 0 -574px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_outdent a { background-position: 0 -598px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_undo a { background-position: 0 -502px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_redo a { background-position: 0 -526px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_link a { background-position: 0 -96px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_unlink a { background-position: 0 -168px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_image a { background-position: 0 -121px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_table a { background-position: 0 -144px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_paste a { background-position: 0 -552px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_html a { background-position: 0 -193px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_preview a { background-position: 0 -408px;}
+
+/*DECORATION*/
+ .wym_skin_twopanels .wym_section h2 { background: #ddd; border: solid gray; border-width: 0 0 1px;}
+ .wym_skin_twopanels .wym_section h2 span { color: gray;}
+ .wym_skin_twopanels .wym_panel { padding: 0; border: solid gray; border-width: 1px; background: white;}
+ .wym_skin_twopanels .wym_panel ul { margin: 2px 0 5px; }
+ .wym_skin_twopanels .wym_dropdown { padding: 0; border: solid gray; border-width: 1px 1px 0 1px; }
+ .wym_skin_twopanels .wym_dropdown ul { border: solid gray; border-width: 0 1px 1px 1px; margin-left: -1px; padding: 5px 10px 5px 3px;}
+
+/*DIALOGS*/
+ .wym_dialog div.row { margin-bottom: 5px;}
+ .wym_dialog div.row input { margin-right: 5px;}
+ .wym_dialog div.row label { float: left; width: 150px; display: block; text-align: right; margin-right: 10px; }
+ .wym_dialog div.row-indent { padding-left: 160px; }
+ /*autoclearing*/
+ .wym_dialog div.row:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ .wym_dialog div.row { display: inline-block; }
+ /* Hides from IE-mac \*/
+ * html .wym_dialog div.row { height: 1%; }
+ .wym_dialog div.row { display: block; }
+ /* End hide from IE-mac */
+
+/*WYMEDITOR_LINK*/
+ a.wym_wymeditor_link { text-indent: -9999px; float: right; display: block; width: 50px; height: 15px; background: url(../wymeditor_icon.png); overflow: hidden; text-decoration: none; }
diff --git a/studio/static/js/wymeditor/skins/twopanels/.svn/text-base/skin.js.svn-base b/studio/static/js/wymeditor/skins/twopanels/.svn/text-base/skin.js.svn-base
new file mode 100644
index 0000000..e82efc5
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/twopanels/.svn/text-base/skin.js.svn-base
@@ -0,0 +1,39 @@
+WYMeditor.SKINS['twopanels'] = {
+
+ init: function(wym) {
+
+ //move the containers panel to the left area
+ jQuery(wym._box).find(wym._options.containersSelector)
+ .appendTo("div.wym_area_left");
+
+ //render following sections as panels
+ jQuery(wym._box).find(wym._options.classesSelector + ', '
+ + wym._options.containersSelector)
+ .addClass("wym_panel");
+
+ //render following sections as buttons
+ jQuery(wym._box).find(wym._options.toolsSelector)
+ .addClass("wym_buttons");
+
+ // auto add some margin to the main area sides if left area
+ // or right area are not empty (if they contain sections)
+ jQuery(wym._box).find("div.wym_area_right ul")
+ .parents("div.wym_area_right").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-right": "155px"});
+
+ jQuery(wym._box).find("div.wym_area_left ul")
+ .parents("div.wym_area_left").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-left": "115px"});
+
+ //make hover work under IE < 7
+ jQuery(wym._box).find(".wym_section").hover(function(){
+ jQuery(this).addClass("hover");
+ },function(){
+ jQuery(this).removeClass("hover");
+ });
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/twopanels/icons.png b/studio/static/js/wymeditor/skins/twopanels/icons.png
new file mode 100644
index 0000000..c6eb463
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/twopanels/icons.png
Binary files differ
diff --git a/studio/static/js/wymeditor/skins/twopanels/skin.css b/studio/static/js/wymeditor/skins/twopanels/skin.css
new file mode 100644
index 0000000..7e6b8fd
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/twopanels/skin.css
@@ -0,0 +1,134 @@
+/*
+ * WYMeditor : what you see is What You Mean web-based editor
+ * Copyright (c) 2005 - 2009 Jean-Francois Hovinne, http://www.wymeditor.org/
+ * Dual licensed under the MIT (MIT-license.txt)
+ * and GPL (GPL-license.txt) licenses.
+ *
+ * For further information visit:
+ * http://www.wymeditor.org/
+ *
+ * File Name:
+ * screen.css
+ * main stylesheet for the WYMeditor skin
+ * See the documentation for more info.
+ *
+ * File Authors:
+ * Daniel Reszka (d.reszka a-t wymeditor dotorg)
+ * Jean-Francois Hovinne
+*/
+
+/*TRYING TO RESET STYLES THAT MAY INTERFERE WITH WYMEDITOR*/
+ .wym_skin_twopanels p, .wym_skin_twopanels h2, .wym_skin_twopanels h3,
+ .wym_skin_twopanels ul, .wym_skin_twopanels li { background: transparent url(); margin: 0; padding: 0; border-width:0; list-style: none; }
+
+
+/*HIDDEN BY DEFAULT*/
+ .wym_skin_twopanels .wym_area_left { display: block; }
+ .wym_skin_twopanels .wym_area_right { display: block; }
+
+
+/*TYPO*/
+ .wym_skin_twopanels { font-size: 62.5%; font-family: Verdana, Arial, sans-serif; }
+ .wym_skin_twopanels h2 { font-size: 110%; /* = 11px */}
+ .wym_skin_twopanels h3 { font-size: 100%; /* = 10px */}
+ .wym_skin_twopanels li { font-size: 100%; /* = 10px */}
+
+
+/*WYM_BOX*/
+ .wym_skin_twopanels { border: 1px solid gray; background: #f2f2f2; padding: 5px}
+
+ /*auto-clear the wym_box*/
+ .wym_skin_twopanels:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_twopanels { height: 1%;}
+
+
+/*WYM_HTML*/
+ .wym_skin_twopanels .wym_html { width: 98%;}
+ .wym_skin_twopanels .wym_html textarea { width: 100%; height: 200px; border: 1px solid gray; background: white; }
+
+
+/*WYM_IFRAME*/
+ .wym_skin_twopanels .wym_iframe { width: 98%;}
+ .wym_skin_twopanels .wym_iframe iframe { width: 100%; height: 200px; border: 1px solid gray; background: white }
+
+
+/*AREAS*/
+ .wym_skin_twopanels .wym_area_left { width: 100px; float: left;}
+ .wym_skin_twopanels .wym_area_right { width: 150px; float: right;}
+ .wym_skin_twopanels .wym_area_bottom { height: 1%; clear: both;}
+ * html .wym_skin_twopanels .wym_area_main { height: 1%;}
+ * html .wym_skin_twopanels .wym_area_top { height: 1%;}
+ *+html .wym_skin_twopanels .wym_area_top { height: 1%;}
+
+/*SECTIONS SYSTEM*/
+
+ /*common defaults for all sections*/
+ .wym_skin_twopanels .wym_section { margin-bottom: 5px; }
+ .wym_skin_twopanels .wym_section h2,
+ .wym_skin_twopanels .wym_section h3 { padding: 1px 3px; margin: 0; }
+ .wym_skin_twopanels .wym_section a { padding: 0 3px; display: block; text-decoration: none; color: black; }
+ .wym_skin_twopanels .wym_section a:hover { background-color: yellow; }
+ /*hide section titles by default*/
+ .wym_skin_twopanels .wym_section h2 { display: none; }
+ /*disable any margin-collapse*/
+ .wym_skin_twopanels .wym_section { padding-top: 1px; padding-bottom: 1px; }
+ /*auto-clear sections*/
+ .wym_skin_twopanels .wym_section ul:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ * html .wym_skin_twopanels .wym_section ul { height: 1%;}
+
+ /*option: add this class to a section to make it render as a panel*/
+ .wym_skin_twopanels .wym_panel { }
+ .wym_skin_twopanels .wym_panel h2 { display: block; }
+
+ /*option: add this class to a section to make it render as a dropdown menu*/
+ .wym_skin_twopanels .wym_dropdown h2 { display: block; }
+ .wym_skin_twopanels .wym_dropdown ul { display: none; position: absolute; background: white; }
+ .wym_skin_twopanels .wym_dropdown:hover ul,
+ .wym_skin_twopanels .wym_dropdown.hover ul { display: block; }
+
+ /*option: add this class to a section to make its elements render buttons (icons are only available for the wym_tools section for now)*/
+ .wym_skin_twopanels .wym_buttons li { float:left;}
+ .wym_skin_twopanels .wym_buttons a { width: 20px; height: 20px; overflow: hidden; padding: 2px }
+ /*image replacements*/
+ .wym_skin_twopanels .wym_buttons li a { background: url(icons.png) no-repeat; text-indent: -9999px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_strong a { background-position: 0 -382px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_emphasis a { background-position: 0 -22px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_superscript a { background-position: 0 -430px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_subscript a { background-position: 0 -454px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_ordered_list a { background-position: 0 -48px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_unordered_list a{ background-position: 0 -72px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_indent a { background-position: 0 -574px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_outdent a { background-position: 0 -598px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_undo a { background-position: 0 -502px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_redo a { background-position: 0 -526px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_link a { background-position: 0 -96px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_unlink a { background-position: 0 -168px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_image a { background-position: 0 -121px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_table a { background-position: 0 -144px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_paste a { background-position: 0 -552px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_html a { background-position: 0 -193px;}
+ .wym_skin_twopanels .wym_buttons li.wym_tools_preview a { background-position: 0 -408px;}
+
+/*DECORATION*/
+ .wym_skin_twopanels .wym_section h2 { background: #ddd; border: solid gray; border-width: 0 0 1px;}
+ .wym_skin_twopanels .wym_section h2 span { color: gray;}
+ .wym_skin_twopanels .wym_panel { padding: 0; border: solid gray; border-width: 1px; background: white;}
+ .wym_skin_twopanels .wym_panel ul { margin: 2px 0 5px; }
+ .wym_skin_twopanels .wym_dropdown { padding: 0; border: solid gray; border-width: 1px 1px 0 1px; }
+ .wym_skin_twopanels .wym_dropdown ul { border: solid gray; border-width: 0 1px 1px 1px; margin-left: -1px; padding: 5px 10px 5px 3px;}
+
+/*DIALOGS*/
+ .wym_dialog div.row { margin-bottom: 5px;}
+ .wym_dialog div.row input { margin-right: 5px;}
+ .wym_dialog div.row label { float: left; width: 150px; display: block; text-align: right; margin-right: 10px; }
+ .wym_dialog div.row-indent { padding-left: 160px; }
+ /*autoclearing*/
+ .wym_dialog div.row:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+ .wym_dialog div.row { display: inline-block; }
+ /* Hides from IE-mac \*/
+ * html .wym_dialog div.row { height: 1%; }
+ .wym_dialog div.row { display: block; }
+ /* End hide from IE-mac */
+
+/*WYMEDITOR_LINK*/
+ a.wym_wymeditor_link { text-indent: -9999px; float: right; display: block; width: 50px; height: 15px; background: url(../wymeditor_icon.png); overflow: hidden; text-decoration: none; }
diff --git a/studio/static/js/wymeditor/skins/twopanels/skin.js b/studio/static/js/wymeditor/skins/twopanels/skin.js
new file mode 100644
index 0000000..e82efc5
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/twopanels/skin.js
@@ -0,0 +1,39 @@
+WYMeditor.SKINS['twopanels'] = {
+
+ init: function(wym) {
+
+ //move the containers panel to the left area
+ jQuery(wym._box).find(wym._options.containersSelector)
+ .appendTo("div.wym_area_left");
+
+ //render following sections as panels
+ jQuery(wym._box).find(wym._options.classesSelector + ', '
+ + wym._options.containersSelector)
+ .addClass("wym_panel");
+
+ //render following sections as buttons
+ jQuery(wym._box).find(wym._options.toolsSelector)
+ .addClass("wym_buttons");
+
+ // auto add some margin to the main area sides if left area
+ // or right area are not empty (if they contain sections)
+ jQuery(wym._box).find("div.wym_area_right ul")
+ .parents("div.wym_area_right").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-right": "155px"});
+
+ jQuery(wym._box).find("div.wym_area_left ul")
+ .parents("div.wym_area_left").show()
+ .parents(wym._options.boxSelector)
+ .find("div.wym_area_main")
+ .css({"margin-left": "115px"});
+
+ //make hover work under IE < 7
+ jQuery(wym._box).find(".wym_section").hover(function(){
+ jQuery(this).addClass("hover");
+ },function(){
+ jQuery(this).removeClass("hover");
+ });
+ }
+};
diff --git a/studio/static/js/wymeditor/skins/wymeditor_icon.png b/studio/static/js/wymeditor/skins/wymeditor_icon.png
new file mode 100644
index 0000000..d4fc155
--- /dev/null
+++ b/studio/static/js/wymeditor/skins/wymeditor_icon.png
Binary files differ