﻿// JavaScript Document
var xmlHttp;
var debugMode = false;
var cache = new Array(); // Cache
var xmlHttp = createRequestObject();

if (debugMode) {
	var update = 3000; // 3 sek
} else {
	var update = 20000; // 30 sek
}	


function start () {

	neueDaten();
}


function neueDaten () {

	if (xmlHttp) {
		try {
			// keine neue Server operation starten, wenn bereits läuft
			if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
				var params = "";
				// wenn requests im Cache liegen, ältesten nehmen ++++
				if (cache.length > 0) {
					params = cache.shift();
				}
				// Server Seite
				xmlHttp.open("POST", "daten.xml", true);
				xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				xmlHttp.onreadystatechange = handleRequest;
				xmlHttp.send(params);
			} else {
				// wieder neue Nachrichten prüfen
				setTimeout("neueDaten();", update);
			}
		} catch(e) {
			fehlerAnzeige(e.toString());
		}
	}
}


function datenAuslesen () {

	var response = xmlHttp.responseText;
	// Server Error?
	if (response.indexOf("ERRNO") >= 0 || response.indexOf("error:") >= 0 || response.length == 0)
		throw(response.length == 0 ? "Leere Server-Rückgabe." : response);

	// document-Element von XML
	var xmlResponse = xmlHttp.responseXML;
	xmlRoot = xmlResponse.documentElement;

	// Spieldaten
	teamA = xmlRoot.getElementsByTagName('teamA').item(0).firstChild.data;
	teamB = xmlRoot.getElementsByTagName('teamB').item(0).firstChild.data;
	toreA = xmlRoot.getElementsByTagName('toreA').item(0).firstChild.data;
	toreB = xmlRoot.getElementsByTagName('toreB').item(0).firstChild.data;
	zuschauer = xmlRoot.getElementsByTagName('zuschauer').item(0).firstChild.data;

	// Torschützen
	tore_minArray = xmlRoot.getElementsByTagName('min');
	tore_teamArray = xmlRoot.getElementsByTagName('team');
	tore_nrArray = xmlRoot.getElementsByTagName('nr');
	tore_nameArray = xmlRoot.getElementsByTagName('name');

	// Aufstellung Heim
	aufstellA_nrArray = xmlRoot.getElementsByTagName('aufstellA_nr');
	aufstellA_positionArray = xmlRoot.getElementsByTagName('aufstellA_position');
	aufstellA_nameArray = xmlRoot.getElementsByTagName('aufstellA_name');
	aufstellA_gelbArray = xmlRoot.getElementsByTagName('aufstellA_gelbe_karte');
	aufstellA_gelbrotArray = xmlRoot.getElementsByTagName('aufstellA_gelbrote_karte');
	aufstellA_rotArray = xmlRoot.getElementsByTagName('aufstellA_rote_karte');
	aufstellA_minArray = xmlRoot.getElementsByTagName('aufstellA_min');

	// Auswechslung Heim
	auswechsA_zeitArray = xmlRoot.getElementsByTagName('auswechsA_zeit');
	auswechsA_rausArray = xmlRoot.getElementsByTagName('auswechsA_raus');
	auswechsA_reinArray = xmlRoot.getElementsByTagName('auswechsA_rein');

	// Aufstellung Gast
	aufstellB_nrArray = xmlRoot.getElementsByTagName('aufstellB_nr');
	aufstellB_positionArray = xmlRoot.getElementsByTagName('aufstellB_position');
	aufstellB_nameArray = xmlRoot.getElementsByTagName('aufstellB_name');
	aufstellB_gelbArray = xmlRoot.getElementsByTagName('aufstellB_gelbe_karte');
	aufstellB_gelbrotArray = xmlRoot.getElementsByTagName('aufstellB_gelbrote_karte');
	aufstellB_rotArray = xmlRoot.getElementsByTagName('aufstellB_rote_karte');
	aufstellB_minArray = xmlRoot.getElementsByTagName('aufstellB_min');

	// Auswechslung Gast
	auswechsB_zeitArray = xmlRoot.getElementsByTagName('auswechsB_zeit');
	auswechsB_rausArray = xmlRoot.getElementsByTagName('auswechsB_raus');
	auswechsB_reinArray = xmlRoot.getElementsByTagName('auswechsB_rein');

	// Ticker
	ticker_zeitArray = xmlRoot.getElementsByTagName('ticker_zeit');
	ticker_meldungArray = xmlRoot.getElementsByTagName('ticker_meldung');

	anzeigeDaten(toreA, toreB, tore_minArray, tore_teamArray, tore_nrArray, tore_nameArray);
	anzeigeAufstell(teamA, aufstellA_nrArray, aufstellA_positionArray, aufstellA_nameArray, aufstellA_gelbArray, aufstellA_gelbrotArray, aufstellA_rotArray, aufstellA_minArray, auswechsA_zeitArray, auswechsA_rausArray, auswechsA_reinArray, 'heim');
	anzeigeAufstell(teamB, aufstellB_nrArray, aufstellB_positionArray, aufstellB_nameArray, aufstellB_gelbArray, aufstellB_gelbrotArray, aufstellB_rotArray, aufstellB_minArray, auswechsB_zeitArray, auswechsB_rausArray, auswechsB_reinArray, 'gast');
	anzeigeTicker(ticker_zeitArray, ticker_meldungArray);

	setTimeout("neueDaten();", update);
}


function anzeigeDaten (toreA, toreB, minArray, teamArray, nrArray, nameArray) {

	// Ergebnis
	var html = '<table border="0" cellspacing="0" cellpadding="0" width="408"><tr><td style="vertical-align:top;">';
	html += '<table border="0" cellspacing="0" cellpadding="0" width="155" align="left">';
	for (var i = 0; i < minArray.length; i ++) {
		if (teamArray.item(i).firstChild.data == 'h') {
			html += '<tr><td class="zelle_3 textS" style="vertical-align:top; text-align:right; width:25px;">(' + minArray.item(i).firstChild.data + '.)</td>';
			html += '<td class="zelle_3 textS" style="vertical-align:top;">&nbsp;<strong>' + nrArray.item(i).firstChild.data + '</strong> ' + nameArray.item(i).firstChild.data + '</td></tr>';
		}
	}
	html += '</table></td>';
    html += '<td class="textS" style="text-align:center; height:50px; padding-top:20px;"><span style="font-size:40px; font-weight:bold; color:#2d6fa7;">' + toreA + ':' + toreB + '</span>';
    if (zuschauer > 0) {
    	html += '<br /><br />' + zuschauer + ' Zuschauer</td>';
    }
    html += '<td style="vertical-align:top;">';
    html += '<table border="0" cellspacing="0" cellpadding="0" width="155" align="right">';
	for (var i = 0; i < minArray.length; i ++) {
		if (teamArray.item(i).firstChild.data == 'g') {
			html += '<tr><td class="zelle_3 textS" style="vertical-align:top; text-align:right; width:25px;">(' + minArray.item(i).firstChild.data + '.)</td>';
			html += '<td class="zelle_3 textS" style="vertical-align:top;">&nbsp;<strong>' + nrArray.item(i).firstChild.data + '</strong> ' + nameArray.item(i).firstChild.data + '</td></tr>';
		}
	}
	html += '</table></td></tr></table>';

	var anzeige = document.getElementById("daten");
	anzeige.innerHTML = html;
}


function anzeigeTicker (zeitArray, meldungArray) {

	var html = "";
	for (var i = 0; i < meldungArray.length; i ++) {

		html += "<div class=\"zeile\">";
		html += "<div class=\"ausgabe_min\">";
		if (zeitArray.item(i).firstChild.data > '0') html += zeitArray.item(i).firstChild.data + ". min";
		html += "</div>";
		html += "<div class=\"ausgabe_text\">" + meldungArray.item(i).firstChild.data + "</div>";
		html += "<div class=\"clear\"></div>";
		html += "</div>";
		if (i % 10 == 0) {
			html += "<div class=\"zeile\" style=\"background:url(../images/liveticker/logo_wernesgruener.png) no-repeat top left;\">";
			html += "<a href=\"http://www.wernesgruener.de\" target=\"blank\" title=\"Wernesgrüner\" class=\"wernesgruener\">Gemeinsam mit<br /><br /><img src=\"../images/nix.gif\" width=\"105\" height=\"10\" alt=\"Wernesgrüner\" />alles im gr&uuml;nen Bereich!</a>";
			html += "</div>";
		}
	}
	var ausgabe = document.getElementById("ausgabe");
	ausgabe.innerHTML = html;
}


function anzeigeAufstell (team, nrArray, positionArray, nameArray, gelbArray, gelbrotArray, rotArray, minArray, zeitArray, rausArray, reinArray, wo) {

	// Aufstellung
	position = new Array("Tor", "Abwehr", "Mittelfeld", "Angriff");
	var html = "";
	html += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"170\">";
    html += "<tr><th class=\"zelle_h2b textS\" colspan=\"3\">" + team + "</th></tr>";
    html += "<tr><th class=\"zelle_h textS\" colspan=\"3\">Aufstellung</th></tr>";

    for (var p = 0; p < position.length; p ++) {
	    html += "<tr><td class=\"zelle_0 textS\" colspan=\"3\"><strong>&nbsp; " + position[p] + "</strong></td></tr>";
		for (var i = 0; i < nrArray.length; i ++) {
			if (positionArray.item(i).firstChild.data == position[p]) {

				html += "<tr><td class=\"zelle_1 textS\" style=\"text-align:right; width:15px;\"><strong>" + nrArray.item(i).firstChild.data + " </strong></td>";
				html += "<td class=\"zelle_1 textS\" style=\"text-align:left; width:125px;\"> &nbsp;&nbsp;";
				// rote Karte
				if (rotArray.item(i).firstChild.data > 0) {
					html += "<span style=\"text-decoration:line-through;\">" + nameArray.item(i).firstChild.data + "</span> </td>";
					html += "<td class=\"zelle_1\" style=\"text-align:left; width:30px;\"><img src=\"../images/liveticker/rote_karte.png\" width=\"19\" height=\"18\" />";
				// gelbrote Karte
				} else if (gelbrotArray.item(i).firstChild.data > 0) {
					html += "<span style=\"text-decoration:line-through;\">" + nameArray.item(i).firstChild.data + "</span> </td>";
					html += "<td class=\"zelle_1\" style=\"text-align:left; width:30px;\"><img src=\"../images/liveticker/gelbrote_karte.png\" width=\"19\" height=\"18\" />";
				// gelbe Karte
				} else if (gelbArray.item(i).firstChild.data > 0) {
					html += "" + nameArray.item(i).firstChild.data + " </td>";
					html += "<td class=\"zelle_1\" style=\"text-align:left; width:30px;\"><img src=\"../images/liveticker/gelbe_karte.png\" width=\"19\" height=\"18\" />";
				} else {
					html += nameArray.item(i).firstChild.data + "</td>";
					html += "<td class=\"zelle_1\" style=\"text-align:left; width:30px;\"></td>";
				}
				html += "</td></tr>\n";
			}
		}
	}
	html += "</table>";

	// Auswechslung
	html += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"170\">";
	html += "<tr><th class=\"zelle_h textS\" colspan=\"2\">Auswechslungen</th></tr>";
	if (zeitArray.length > 0) {
		for (var i = 0; i < zeitArray.length; i ++) {
			html += "<tr><td class=\"zelle_1 textS\" style=\"text-align:right; width:25px;\">(" + zeitArray.item(i).firstChild.data + ".)</td>";
			html += "<td class=\"zelle_1 textS\" style=\"text-align:left; width:145px;\"><img src=\"../images/liveticker/auswechsel_raus.png\" width=\"24\" height=\"11\" />" + rausArray.item(i).firstChild.data + "<br />";
	        html += "<img src=\"../images/liveticker/auswechsel_rein.png\" width=\"24\" height=\"11\" />" + reinArray.item(i).firstChild.data + "</td></tr>";
			html += "<tr><td colspan=\"2\" width=\"3\"></td></tr>";
		}
	}
	html += "</table>";

	var anzeige = document.getElementById("aufstellung_" + wo);
	anzeige.innerHTML = html;
}


function handleRequest() {

	if (xmlHttp.readyState == 4) {
		if (xmlHttp.status == 200) {
			try {
				datenAuslesen();
			} catch (e) {
				if (debugMode) {
					fehlerAnzeige("Fehler! Kann Server-Antwort nicht lesen: \n" + e.toString());
				} else {
					setTimeout("neueDaten();", (update / 2));
				}
			}
		} else {
			if (debugMode) {
				fehlerAnzeige("Problem mit Datenerstellung: \n" + xmlHttp.statusText);
			} else {
				setTimeout("neueDaten();", (update / 2));
			}
		}
	}
}


function fehlerAnzeige(message) {

	if (debugMode) alert("Error accessing the server! \n" + message);
}