Créer une barre de boutons BBCode

var edButtons = new Array();
var edLinks = new Array();
var edOpenTags = new Array();
function edButton(id, display, tagStart, tagEnd, open) {
this.id = id; // used to name the toolbar button
this.display = display; // label on button
this.tagStart = tagStart; // open tag
this.tagEnd = tagEnd; // close tag
this.open = open; // set to -1 if tag does not need to be closed
}
edButtons[edButtons.length] = new edButton('ed_bold', 'Gras', '<strong>', '</strong>');
edButtons[edButtons.length] = new edButton('ed_italic', 'Italique', '<em>', '</em>');
edButtons[edButtons.length] = new edButton('ed_under', 'Souligné', '<u>', '</u>');
edButtons[edButtons.length] = new edButton('ed_strike', 'Barré', '[s]', '[/s]');
edButtons[edButtons.length] = new edButton('ed_link', 'URL', '', '[/url]');
edButtons[edButtons.length] = new edButton('ed_email', 'E-mail', '', '[/email]');
edButtons[edButtons.length] = new edButton('ed_color', 'Couleur', '', '[/color]');
edButtons[edButtons.length] = new edButton('ed_img', 'Image', '', '', -1);
edButtons[edButtons.length] = new edButton('ed_block', 'Citation', '[quote]', '[/quote]');
edButtons[edButtons.length] = new edButton('ed_code', 'Code', '[code]', '[/code]');
edButtons[edButtons.length] = new edButton('ed_list', 'Liste', '', '');
function edLink(display, URL, newWin) {
this.display = display;
this.URL = URL;
if (!newWin) {
newWin = 0;
}
this.newWin = newWin;
}
function edShowButton(button, i) {
if (button.id == 'ed_img') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />');
}
else if (button.id == 'ed_link') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
else if (button.id == 'ed_email') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertEmail(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
else if (button.id == 'ed_color') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertColor(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
else if (button.id == 'ed_list') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertList(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
else {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
}
function edShowLinks() {
var tempStr = '<select onchange="edQuickLink(this.options[this.selectedIndex].value, this);"><option value="-1" selected>(Quick Links)</option>';
for (i = 0; i < edLinks.length; i++) {
tempStr += '<option value="' + i + '">' + edLinks<em>.display + '</option>';
}
tempStr += '</select>';
document.write(tempStr);
}
function edAddTag(button) {
if (edButtons[button].tagEnd != '') {
edOpenTags[edOpenTags.length] = button;
document.getElementById(edButtons[button].id).value = '/' + document.getElementById(edButtons[button].id).value;
}
}
function edRemoveTag(button) {
for (i = 0; i < edOpenTags.length; i++) {
if (edOpenTags<em> == button) {
edOpenTags.splice(i, 1);
document.getElementById(edButtons[button].id).value = document.getElementById(edButtons[button].id).value.replace('/', '');
}
}
}
function edCheckOpenTags(button) {
var tag = 0;
for (i = 0; i < edOpenTags.length; i++) {
if (edOpenTags<em> == button) {
tag++;
}
}
if (tag > 0) {
return true; // tag found
}
else {
return false; // tag not found
}
}
function edCloseAllTags() {
var count = edOpenTags.length;
for (o = 0; o < count; o++) {
edInsertTag(edCanvas, edOpenTags[edOpenTags.length - 1]);
}
}
function edQuickLink(i, thisSelect) {
if (i > -1) {
var newWin = '';
if (edLinks<em>.newWin == 1) {
newWin = ' target="_blank"';
}
var tempStr = '<a href="' + edLinks<em>.URL + '"' + newWin + '>'
+ edLinks<em>.display
+ '</a>';
thisSelect.selectedIndex = 0;
edInsertContent(edCanvas, tempStr);
}
else {
thisSelect.selectedIndex = 0;
}
}
// insertion code
function edInsertTag(myField, i) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
if (sel.text.length > 0) {
sel.text = edButtons<em>.tagStart + sel.text + edButtons<em>.tagEnd;
}
else {
if (!edCheckOpenTags(i) || edButtons<em>.tagEnd == '') {
sel.text = edButtons<em>.tagStart;
edAddTag(i);
}
else {
sel.text = edButtons<em>.tagEnd;
edRemoveTag(i);
}
}
myField.focus();
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
var cursorPos = endPos;
var scrollTop = myField.scrollTop;
if (startPos != endPos) {
myField.value = myField.value.substring(0, startPos)
+ edButtons<em>.tagStart
+ myField.value.substring(startPos, endPos)
+ edButtons<em>.tagEnd
+ myField.value.substring(endPos, myField.value.length);
cursorPos += edButtons<em>.tagStart.length + edButtons<em>.tagEnd.length;
}
else {
if (!edCheckOpenTags(i) || edButtons<em>.tagEnd == '') {
myField.value = myField.value.substring(0, startPos)
+ edButtons<em>.tagStart
+ myField.value.substring(endPos, myField.value.length);
edAddTag(i);
cursorPos = startPos + edButtons<em>.tagStart.length;
}
else {
myField.value = myField.value.substring(0, startPos)
+ edButtons<em>.tagEnd
+ myField.value.substring(endPos, myField.value.length);
edRemoveTag(i);
cursorPos = startPos + edButtons<em>.tagEnd.length;
}
}
myField.focus();
myField.selectionStart = cursorPos;
myField.selectionEnd = cursorPos;
myField.scrollTop = scrollTop;
}
else {
if (!edCheckOpenTags(i) || edButtons<em>.tagEnd == '') {
myField.value += edButtons<em>.tagStart;
edAddTag(i);
}
else {
myField.value += edButtons<em>.tagEnd;
edRemoveTag(i);
}
myField.focus();
}
}
function edInsertContent(myField, myValue) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
myField.focus();
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
myField.focus();
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
} else {
myField.value += myValue;
myField.focus();
}
}
function edInsertLink(myField, i, defaultValue) {
if (!defaultValue) {
defaultValue = 'http://';
}
if (!edCheckOpenTags(i)) {
var URL = prompt('Entrez l\'URL' ,defaultValue);
if (URL) {
edButtons<em>.tagStart = '[url=' + URL + ']';
edInsertTag(myField, i);
}
}
else {
edInsertTag(myField, i);
}
}
function edInsertList(myField, i, defaultValue) {
if (!defaultValue) {
defaultValue = '';
}
if (!edCheckOpenTags(i)) {
var LI = prompt('Entrez un élément de la liste' ,defaultValue);
if (LI) {
edButtons<em>.tagStart = '[list]\r\n[*] ' + LI + '\r\n[/list]\r\n';
edInsertTag(myField, i);
}
}
else {
edInsertTag(myField, i);
}
}
function edInsertEmail(myField, i, defaultValue) {
if (!defaultValue) {
defaultValue = '';
}
if (!edCheckOpenTags(i)) {
var EMAIL = prompt('Entrez l\'e-mail', defaultValue);
if (EMAIL) {
edButtons<em>.tagStart = '[email=' + EMAIL + ']';
edInsertTag(myField, i);
}
}
else {
edInsertTag(myField, i);
}
}
function edInsertColor(myField, i, defaultValue) {
if (!defaultValue) {
defaultValue = 'red';
}
if (!edCheckOpenTags(i)) {
var COLOR = prompt('Couleur' ,defaultValue);
if (COLOR) {
edButtons<em>.tagStart = '[color=' + COLOR + ']';
edInsertTag(myField, i);
}
}
else {
edInsertTag(myField, i);
}
}
function edInsertImage(myField) {
var myValue = prompt('Entrez l\'url de l\'image', 'upload/');
if (myValue) {
myValue = '[img]'
+ myValue
+ '[/img]';
edInsertContent(myField, myValue);
}
}
var edLinks = new Array();
var edOpenTags = new Array();
function edButton(id, display, tagStart, tagEnd, open) {
this.id = id; // used to name the toolbar button
this.display = display; // label on button
this.tagStart = tagStart; // open tag
this.tagEnd = tagEnd; // close tag
this.open = open; // set to -1 if tag does not need to be closed
}
edButtons[edButtons.length] = new edButton('ed_bold', 'Gras', '<strong>', '</strong>');
edButtons[edButtons.length] = new edButton('ed_italic', 'Italique', '<em>', '</em>');
edButtons[edButtons.length] = new edButton('ed_under', 'Souligné', '<u>', '</u>');
edButtons[edButtons.length] = new edButton('ed_strike', 'Barré', '[s]', '[/s]');
edButtons[edButtons.length] = new edButton('ed_link', 'URL', '', '[/url]');
edButtons[edButtons.length] = new edButton('ed_email', 'E-mail', '', '[/email]');
edButtons[edButtons.length] = new edButton('ed_color', 'Couleur', '', '[/color]');
edButtons[edButtons.length] = new edButton('ed_img', 'Image', '', '', -1);
edButtons[edButtons.length] = new edButton('ed_block', 'Citation', '[quote]', '[/quote]');
edButtons[edButtons.length] = new edButton('ed_code', 'Code', '[code]', '[/code]');
edButtons[edButtons.length] = new edButton('ed_list', 'Liste', '', '');
function edLink(display, URL, newWin) {
this.display = display;
this.URL = URL;
if (!newWin) {
newWin = 0;
}
this.newWin = newWin;
}
function edShowButton(button, i) {
if (button.id == 'ed_img') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />');
}
else if (button.id == 'ed_link') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
else if (button.id == 'ed_email') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertEmail(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
else if (button.id == 'ed_color') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertColor(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
else if (button.id == 'ed_list') {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertList(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
else {
document.write('<input type="button" id="' + button.id + '" class="button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '" />');
}
}
function edShowLinks() {
var tempStr = '<select onchange="edQuickLink(this.options[this.selectedIndex].value, this);"><option value="-1" selected>(Quick Links)</option>';
for (i = 0; i < edLinks.length; i++) {
tempStr += '<option value="' + i + '">' + edLinks<em>.display + '</option>';
}
tempStr += '</select>';
document.write(tempStr);
}
function edAddTag(button) {
if (edButtons[button].tagEnd != '') {
edOpenTags[edOpenTags.length] = button;
document.getElementById(edButtons[button].id).value = '/' + document.getElementById(edButtons[button].id).value;
}
}
function edRemoveTag(button) {
for (i = 0; i < edOpenTags.length; i++) {
if (edOpenTags<em> == button) {
edOpenTags.splice(i, 1);
document.getElementById(edButtons[button].id).value = document.getElementById(edButtons[button].id).value.replace('/', '');
}
}
}
function edCheckOpenTags(button) {
var tag = 0;
for (i = 0; i < edOpenTags.length; i++) {
if (edOpenTags<em> == button) {
tag++;
}
}
if (tag > 0) {
return true; // tag found
}
else {
return false; // tag not found
}
}
function edCloseAllTags() {
var count = edOpenTags.length;
for (o = 0; o < count; o++) {
edInsertTag(edCanvas, edOpenTags[edOpenTags.length - 1]);
}
}
function edQuickLink(i, thisSelect) {
if (i > -1) {
var newWin = '';
if (edLinks<em>.newWin == 1) {
newWin = ' target="_blank"';
}
var tempStr = '<a href="' + edLinks<em>.URL + '"' + newWin + '>'
+ edLinks<em>.display
+ '</a>';
thisSelect.selectedIndex = 0;
edInsertContent(edCanvas, tempStr);
}
else {
thisSelect.selectedIndex = 0;
}
}
// insertion code
function edInsertTag(myField, i) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
if (sel.text.length > 0) {
sel.text = edButtons<em>.tagStart + sel.text + edButtons<em>.tagEnd;
}
else {
if (!edCheckOpenTags(i) || edButtons<em>.tagEnd == '') {
sel.text = edButtons<em>.tagStart;
edAddTag(i);
}
else {
sel.text = edButtons<em>.tagEnd;
edRemoveTag(i);
}
}
myField.focus();
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
var cursorPos = endPos;
var scrollTop = myField.scrollTop;
if (startPos != endPos) {
myField.value = myField.value.substring(0, startPos)
+ edButtons<em>.tagStart
+ myField.value.substring(startPos, endPos)
+ edButtons<em>.tagEnd
+ myField.value.substring(endPos, myField.value.length);
cursorPos += edButtons<em>.tagStart.length + edButtons<em>.tagEnd.length;
}
else {
if (!edCheckOpenTags(i) || edButtons<em>.tagEnd == '') {
myField.value = myField.value.substring(0, startPos)
+ edButtons<em>.tagStart
+ myField.value.substring(endPos, myField.value.length);
edAddTag(i);
cursorPos = startPos + edButtons<em>.tagStart.length;
}
else {
myField.value = myField.value.substring(0, startPos)
+ edButtons<em>.tagEnd
+ myField.value.substring(endPos, myField.value.length);
edRemoveTag(i);
cursorPos = startPos + edButtons<em>.tagEnd.length;
}
}
myField.focus();
myField.selectionStart = cursorPos;
myField.selectionEnd = cursorPos;
myField.scrollTop = scrollTop;
}
else {
if (!edCheckOpenTags(i) || edButtons<em>.tagEnd == '') {
myField.value += edButtons<em>.tagStart;
edAddTag(i);
}
else {
myField.value += edButtons<em>.tagEnd;
edRemoveTag(i);
}
myField.focus();
}
}
function edInsertContent(myField, myValue) {
//IE support
if (document.selection) {
myField.focus();
sel = document.selection.createRange();
sel.text = myValue;
myField.focus();
}
//MOZILLA/NETSCAPE support
else if (myField.selectionStart || myField.selectionStart == '0') {
var startPos = myField.selectionStart;
var endPos = myField.selectionEnd;
myField.value = myField.value.substring(0, startPos)
+ myValue
+ myField.value.substring(endPos, myField.value.length);
myField.focus();
myField.selectionStart = startPos + myValue.length;
myField.selectionEnd = startPos + myValue.length;
} else {
myField.value += myValue;
myField.focus();
}
}
function edInsertLink(myField, i, defaultValue) {
if (!defaultValue) {
defaultValue = 'http://';
}
if (!edCheckOpenTags(i)) {
var URL = prompt('Entrez l\'URL' ,defaultValue);
if (URL) {
edButtons<em>.tagStart = '[url=' + URL + ']';
edInsertTag(myField, i);
}
}
else {
edInsertTag(myField, i);
}
}
function edInsertList(myField, i, defaultValue) {
if (!defaultValue) {
defaultValue = '';
}
if (!edCheckOpenTags(i)) {
var LI = prompt('Entrez un élément de la liste' ,defaultValue);
if (LI) {
edButtons<em>.tagStart = '[list]\r\n[*] ' + LI + '\r\n[/list]\r\n';
edInsertTag(myField, i);
}
}
else {
edInsertTag(myField, i);
}
}
function edInsertEmail(myField, i, defaultValue) {
if (!defaultValue) {
defaultValue = '';
}
if (!edCheckOpenTags(i)) {
var EMAIL = prompt('Entrez l\'e-mail', defaultValue);
if (EMAIL) {
edButtons<em>.tagStart = '[email=' + EMAIL + ']';
edInsertTag(myField, i);
}
}
else {
edInsertTag(myField, i);
}
}
function edInsertColor(myField, i, defaultValue) {
if (!defaultValue) {
defaultValue = 'red';
}
if (!edCheckOpenTags(i)) {
var COLOR = prompt('Couleur' ,defaultValue);
if (COLOR) {
edButtons<em>.tagStart = '[color=' + COLOR + ']';
edInsertTag(myField, i);
}
}
else {
edInsertTag(myField, i);
}
}
function edInsertImage(myField) {
var myValue = prompt('Entrez l\'url de l\'image', 'upload/');
if (myValue) {
myValue = '[img]'
+ myValue
+ '[/img]';
edInsertContent(myField, myValue);
}
}