Current File : /home/caballoscriollos/www/espanol/_admin_/editor.js
//
// openWYSIWYG v1.0 Copyright (c) 2006 openWebWare.com
// This copyright notice MUST stay intact for use.
//
// 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
/* ---------------------------------------------------------------------- *\
Global Variables: Set global variables such as images directory,
WYSIWYG Height, Width, and CSS Directory.
\* ---------------------------------------------------------------------- */
// Images Directory
imagesDir = "archivos_editor/icons/";
// CSS Directory
cssDir = "archivos_editor/styles/";
// Popups Directory
popupsDir = "archivos_editor/popups/";
// WYSIWYG Width and Height
wysiwygWidth = 500;
wysiwygHeight = 250;
// Include Style Sheet
document.write('<link rel="stylesheet" type="text/css" href="' +cssDir+ 'styles.css">\n');
/* ---------------------------------------------------------------------- *\
Toolbar Settings: Set the features and buttons available in the WYSIWYG
Toolbar.
\* ---------------------------------------------------------------------- */
// List of available font types
var Fonts = new Array();
Fonts[0] = "Arial";
Fonts[1] = "Sans Serif";
Fonts[2] = "Tahoma";
Fonts[3] = "Verdana";
Fonts[4] = "Courier New";
Fonts[5] = "Georgia";
Fonts[6] = "Times New Roman";
Fonts[7] = "Impact";
Fonts[8] = "Comic Sans MS";
// List of available block formats (not in use)
var BlockFormats = new Array();
BlockFormats[0] = "Address";
BlockFormats[1] = "Bulleted List";
BlockFormats[2] = "Definition";
BlockFormats[3] = "Definition Term";
BlockFormats[4] = "Directory List";
BlockFormats[5] = "Formatted";
BlockFormats[6] = "Heading 1";
BlockFormats[7] = "Heading 2";
BlockFormats[8] = "Heading 3";
BlockFormats[9] = "Heading 4";
BlockFormats[10] = "Heading 5";
BlockFormats[11] = "Heading 6";
BlockFormats[12] = "Menu List";
BlockFormats[13] = "Normal";
BlockFormats[14] = "Numbered List";
// List of available font sizes
var FontSizes = new Array();
FontSizes[0] = "1";
FontSizes[1] = "2";
FontSizes[2] = "3";
FontSizes[3] = "4";
FontSizes[4] = "5";
FontSizes[5] = "6";
FontSizes[6] = "7";
// Order of available commands in toolbar one
var buttonName = new Array();
buttonName[0] = "bold";
buttonName[1] = "italic";
buttonName[2] = "underline";
//buttonName[3] = "strikethrough";
buttonName[4] = "seperator";
buttonName[5] = "subscript";
buttonName[6] = "superscript";
buttonName[7] = "seperator";
buttonName[8] = "justifyleft";
buttonName[9] = "justifycenter";
buttonName[10] = "justifyright";
buttonName[11] = "seperator";
buttonName[12] = "unorderedlist";
buttonName[13] = "orderedlist";
buttonName[14] = "outdent";
buttonName[15] = "indent";
// Order of available commands in toolbar two
var buttonName2 = new Array();
buttonName2[0] = "forecolor";
buttonName2[1] = "backcolor";
buttonName2[2] = "seperator";
buttonName2[3] = "cut";
buttonName2[4] = "copy";
buttonName2[5] = "paste";
buttonName2[6] = "seperator";
buttonName2[7] = "undo";
buttonName2[8] = "redo";
buttonName2[9] = "seperator";
buttonName2[10] = "inserttable";
buttonName2[11] = "insertimage";
buttonName2[12] = "createlink";
buttonName2[13] = "seperator";
buttonName2[14] = "viewSource";
buttonName2[15] = "seperator";
buttonName2[16] = "help";
// List of available actions and their respective ID and images
var ToolbarList = {
//Name buttonID buttonTitle buttonImage buttonImageRollover
"bold": ['Bold', 'Bold', imagesDir + 'bold.gif', imagesDir + 'bold_on.gif'],
"italic": ['Italic', 'Italic', imagesDir + 'italics.gif', imagesDir + 'italics_on.gif'],
"underline": ['Underline', 'Underline', imagesDir + 'underline.gif', imagesDir + 'underline_on.gif'],
"strikethrough": ['Strikethrough', 'Strikethrough', imagesDir + 'strikethrough.gif', imagesDir + 'strikethrough_on.gif'],
"seperator": ['', '', imagesDir + 'seperator.gif', imagesDir + 'seperator.gif'],
"subscript": ['Subscript', 'Subscript', imagesDir + 'subscript.gif', imagesDir + 'subscript_on.gif'],
"superscript": ['Superscript', 'Superscript', imagesDir + 'superscript.gif', imagesDir + 'superscript_on.gif'],
"justifyleft": ['Justifyleft', 'Justifyleft', imagesDir + 'justify_left.gif', imagesDir + 'justify_left_on.gif'],
"justifycenter": ['Justifycenter', 'Justifycenter', imagesDir + 'justify_center.gif', imagesDir + 'justify_center_on.gif'],
"justifyright": ['Justifyright', 'Justifyright', imagesDir + 'justify_right.gif', imagesDir + 'justify_right_on.gif'],
"unorderedlist": ['InsertUnorderedList', 'InsertUnorderedList',imagesDir + 'list_unordered.gif', imagesDir + 'list_unordered_on.gif'],
"orderedlist": ['InsertOrderedList', 'InsertOrderedList', imagesDir + 'list_ordered.gif', imagesDir + 'list_ordered_on.gif'],
"outdent": ['Outdent', 'Outdent', imagesDir + 'indent_left.gif', imagesDir + 'indent_left_on.gif'],
"indent": ['Indent', 'Indent', imagesDir + 'indent_right.gif', imagesDir + 'indent_right_on.gif'],
"cut": ['Cut', 'Cut', imagesDir + 'cut.gif', imagesDir + 'cut_on.gif'],
"copy": ['Copy', 'Copy', imagesDir + 'copy.gif', imagesDir + 'copy_on.gif'],
"paste": ['Paste', 'Paste', imagesDir + 'paste.gif', imagesDir + 'paste_on.gif'],
"forecolor": ['ForeColor', 'ForeColor', imagesDir + 'forecolor.gif', imagesDir + 'forecolor_on.gif'],
"backcolor": ['BackColor', 'BackColor', imagesDir + 'backcolor.gif', imagesDir + 'backcolor_on.gif'],
"undo": ['Undo', 'Undo', imagesDir + 'undo.gif', imagesDir + 'undo_on.gif'],
"redo": ['Redo', 'Redo', imagesDir + 'redo.gif', imagesDir + 'redo_on.gif'],
"inserttable": ['InsertTable', 'InsertTable', imagesDir + 'insert_table.gif', imagesDir + 'insert_table_on.gif'],
"insertimage": ['InsertImage', 'InsertImage', imagesDir + 'insert_picture.gif', imagesDir + 'insert_picture_on.gif'],
"createlink": ['CreateLink', 'CreateLink', imagesDir + 'insert_hyperlink.gif', imagesDir + 'insert_hyperlink_on.gif'],
"viewSource": ['ViewSource', 'ViewSource', imagesDir + 'view_source.gif', imagesDir + 'view_source_on.gif'],
"viewText": ['ViewText', 'ViewText', imagesDir + 'view_text.gif', imagesDir + 'view_text_on.gif'],
"help": ['Help', 'Help', imagesDir + 'help.gif', imagesDir + 'help_on.gif'],
"selectfont": ['SelectFont', 'SelectFont', imagesDir + 'select_font.gif', imagesDir + 'select_font_on.gif'],
"selectsize": ['SelectSize', 'SelectSize', imagesDir + 'select_size.gif', imagesDir + 'select_size_on.gif']
};
/* ---------------------------------------------------------------------- *\
Function : insertAdjacentHTML(), insertAdjacentText() and insertAdjacentElement()
Description : Emulates insertAdjacentHTML(), insertAdjacentText() and
insertAdjacentElement() three functions so they work with
Netscape 6/Mozilla
Notes : by Thor Larholm me@jscript.dk
\* ---------------------------------------------------------------------- */
if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
HTMLElement.prototype.insertAdjacentElement = function
(where,parsedNode)
{
switch (where){
case 'beforeBegin':
this.parentNode.insertBefore(parsedNode,this)
break;
case 'afterBegin':
this.insertBefore(parsedNode,this.firstChild);
break;
case 'beforeEnd':
this.appendChild(parsedNode);
break;
case 'afterEnd':
if (this.nextSibling)
this.parentNode.insertBefore(parsedNode,this.nextSibling);
else this.parentNode.appendChild(parsedNode);
break;
}
}
HTMLElement.prototype.insertAdjacentHTML = function
(where,htmlStr)
{
var r = this.ownerDocument.createRange();
r.setStartBefore(this);
var parsedHTML = r.createContextualFragment(htmlStr);
this.insertAdjacentElement(where,parsedHTML)
}
HTMLElement.prototype.insertAdjacentText = function
(where,txtStr)
{
var parsedText = document.createTextNode(txtStr)
this.insertAdjacentElement(where,parsedText)
}
};
// Create viewTextMode global variable and set to 0
// enabling all toolbar commands while in HTML mode
viewTextMode = 0;
/* ---------------------------------------------------------------------- *\
Function : generate_wysiwyg()
Description : replace textarea with wysiwyg editor
Usage : generate_wysiwyg("textarea_id");
Arguments : textarea_id - ID of textarea to replace
\* ---------------------------------------------------------------------- */
function generate_wysiwyg(textareaID) {
// Hide the textarea
document.getElementById(textareaID).style.display = 'none';
// Pass the textareaID to the "n" variable.
var n = textareaID;
// Toolbars width is 2 pixels wider than the wysiwygs
toolbarWidth = parseFloat(wysiwygWidth) + 2;
// Generate WYSIWYG toolbar one
var toolbar;
toolbar = '<table cellpadding="0" cellspacing="0" border="0" class="toolbar1" style="width:' + toolbarWidth + 'px;"><tr><td style="width: 6px;"><img src="' +imagesDir+ 'seperator2.gif" alt="" hspace="3"></td>';
// Create IDs for inserting Font Type and Size drop downs
toolbar += '<td style="width: 90px;"><span id="FontSelect' + n + '"></span></td>';
toolbar += '<td style="width: 60px;"><span id="FontSizes' + n + '"></span></td>';
// Output all command buttons that belong to toolbar one
for (var i = 0; i <= buttonName.length;) {
if (buttonName[i]) {
var buttonObj = ToolbarList[buttonName[i]];
var buttonID = buttonObj[0];
var buttonTitle = buttonObj[1];
var buttonImage = buttonObj[2];
var buttonImageRollover = buttonObj[3];
if (buttonName[i] == "seperator") {
toolbar += '<td style="width: 12px;" align="center"><img src="' +buttonImage+ '" border=0 unselectable="on" width="2" height="18" hspace="2" unselectable="on"></td>';
}
else {
toolbar += '<td style="width: 22px;"><img src="' +buttonImage+ '" border=0 unselectable="on" title="' +buttonTitle+ '" id="' +buttonID+ '" class="button" onClick="formatText(this.id,\'' + n + '\');" onmouseover="if(className==\'button\'){className=\'buttonOver\'}; this.src=\'' + buttonImageRollover + '\';" onmouseout="if(className==\'buttonOver\'){className=\'button\'}; this.src=\'' + buttonImage + '\';" unselectable="on" width="20" height="20"></td>';
}
}
i++;
}
toolbar += '<td> </td></tr></table>';
// Generate WYSIWYG toolbar two
var toolbar2;
toolbar2 = '<table cellpadding="0" cellspacing="0" border="0" class="toolbar2" style="width:' + toolbarWidth + 'px;"><tr><td style="width: 6px;"><img src="' +imagesDir+ 'seperator2.gif" alt="" hspace="3"></td>';
// Output all command buttons that belong to toolbar two
for (var j = 0; j <= buttonName2.length;) {
if (buttonName2[j]) {
var buttonObj = ToolbarList[buttonName2[j]];
var buttonID = buttonObj[0];
var buttonTitle = buttonObj[1];
var buttonImage = buttonObj[2];
var buttonImageRollover = buttonObj[3];
if (buttonName2[j] == "seperator") {
toolbar2 += '<td style="width: 12px;" align="center"><img src="' +buttonImage+ '" border=0 unselectable="on" width="2" height="18" hspace="2" unselectable="on"></td>';
}
else if (buttonName2[j] == "viewSource"){
toolbar2 += '<td style="width: 22px;">';
toolbar2 += '<span id="HTMLMode' + n + '"><img src="' +buttonImage+ '" border=0 unselectable="on" title="' +buttonTitle+ '" id="' +buttonID+ '" class="button" onClick="formatText(this.id,\'' + n + '\');" onmouseover="if(className==\'button\'){className=\'buttonOver\'}; this.src=\'' +buttonImageRollover+ '\';" onmouseout="if(className==\'buttonOver\'){className=\'button\'}; this.src=\'' + buttonImage + '\';" unselectable="on" width="20" height="20"></span>';
toolbar2 += '<span id="textMode' + n + '"><img src="' +imagesDir+ 'view_text.gif" border=0 unselectable="on" title="viewText" id="ViewText" class="button" onClick="formatText(this.id,\'' + n + '\');" onmouseover="if(className==\'button\'){className=\'buttonOver\'}; this.src=\'' +imagesDir+ 'view_text_on.gif\';" onmouseout="if(className==\'buttonOver\'){className=\'button\'}; this.src=\'' +imagesDir+ 'view_text.gif\';" unselectable="on" width="20" height="20"></span>';
toolbar2 += '</td>';
}
else {
toolbar2 += '<td style="width: 22px;"><img src="' +buttonImage+ '" border=0 unselectable="on" title="' +buttonTitle+ '" id="' +buttonID+ '" class="button" onClick="formatText(this.id,\'' + n + '\');" onmouseover="if(className==\'button\'){className=\'buttonOver\'}; this.src=\'' +buttonImageRollover+ '\';" onmouseout="if(className==\'buttonOver\'){className=\'button\'}; this.src=\'' + buttonImage + '\';" unselectable="on" width="20" height="20"></td>';
}
}
j++;
}
toolbar2 += '<td> </td></tr></table>';
// Create iframe which will be used for rich text editing
var iframe = '<table cellpadding="0" cellspacing="0" border="0" style="width:' + wysiwygWidth + 'px; height:' + wysiwygHeight + 'px;border: 1px inset #CCCCCC;"><tr><td valign="top">\n'
+ '<iframe frameborder="0" id="wysiwyg' + n + '"></iframe>\n'
+ '</td></tr></table>\n';
// Insert after the textArea both toolbar one and two
document.getElementById(n).insertAdjacentHTML("afterEnd", toolbar + toolbar2 + iframe);
// Insert the Font Type and Size drop downs into the toolbar
outputFontSelect(n);
outputFontSizes(n);
// Hide the dynamic drop down lists for the Font Types and Sizes
hideFonts(n);
hideFontSizes(n);
// Hide the "Text Mode" button
document.getElementById("textMode" + n).style.display = 'none';
// Give the iframe the global wysiwyg height and width
document.getElementById("wysiwyg" + n).style.height = wysiwygHeight + "px";
document.getElementById("wysiwyg" + n).style.width = wysiwygWidth + "px";
// Pass the textarea's existing text over to the content variable
var content = document.getElementById(n).value;
var doc = document.getElementById("wysiwyg" + n).contentWindow.document;
// Write the textarea's content into the iframe
doc.open();
doc.write(content);
doc.close();
// Make the iframe editable in both Mozilla and IE
doc.body.contentEditable = true;
doc.designMode = "on";
// Update the textarea with content in WYSIWYG when user submits form
var browserName = navigator.appName;
if (browserName == "Microsoft Internet Explorer") {
for (var idx=0; idx < document.forms.length; idx++) {
document.forms[idx].attachEvent('onsubmit', function() { updateTextArea(n); });
}
}
else {
for (var idx=0; idx < document.forms.length; idx++) {
document.forms[idx].addEventListener('submit',function OnSumbmit() { updateTextArea(n); }, true);
}
}
};
/* ---------------------------------------------------------------------- *\
Function : formatText()
Description : replace textarea with wysiwyg editor
Usage : formatText(id, n, selected);
Arguments : id - The execCommand (e.g. Bold)
n - The editor identifier that the command
affects (the textarea's ID)
selected - The selected value when applicable (e.g. Arial)
\* ---------------------------------------------------------------------- */
function formatText(id, n, selected) {
// When user clicks toolbar button make sure it always targets its respective WYSIWYG
document.getElementById("wysiwyg" + n).contentWindow.focus();
// When in Text Mode these execCommands are disabled
var formatIDs = new Array("FontSize","FontName","Bold","Italic","Underline","Subscript","Superscript","Strikethrough","Justifyleft","Justifyright","Justifycenter","InsertUnorderedList","InsertOrderedList","Indent","Outdent","ForeColor","BackColor","InsertImage","InsertTable","CreateLink");
// Check if button clicked is in disabled list
for (var i = 0; i <= formatIDs.length;) {
if (formatIDs[i] == id) {
var disabled_id = 1;
}
i++;
}
// Check if in Text Mode and disabled button was clicked
if (viewTextMode == 1 && disabled_id == 1) {
alert ("You are in HTML Mode. This feature has been disabled.");
}
else {
// FontSize
if (id == "FontSize") {
document.getElementById("wysiwyg" + n).contentWindow.document.execCommand("FontSize", false, selected);
}
// FontName
else if (id == "FontName") {
document.getElementById("wysiwyg" + n).contentWindow.document.execCommand("FontName", false, selected);
}
// ForeColor and BackColor
else if (id == 'ForeColor' || id == 'BackColor') {
var w = screen.availWidth;
var h = screen.availHeight;
var popW = 210, popH = 165;
var leftPos = (w-popW)/2, topPos = (h-popH)/2;
var currentColor = _dec_to_rgb(document.getElementById("wysiwyg" + n).contentWindow.document.queryCommandValue(id));
window.open(popupsDir + 'select_color.html?color=' + currentColor + '&command=' + id + '&wysiwyg=' + n,'popup','location=0,status=0,scrollbars=0,width=' + popW + ',height=' + popH + ',top=' + topPos + ',left=' + leftPos);
}
// InsertImage
else if (id == "InsertImage") {
window.open(popupsDir + 'insert_image.html?wysiwyg=' + n,'popup','location=0,status=0,scrollbars=0,resizable=0,width=400,height=190');
}
// InsertTable
else if (id == "InsertTable") {
window.open(popupsDir + 'create_table.html?wysiwyg=' + n,'popup','location=0,status=0,scrollbars=0,resizable=0,width=400,height=360');
}
// CreateLink
else if (id == "CreateLink") {
window.open(popupsDir + 'insert_hyperlink.html?wysiwyg=' + n,'popup','location=0,status=0,scrollbars=0,resizable=0,width=300,height=110');
}
// ViewSource
else if (id == "ViewSource") {
viewSource(n);
}
// ViewText
else if (id == "ViewText") {
viewText(n);
}
// Help
else if (id == "Help") {
window.open(popupsDir + 'about.html','popup','location=0,status=0,scrollbars=0,resizable=0,width=400,height=330');
}
// Every other command
else {
document.getElementById("wysiwyg" + n).contentWindow.document.execCommand(id, false, null);
}
}
};
/* ---------------------------------------------------------------------- *\
Function : insertHTML()
Description : insert HTML into WYSIWYG in rich text
Usage : insertHTML(<b>hello</b>, "textareaID")
Arguments : html - The HTML being inserted (e.g. <b>hello</b>)
n - The editor identifier that the HTML
will be inserted into (the textarea's ID)
\* ---------------------------------------------------------------------- */
function insertHTML(html, n) {
var browserName = navigator.appName;
if (browserName == "Microsoft Internet Explorer") {
document.getElementById('wysiwyg' + n).contentWindow.document.selection.createRange().pasteHTML(html);
}
else {
var div = document.getElementById('wysiwyg' + n).contentWindow.document.createElement("div");
div.innerHTML = html;
var node = insertNodeAtSelection(div, n);
}
}
/* ---------------------------------------------------------------------- *\
Function : insertNodeAtSelection()
Description : insert HTML into WYSIWYG in rich text (mozilla)
Usage : insertNodeAtSelection(insertNode, n)
Arguments : insertNode - The HTML being inserted (must be innerHTML
inserted within a div element)
n - The editor identifier that the HTML will be
inserted into (the textarea's ID)
\* ---------------------------------------------------------------------- */
function insertNodeAtSelection(insertNode, n) {
// get current selection
var sel = document.getElementById('wysiwyg' + n).contentWindow.getSelection();
// get the first range of the selection
// (there's almost always only one range)
var range = sel.getRangeAt(0);
// deselect everything
sel.removeAllRanges();
// remove content of current selection from document
range.deleteContents();
// get location of current selection
var container = range.startContainer;
var pos = range.startOffset;
// make a new range for the new selection
range=document.createRange();
if (container.nodeType==3 && insertNode.nodeType==3) {
// if we insert text in a textnode, do optimized insertion
container.insertData(pos, insertNode.nodeValue);
// put cursor after inserted text
range.setEnd(container, pos+insertNode.length);
range.setStart(container, pos+insertNode.length);
}
else {
var afterNode;
if (container.nodeType==3) {
// when inserting into a textnode
// we create 2 new textnodes
// and put the insertNode in between
var textNode = container;
container = textNode.parentNode;
var text = textNode.nodeValue;
// text before the split
var textBefore = text.substr(0,pos);
// text after the split
var textAfter = text.substr(pos);
var beforeNode = document.createTextNode(textBefore);
afterNode = document.createTextNode(textAfter);
// insert the 3 new nodes before the old one
container.insertBefore(afterNode, textNode);
container.insertBefore(insertNode, afterNode);
container.insertBefore(beforeNode, insertNode);
// remove the old node
container.removeChild(textNode);
}
else {
// else simply insert the node
afterNode = container.childNodes[pos];
container.insertBefore(insertNode, afterNode);
}
range.setEnd(afterNode, 0);
range.setStart(afterNode, 0);
}
sel.addRange(range);
};
/* ---------------------------------------------------------------------- *\
Function : _dec_to_rgb
Description : convert a decimal color value to rgb hexadecimal
Usage : var hex = _dec_to_rgb('65535'); // returns FFFF00
Arguments : value - dec value
\* ---------------------------------------------------------------------- */
function _dec_to_rgb(value) {
var hex_string = "";
for (var hexpair = 0; hexpair < 3; hexpair++) {
var myByte = value & 0xFF; // get low byte
value >>= 8; // drop low byte
var nybble2 = myByte & 0x0F; // get low nybble (4 bits)
var nybble1 = (myByte >> 4) & 0x0F; // get high nybble
hex_string += nybble1.toString(16); // convert nybble to hex
hex_string += nybble2.toString(16); // convert nybble to hex
}
return hex_string.toUpperCase();
};
/* ---------------------------------------------------------------------- *\
Function : outputFontSelect()
Description : creates the Font Select drop down and inserts it into
the toolbar
Usage : outputFontSelect(n)
Arguments : n - The editor identifier that the Font Select will update
when making font changes (the textarea's ID)
\* ---------------------------------------------------------------------- */
function outputFontSelect(n) {
var FontSelectObj = ToolbarList['selectfont'];
var FontSelect = FontSelectObj[2];
var FontSelectOn = FontSelectObj[3];
Fonts.sort();
var FontSelectDropDown = new Array;
FontSelectDropDown[n] = '<table border="0" cellpadding="0" cellspacing="0"><tr><td onMouseOver="document.getElementById(\'selectFont' + n + '\').src=\'' + FontSelectOn + '\';" onMouseOut="document.getElementById(\'selectFont' + n + '\').src=\'' + FontSelect + '\';"><img src="' + FontSelect + '" id="selectFont' + n + '" width="85" height="20" onClick="showFonts(\'' + n + '\');" unselectable="on"><br>';
FontSelectDropDown[n] += '<span id="Fonts' + n + '" class="dropdown" style="width: 145px;">';
for (var i = 0; i <= Fonts.length;) {
if (Fonts[i]) {
FontSelectDropDown[n] += '<button type="button" onClick="formatText(\'FontName\',\'' + n + '\',\'' + Fonts[i] + '\')\; hideFonts(\'' + n + '\');" onMouseOver="this.className=\'mouseOver\'" onMouseOut="this.className=\'mouseOut\'" class="mouseOut" style="width: 120px;"><table cellpadding="0" cellspacing="0" border="0"><tr><td align="left" style="font-family:' + Fonts[i] + '; font-size: 12px;">' + Fonts[i] + '</td></tr></table></button><br>';
}
i++;
}
FontSelectDropDown[n] += '</span></td></tr></table>';
document.getElementById('FontSelect' + n).insertAdjacentHTML("afterBegin", FontSelectDropDown[n]);
};
/* ---------------------------------------------------------------------- *\
Function : outputFontSizes()
Description : creates the Font Sizes drop down and inserts it into
the toolbar
Usage : outputFontSelect(n)
Arguments : n - The editor identifier that the Font Sizes will update
when making font changes (the textarea's ID)
\* ---------------------------------------------------------------------- */
function outputFontSizes(n) {
var FontSizeObj = ToolbarList['selectsize'];
var FontSize = FontSizeObj[2];
var FontSizeOn = FontSizeObj[3];
FontSizes.sort();
var FontSizesDropDown = new Array;
FontSizesDropDown[n] = '<table border="0" cellpadding="0" cellspacing="0"><tr><td onMouseOver="document.getElementById(\'selectSize' + n + '\').src=\'' + FontSizeOn + '\';" onMouseOut="document.getElementById(\'selectSize' + n + '\').src=\'' + FontSize + '\';"><img src="' + FontSize + '" id="selectSize' + n + '" width="49" height="20" onClick="showFontSizes(\'' + n + '\');" unselectable="on"><br>';
FontSizesDropDown[n] += '<span id="Sizes' + n + '" class="dropdown" style="width: 170px;">';
for (var i = 0; i <= FontSizes.length;) {
if (FontSizes[i]) {
FontSizesDropDown[n] += '<button type="button" onClick="formatText(\'FontSize\',\'' + n + '\',\'' + FontSizes[i] + '\')\;hideFontSizes(\'' + n + '\');" onMouseOver="this.className=\'mouseOver\'" onMouseOut="this.className=\'mouseOut\'" class="mouseOut" style="width: 145px;"><table cellpadding="0" cellspacing="0" border="0"><tr><td align="left" style="font-family: arial, verdana, helvetica;"><font size="' + FontSizes[i] + '">size ' + FontSizes[i] + '</font></td></tr></table></button><br>';
}
i++;
}
FontSizesDropDown[n] += '</span></td></tr></table>';
document.getElementById('FontSizes' + n).insertAdjacentHTML("afterBegin", FontSizesDropDown[n]);
};
/* ---------------------------------------------------------------------- *\
Function : hideFonts()
Description : Hides the list of font names in the font select drop down
Usage : hideFonts(n)
Arguments : n - The editor identifier (the textarea's ID)
\* ---------------------------------------------------------------------- */
function hideFonts(n) {
document.getElementById('Fonts' + n).style.display = 'none';
};
/* ---------------------------------------------------------------------- *\
Function : hideFontSizes()
Description : Hides the list of font sizes in the font sizes drop down
Usage : hideFontSizes(n)
Arguments : n - The editor identifier (the textarea's ID)
\* ---------------------------------------------------------------------- */
function hideFontSizes(n) {
document.getElementById('Sizes' + n).style.display = 'none';
};
/* ---------------------------------------------------------------------- *\
Function : showFonts()
Description : Shows the list of font names in the font select drop down
Usage : showFonts(n)
Arguments : n - The editor identifier (the textarea's ID)
\* ---------------------------------------------------------------------- */
function showFonts(n) {
if (document.getElementById('Fonts' + n).style.display == 'block') {
document.getElementById('Fonts' + n).style.display = 'none';
}
else {
document.getElementById('Fonts' + n).style.display = 'block';
document.getElementById('Fonts' + n).style.position = 'absolute';
}
};
/* ---------------------------------------------------------------------- *\
Function : showFontSizes()
Description : Shows the list of font sizes in the font sizes drop down
Usage : showFonts(n)
Arguments : n - The editor identifier (the textarea's ID)
\* ---------------------------------------------------------------------- */
function showFontSizes(n) {
if (document.getElementById('Sizes' + n).style.display == 'block') {
document.getElementById('Sizes' + n).style.display = 'none';
}
else {
document.getElementById('Sizes' + n).style.display = 'block';
document.getElementById('Sizes' + n).style.position = 'absolute';
}
};
/* ---------------------------------------------------------------------- *\
Function : viewSource()
Description : Shows the HTML source code generated by the WYSIWYG editor
Usage : showFonts(n)
Arguments : n - The editor identifier (the textarea's ID)
\* ---------------------------------------------------------------------- */
function viewSource(n) {
var getDocument = document.getElementById("wysiwyg" + n).contentWindow.document;
var browserName = navigator.appName;
// View Source for IE
if (browserName == "Microsoft Internet Explorer") {
var iHTML = getDocument.body.innerHTML;
getDocument.body.innerText = iHTML;
}
// View Source for Mozilla/Netscape
else {
var html = document.createTextNode(getDocument.body.innerHTML);
getDocument.body.innerHTML = "";
getDocument.body.appendChild(html);
}
// Hide the HTML Mode button and show the Text Mode button
document.getElementById('HTMLMode' + n).style.display = 'none';
document.getElementById('textMode' + n).style.display = 'block';
// set the font values for displaying HTML source
getDocument.body.style.fontSize = "12px";
getDocument.body.style.fontFamily = "Courier New";
viewTextMode = 1;
};
/* ---------------------------------------------------------------------- *\
Function : viewSource()
Description : Shows the HTML source code generated by the WYSIWYG editor
Usage : showFonts(n)
Arguments : n - The editor identifier (the textarea's ID)
\* ---------------------------------------------------------------------- */
function viewText(n) {
var getDocument = document.getElementById("wysiwyg" + n).contentWindow.document;
var browserName = navigator.appName;
// View Text for IE
if (browserName == "Microsoft Internet Explorer") {
var iText = getDocument.body.innerText;
getDocument.body.innerHTML = iText;
}
// View Text for Mozilla/Netscape
else {
var html = getDocument.body.ownerDocument.createRange();
html.selectNodeContents(getDocument.body);
getDocument.body.innerHTML = html.toString();
}
// Hide the Text Mode button and show the HTML Mode button
document.getElementById('textMode' + n).style.display = 'none';
document.getElementById('HTMLMode' + n).style.display = 'block';
// reset the font values
getDocument.body.style.fontSize = "";
getDocument.body.style.fontFamily = "";
viewTextMode = 0;
};
/* ---------------------------------------------------------------------- *\
Function : updateTextArea()
Description : Updates the text area value with the HTML source of the WYSIWYG
Usage : updateTextArea(n)
Arguments : n - The editor identifier (the textarea's ID)
\* ---------------------------------------------------------------------- */
function updateTextArea(n) {
document.getElementById(n).value = document.getElementById("wysiwyg" + n).contentWindow.document.body.innerHTML;
};
Mr. DellatioNx196 GaLers xh3LL Backd00r 1.0, Coded By Mr. DellatioNx196 - Bogor BlackHat