110 lines
3.6 KiB
JavaScript
110 lines
3.6 KiB
JavaScript
// Barre de raccourcis
|
|
// derive du:
|
|
// bbCode control by subBlue design : www.subBlue.com
|
|
|
|
// Startup variables
|
|
var theSelection = false;
|
|
|
|
// Check for Browser & Platform for PC & IE specific bits
|
|
// More details from: http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
|
|
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
|
|
var clientVer = parseInt(navigator.appVersion); // Get browser version
|
|
|
|
var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
|
|
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
|
|
&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
|
|
&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));
|
|
var is_moz = 0;
|
|
|
|
var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
|
|
var is_mac = (clientPC.indexOf("mac")!=-1);
|
|
|
|
|
|
|
|
function barre_inserer(text,champ) {
|
|
var txtarea = champ;
|
|
if( document.selection ){
|
|
txtarea.focus();
|
|
var r = document.selection.createRange();
|
|
if (r == null) {
|
|
txtarea.selectionStart = txtarea.value.length;
|
|
txtarea.selectionEnd = txtarea.selectionStart;
|
|
}
|
|
else {
|
|
var re = txtarea.createTextRange();
|
|
var rc = re.duplicate();
|
|
re.moveToBookmark(r.getBookmark());
|
|
rc.setEndPoint('EndToStart', re);
|
|
txtarea.selectionStart = rc.text.length;
|
|
txtarea.selectionEnd = rc.text.length + r.text.length;
|
|
}
|
|
}
|
|
mozWrap(txtarea, '', text);
|
|
}
|
|
|
|
|
|
// Shows the help messages in the helpline window
|
|
function helpline(help, champ) {
|
|
champ.value = help;
|
|
}
|
|
|
|
|
|
function setCaretToEnd (input) {
|
|
setSelectionRange(input, input.value.length, input.value.length);
|
|
}
|
|
|
|
|
|
function setSelectionRange(input, selectionStart, selectionEnd) {
|
|
if (input.setSelectionRange) {
|
|
input.focus();
|
|
input.setSelectionRange(selectionStart, selectionEnd);
|
|
}
|
|
else if (input.createTextRange) {
|
|
var range = input.createTextRange();
|
|
range.collapse(true);
|
|
range.moveEnd('character', selectionEnd);
|
|
range.moveStart('character', selectionStart);
|
|
range.select();
|
|
}
|
|
}
|
|
|
|
// From http://www.massless.org/mozedit/
|
|
function mozWrap(txtarea, open, close)
|
|
{
|
|
var selLength = txtarea.textLength;
|
|
var selStart = txtarea.selectionStart;
|
|
var selEnd = txtarea.selectionEnd;
|
|
if (selEnd == 1 || selEnd == 2)
|
|
selEnd = selLength;
|
|
var selTop = txtarea.scrollTop;
|
|
|
|
// Raccourcir la selection par double-clic si dernier caractere est espace
|
|
if (selEnd - selStart > 0 && (txtarea.value).substring(selEnd-1,selEnd) == ' ') selEnd = selEnd-1;
|
|
|
|
var s1 = (txtarea.value).substring(0,selStart);
|
|
var s2 = (txtarea.value).substring(selStart, selEnd)
|
|
var s3 = (txtarea.value).substring(selEnd, selLength);
|
|
|
|
// Eviter melange bold-italic-intertitre
|
|
if ((txtarea.value).substring(selEnd,selEnd+1) == '}' && close.substring(0,1) == "}") close = close + " ";
|
|
if ((txtarea.value).substring(selEnd-1,selEnd) == '}' && close.substring(0,1) == "}") close = " " + close;
|
|
if ((txtarea.value).substring(selStart-1,selStart) == '{' && open.substring(0,1) == "{") open = " " + open;
|
|
if ((txtarea.value).substring(selStart,selStart+1) == '{' && open.substring(0,1) == "{") open = open + " ";
|
|
|
|
txtarea.value = s1 + open + s2 + close + s3;
|
|
selDeb = selStart + open.length;
|
|
selFin = selEnd + close.length;
|
|
window.setSelectionRange(txtarea, selDeb, selFin);
|
|
txtarea.scrollTop = selTop;
|
|
txtarea.focus();
|
|
|
|
return;
|
|
}
|
|
|
|
// Insert at Claret position. Code from
|
|
// http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
|
|
function storeCaret (textEl) {
|
|
if (textEl.createTextRange)
|
|
textEl.caretPos = document.selection.createRange().duplicate();
|
|
}
|
|
|