Benutzer:Hexachloroiridic Acid/common.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
if (typeof st_autokorrektur_an == "undefined") var st_autokorrektur_an = true;
if (typeof st_auch_benutzer_email == "undefined") var st_auch_benutzer_email = true;
if (typeof st_auch_upload_form == "undefined") var st_auch_upload_form = true;
if (typeof st_immer_doppelte_anfuehrungszeichen == "undefined") var st_immer_doppelte_anfuehrungszeichen = false;
if (typeof st_kein_gedankenstrich_bei_signatur == "undefined") var st_kein_gedankenstrich_bei_signatur = true;
if (typeof st_signatur_mit_leerzeichen == "undefined") var st_signatur_mit_leerzeichen = false;
if (typeof st_signatur_mit_leerzeichen_nbsp == "undefined") var st_signatur_mit_leerzeichen_nbsp = true;
if (typeof st_zeige_checkbox == "undefined") var st_zeige_checkbox = true;
var st_is_css_js_subpage = (wgCanonicalNamespace == "User" && wgTitle.match(/\/[^\/]+\.(css|js)/));
if (typeof st_quickedit == "undefined") var st_quickedit = true;
if (typeof st_link_mit_eckiger_klammer == "undefined") var st_link_mit_eckiger_klammer = true;
if (st_is_css_js_subpage) {
	st_autokorrektur_an = false;
	st_zeige_checkbox = false;
}
var st_wiked_aktiv = false;
var st_textbox = null;
if (!st_is_css_js_subpage && st_zeige_checkbox) {
	if (typeof(wikEd) === 'undefined') {
		wikEd = { };
	}
	if (typeof(wikEd.config) === 'undefined') {
		wikEd.config = { };
	}
	if (typeof(wikEd.config.button) === 'undefined') {
		wikEd.config.button = { };
	}
	if (typeof(wikEd.config.buttonBar) === 'undefined') {
		wikEd.config.buttonBar = { };
	}
	wikEd.config.button[100] = ['wikEdAutokorrekturTypographer', 'wikEdButtonChecked', 'Autokorrektur an- und ausschalten', 'http://upload.wikimedia.org/wikipedia/commons/8/82/WikEd_fancyquotes.png', '16', '16', 'Autokorrektur', 'WikEdEditButton(this, this.id, null, function() { (st_autokorrektur_an = !st_autokorrektur_an) });' ];
	wikEd.config.buttonBar['custom1'] = ['wikEdButtonBarCustom1',  'wikEdButtonBarCustom1',  'wikEdButtonsCustom1',  'wikEdButtonsCustom1',  44, 'Benutzerdefinierte Funktionen', [100] ];
}
function ie_getSelection(element) {
	var range = document.selection.createRange(); // We'll use this as a 'dummy'
	var stored_range = range.duplicate(); // Select all text
	stored_range.moveToElementText(element); // Now move 'dummy' end point to end point of original range
	stored_range.setEndPoint('EndToEnd', range); // Now we can calculate start and end points
	element.selectionStart = stored_range.text.length - range.text.length;
	element.selectionEnd = element.selectionStart + range.text.length;
}
function wiked_getSelection(element) {
	var obj = {};
	WikEdGetText(obj, 'selection');
	wikEd.ParseDOM(obj, wikEd.frameBody);
	element.value = obj.plain;
	element.selectionStart = obj.plainFocus;
	element.selectionEnd = obj.plainFocus;
	getCurLine(element);
}
function getCurLine(textarea) {
	var anfang = textarea.value.slice(0, textarea.selectionStart).lastIndexOf("\n") + 1;
	var ende = textarea.value.slice(textarea.selectionStart).indexOf("\n");
	if (ende == -1) {
		textarea.curLine = textarea.value.slice(anfang);
	} else {
		textarea.curLine = textarea.value.slice(anfang, textarea.selectionStart + ende);
	}
	textarea.curLineOffset = anfang;
}
function setcursor(textarea, pos) {
	if (document.selection && document.selection.createRange && !is_opera) { // Internet Explorer
		var range = textarea.createTextRange();
		range.collapse(true);
		var anzahlZeilenumbrueche = textarea.value.slice(0, textarea.selectionStart).split('\r').length - 1;
		range.moveStart("character", pos - anzahlZeilenumbrueche);
		range.moveEnd("character", 0);
		range.select();
	} else {
		textarea.selectionStart = pos;
		textarea.selectionEnd = pos;
	}
}
function createCheckbox() {
	var container = document.createElement("div");
	container.setAttribute("style", "float: right");
	container.id = "st_autokorrektur_an_container";
	container.innerHTML = '<input type="checkbox" id="st_autokorrektur_an" '
	 + (st_autokorrektur_an ? 'checked="checked"' : "") + ' />'
	 + '<label for="st_autokorrektur_an">Autokorrektur</label>';
 
	container.childNodes[0].onchange = function() {
		st_autokorrektur_an = this.checked;
		st_textbox.focus();
	}
	return container;
}
function letzteEingabe(element, vergleich) {
	return (element.curLine.slice(element.selectionStart - vergleich.length - element.curLineOffset, element.selectionStart - element.curLineOffset) == vergleich);
}
function einfuegen(element, text, anzahlLoeschen) {
	var selStart = element.selectionStart; // Anfang der Auswahl zwischenspeichern, da sie in der nächsten Anweisung verändert wird.
	var scrollPos = element.scrollTop;
	element.value = element.value.slice(0, element.selectionStart - anzahlLoeschen) + text + element.value.slice(element.selectionEnd);
	setcursor(element, selStart - anzahlLoeschen + text.length);
	element.scrollTop = scrollPos;
}
function einfuegenWikEd(element, text, anzahlLoeschen) {
	var obj = {};
	WikEdGetText(obj, 'selection');
 
	if (anzahlLoeschen > 0) {
		obj.selection.range.setStart(obj.sel.focusNode, obj.sel.focusOffset - anzahlLoeschen);
		wikEd.FrameExecCommand('delete');
	}
 
	wikEd.FrameExecCommand('inserthtml', text);
}
function charAt(element, position) {
	return element.value.charAt(position);
}
function charAtWikEd(element, position) {
	return element.curLine.charAt(position);
}
function letztesVorkommen(element, text) {
	return element.curLine.slice(0, element.selectionStart - element.curLineOffset).lastIndexOf(text);
}
function isNumeric(c) {
	return (c != "") && ("0123456789".indexOf(c) != -1);
}
function wikEdAktiviert() {
	if ((st_zeige_checkbox) && document.getElementById("st_autokorrektur_an_container") != null) {
		document.getElementById("st_autokorrektur_an_container").style.display = "none";
	}
	st_wiked_aktiv = true;
}
function wikEdDeaktiviert() {
	if (st_zeige_checkbox) {
		if (document.getElementById("st_autokorrektur_an_container") != null) {
			document.getElementById("st_autokorrektur_an_container").style.display = "block";
		}
 
		if (document.getElementById("st_autokorrektur_an") != null) {
			document.getElementById("st_autokorrektur_an").checked = st_autokorrektur_an;
		}
	}
	st_wiked_aktiv = false;
}
function setupForWikEd() {
	wikEd.AddEventListener(wikEd.frameDocument, 'keypress', autokorrektur, true);
	wikEd.frameDocument.letzteEingabe = function(vergleich) { return letzteEingabe(this, vergleich) };
	wikEd.frameDocument.einfuegen = function(text, anzahlLoeschen) { return einfuegenWikEd(this, text, anzahlLoeschen) };
	wikEd.frameDocument.letztesVorkommen = function(text) { return letztesVorkommen(this, text) };
	wikEd.frameDocument.charAt = function(position) { return charAtWikEd(this, position) };
	document.getElementById("wikEdAutokorrekturTypographer").className = (st_autokorrektur_an ? "wikEdButtonChecked" : "wikEdButtonUnchecked");
	document.getElementById("wikEdAutokorrekturTypographer").setAttribute("checked", st_autokorrektur_an);
	wikEdAktiviert();
}
function autokorrektur(evt) {
	if (!st_autokorrektur_an) return true;
	if (document.selection && document.selection.createRange && !is_opera) { // Internet Explorer
		ie_getSelection(this);
		var keyCode = event.keyCode;
		if (keyCode == 0) {
			keyCode = event.charCode;
		}
	} else {
		var keyCode = evt.which;
		if (keyCode == 0) {
			keyCode = evt.charCode;
		}
	}
	if (!(keyCode == 34 || keyCode == 45 || keyCode == 46 || keyCode == 39 || keyCode == 126 || keyCode == 62 || keyCode == 91)) {
		return true;
	}
	if (st_wiked_aktiv) {
		wiked_getSelection(this);
	}
	var selStart = this.selectionStart;
	var selEnde = this.selectionEnd;
	if (!st_wiked_aktiv) {
		getCurLine(this);
	}
	var cancel = false;
 
	switch (keyCode) {
		case 91:
			if (selEnde - selStart > 0 && st_link_mit_eckiger_klammer) {
				insertTags("[[", "]]", "");
				cancel = true;			
			}
 
			break;
 
		case 34:
			if (selEnde - selStart > 0) {
				insertTags("„", "“", "");
				cancel = true;
			} else if (this.letzteEingabe("=") || this.letztesVorkommen("=\"") > this.letztesVorkommen(">") || this.letztesVorkommen("=\"") > this.letztesVorkommen("|}")) {
				return true;
 
			} else if (selStart - this.curLineOffset == 0 || this.letzteEingabe("\n") || this.letzteEingabe(" ")
			 || this.letzteEingabe("(") || this.letzteEingabe("[") || this.letzteEingabe("{") || this.letzteEingabe("|")) {
				if (!st_immer_doppelte_anfuehrungszeichen && this.letztesVorkommen("„") > this.letztesVorkommen("“")) {
					this.einfuegen("‚", 0);
				} else {
					this.einfuegen("„", 0);
				}
			} else {
				if (isNumeric(this.charAt(this.selectionStart - 1)) && this.letztesVorkommen("„") <= this.letztesVorkommen("“")) {
					this.einfuegen("″", 0);
				} else if (!st_immer_doppelte_anfuehrungszeichen && this.letztesVorkommen("‚") > this.letztesVorkommen("‘")) {
					this.einfuegen("‘", 0);
				} else {
					this.einfuegen("“", 0);
				}
			}
			cancel = true;
			break;
		case 45:
			if (this.letzteEingabe("–")) {
				this.einfuegen("--", 1);
			} else if (this.letzteEingabe("-") && !this.letzteEingabe("--") && !this.letzteEingabe("<!-")) {
				this.einfuegen("–", 1);
				cancel = true;
			}
			break;
		case 46:
			if (this.letzteEingabe("..")) {
				this.einfuegen("…", 2);
				cancel = true;
			}
			break;
		case 39:
			if (this.letzteEingabe("’") || this.letzteEingabe("′")) {
				this.einfuegen("''", 1);
				cancel = true;
			} else if (isNumeric(this.charAt(this.selectionStart - 1))) {
				this.einfuegen("′", 0);
				cancel = true;
			} else if (!this.letzteEingabe("'")) {
				this.einfuegen("’", 0);
				cancel = true;
			}
			break;
		case 126:
			if (st_kein_gedankenstrich_bei_signatur) {
				if (!st_signatur_mit_leerzeichen && this.letzteEingabe("–")) {
					this.einfuegen("--", 1);
				} else if (st_signatur_mit_leerzeichen && this.letzteEingabe("– ")) {
					if (st_signatur_mit_leerzeichen_nbsp) {
						if (st_wiked_aktiv) {
							this.einfuegen("--&amp;nbsp;", 2);
						} else {
							this.einfuegen("--&nbsp;", 2);
						}
					} else {
						this.einfuegen("-- ", 2);
					}
				}
			} else {
				if (st_signatur_mit_leerzeichen && st_signatur_mit_leerzeichen_nbsp && this.letzteEingabe("– ")) {
					if (st_wiked_aktiv) {
						this.einfuegen("&amp;nbsp;", 1);
					} else {
						this.einfuegen("&nbsp;", 1);
					}
				}
			}
			break;
		case 62:
			if (this.letzteEingabe("–")) {
				this.einfuegen("--", 1);
			} else if (this.letzteEingabe("-") && !this.letzteEingabe("--")) {
				this.einfuegen("→", 1);
				cancel = true;
			}
			break;
	}
	if (st_wiked_aktiv && cancel) {
		evt.preventDefault();
		return true;
	} else {
		return !cancel;
	}
}
function st_find_textbox() {
	if (st_is_css_js_subpage) {
		return null;
	} else if (document.getElementById("wpTextbox1")) {
		if (!document.getElementById("wpTextbox1").readOnly) {
			return document.getElementById("wpTextbox1");
		}
	} else if (st_auch_benutzer_email && document.getElementById("wpText")) {
		return document.getElementById("wpText");
	} else if (st_auch_upload_form && document.getElementById("wpUploadDescription")) {
		return document.getElementById("wpUploadDescription");
	}
	return null;
}
function st_textbox_init() {
	st_textbox.onkeypress = autokorrektur;
	st_textbox.letzteEingabe = function(vergleich) { return letzteEingabe(this, vergleich); }
	st_textbox.einfuegen = function(text, anzahlLoeschen) { return einfuegen(this, text, anzahlLoeschen); }
	st_textbox.letztesVorkommen = function(text) { return letztesVorkommen(this, text); }
	st_textbox.charAt = function(position) { return charAt(this, position); }
	if (st_zeige_checkbox) {
		var checkbox = createCheckbox();
		if (document.getElementById("toolbar")) {
			document.getElementById("toolbar").appendChild(checkbox);
		} else if (document.getElementById("wikiEditor-ui-toolbar")) {
			document.getElementById("wikiEditor-ui-toolbar").appendChild(checkbox);
		} else {
			if (st_quickedit) { // Workaround
				var frm = qeNodes.Form;
				frm.parentNode.insertBefore(checkbox, frm);
			} else {
				st_textbox.parentNode.insertBefore(checkbox, st_textbox);
			}
		}
	}
}
function st_init() {
	st_textbox = st_find_textbox();
	if (st_textbox != null) {
		st_textbox_init();
	}
}
function st_qe_init() {
	st_textbox = qeNodes.Form.firstChild.childNodes[4];
	if (st_textbox != null) {
		st_textbox_init();
	}
}
$(st_init);
if (!st_is_css_js_subpage) {
	if (typeof(wikEd) == 'undefined') { wikEd = {}; }
	if (typeof(wikEd.config) == 'undefined') { wikEd.config = {}; }
	if (typeof(wikEd.config.setupHook ) == 'undefined') { wikEd.config.setupHook = []; }
	if (typeof(wikEd.config.onHook ) == 'undefined') { wikEd.config.onHook = []; }
	if (typeof(wikEd.config.offHook ) == 'undefined') { wikEd.config.offHook = []; }
	wikEd.config.setupHook.push(setupForWikEd);
	wikEd.config.onHook.push(wikEdAktiviert);
	wikEd.config.offHook.push(wikEdDeaktiviert);
	if (st_quickedit) {
		qeAddHook("qeMakeForm", st_qe_init);
	}
}