// Toolbar JavaScript support functions from mediawiki // $Id: toolbar.js,v 1.3 2004-06-01 15:23:10 rurban Exp $ // Un-trap us from framesets if( window.top != window ) window.top.location = window.location; // This function generates the actual toolbar buttons with localized text // We use it to avoid creating the toolbar where javascript is not enabled // Not all buttons use this helper, some need special javascript treatment. function addButton(imageFile, speedTip, tagOpen, tagClose, sampleText) { speedTip=escapeQuotes(speedTip); tagOpen=escapeQuotes(tagOpen); tagClose=escapeQuotes(tagClose); sampleText=escapeQuotes(sampleText); document.write(""); //width=\"23\" height=\"22\" document.write("\""+speedTip+"\""); document.write(""); return; } function addInfobox(infoText) { // if no support for changing selection, add a small copy & paste field var clientPC = navigator.userAgent.toLowerCase(); // Get client info var is_nav = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1) && (clientPC.indexOf('khtml') == -1)); if(!document.selection && !is_nav) { infoText=escapeQuotesHTML(infoText); document.write("
"+ "
"); } } function escapeQuotes(text) { var re=new RegExp("'","g"); text=text.replace(re,"\\'"); re=new RegExp('"',"g"); text=text.replace(re,'"'); re=new RegExp("\\n","g"); text=text.replace(re,"\\n"); return text; } function escapeQuotesHTML(text) { var re=new RegExp('"',"g"); text=text.replace(re,"""); return text; } // apply tagOpen/tagClose to selection in textarea, // use sampleText instead of selection if there is none // copied and adapted from phpBB function insertTags(tagOpen, tagClose, sampleText) { //f=document.getElementById('editpage'); var txtarea = document.getElementById('edit[content]'); // var txtarea = document.editpage.edit[content]; // IE if(document.selection) { var theSelection = document.selection.createRange().text; if(!theSelection) { theSelection=sampleText;} txtarea.focus(); if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any theSelection = theSelection.substring(0, theSelection.length - 1); document.selection.createRange().text = tagOpen + theSelection + tagClose + " "; } else { document.selection.createRange().text = tagOpen + theSelection + tagClose; } // Mozilla -- disabled because it induces a scrolling bug which makes it virtually unusable } else if(txtarea.selectionStart || txtarea.selectionStart == '0') { var startPos = txtarea.selectionStart; var endPos = txtarea.selectionEnd; var scrollTop=txtarea.scrollTop; var myText = (txtarea.value).substring(startPos, endPos); if(!myText) { myText=sampleText;} if(myText.charAt(myText.length - 1) == " "){ // exclude ending space char, if any subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " "; } else { subst = tagOpen + myText + tagClose; } txtarea.value = txtarea.value.substring(0, startPos) + subst + txtarea.value.substring(endPos, txtarea.value.length); txtarea.focus(); var cPos=startPos+(tagOpen.length+myText.length+tagClose.length); txtarea.selectionStart=cPos; txtarea.selectionEnd=cPos; txtarea.scrollTop=scrollTop; // All others } else { // Append at the end: Some people find that annoying //txtarea.value += tagOpen + sampleText + tagClose; //txtarea.focus(); var re=new RegExp("\\n","g"); tagOpen=tagOpen.replace(re,""); tagClose=tagClose.replace(re,""); document.infoform.infobox.value=tagOpen+sampleText+tagClose; txtarea.focus(); } // reposition cursor if possible if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate(); }