246 lines
7.5 KiB
JavaScript
246 lines
7.5 KiB
JavaScript
// <script>
|
||
// JS QuickTags version 1.2
|
||
//
|
||
// Copyright (c) 2002-2005 Alex King
|
||
// http://www.alexking.org/
|
||
//
|
||
// Licensed under the LGPL license
|
||
// http://www.gnu.org/copyleft/lesser.html
|
||
//
|
||
// **********************************************************************
|
||
// This program is distributed in the hope that it will be useful, but
|
||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
// **********************************************************************
|
||
//
|
||
// This JavaScript will insert the tags below at the cursor position in IE and
|
||
// Gecko-based browsers (Mozilla, Camino, Firefox, Netscape). For browsers that
|
||
// do not support inserting at the cursor position (Safari, OmniWeb) it appends
|
||
// the tags to the end of the content.
|
||
//
|
||
// The variablea 'edCanvas' must be defined as the <textarea> element you want
|
||
// to be editing in. See the accompanying 'index.html' page for an example.
|
||
|
||
var edButtons = new Array();
|
||
var edLinks = new Array();
|
||
var edOpenTags = new Array();
|
||
|
||
function edButton(id, display, tagStart, tagEnd, access, 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.access = access; // set to -1 if tag does not need to be closed
|
||
this.open = open; // set to -1 if tag does not need to be closed
|
||
}
|
||
|
||
function buttons(nr) {
|
||
edButtons = new Array();
|
||
|
||
edButtons.push( new edButton('ed_bold'+nr, 'Fett', '*', '*', 'f') );
|
||
edButtons.push( new edButton('ed_italic'+nr, 'Kursiv', '_', '_', 'k') );
|
||
edButtons.push( new edButton('ed_link'+nr, 'E-Maillink', '', '', 'a') ); // special case
|
||
}
|
||
|
||
function edShowButton(button, i, nr) {
|
||
if (button.access) {
|
||
var accesskey = ' accesskey = "' + button.access + '"'
|
||
}
|
||
else {
|
||
var accesskey = '';
|
||
}
|
||
switch (button.id) {
|
||
case 'ed_link'+nr:
|
||
document.write('<input type="button" id="' + button.id + '" ' + accesskey + ' class="ed_button" onclick="edInsertLink(edCanvas'+nr+', ' + i + ');" value="' + button.display + '" />');
|
||
break;
|
||
default:
|
||
document.write('<input type="button" id="' + button.id + '" ' + accesskey + ' class="ed_button" onclick="edInsertTag(edCanvas'+nr+', ' + i + ');" value="' + button.display + '" />');
|
||
break;
|
||
}
|
||
}
|
||
|
||
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[i].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[i] == 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[i] == 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 + '_' + bc_field, edOpenTags[edOpenTags.length - 1]);
|
||
}
|
||
}
|
||
|
||
function edQuickLink(i, thisSelect) {
|
||
if (i > -1) {
|
||
var newWin = '';
|
||
if (edLinks[i].newWin == 1) {
|
||
newWin = ' target="_blank"';
|
||
}
|
||
var tempStr = '<a href="' + edLinks[i].URL + '"' + newWin + '>'
|
||
+ edLinks[i].display
|
||
+ '</a>';
|
||
thisSelect.selectedIndex = 0;
|
||
edInsertContent(edCanvas + '_' + bc_field, tempStr);
|
||
}
|
||
else {
|
||
thisSelect.selectedIndex = 0;
|
||
}
|
||
}
|
||
|
||
function edToolbar(nr) {
|
||
document.write('<div id="ed_toolbar_' + nr + '" class="ed_toolbar">');
|
||
for (i = 0; i < edButtons.length; i++) {
|
||
edShowButton(edButtons[i], i, nr);
|
||
}
|
||
// edShowLinks();
|
||
document.write('</div>');
|
||
}
|
||
|
||
// 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[i].tagStart + sel.text + edButtons[i].tagEnd;
|
||
}
|
||
else {
|
||
if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
|
||
sel.text = edButtons[i].tagStart;
|
||
edAddTag(i);
|
||
}
|
||
else {
|
||
sel.text = edButtons[i].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[i].tagStart
|
||
+ myField.value.substring(startPos, endPos)
|
||
+ edButtons[i].tagEnd
|
||
+ myField.value.substring(endPos, myField.value.length);
|
||
cursorPos += edButtons[i].tagStart.length + edButtons[i].tagEnd.length;
|
||
}
|
||
else {
|
||
if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
|
||
myField.value = myField.value.substring(0, startPos)
|
||
+ edButtons[i].tagStart
|
||
+ myField.value.substring(endPos, myField.value.length);
|
||
edAddTag(i);
|
||
cursorPos = startPos + edButtons[i].tagStart.length;
|
||
}
|
||
else {
|
||
myField.value = myField.value.substring(0, startPos)
|
||
+ edButtons[i].tagEnd
|
||
+ myField.value.substring(endPos, myField.value.length);
|
||
edRemoveTag(i);
|
||
cursorPos = startPos + edButtons[i].tagEnd.length;
|
||
}
|
||
}
|
||
myField.focus();
|
||
myField.selectionStart = cursorPos;
|
||
myField.selectionEnd = cursorPos;
|
||
myField.scrollTop = scrollTop;
|
||
}
|
||
else {
|
||
if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') {
|
||
myField.value += edButtons[i].tagStart;
|
||
edAddTag(i);
|
||
}
|
||
else {
|
||
myField.value += edButtons[i].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;
|
||
var scrollTop = myField.scrollTop;
|
||
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;
|
||
myField.scrollTop = scrollTop;
|
||
} else {
|
||
myField.value += myValue;
|
||
myField.focus();
|
||
}
|
||
}
|
||
|
||
function edInsertLink(myField, i, defaultValue) {
|
||
if (!defaultValue) {
|
||
defaultValue = 'carina@cosmos-escorts.com';
|
||
}
|
||
if (!edCheckOpenTags(i)) {
|
||
var URL = prompt('Geben Sie die gew<65>nschte e-mail-Adresse ein:' ,defaultValue);
|
||
if (URL) {
|
||
edButtons[i].tagStart = '"';
|
||
edButtons[i].tagEnd = '":mailto:' + URL;
|
||
edInsertTag(myField, i);
|
||
}
|
||
}
|
||
else {
|
||
edInsertTag(myField, i);
|
||
}
|
||
} |