/********************************************************************
* 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(/