var colour; var htmlOn; var textAreaName = ''; //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; //create iframe page content var iframeContent; iframeContent = '\n'; iframeContent += '\n'; 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(''); document.writeln(' '); document.writeln(' '); document.writeln(' '); document.writeln('
'); document.writeln(''); document.writeln(''); document.writeln(''); document.writeln(''); document.writeln(' '); document.writeln(''); document.writeln('
'); document.writeln(''); document.writeln(''); document.writeln(''); document.writeln(''); 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(); } } //Paste for AppleWebKit (Safari & Chrome) else if ((navigator.userAgent.indexOf('AppleWebKit') > 0) & (command == 'paste')){ alert('Your browser settings do not permit the editor to invoke \'' + command + '\' operations. \nPlease use the keyboard shortcut \(Windows users: Ctrl + v, Mac users: Apple + v\)') } //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 switch to HTML view function HTMLview(){ var editor = document.getElementById('WebWizRTE'); //WYSIWYG view if (htmlOn == true){ var html = editor.contentWindow.document.body.ownerDocument.createRange(); html.selectNodeContents(editor.contentWindow.document.body); editor.contentWindow.document.body.innerHTML = html.toString(); document.getElementById('ToolBar1').style.visibility='visible'; document.getElementById('ToolBar2').style.visibility='visible'; htmlOn = false; //HTML view }else{ var html = document.createTextNode(editor.contentWindow.document.body.innerHTML); editor.contentWindow.document.body.innerHTML = ''; editor.contentWindow.document.body.appendChild(html); document.getElementById('ToolBar1').style.visibility='hidden'; document.getElementById('ToolBar2').style.visibility='hidden'; htmlOn = true; } editor.contentWindow.focus() } //Function to print editor content function printEditor(){ document.getElementById('WebWizRTE').contentWindow.print(); } //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; }