/*	Aktuelle XP Revision: $Revision: 1.3 $
	Letzte XP Aenderung am: $Date: 2006/02/28 13:53:37 $ GMT */
/* for the IE only workarounds */
var ie = (document.all) ? true : false;
/* for the WebKit (Apple Safari) only workarounds */
var webKit= navigator.userAgent.indexOf('AppleWebKit/') > -1;
/* to get rid of the pre-text in inputs */
/* needs two functions, if a ...... user enters the default Value... */
function onFocusCheckEntry(which, cont, colorChange) {
	if(cont !=  "dummy" && which.value == cont) {
		which.value = "";
	}
}

function onBlurCheckEntry(which, cont, colorChange) {
	if(cont !=  "dummy" && which.value == '') {
		which.value = cont;
	}
}

function openWin(ziel,breite,hoehe) {
    options = "width="+breite+",height="+hoehe+",toolbar=no,locationbar=no,directories=no,scrollbars=yes,status=no,menubar=no,resizable=no";
	win = eval("top.newwindow");
	if(win) { //wenn schon ein Popup ge�ffnet ist - erst schliessen und dann neu aufmachen
		if(!win.closed) win.close();
	}
	window.open(ziel, "newWindow" ,options);
}

function openNewWin(ziel,breite,hoehe) {
	//alert("2: " + ziel);
	if(breite == null) breite = "675";
	if(hoehe == null) hoehe = "550";
	ziel = ziel.href;
    options = "width="+breite+",height="+hoehe+",toolbar=no,locationbar=no,directories=no,scrollbars=yes,status=no,menubar=no,resizable=no";
	win = eval("top.newWindow2");
	if(win) { //wenn schon ein Popup ge�ffnet ist - erst schliessen und dann neu aufmachen
		if(!win.closed) win.close();
	}
	window.open(ziel, "newWindow2" ,options);
}


function adjustWindow(breite, hoehe) { //f�r die Multimedia Popups
	if(!breite) breite = 1000;
	if(!hoehe) hoehe = 750;
	top.window.resizeTo(breite, hoehe);
}

function changeTitleAndTarget() {
	if(!document.getElementsByTagName) return;
	var links = document.getElementsByTagName("a");
	for(i=0; i<links.length; i++) {
		if(links[i].target == "_blank") {
			origLink = links[i].href;
			origTitle = links[i].title;
			if(origTitle != "Externer Link [neues Fenster]") {
				links[i].title = origTitle + " Externer Link [neues Fenster]";
			}
			links[i].onclick = openMyWin;
		}
	}
}

function openMyWin() {
	//breite = "1024";
	//hoehe = "768";
	//options = "width="+breite+",height="+hoehe+",top=0,left=0,toolbar=no,locationbar=no,directories=no,scrollbars=yes,status=no,menubar=no,resizable=yes";
	options = "top=0,left=0,toolbar=no,locationbar=no,directories=no,scrollbars=yes,status=no,menubar=no,resizable=yes";
	win = eval("top.newwindow");
	if(win) { //wenn schon ein Popup ge�ffnet ist - erst schliessen und dann neu aufmachen
		if(!win.closed) win.close();
	}
	window.open(this.href, "newWindow2", options);
	return false;
}

//Ajax-Handling
function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		ro = new XMLHttpRequest();
	}
	return ro;
}
var xmlHttp = createRequestObject();


var counter = 0;
tempExternal = window.onload;
window.onload = function() {
					if(counter == 0) {
						if(typeof tempExternal == "function") tempExternal();
						changeTitleAndTarget();
						alleSpan = document.getElementsByTagName("span");
						ausstrahlungsArray = new Array();
						for(i=0; i<alleSpan.length; i++) {
							if(alleSpan[i].className == "ausstrahlung" && alleSpan[i].innerHTML != "") {
								//alert("1: " + alleSpan[i].innerHTML);
								sndReq(alleSpan[i]);
							}
						}
						if(webKit && navigator.userAgent.indexOf('Chrome/') === -1){
							loadCss(["swr_webkit"]);
						}
						counter++;
					}
				}


queue = new Array();
var myObject;
var firstMyObject;
function sndReq(myObjectDing) { //file, div
	myObject = myObjectDing;
	if(firstMyObject == null) {
		firstMyObject = myObjectDing;
	}
	//alert("sndReq: " + queryString + " # " + myObject.innerHTML);
	file = "http://www.wissen.swr.de/aktuelleAusstrahlung/?sendung=" + myObject.innerHTML;
	//div = "";
	if(xmlHttp) {
		/* Request Daten in die Warteschlange setzen, falls der vorherige noch nicht abgeschlossen ist */
		if(xmlHttp.readyState == 1 || xmlHttp.readyState == 2 || xmlHttp.readyState == 3) {
			queueLength = queue.length;
			queue[queueLength] = new Array();
			queue[queueLength][0] = file;
			queue[queueLength][1] = myObject.innerHTML;
			queue[queueLength][2] = myObject;
			//console.debug("* queue = " + queue[queueLength][2]);
		} else {
			xmlHttp.open('get', file);
			//console.debug("rufe handleResponse mit " + myObject.innerHTML);
			xmlHttp.onreadystatechange = handleResponse;
			xmlHttp.send(null);
		} //ende else
	}
}


function handleResponse() {
	//alert("myObject: " + myObject);
	if(xmlHttp.readyState == 4) {
		if(xmlHttp.status == 200) {
			XMLresponse = xmlHttp.responseXML;
			prefix = "";
			datum = "";
			sendezeit = "";
			if(XMLresponse.getElementsByTagName('naechsteAusstrahlung')[0] != null) {
				prefix = "N�chste Ausstrahlung: ";
				datum = XMLresponse.getElementsByTagName('naechsteAusstrahlung')[0].getElementsByTagName("sendezeit")[0].firstChild.data;
			} else if(XMLresponse.getElementsByTagName('letzteAusstrahlung')[0] != null) {
				prefix = "Letzte Ausstrahlung: ";
				datum = XMLresponse.getElementsByTagName('letzteAusstrahlung')[0].getElementsByTagName("sendezeit")[0].firstChild.data;
			}

			jahr = datum.substr(0,4);
			monat = datum.substr(5,2);
			tag = datum.substr(8,2);
			stunde = datum.substr(11,2);
			minute = datum.substr(14,2);
			wochentag = getWeekDay(tag, monat, jahr);
			formatedDate = wochentag + ". " + tag + "." + monat +"." + jahr + ", " + stunde +":"+minute + " Uhr";

			if(datum != "") {
				medien = XMLresponse.getElementsByTagName('medien');
				medienString = "";
				for(j=0; j<medien.length; j++) {
					medienNr = medien[j].getElementsByTagName("medien_nr")[0].firstChild.data;
					sprache = medien[j].getElementsByTagName("sprache")[0].firstChild.data;
					art = medien[j].getElementsByTagName("art")[0].firstChild.data;
					if(j == medien.length-1) { divider = ""; } else { divider = " / "; }
					medienString = medienString + medienNr + " (" + sprache + ", " + art +") " + divider;
				}

				sendezeit = prefix + formatedDate + " <br /><span style='font-weight: normal;'>Mediennummer: " + medienString + "</span>";
			}

			if(firstMyObject != null && firstMyObject != -1) {
				//console.debug("is myObject da 1? " + firstMyObject + "("+firstMyObject.innerHTML+")");
				setAusstrahlung(sendezeit, firstMyObject);
				firstMyObject = -1;
			} else {
				//console.debug("is myObject da 2? " + myObject + "("+myObject.innerHTML+")");
				setAusstrahlung(sendezeit, myObject);
			}

		}
		/* Warteschlange abarbeiten */
		queueLength = queue.length;
		//console.debug("queueLength=" + queueLength);
		if(queueLength != 0) {
			//console.debug("* bearbeite in der queue: " + queue[0][1] +" # "+ queue[0][2]);
			sndReq(queue[0][2]); //queue[0][0], queue[0][2]
			queue.shift(); //Erstes Element entfernen, den Rest eine Position nach vorne r�cken
		}
	}
}

function setAusstrahlung(sendezeit, myObject) {
	//console.debug("setAusstrahlung: " + sendezeit +" # "+ myObject.innerHTML);
	myObject.innerHTML = sendezeit;
	allSpan = document.getElementsByTagName("span");
	for(i=0; i<allSpan.length; i++) {
		if(allSpan[i].className == "ausstrahlung" && allSpan[i].innerHTML != "") {
			if(sendezeit != "") {
				allSpan[i].style.fontSize = "11px";
				allSpan[i].style.color = "#000";
			}
		}
	}
}




function getWeekDay(dd,mm,yyyy) {
	// Referenztag ist Samstag, der 01.01.0001.
	// Nun werden alle Tage bis zum Eingabe-Datum gez�hlt.
	// Alle-Vergangenen-Tage modulo 7 ergibt dann eine Zahl
	// zwischen 0 und 6, die einen Wochentag
	// zwischen Samstag und Freitag repr�sentiert.

	// grobe Z�hlung: Ganze Jahre +
	// Tage im aktuellen Monat + ganze Monate im aktuellen Jahr
	var month = "312831303130313130313031";
	var days = (yyyy-1)*365 + (dd-1);
	for(var i=0;i<mm-1;i++) days += month.substr(i*2,2)*1;

	// Kalenderreform: Sprung vom 04.10.1582 zum 15.10.1582
	if(yyyy>1582 || yyyy==1582 && (mm>10 || mm==10 && dd >4)) days -= 10;

	// Schaltjahre bis 1599: alle Jahre, die durch 4 teilbar sind.
	// Ab 1600: alle Jahre, die durch 4 teilbar sind,
	// au�er den vollen Jahrhunderten,
	// es sei denn, sie sind durch 400 teilbar.
	var leapyears = Math.floor(yyyy / 4);
	if(yyyy%4==0 && mm<3) leapyears--;
	if(yyyy>=1600) {
	  leapyears -= Math.floor((yyyy-1600) / 100);
	  leapyears += Math.floor((yyyy-1600) / 400);
	  if(yyyy%100==0 && mm<3) {
		leapyears++;
		if(yyyy%400==0) leapyears--;
	  }
	}
	days += leapyears;

	// Ergebnis anzeigen
	var week = "SaSoMoDiMiDoFr";
	//alert(week.substr(days%7*2,2)+",  "+ dd+"."+mm+"."+yyyy);
	return week.substr(days%7*2,2);
}

/**
* @classDescription Laedt dynamisch die benoetigten CSS-Dateien nach
* @author	Florian Weber (florian.weber@xplain.de)
* @param {Array} styles Array mit den CSS-Dateinamen (ohne Suffix)

*/
function loadCss(styles) {
	for(i=0; i<styles.length; i++) {
		obj = document.createElement('link');
		obj.setAttribute('rel','stylesheet');
		obj.setAttribute('type','text/css');
		obj.setAttribute('media','screen, projection');
		obj.setAttribute('href',varconf.cssPath + styles[i]+'.css');
		document.getElementsByTagName('head')[0].appendChild(obj);
	}
}
var varconf = {
	cssPath : "fileadmin/templates/swr/css/"
}

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}



addLoadEvent(function(){
  if(webKit  && navigator.userAgent.indexOf('Chrome/') === -1) loadCss(["swr_webkit"]);
})

function targetBlank (url) {
	      blankWin = window.open(url,'_blank','menubar=yes,toolbar=yes,location=yes,directories=yes,fullscreen=no,titlebar=yes,hotkeys=yes,status=yes,scrollbars=yes,resizable=yes');
	    }
