/** regulärer Ausdruck zum einmaligen Erkennen der Zeichenkette "/AT/" */
var REGEXP_AT_ONCE = /\/AT\//;
/** regulärer Ausdruck zum globalen Erkennen der Zeichenkette "/AT/" */
var REGEXP_AT_GLOBAL = /\/AT\//g;

/** Beinhaltet, ob die Ligenübersicht vorliegt */
var IS_LIGA = (location.href.indexOf("/liga.php") > -1);
/** Beinhaltet, ob die Ligenübersicht vorliegt */
var IS_LIGEN = (location.href.indexOf("/ligen.php") > -1);
/** Beinhaltet, ob die Vereinsübersicht vorliegt */
var IS_VEREINE = (location.href.indexOf("/vereine.php") > -1);
/** Beinhaltet, ob eine Vereinsseite vorliegt */
var IS_VEREIN = /\/(verein|meinSTVmeinVerein)\.php/.test(location.href);
/** Beinhaltet, ob die Turnierübersicht oder die Turniersuche vorliegt */
var IS_TURNIERE = (location.href.indexOf("/turniere.php") > -1 || location.href.indexOf("/turniersuche.php") > -1);
/** Beinhaltet, ob die Turnierseite vorliegt */
var IS_TURNIER = (location.href.indexOf("/turnier.php") > -1);
/** Beinhaltet, ob die Ranglistenseite vorliegt */
var IS_RANGLISTEN = (location.href.indexOf("/ranglisten.php") > -1);
/** Beinhaltet, ob die Newsseite vorliegt */
var IS_NEWS = (location.href.indexOf("/news.php") > -1);
/** Beinhaltet, ob die Mitteilungsseite vorliegt */
var IS_MITTEILUNGEN = (location.href.indexOf("/mitteilungen.php") > -1);
/** Liegt eine Bildleiste vor? */
var IS_BILDLEISTE = (location.href.indexOf("Bildleisten") > -1);
/** Liegt eine Datei aus dem Contentverzeichnis vor? */
var IS_CONTENT_FILE = (location.href.indexOf("/Content/file/") > -1);
/** Liegt eine Datei aus dem "homepage"-Verzeichnis vor? */
var IS_HOMEPAGE_FILE = (location.href.indexOf("/homepage/") > -1);
/** Liegt die Druckversion vor? */
var IS_PRINT = (location.search.indexOf("&print=true") > -1);
/** URL-Parameter, der Frame-Nachladen verhindert */
var IS_NO_FORCE_FRAME = (location.search.indexOf("noForceFrame=true") > -1);
/** gibt an, ob eine Bildleiste aufgrund des Seitentypes einzublenden ist*/
var ADD_BILDLEISTE = (IS_VEREIN || IS_LIGA || IS_LIGEN || IS_TURNIER || IS_RANGLISTEN || IS_NEWS || IS_MITTEILUNGEN);
/** HTML-Body-Element */
var body;
/** Inhaltsobjekt */
var content = false;
/** Pfad zum Stammverzeichnis */
var base_path = "";

/**
 * Fügt dem onload-Handler eine Funktion hinzu
 *
 * This script and many more are available free online at
 * The JavaScript Source!! http://javascript.internet.com
 * Created by: Simon Willison | http://simon.incutio.com/
 *
 * @param {Function} func zu ladende Funktion
 */
function addLoadEvent(func)
{
	var oldonload = window.onload;

	if (typeof window.onload != "function")
		window.onload = func;
	else {
		window.onload = function()
		{
			if (oldonload)
				oldonload();
			func();
		}
	}
}

/**
 * Lädt das Frameset nach, falls die Seite
 * nicht in einem Frame aufgerufen wurde.
 *
 * @return Boolean
 */
function forceFrameset()
{
	if (!IS_NO_FORCE_FRAME && !IS_BILDLEISTE && !IS_PRINT) {
		// Das sollte die Root-URL des Frames sein
		var href = IS_CONTENT_FILE
			? location.href.slice(0, location.href.indexOf("Content/file"))
			: IS_HOMEPAGE_FILE
				? location.href.slice(0, location.href.indexOf("homepage"))
				: location.href.slice(0, location.href.lastIndexOf("\/") + 1);

		//var regExp = new RegExp("^" + href + "((\\?)|(index\\.php))");

		// Wenn kein Elternframe vorhanden ist oder er nicht die zuvor
		// berechnete URL zur Indexseite enthält, diese aufrufen und
		// die URL der Inhaltsseite als Fenstername "mitgeben"
		var load = true;
		try {
			if ((
					parent
				&&	parent.location
				&&	(parent.location.href == href || new RegExp("^" + href + "((\\?)|(index\\.php))").test(parent.location.href))
			))
				load = false;
		}
		catch (e) {
		}
		if (load) {
			//alert(parent.location.href + "\n" + href);
			self.name			= "Load=" + location.href;
			self.location.href	= href;
			return true;
		}
	}

	return false;
}

/**
 * Initialisierungsfunktion: Identifiziert die Seite über einen
 * speziellen META-Tag oder über die URL als Inhaltsobjekt
 */
function init()
{
	body = document.getElementsByTagName("body")[0];

	// zugehöriges Contentobjekt ermitteln, welches
	// als URL-Parameter übergeben werden sollte
	var nr = /nr=([0-9]+)/.exec(location.search);
	if (nr != null && parent && parent.naviMgr)
		content = parent.naviMgr.getTree().findNode(nr[1]).getContent();

	// bei Dateien aus dem Contentverzeichnis den
	// relativen Rücksprung zum STV-Rootverzeichnis berechnen
	if (IS_CONTENT_FILE) {
		var depth = location.href.slice(location.href.indexOf("Content/file")).split("/").length - 1;
		for (var i = 0; i < depth; i++)
			base_path += "../";
	}

	// bei Dateien aus dem "homepage"-Verzeichnis eins zurück
	else if (IS_HOMEPAGE_FILE)
		base_path += "../";
}

/**
 * Demaskiert die @-Zeichen-Ersetzung
 */
function deObfuscateMailAdresses()
{
	if (REGEXP_AT_ONCE.test(body.innerHTML))
		body.innerHTML = body.innerHTML.replace(REGEXP_AT_GLOBAL, "@");
}

/**
 * Fügt dem HTML-Quelltext eine Bildleiste hinzu, wenn im
 * aufrufenden Frame eine für diese Seite vorhanden ist
 */
function addBildleiste()
{
	if (ADD_BILDLEISTE || (content && content.getBildleiste())) {
		var $body	= $("body");
		var $iframe	= $("<iframe>").addClass("rechts").attr({
			framespacing: 	0,
			frameborder:	0,
			border:			0,
			scrolling:		"no"
		});

		if (ADD_BILDLEISTE || content.isUrlIntern()) {
			var src = "";
			if (IS_VEREIN)
				src = "/01_Aktuell/02_Bildleisten/Vereins-Seite.htm";
			else if (IS_TURNIER)
				src = "/01_Aktuell/02_Bildleisten/Turnier-Seite.htm";
			else if (IS_LIGA || IS_LIGEN)
				src = "/01_Aktuell/02_Bildleisten/Ligen-Seite.htm";
			else if (IS_RANGLISTEN)
				src = "/01_Aktuell/02_Bildleisten/Ranglisten-Seite.htm";
			else if (IS_MITTEILUNGEN || IS_NEWS)
				src = "/01_Aktuell/02_Bildleisten/Standard-Seite.htm";
			else
				src = content.getBildleiste();

			$iframe.attr("src", base_path + "Content/file" + src);
			//alert(base_path + "Content/file" + src + " => " + iframe.src);
		}
		else {
			// Rootverzeichnis ist hier "Content/file/"
			var root = location.href;
			for (var i = 0, ii = parent.naviMgr.getTree().getLevel(content); i < ii; i++)
				root = root.slice(0, root.lastIndexOf("/"));

			$iframe.attr("src", root + content.getBildleiste());
			//alert(root + "\n" + iframe.src)
		}

		// Diese Bildleisten werden unten horizontal plaziert
		if (/(Ligen|Vereins|Ranglisten|Turnier)-Seite/.test($iframe.attr("src"))) {
			$iframe.removeClass().addClass("unten");
			$body.append($iframe);
		}
		// alle anderen Bildleisten kommen vertikal nach rechts, wobei
		// die Höhe erst hier und nicht per Styledatei gesetzt werden kann
		else {
			$iframe.height($body.height());

			// Tabelle mit zwei Spalten, in die linke kommt der
			// bisherige Inhalt, in die rechte die Bildleiste
			$table = $("<table>").addClass("bildleiste").append(
				$("<tr>")
					.append($("<td>").append($body.contents().clone(true, true)))
					.append($("<td>").addClass("rechts").append($iframe)
			));
			$body.empty().append($table);
		}
	}
}

// Funktionen beim Laden aufrufen
addLoadEvent(
	function()
	{
		init();

		// wenn Frameset nachzuladen ist, gleich abbrechen
		if (forceFrameset() == true)
			return;

		deObfuscateMailAdresses();

		// Druckversion
		if (IS_PRINT) {
			var head  = document.getElementsByTagName("head")[0];
			var link = document.createElement("link");
			link.setAttribute("type", "text/css");
			link.setAttribute("rel", "stylesheet");
			link.setAttribute("href", base_path + "css/print.css");
			head.appendChild(link);
			//alert(link.getAttribute("href"));

			// Sicherheitshalber wird der Hintergrund nochmal
			// explizit auf weiß gesetzt, weil das CSS-Nachladen
			// im IE nicht sofort korrekt dargestellt wird
			document.getElementsByTagName("body")[0].style.backgroundColor = "rgb(255,255,255)";
		}

		else if (parent) {
			// wenn die eingebundene Bildleiste vorliegt,
			// die Abstände am Rand entfernen
			if (IS_BILDLEISTE)
				body.className = "bildleiste";

			// ansonsten als Inhaltsseite betrachten
			else {
				var darstellung = (document.forms[0] && document.forms[0].darstellung) ? document.forms[0].darstellung.value : "";

				if (parent.einstellungen) {
					// wenn Ligen-, Turniere oder Vereineseite, Auswahlsymbole einblenden
					if (IS_LIGEN || IS_VEREINE || IS_TURNIERE || IS_MITTEILUNGEN) {
						parent.symboleShow(parent.einstellungen.bez, true);
						if (IS_LIGEN || IS_TURNIERE)
							parent.symboleShow(parent.einstellungen.ak, true);

						// Ligaauswahl
						parent.showLigaAuswahl(IS_LIGEN);

						// Wertungsfilter
						parent.showWertungFilter(IS_TURNIERE);

						// Vereinssuchfelder
						parent.showVereinSuche(IS_VEREINE);
					}
					// ... sonst ausblenden
					else {
						parent.symboleShow(parent.einstellungen.bez, false);
						parent.symboleShow(parent.einstellungen.ak, false);
						parent.showVereinSuche(false);
						parent.showWertungFilter(false);
						parent.showLigaAuswahl(false);
					}
				}

				// wenn Ligaseite, Titel anpassen und Tabellenauswahl einblenden
				if (IS_LIGA) {
					var titel = parent.getElm("Bezeichnung");
					if (!/ - (Liga|Verein|Turnier)$/.test(titel.getHTML()))
						titel.setHTML(titel.getHTML() + " - Liga");
					else if (/ - (Verein|Turnier)$/.test(titel.getHTML()))
						titel.setHTML(titel.getHTML().replace(/ - (Verein|Turnier)$/, " - Liga"));

					if (darstellung == "")
						parent.buttonActivate("LIGA_Tabelle");
					else if (darstellung == "Spiele" && parent.ligaDarstellung != "Spiele")
						parent.buttonActivate("LIGA_Spiele");
					else if (darstellung == "Kreuz" && parent.ligaDarstellung != "Kreuz")
						parent.buttonActivate("LIGA_Kreuz");

					parent.showLigaDarstellung(true);
				}
				// .. sonst Tabellenauswahl ausblenden
				else if (parent.showLigaDarstellung)
					parent.showLigaDarstellung(false);

				// wenn Vereinsseite, Titel anpassen und Darstellungsauswahl einblenden
				if (IS_VEREIN) {
					var titel = parent.getElm("Bezeichnung");
					if (!/ - (Liga|Verein|Turnier)$/.test(titel.getHTML()))
						titel.setHTML(titel.getHTML() + " - Verein");
					else if (/ - (Liga|Turnier)$/.test(titel.getHTML()))
						titel.setHTML(titel.getHTML().replace(/ - (Liga|Turnier)$/, " - Verein"));

					if (darstellung == "")
						parent.buttonActivate("VEREIN_Visitenkarte");
					else if (darstellung == "Kalender" && parent.vereinDarstellung != "Kalender")
						parent.buttonActivate("VEREIN_Kalender");
					else if (darstellung == "Mannschaften" && parent.vereinDarstellung != "Mannschaften")
						parent.buttonActivate("VEREIN_Mannschaften");

					// Saisonauswahl (de)aktivieren
					parent.getElm("VEREIN_Saisons").setClass((parent.vereinDarstellung == "Visitenkarte") ? "" : "aktiv");

					parent.showVereinDarstellung(true);
				}
				// .. sonst Darstellungsauswahl ausblenden
				else if (parent.showVereinDarstellung)
					parent.showVereinDarstellung(false);

				// wenn Turnierseite, Titel anpassen
				if (IS_TURNIER) {
					var titel = parent.getElm("Bezeichnung");
					if (!/ - (Liga|Verein|Turnier)$/.test(titel.getHTML()))
						titel.setHTML(titel.getHTML() + " - Turnier");
					else if (/ - (Liga|Verein)$/.test(titel.getHTML()))
						titel.setHTML(titel.getHTML().replace(/ - (Liga|Verein)$/, " - Turnier"));
				}

				// Favoritenbutton setzen
				if (parent.setFavoritenButton)
					parent.setFavoritenButton((content) ? content.getLfdNr() : location.href);

				// wenn Inhaltsseite vorliegt, Navigation anpassen
				if (content)
					parent.naviClick(content.getLfdNr());
				else if (/Impressum/.test(location.href))
					parent.getElm("Bezeichnung").setHTML("Impressum");

				// Bildleiste setzen
				addBildleiste();
			}
		}
	}
);
