Benutzer:Yuszuv/vector.js

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 13. Februar 2011 um 00:36 Uhr durch Yuszuv (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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
function MachWatt() {
	var x = document.cookie;
	docURL = document.URL;
	if (docURL.match(/printable/) || x.substring(x.search(/NoStyle/)+8,x.search(/NoStyle/)+9) == "1") {
		// keine Styles werden verstellt
		// alert("nix passiert");
	} else {
		// contentbreite festlegen
		var Breite = "800px"
		document.getElementById("bodyContent").style.width = Breite;
			
		// was ein em in px ist
		Em = 16;
	
		// Platz auf der rechten Seite berechnen
		Platz = parseInt(document.body.clientWidth) - parseInt(document.getElementById("bodyContent").offsetWidth) - parseInt(document.getElementById("bodyContent").offsetLeft);

		// Seiten- und andere Breiten setzen
		BodyContBreite =  document.getElementById("bodyContent").style.width = (Platz >= Em)? Breite : "100%";
		ZahlBodyContBreite = BodyContBreite.match(/[0-9]/g).join("");

		// überschriften anpassen
		document.getElementById("firstHeading").style.width = BodyContBreite;

		// text zentrieren, wenn nicht gerade versionsgeschichte angezeigt wird
		if (docURL.search(/action=history/) == "-1") {
			document.getElementById("bodyContent").style.textAlign = "justify";
		}

/*
		// teilüberschriften anpassen, wenn sie nicht in tabellen etc. eingebunden sind
		for (var i =0; i< document.getElementsByTagName("h2").length;i++) {
			var Element = document.getElementsByTagName("h2")[i];
			if (Element.parentNode.id == "bodyContent") {
				Element.style.width = BodyContBreite;
			}
		}
*/
		
		// bilder verschieben
		if (docURL.search(/\/Portal:/) == "-1") {
			bilderVerschieben();
		}
	}
}


//bilder verschieben
function bilderVerschieben() {
	Tag = new Array("div","table");
	for (var i in Tag) {
		var TagNr = document.getElementsByTagName(Tag[i]);
		for (var j=0; j<TagNr.length; j++) {
			// pruefeKlassen() :Prüfe, welche klassennamen objekt besitzt, gebe array mit klassennamen zurück, evtl. sortiert
			var TagNrKlassen = PruefeKlassen(TagNr[j]); // Ergebnis ist, welche Klassennamen ein einzelnes div,table besitzt
			// ErsetzeCSS() :lese i-te tag-möglichkeit, den j-ten tag der i-ten tag-möglichkeit und k-ten klassennamen ein, vergleiche mit cases-liste, ersetze css
			for (var k in TagNrKlassen) {
				ErsetzeCSS(Tag[i], j, TagNrKlassen[k]);
			}
		}
	}
}



// pruefe von einem element, welche klassennamen es besitzt und gebe sie als array zurueck
function PruefeKlassen(Element) {
	var KlassenGes = Element.className;
	var KlassenEinz = KlassenGes.split(" ");
	return KlassenEinz;
}


// funktion, die je nach tag UND klassennamen css-styles setzt, nimmt tagnamen UND einzelne klassennamen in empfang
function ErsetzeCSS(TagName, TagNameNr, TagNameKlassenname) {
	var Element = document.getElementsByTagName(TagName)[TagNameNr];
	var Verschiebung = (Platz >= Element.offsetWidth + 2*Em) ? Element.offsetWidth : Platz - 2*Em;
	switch (TagName) {
		case "div":
			switch (TagNameKlassenname) {
				case "tright": case "tleft":
				case "float-right":
					// soll nur kommen, wenns fließtext oder tabelle in fließtext ist
					//if ( Element.parentNode.id == "bodyContent" || Element.parentNode.parentNode.parentNode.parentNode.id == "bodyContent") {
						// für den fall, dass bilder in keiner tabelle angeordnet werden
						if (Element.parentNode.tagName != "TD") {
							Element.style.cssFloat = "right";
							Element.style.clear = "right";
							Element.style.position = "relative";
							if (Platz > -Em) {
								Element.style.left = Verschiebung + Em + "px";
								Element.style.marginLeft = -Verschiebung + "px";
								Element.style.marginRight = "0px";
							} else  {
								Element.style.left = "0px";
								Element.style.marginLeft = Em + "px";
								Element.style.marginRight = "0px";
							}
						// falls es also in einer tabelle angeordnet ist
						// die parent-tabelle floatet und kein text überhalb des ersten td-elements verwendet wird und es weder hintergrund noch rand gibt
						} else if (
								Element.parentNode.parentNode.parentNode.parentNode.classname.search(/float/) != "-1" &&
Element.parentNode.parentNode.parentNode.firstElementChild.firstElementChild.firstElementChild.className.search(/thumb/) != "-1" &&
Element.parentNode.parentNode.parentNode.parentNode.style.borderWidth
							{
/*							Element.style.marginLeft = "-3px";
							// beim rechtesten Element den rechten Abstand anpassen
							// if ( Element.parentNode.parentNode.lastElementChild.firstElementChild.className.match(/.+/.exec(TagNameKlassenname)) == TagNameKlassenname) {
							if ( Element.parentNode.nextElementSibling == null) {
								Element.style.marginRight = "-3px";
								//alert("letztes Element");
							} else {
								Element.style.marginRight = Em + "px";
								//alert("kein letztes Element");
							}
*/
						}
					//}
					break;
				case "tnone": 
					if (Element.offsetWidth > ZahlBodyContBreite) {
						Element.style.cssFloat = "none";
						Element.style.clear = "both";
					} else {
						Element.style.cssFloat = "none";
						Element.style.clear = "none";
					}
					break;
				case "gallerybox":
					Element.parentNode.style.border = "0px none";
					break;	
/*				case "noprint":			case "thumb":		case "gallerytext":
				case "thumbinner":	case "thumbcaption":	case "magnify":		case "center":
				case "catlinks":	case "catlinks-allhidden":	 		case "filledPortlet":
				case "vectorTabs":	case "vectorMenu":	case "emptyPortlet":	case "menu":
				case "collapsible-nav":	case "portal":		case "printfooter":	case "first":
				case "persistent":	case "body":		case "expanded":	case "collapsed":
				case "suggestions":	case "suggestions-results":			case "suggestions-special":
				case "visualClear":	case "topicon":		case "sisterproject":	case "hintergrundfarbe1":
				case "rahmenfarbe1":	case "rahmenfarbe2":	case "metadata":	case "hauptseite-oben":
				case "inhalt":		case "portale":		case "intern":		case "hauptseite-links":
				case "mehr":		case "hauptseite-rechts":	case "mw-specialpage-summary":
				case "mw-rc-label-legend":			case "mw-contributions-footer":
				case "editOptions":	case "editCheckboxes":	case "editButtons":	case "mw-tos-summary":
				case "mw-editTools":	case "templatesUsed":	case "hiddencats":	case "previewnote":
				case "hauptseite-unten":			case "mw-hidden-cats-hidden":
				case "notice-text-wikimania-scholar":		case "siteNoticeSmallAnon":
				case "notice-collapsed-wrapper-wikimania-scholar":
				case "siteNoticeUser":				case "notice-wrapper-wikimania-scholar":
				case "":
					break; */
				default:
					// alert("undefinierter klassenname für divs: " + TagNameKlassenname);
					break;
			}
			break;
		case "table":
			switch (TagNameKlassenname) {
				case "float-right":
					Element.style.cssFloat = "right";
					Element.style.clear = "right";
					Element.style.position = "relative";
					if (Platz > -Em) {
						Element.style.left = Verschiebung + Em + "px";
						Element.style.marginLeft = -Verschiebung + "px";
						Element.style.marginRight = "0px";
					} else {
						Element.style.left = "0px";
						Element.style.marginLeft = Em + "px";
						Element.style.marginRight = "0px";
					}
					break;
				case "gallery":
					Element.style.padding = "0px";
					// und nicht float-right-klasse
					if (!Element.className.match(/float-right/)) {
						if (Element.offsetWidth > ZahlBodyContBreite) {
							Element.style.cssFloat = "none";
							Element.style.clear = "both";
						} else {
							Element.style.cssFloat = "none";
							Element.style.clear = "none";
						}
					}
					break;
/*				case "toc":		case "float-left":	case "float-center":
				case "wikitable":	case "zebra":		case "sp-contributions-footer":
				case "metadata":	case "hintergrundfarbe1":
				case "rahmenfarbe1":
					break; 
				case "":
					break; */
				default:
					// alert("undefinierter klassenname für tables: " + TagNameKlassenname); 
					break;
			}
			break;
		default:
			break;
		}
}
				
// passt den Style an die tatsächlich angezeigte Breite an
window.onresize = MachWatt;


function aktivierungsLinkErstellen() {
	var x = document.cookie;
	var LinkText;
	if (x.substring(x.search(/NoStyle/)+8,x.search(/NoStyle/)+9) == "1") {
		LinkText = "Style aktivieren";
	} else {
		LinkText = "Style deaktivieren";
	}

	// Spalte suchen.
	var column = document.getElementById("p-tb");
	// Box einbauen.
	var li = document.createElement("li");
	li.setAttribute("id", "t-style-deaktivieren");
	column.children[1].children[0].appendChild(li);

	var a = document.createElement("a");
	a.setAttribute("href", "javascript:styleAktivieren()");
	a.setAttribute("title", LinkText);
	li.appendChild(a);

	var aText = document.createTextNode(LinkText);
	a.appendChild(aText);
}

function styleAktivieren() {
	var a = new Date();
	a = new Date(a.getTime() +30);
	var x = document.cookie;
	if ( x.substring(x.search(/NoStyle/)+8,x.search(/NoStyle/)+9) == "1") {
		// style aktivieren
		document.cookie = "NoStyle=0";
		location.reload();
	} else {
		// style deaktivieren
		document.cookie = "NoStyle=1";
		location.reload();
	}
} 
	



addOnloadHook(MachWatt);
addOnloadHook(aktivierungsLinkErstellen);