+++ /dev/null
-// This script allow to use several Epoz WYSIWYG fields.
-// Copyright (C) 2005 Benoît PIN <mailto:pin@cri.ensmp.fr>
-
-var IFramePrefix = "Iframe_";
-var IFramePrefixLength = IFramePrefix.length;
-var DocPrefix = "doc_";
-var DocPrefixLength = DocPrefix.length;
-var CheckBoxPrefix = "CB_";
-var CheckBoxPrefixLength = CheckBoxPrefix.length;
-var ToolBarPrefix = "ToolBar_";
-var ToolBarPrefixLength = ToolBarPrefix.length;
-
-
-function redirectEpoz(iframe) {
- if(EpozElement) {
- if (EpozElement == iframe)
- return;
- changeBorderStyle(EpozElement, "dashed");
- unwrapEpozVariables();
- }
-
- // update Epoz variables
- wrapEpozVariables(iframe);
-
- //cosmetic
- changeBorderStyle(EpozElement, "solid");
- EpozElement.contentWindow.focus();
-}
-
-
-function wrapEpozVariables(iframe) {
- try {
- fieldId = iframe.contentWindow.document.id.slice(DocPrefixLength);
- }
- catch (e) {
- // maybe not an epoz iframe
- return false;
- }
-
- iframe.id = Epoz ;
- EpozElement=iframe;
- EpozTextArea = document.getElementById(fieldId);
- toolBar = document.getElementById(ToolBarPrefix + fieldId);
- toolBar.id = "EpozToolbar";
- checkBox = document.getElementById(CheckBoxPrefix + fieldId);
- checkBox.id = "EpozViewMode";
- return true;
-}
-
-
-function unwrapEpozVariables() {
- if (!EpozElement) // no redirection happens yet.
- return;
- fieldId = EpozElement.contentWindow.document.id.slice(DocPrefixLength);
-
- EpozElement.id = IFramePrefix + fieldId;
- toolBar = document.getElementById("EpozToolbar");
- toolBar.id = ToolBarPrefix + fieldId;
- checkBox = document.getElementById("EpozViewMode");
- checkBox.id = CheckBoxPrefix + fieldId;
-}
-
-
-
-// Initialization functions
-
-if (!formDatas) {
- var formDatas = new Array();
-}
-
-function InitIframe(name, data, path, toolbox, style, button, css, customcss, charset, pageurl) {
- form_name = name;
- form_data = data;
- form_path = path;
- form_toolbox = toolbox;
- form_area_style = style;
- form_button_style = button;
- form_css = css;
- form_customcss = customcss;
- form_charset = charset;
- form_pageurl = pageurl;
-
- var richText;
-
- if (browser.isIE55 || browser.isIE6up) {
- // Mac-IE doesn't support RichText-Edit at the moment
- if (browser.isMac) {
- CreateTextarea();
- richText = false;
- } else {
- CreateEpoz();
- richText = true;
- }
- }
- else if (browser.isGecko) {
- //check to see if midas is enabled
- try {
- // Just a few cleanups for Mozilla
-
- form_data = form_data.replace(/<strong>/ig,'<b>');
- form_data = form_data.replace(/<strong(\s[^>]*)>/ig,'<b$1>');
- form_data = form_data.replace(/<\/strong>/ig,'</b>');
-
- form_data = form_data.replace(/<em>/ig,'<i>');
- form_data = form_data.replace(/<em(\s[^>]*)>/ig,'<i$1>');
- form_data = form_data.replace(/<\/em>/ig,'</i>');
-
- CreateEpoz();
- richText = true;
- } catch (e) {
- CreateTextarea();
- richText = false;
- }
- }
- else {
- CreateTextarea();
- richText = false;
- }
-
- if (richText) {
- // change iframe id
- formDatas[name] = form_data;
- var iframe = document.getElementById(Epoz);
- iframe.id = IFramePrefix + name;
-
- // change EpozToolbar id
- var toolBar = document.getElementById("EpozToolbar");
- toolBar.id = ToolBarPrefix + name;
-
- // Retrieve the switch HTML mode checkbox and change id and onclick function.
- nodes = iframe.parentNode.nextSibling.nextSibling.childNodes;
- var i;
- for (i=0 ; i<nodes.length ; i++ ) {
- if (nodes[i].nodeType == 1 && nodes[i].nodeName == 'INPUT')
- break;
- }
- var checkbox = nodes[i];
- checkbox.id = CheckBoxPrefix + name;
-
- changeBorderStyle(iframe, "dashed");
- }
-}
-
-
-
-function HandleEpozRedirect() {
- if (browser.isIE55 || browser.isIE6up) {
- iframe = event.srcElement;
- }
- else if (browser.isGecko) {
- iframe = this;
- }
- redirectEpoz(iframe);
-}
-
-function redirectAndSwitchViewMode(checkbox) {
- if (checkbox.id != "EpozViewMode") { // Otherwise, EpozElement already targets the good field.
- var iframe = document.getElementById(IFramePrefix + checkbox.id.slice(CheckBoxPrefixLength));
- redirectEpoz(iframe);
- }
- SwitchViewMode(checkbox.checked);
-}
-
-
-// cosmetics
-function changeBorderStyle(ob, borderStyle) {
- s = ob.style;
- s.borderBottomStyle = borderStyle;
- s.borderLeftStyle = borderStyle;
- s.borderRightStyle = borderStyle;
- s.borderTopStyle = borderStyle;
-}
-
-// « overloads »
-
-function InitDocument(iframe) {
- fieldId = iframe.id.slice(IFramePrefixLength);
- var data = formDatas[fieldId];
- delete formDatas[fieldId];
- ta = document.getElementById(fieldId);
- iframe.contentWindow.document.body.innerHTML = data;
- ta.value = data;
- iframe.contentWindow.document.id = DocPrefix + fieldId;
- addListener(iframe, "click", HandleEpozRedirect);
- form = retrieveForm(ta);
- form.onsubmit=SyncEpoz;
- if (browser.isGecko) {
- scriptExpr = 'EnableDesignMode("' + iframe.id + '");';
- window.setTimeout(scriptExpr, 10);
- }
-}
-
-
-function SyncEpoz() {
- if (document.getElementsByTagName)
- var iframes = document.getElementsByTagName("IFRAME");
- else if (document.all)
- var iframes = document.all.tags("IFRAME");
-
-
- for (var i=0;i<iframes.length;i++) {
-
- unwrapEpozVariables();
- if(!wrapEpozVariables(iframes[i]))
- continue;
-
- var html = TidyHTML(GetHTML());
-
- // strip trailing whitespace
- html = (html.replace(/^\s*/,'')).replace(/\s*$/,'');
-
- // remove single br left by Firefox / Mozilla
- if (html=="<br />" || html=="<br>" || html=="<p></p>") {
- html = "";
- }
- form_name = EpozElement.contentWindow.document.id.slice(DocPrefixLength);
- document.getElementById(form_name).value = html;
- }
-
-}
-
-function EnableDesignMode(iframeId) {
- iframe = document.getElementById(iframeId);
- try {
- iframe.contentDocument.designMode = "on";
- iframe.contentWindow.document.addEventListener("keypress", HandleKeyboardEvent, true);
- } catch (e) {
- scriptExpr = 'EnableDesignMode("' + iframeId + '");';
- setTimeout(scriptExpr, 10);
- }
-}
-
-
-
-//utils
-
-function retrieveForm(baseOb){
- var pn = baseOb.parentNode;
-
- while (pn != document) {
- if (pn.nodeName == 'FORM')
- break;
- else {
- pn = pn.parentNode;
- }
- }
- return pn;
-}
-
-
-function addListener(ob, eventName, functionReference){
- if (browser.isIE55 || browser.isIE6up) {
- eventName = "on" + eventName;
- ob.attachEvent(eventName, functionReference);
- }
- else if (browser.isGecko) {
- ob.addEventListener(eventName, functionReference, false);
- }
-
-}
\ No newline at end of file