var colour;
var htmlOn;
var textAreaName = 'myTextarea';
//initialise RTE editor
function initialiseWebWizRTE(){
var textArea = document.getElementById(textAreaName);
var textAreaWidth = parseInt(textArea.offsetWidth);
var textAreaHeight = parseInt(textArea.offsetHeight);
//hide textarea
textArea.style.display = 'none';
//create the iframe
var iframe = document.createElement('iframe');
iframe.frameBorder = 0; //added for IE in XHTML to remove border
iframe.setAttribute('id', 'WebWizRTE');
textArea.parentNode.insertBefore(iframe, textArea);
//style iframe
iframe.style.width = textAreaWidth + 'px';
iframe.style.height = textAreaHeight + 'px';
iframe.style.border = '#A5ACB2 1px solid';
//make toolbar the same size
document.getElementById('toolbar').width = textAreaWidth + 2 + 'px';
var editor = document.getElementById('WebWizRTE').contentWindow.document;
var colorfondo = textArea.value;
//create iframe page content
var iframeContent;
iframeContent = '\n';
iframeContent += '
\n';
iframeContent += '\n';
iframeContent += '\n';
iframeContent += textArea.value;
iframeContent += '\n';
iframeContent += '';
editor.open();
editor.write(iframeContent);
editor.close();
function initIframe(){
editor.addEventListener('keypress', editorEvents, true);
editor.addEventListener('mousedown', editorEvents, true);
document.addEventListener('mousedown', hideIframes, true);
editor.designMode = 'on';
}
setTimeout(initIframe, 300);
//get present onsubmit events
if (typeof textArea.form.onsubmit == 'function'){
textArea.form.originalOnSubmit = [];
textArea.form.originalOnSubmit.push(textArea.form.onsubmit);
}
//get textrea value from RTE and run any original onSubmit events
textArea.form.onsubmit = function(){
textArea.value = editor.body.innerHTML;
for (i in this.originalOnSubmit){
return this.originalOnSubmit[i]();
}
}
//resetting the form
textArea.form.onreset = function(){
if (window.confirm('WARNING: All form data will be lost!!')){
editor.body.innerHTML = '';
return true;
}
return false;
}
//unload event so we don't loose the data
window.onunload = function(){
textArea.value = editor.body.innerHTML;
}
}
//Create RTE toolbar
function WebWizRTEtoolbar(formName){
document.writeln('');
document.writeln('');
document.writeln('');
document.writeln('');
document.writeln('');
}
//Function to format text in the text box
function FormatText(command, option){
var editor = document.getElementById('WebWizRTE');
//Show iframes
if ((command == 'forecolor') || (command == 'backcolor') || (command == 'hilitecolor') || (command == 'fontname') || (command == 'formatblock') || (command == 'fontsize')){
parent.command = command;
buttonElement = document.getElementById(command);
switch (command){
case 'fontname': iframeWin = 'fontSelect'; break;
case 'formatblock': iframeWin = 'formatFont'; break;
case 'fontsize': iframeWin = 'textSize'; break;
default: iframeWin = 'colourPalette';
}
editor.contentWindow.focus()
document.getElementById(iframeWin).style.left = getOffsetLeft(buttonElement) + 'px';
document.getElementById(iframeWin).style.top = (getOffsetTop(buttonElement) + buttonElement.offsetHeight) + 'px';
if (document.getElementById(iframeWin).style.visibility=='visible'){
hideIframes();
}else{
hideIframes();
document.getElementById(iframeWin).style.visibility='visible';
}
var selectedRange = editor.contentWindow.document.selection;
if (selectedRange != null){
range = selectedRange.createRange();
}
}
//Cut, copy, paste for Gecko
else if ((command == 'cut') || (command == 'copy') || (command == 'paste')){
try{
editor.contentWindow.focus()
editor.contentWindow.document.execCommand(command, false, option);
}catch(exception){
switch(command){
case 'cut': keyboard = 'x'; break;
case 'copy': keyboard = 'c'; break;
case 'paste': keyboard = 'v'; break;
}
alert('Your browser settings do not permit the editor to invoke \'' + command + '\' operations. \nPlease use the keyboard shortcut \(Windows users: Ctrl + ' + keyboard + ', Mac users: Apple + ' + keyboard + '\)')
}
}
else{
editor.contentWindow.focus()
editor.contentWindow.document.queryCommandEnabled(command)
editor.contentWindow.document.execCommand(command, false, option);
}
editor.contentWindow.focus();
}
//Function to initialise commands
function initialiseCommand(selection){
var editor = document.getElementById('WebWizRTE')
editor.contentWindow.document.execCommand(parent.command, false, selection);
editor.contentWindow.focus()
hideIframes();
}
//Function to clear editor content
function clearWebWizRTE(){
if (window.confirm('WARNING: All editor data will be lost!!')){
document.getElementById('WebWizRTE').contentWindow.document.body.innerHTML='';
document.getElementById('WebWizRTE').contentWindow.focus()
}
}
//Iframe top offset
function getOffsetTop(elm){
var mOffsetTop = elm.offsetTop;
var mOffsetParent = elm.offsetParent;
while(mOffsetParent){
mOffsetTop += mOffsetParent.offsetTop;
mOffsetParent = mOffsetParent.offsetParent;
}
return mOffsetTop;
}
//Iframe left offset
function getOffsetLeft(elm){
var mOffsetLeft = elm.offsetLeft;
var mOffsetParent = elm.offsetParent;
while(mOffsetParent){
mOffsetLeft += mOffsetParent.offsetLeft;
mOffsetParent = mOffsetParent.offsetParent;
}
return mOffsetLeft;
}
//Function to hide iframes
function hideIframes(){
if (document.getElementById('colourPalette').style.visibility=='visible'){document.getElementById('colourPalette').style.visibility='hidden';}
if (document.getElementById('formatFont').style.visibility=='visible'){document.getElementById('formatFont').style.visibility='hidden';}
if (document.getElementById('fontSelect').style.visibility=='visible'){document.getElementById('fontSelect').style.visibility='hidden';}
if (document.getElementById('textSize').style.visibility=='visible'){document.getElementById('textSize').style.visibility='hidden';}
}
//Run Editor Events
function editorEvents(evt){
var keyCode = evt.keyCode ? evt.keyCode : evt.charCode;
var keyCodeChar = String.fromCharCode(keyCode).toLowerCase();
//Keyboard shortcuts
if (evt.type=='keypress' && evt.ctrlKey){
var kbShortcut;
switch (keyCodeChar){
case 'b': kbShortcut = 'bold'; break;
case 'i': kbShortcut = 'italic'; break;
case 'u': kbShortcut = 'underline'; break;
case 's': kbShortcut = 'strikethrough'; break;
case 'i': kbShortcut = 'italic'; break;
}
if (kbShortcut){
FormatText(kbShortcut, '');
evt.preventDefault();
evt.stopPropagation();
}
}
hideIframes();
return true;
}