// IKAÖ JavaScripts
//

Tage	= new Array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
TageKurz = new Array("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");
Monate= new Array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
MonateTage = new  Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
MonatsMatrix = new Array();

//=====================================================================================
function Div(a, b)
{
	return (a - (a % b)) / b;
}

//=====================================================================================
function Datum_diff(Datum1, Datum2, einheit, flag_mitZeit)
{
	// defaults setzen, falls Parameter nicht übergeben wurde
	if (einheit == null) einheit = "d";
	if (flag_mitZeit == null) flag_mitZeit = 0;
	// Falls Uhrzeit nicht berücksichtigt, Datum1 und 2 auf 00:00:00 Uhr setzen
	if (!flag_mitZeit) {
		Datum1.setMilliseconds(0);
		Datum1.setSeconds(0);
		Datum1.setMinutes(0);
		Datum1.setHours(0);
		Datum2.setMilliseconds(0);
		Datum2.setSeconds(0);
		Datum2.setMinutes(0);
		Datum2.setHours(0);
	}
	// Differenz in Millisekunden
	var diff = Datum2.getTime() - Datum1.getTime()
	switch (einheit)
	{
		case ("ms"):
			return diff;
			break;
		case ("s"):
			return diff / 1000;
			break;
		case ("m"):
			return diff / 1000 * 60;
			break;
		case ("h"):
			return diff / 1000 * 60 * 60;
			break;
		case ("d"):
			return diff / 1000 * 60 * 60 * 24;
			break;
	}
}

//=====================================================================================
//	Datum_formatiert
//	Formate: 	w		Sa				t	1			m		1			j		03
//				ww		Sam			tt	01			mm		01			jj		2003
//				www	Samstag						mmm	Jan
//														mmmm	Januar							Beispiel format="wwtmmmmjj" -> Sam, 1. Juli 2003
function Datum_formatiert(Datum, format)
{
	var fw, ft, fm, fj, w, t, m , j;

	// Default-Format setzen, falls nicht übergeben
	if(format == null) format="tmmmmjj";

	fw = (format.indexOf("www") >= 0) ? 4 : ( (format.indexOf("ww") >= 0) ? 3 : ((format.indexOf("w") >= 0) ? 2 : 0) );
	ft = (format.indexOf("tt") >= 0) ? 2 : ((format.indexOf("t") >= 0) ? 1 : 0);
	fm = (format.indexOf("mmmm") >= 0) ? 4 : ((format.indexOf("mmm") >= 0) ? 3 : ((format.indexOf("mm") >= 0) ? 2 : ((format.indexOf("m") >= 0) ? 1 : 0)) );
	fj = (format.indexOf("jj") >= 0) ? 3 : ((format.indexOf("j") >= 0) ? 2 : 0);
	//_____________________________
	// Name Wochentag setzen
	if (fw == 4) {
		w = Tage[Datum.getDay()];
	}
	else	w = Tage[Datum.getDay()].substr(0, fw);
	if (fw && (ft + fm + fj)) w = w + ", ";
	//_____________________________
	// Tag setzen
	if (ft == 1) {
		t = Datum.getDate();
	}
	else t = ("0" + Datum.getDate()).substr(0 + ((Datum.getDate()>10) ? 1 : 0), ft);
	if (t != "") t = t + ". ";
	//_____________________________
	// Monat setzen
	if (fm > 2) {
		// Monat im Textformat
		if (fm == 4) {
			m = Monate[Datum.getMonth()];
		}
		else	m = Monate[Datum.getMonth()].substr(0, fm);
		if (m != "") m = m + " ";
	}
	else {
		// Monat im Zahlenformat
		if (fm == 1) {
			m = Datum.getMonth() + 1;
		}
		else m = ("0" + (Datum.getMonth()+1)).substr(0 + ( (Datum.getMonth()>8) ? 1 : 0), fm);
		if (m != "") m = m + ". ";
	}
	//_____________________________
	// Jahr setzen
	if (fj == 3) {
		j = Datum.getFullYear();
	}
	else j = (String(Datum.getFullYear())).substr(2, fj);

	return (w +  t + m + j);
}

//=====================================================================================
//	Datum_Ostern
function Datum_Ostern(Jahr)
{
	var a = Jahr % 19;
	var b = Jahr % 4;
	var c = Jahr % 7;
	var d = Div( (Div(Jahr, 100) * 8 + 13), 25) - 2;
	var e = Div(Jahr, 100) - Div(Jahr, 400) - 2;
	var f = (15 + e - d) % 30;
	var g = (6 + e) % 7;
	var h = (19 * a + f) % 30;
	var i = (2 * b + 4 * c + 6 * h + g) % 7;
	return (new Date(Jahr, 2, h + i + 22));
}

//=====================================================================================
function Schaltjahr(Jahr)
{
	return (Jahr%4==0 && !((Jahr%100==0) && (Jahr%400!=0)) ? 1 : 0);
}

//=====================================================================================
function Jahrestag(Datum)
{
	var offsets = new Array(0, 1, -1, 0, 0, 1, 1, 2, 3, 3, 4, 4);
	var m = Datum.getMonth();
	return Datum.getDate() + (m*30) + offsets[m] + Schaltjahr(Datum.getFullYear());
}

//=====================================================================================
function Kalenderwoche(Datum)
{
	return 1;
}

//=====================================================================================
function Sommerzeit(Datum)
{

}

//=====================================================================================
function Winterzeit(Datum)
{

}

function SetMonatsMatrix(Jahr, Monat)
{
	var Days = MonateTage[Monat-1];
	if (Monat == 2 && Schaltjahr(Jahr)) Days++;
	var FirstDay = (new Date(Jahr, Monat-1, 1)).getDay();	//  FirstDay So=0, Mo=1, ... , Sa=6
	if (FirstDay > 0) FirstDay--; else FirstDay = 6;				//  FirstDay Mo=0, Di=1, ... , So=6
	for (var i = 0; i < FirstDay; i++)	MonatsMatrix[i] = "&nbsp;";
	for (var i = 1; i < Days + 1; i++) MonatsMatrix[FirstDay + i-1] = i;
	for (var i = FirstDay + Days; i < 42; i++) MonatsMatrix[i] = "&nbsp;";
}

function Wochentag(Datum)
{
	var FirstDay = Datum.getDay();				//  FirstDay So=0, Mo=1, ... , Sa=6
	return ((FirstDay > 0) ? FirstDay-- : 6);	//  FirstDay Mo=0, Di=1, ... , So=6
}

function Kalender(Jahr, Monat)
{
	var heute=new Date();
	var woche=Kalenderwoche(new Date(Jahr, Monat-1, 1));
	SetMonatsMatrix(Jahr, Monat);
	document.write('<table border="1" cellpadding="2" cellspacing="0">');

	// Monat Jahr
	document.write('<tr><td align="center" valign="middle" colspan="8">' + Monate[Monat-1] + ' ' + Jahr + '</td></tr>');

	// Wochentage
	document.write('<tr>');
	document.write('<td align="center" valign="middle">Wo</td>');
	for (var i=0; i<7; i++) document.write('<td align="center" valign="middle">' + TageKurz[i] + '</td>');
	document.write('</tr>');

	var first = Wochentag(new Date(Jahr, Monat-1, 1));
	//alert(first);

	// Matrix
	for (var zeile=0; zeile < 6; zeile++) {
		document.write("<tr>");
		if (zeile + first -1 < 5)
			document.write('<td align="center" valign="middle">' + (woche + zeile) + '</td>');
		else
			document.write('<td align="center" valign="middle">nbsp;</td>');
		for (var spalte=0; spalte < 7; spalte++) {
			document.write('<td align="center" valign="middle">' + MonatsMatrix[zeile*7+spalte] + '</td>');
		}
		document.write("</tr>");
	}
	document.write('<tr><td align="left" valign="middle" colspan="8">Heute: ' + Datum_formatiert(heute, "wwwtmmmmjj") + '</td></tr>');
	document.write('<tr><td align="left" valign="middle" colspan="8">Tag ' + Jahrestag(heute) + "/" + (365 + Schaltjahr(Jahr)) + '</td></tr>');
	document.write("</table>");
}


//========================
// WriteMailAdress:
// mailto-Tag per JavaScript ins Dokument schreiben um E-Mail-Adressen vor Spammern zu verbergen.
// Parameter:
function MailAdresse(user, domain, text, status)
{
	domain = (domain==null || domain=="") ? "ikaoe.unibe.ch" : domain;
	text = (text==null || text=="") ? user + '@' + domain : text;
	status = (status==null || status=="") ? "Sendet eine E-Mail an " + text : status;
	document.write ('<a href=\"mailto:' + user + '@' + domain + '\" onmouseover=\"status=\''+ status + '\';return true;\" onmouseout=\"status=\'\';return true;\">' + text + '</a>');
}

// urlstring = "http://www.ikaoe.unibe.ch/forschung/apug/test.html"
//				/
//									/forschung
//													/forschung/apug
//		IKAÖ - Forschung - Apug

function Site_Pfad()
{	
	//var baseurl = "http://www.ikaoe.unibe.ch";
	var urlstring = document.URL;
	
	urlstring = urlstring.replace(/http:\/\/www.ikaoe.unibe.ch/, '<a href="/" target="_top" onmouseover="status=\'Homepage der IKA&Ouml;\';return true;">IKAÖ</a> - ');
	
	// string 'http://' löschen
	urlstring = urlstring.replace(/http:\/\//, '');
	alert(urlstring);
	
	// path-elemente in array ablegen
	var path = urlstring.split("/");
	
	alert (path.length);
	alert (path[1]);
	
	// letztes element '*.html' löschen
	path.pop();
	
	//urlstring = "";
	
	for (var i=0; i < path.length; i++) {
		//alert (path[i]);
		//urlstring = urlstring + path[i];
	}
	
	return urlstring;
}


// Netscape 4-Kompatibilität:
// Resize Fix beim Einfügen von Ebene hinzufügen fügt in den head-Abschnitt eines Dokuments JavaScript-Code ein,
// um damit ein bekanntes Problem bei Netscape-Browsern der Versionen 4.x zu beheben, durch das Ebenen ihre 
// Positionskoordinaten verlieren, wenn ein Besucher die Größe des Browserfensters verändert.
// Der JavaScript-Code bewirkt, dass die Seite nach jeder Größenveränderung des Browserfensters neu geladen wird,
// wodurch den Ebenen die richtige Position erneut zugewiesen wird.
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
// Aufruf mit: MM_reloadPage(true);


var hints_enabled=true;

function show(id) {
 if(hints_enabled){
   if(document.getElementById)
     document.getElementById(id).style.visibility = "visible";
 }
}

function hide(id) {
  if(hints_enabled){
    if(document.getElementById)
      document.getElementById(id).style.visibility = "hidden";
  }
}
