/******************************************************************** * openWYSIWYG v1.47 Copyright (c) 2006 openWebWare.com * Contact us at devs@openwebware.com * This copyright notice MUST stay intact for use. * * $Id: wysiwyg.js,v 1.22 2007/09/08 21:45:57 xhaggi Exp $ * $Revision: 1.22 $ * * An open source WYSIWYG editor for use in web based applications. * For full source code and docs, visit http://www.openwebware.com * * This library is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This library 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 Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License along * with this library; if not, write to the Free Software Foundation, Inc., 59 * Temple Place, Suite 330, Boston, MA 02111-1307 USA ********************************************************************/ var WYSIWYG = { /** * Settings class, holds all customizeable properties */ Settings: function() { // Images Directory this.ImagesDir = "/ow/images/"; // Popups Directory this.PopupsDir = "/ow/popups/"; // CSS Directory File // this.CSSFile = "ow/styles/wysiwyg.css"; this.CSSFile = "/templates/main/editor.css"; // Default WYSIWYG width and height (use px or %) this.Width = "500px"; this.Height = "200px"; // Default stylesheet of the WYSIWYG editor window this.DefaultStyle = "font-family: Arial; font-size: 12px; background-color: #FFFFFF"; // Stylesheet if editor is disabled this.DisabledStyle = "font-family: Arial; font-size: 12px; background-color: #EEEEEE"; // Width + Height of the preview window this.PreviewWidth = 500; this.PreviewHeight = 400; // Confirmation message if you strip any HTML added by word this.RemoveFormatConfMessage = "Clean HTML inserted by MS Word ?"; // Nofication if browser is not supported by openWYSIWYG, leave it blank for no message output. this.NoValidBrowserMessage = ""; // Anchor path to strip, leave it blank to ignore // or define auto to strip the path where the editor is placed // (only IE) this.AnchorPathToStrip = ""; // Image path to strip, leave it blank to ignore // or define auto to strip the path where the editor is placed // (only IE) this.ImagePathToStrip = ""; // Enable / Disable the custom context menu this.ContextMenu = true; // Enabled the status bar update. Within the status bar // node tree of the actually selected element will build this.StatusBarEnabled = false; // If enabled than the capability of the IE inserting line breaks will be inverted. // Normal: ENTER =

, SHIFT + ENTER =
// Inverted: ENTER =
, SHIFT + ENTER =

this.InvertIELineBreaks = false; // Replace line breaks with
tags this.ReplaceLineBreaks = true; // Page that opened the WYSIWYG (Used for the return command) this.Opener = "/index.php"; // Insert image implementation this.ImagePopupFile = ""; this.ImagePopupWidth = 0; this.ImagePopupHeight = 0; // Holds the available buttons displayed // on the toolbar of the editor this.Toolbar = new Array(); this.Toolbar[0] = new Array( "font", "fontsize", "headings", "bold", "italic", "underline", "strikethrough", "seperator", "forecolor", "backcolor", "seperator", "justifyfull", "justifyleft", "justifycenter", "justifyright" ); this.Toolbar[1] = new Array( // "return", // return button disabled by default "unorderedlist", "orderedlist", "outdent", "indent", "seperator", "subscript", "superscript", "seperator", // "removeformat", // "seperator", "undo", "redo", "seperator", // "inserttable", "insertimage", "insertobject", "createlink", "insertsmiley"//, // "seperator", // "viewSource" ); // DropDowns this.DropDowns = new Array(); // Fonts this.DropDowns['font'] = { id: "fonts", command: "FontName", label: "{value}", width: "90px", elements: new Array( "Arial", "Sans Serif", "Tahoma", "Verdana", "Courier New", "Georgia", "Times New Roman", "Impact", "Comic Sans MS" ) }; // Font sizes this.DropDowns['fontsize'] = { id: "fontsizes", command: "FontSize", label: "Size {value}", width: "54px", elements: new Array( "1", "2", "3", "4", "5", "6", "7" ) }; // Headings this.DropDowns['headings'] = { id: "headings", command: "FormatBlock", label: "<{value} style=\"margin:0px;text-decoration:none;font-family:Arial\">{value}", width: "74px", elements: new Array( "H1", "H2", "H3", "H4", "H5", "H6" ) }; // Add the given element to the defined toolbar // on the defined position this.addToolbarElement = function(element, toolbar, position) { if(element != "seperator") {this.removeToolbarElement(element);} if(this.Toolbar[toolbar-1] == null) { this.Toolbar[toolbar-1] = new Array(); } this.Toolbar[toolbar-1].splice(position+1, 1, element); }; // Remove an element from the toolbar this.removeToolbarElement = function(element) { if(element == "seperator") {return;} // do not remove seperators for(var i=0;i])*>( )*\s*<\/span>/gi, ''); str = str.replace(/]*>/gi, ''); str = str.replace(/<\/span[^>]*>/gi, ''); str = str.replace(/])*>( )*\s*<\/p>/gi, ''); str = str.replace(/]*>/gi, ''); str = str.replace(/<\/p[^>]*>/gi, ''); str = str.replace(/])[0-9]>( )*\s*<\/h>/gi, ''); str = str.replace(/][0-9]>/gi, ''); str = str.replace(/<\/h[^>][0-9]>/gi, ''); str = str.replace (/]*>/ig, ''); // var repl_i1 = /]*>/ig; // str = str.replace (repl_i1, ''); str = str.replace (/]*>/ig, ''); str = str.replace (/<\/DIV>/gi, ''); str = str.replace (/<[\/\w?]+:[^>]*>/ig, ''); str = str.replace (/( ){2,}/ig, ' '); str = str.replace (//ig, ''); str = str.replace (/<\/STRONG>/ig, ''); str = str.replace (//ig, ''); str = str.replace (/<\/TT>/ig, ''); str = str.replace (/]*>/ig, ''); str = str.replace (/<\/FONT>/ig, ''); str = str.replace (/STYLE=\"[^\"]*\"/ig, ''); str = str.replace(/<([\w]+) class=([^ |>]*)([^>]*)/gi, '<$1$3'); str = str.replace(/<([\w]+) style="([^"]*)"([^>]*)/gi, '<$1$3'); str = str.replace(/width=([^ |>]*)([^>]*)/gi, ''); str = str.replace(/classname=([^ |>]*)([^>]*)/gi, ''); str = str.replace(/align=([^ |>]*)([^>]*)/gi, ''); str = str.replace(/valign=([^ |>]*)([^>]*)/gi, ''); str = str.replace(/<\\?\??xml[^>]>/gi, ''); str = str.replace(/<\/?\w+:[^>]*>/gi, ''); str = str.replace(//gi, ''); str = str.replace(/o:/gi, ''); str = str.replace(//gi, ''); str = str.replace(/