function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function openPopup(pic) {
	window.open('/lib/bild_popup.php?pic=' + pic,'Bildansicht','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=250,height=100,top=70,left=70');
}

function AddBookmark(url, name) {
	if (navigator.appName.indexOf("Explorer") != -1)	{
		window.external.AddFavorite(url, name);
	 } else {
			if (navigator.appName.indexOf("Netscape") != -1) {
				alert('Diese Funktion wird von Ihrem Browser nicht unterstützt.\nUm diese Seite als Leseszeichen zu speichern drücken Sie bitte die Tasten Strg+D auf Ihrer Tastatur.');
			} else {
				alert('Diese Funktion wird von Ihrem Browser nicht unterstützt.\nUm diese Seite als Leseszeichen zu speichern drücken Sie bitte die Tasten Strg+D auf Ihrer Tastatur.');
			}
	} 
}

// Datumsplausis und Vorbelegungen
function bp_setUesi(server_time_in_sec,date,time,ues_intervall){
	var day = date.substr(0,2);
	var month = date.substr(3,2);
	var year = date.substr(6,4);
	var hours = time.substr(0,2);
	var minutes = time.substr(3,2);
	var millisec = (ues_intervall*24*60*60*1000)+Date.UTC(year,month-1,day,hours,minutes,00);
	var obj = new Date(millisec);
	day = obj.getDate()<10?"0"+obj.getDate():obj.getDate();
	month = (obj.getMonth()+1)<10?"0"+(obj.getMonth()+1):obj.getMonth()+1;
	year = obj.getYear();
	var yearstring = year.toString();
	year = yearstring.length<4?obj.getYear()+1900:obj.getYear();
	
	// Wiedervorlagedatum setzen
	document.imperia.wiedervorlagedatum.value = day+"."+month+"."+year;
	
	return "GO";
}

function bp_setDate(servertime_in_sec,ues_intervall,flag){
	var millisec = servertime_in_sec*1000;
	var obj = new Date(millisec);
	var day = obj.getDate()<10?"0"+obj.getDate():obj.getDate();
	var month = (obj.getMonth()+1)<10?"0"+(obj.getMonth()+1):obj.getMonth()+1;
	var year = obj.getYear();
	var yearstring = year.toString();
	year = yearstring.length<4?obj.getYear()+1900:obj.getYear();
	var hour = obj.getHours()<10?"0"+obj.getHours():obj.getHours();
	var min = obj.getMinutes()<10?"0"+obj.getMinutes():obj.getMinutes();
	
	var tdate = day+"."+month+"."+year;
	var ttime = hour+":"+min;
	
	if(flag > 0){
		document.imperia.datum.value = tdate;
		document.imperia.uhrzeit.value = ttime;
	}
	
	bp_setUesi(servertime_in_sec,tdate,ttime,ues_intervall);
	
	return "GO";
}

function bp_setDate_l_Pruef(servertime_in_sec,ues_intervall){
	var millisec = servertime_in_sec*1000;
	var obj = new Date(millisec);
	var day = obj.getDate()<10?"0"+obj.getDate():obj.getDate();
	var month = (obj.getMonth()+1)<10?"0"+(obj.getMonth()+1):obj.getMonth()+1;
	var year = obj.getYear();
	var yearstring = year.toString();
	year = yearstring.length<4?obj.getYear()+1900:obj.getYear();
	var hour = obj.getHours()<10?"0"+obj.getHours():obj.getHours();
	var min = obj.getMinutes()<10?"0"+obj.getMinutes():obj.getMinutes();
	
	var lpdate = day+"."+month+"."+year;
	var lptime = hour+":"+min;
	
	document.imperia.l_pruefung_datum.value = lpdate;
	document.imperia.l_pruefung_uhrzeit.value = lptime;
	
	bp_setUesi(servertime_in_sec,lpdate,lptime,ues_intervall);
	
	return "GO";
}

function chkDateEntry(servertime_in_sec,dateString,feld){
	if (datumNormalisieren(servertime_in_sec,dateString,feld) == "STOP") {
		alert("Bitte geben Sie ein gültiges Datum ein!");
		eval("document.imperia."+feld+".focus()");
		return "STOP";
	}
	return "GO";
}

function chkTime(zeitString,feld){
	if (zeitNormalisieren(zeitString,feld) == "STOP") {
		alert("Bitte geben Sie eine gültige Uhrzeit ein");
		eval("document.imperia."+feld+".focus()");
		return "STOP";
	}
	return "GO";
}

// dateString kommt im Format DD.MM.YYYY
function chkDate(dateString){
	var day = dateString.substr(0,2);
	var month = dateString.substr(3,2);
	var year = dateString.substr(6,4);
	var td = new Date(Date.UTC(year,month-1,day,00,00,00));
	var vglDay = td.getDate();
	var vglMonth = td.getMonth()+1;
	var vglYear = td.getYear();
	if (vglYear < 1900) {
		vglYear = vglYear + 1900;
	}
	if(vglDay != day || vglMonth != month || vglYear != year){
		alert("Bitte geben Sie ein gültiges Datum ein!");
		return "STOP";
	}
	
	return "GO";
}

function chkDeleteDate(servertime_in_sec,dateString,press) {
	if ((dateString == '') && (press == 1)) {
		alert("Sie müssen bei Pressemeldungen ein Löschdatum eingeben!");
		eval("document.imperia.loeschdatum.focus()");
		return "STOP";
	}
	if (dateString != '') {
		/*var day = dateString.substr(0,2);
		var dot1 = dateString.substr(2,1);
		if (dot1 != '.') {
			alert("Bitte geben Sie ein gültiges Löschdatum ein!");
			eval("document.imperia.loeschdatum.focus()");
			return "STOP";
		}
		var month = dateString.substr(3,2);
		var dot2 = dateString.substr(5,1);
		if (dot2 != '.') {
			alert("Bitte geben Sie ein gültiges Löschdatum ein!");
			eval("document.imperia.loeschdatum.focus()");
			return "STOP";
		}
		var year = dateString.substr(6,4);
		var td = new Date(Date.UTC(year,month-1,day,00,00,00));
		var vglDay = td.getDate();
		var vglMonth = td.getMonth()+1;
		var vglYear = td.getYear();
		if (vglYear < 1900) {
			vglYear = vglYear + 1900;
		}
		if(vglDay != day || vglMonth != month || vglYear != year){
			alert("Bitte geben Sie ein gültiges Löschdatum ein!");
			eval("document.imperia.loeschdatum.focus()");
			return "STOP";
		}*/
		if (datumNormalisieren(servertime_in_sec,dateString,'loeschdatum') == "STOP") {
			alert("Bitte geben Sie ein gültiges Löschdatum ein!");
			eval("document.imperia.loeschdatum.focus()");
			return "STOP";
	}
	}
	return "GO";
}

function formatDeleteDate() {
	if (document.imperia.loeschdatum.value != '') {
		var loeschdatum = document.imperia.loeschdatum.value;
		var day = loeschdatum.substr(0,2);
		var month = loeschdatum.substr(3,2);
		var year = loeschdatum.substr(6,4);
		document.imperia.expiry_date.value = year+'-'+month+'-'+day+' 23:50'; //setze das exiry_date auf das Ende des Tages
	} else {
		document.imperia.expiry_date.value = '';
	}
	return "GO";
}

function chkFuture(vgl_inputDate,servertime_in_sec,flag){
	//Aktuelles Datum im Vergleichsformat - YYYYMMDD
	var srv_millisec = servertime_in_sec*1000;
	var srv_obj = new Date(srv_millisec);
	var srv_day = srv_obj.getDate()<10?"0"+srv_obj.getDate():srv_obj.getDate();
	var srv_month = (srv_obj.getMonth()+1)<10?"0"+(srv_obj.getMonth()+1):srv_obj.getMonth()+1;
	var srv_year = ""+srv_obj.getYear();
	srv_year = srv_year.length<4?srv_obj.getYear()+1900:srv_year;
	var srv_vgl_date = srv_year+srv_month+srv_day;
	
	// Zukunftsprüfung
	if(flag == "no"){
		if(parseInt(vgl_inputDate) > parseInt(srv_vgl_date)){
			alert("Datum darf nicht in der Zukunft liegen!");
			return "STOP";
		}
	} else {
		if(parseInt(vgl_inputDate) <= parseInt(srv_vgl_date)){
			alert("Datum muss in der Zukunft liegen!");
			return "STOP";
		}
	}
	
	return "GO";
}

function chkPast(vgl_inputDate,servertime_in_sec){
	//Aktuelles Datum minus 1 Jahr im Vergleichsformat - YYYYMMDD
	var oneYearInSeconds = 365*24*60*60;
	var srv_millisec_moy = (servertime_in_sec - oneYearInSeconds)*1000;
	var srv_obj_moy = new Date(srv_millisec_moy);
	var srv_day_moy = srv_obj_moy.getDate()<10?"0"+srv_obj_moy.getDate():srv_obj_moy.getDate();
	var srv_month_moy = (srv_obj_moy.getMonth()+1)<10?"0"+(srv_obj_moy.getMonth()+1):srv_obj_moy.getMonth()+1;
	var srv_year_moy = srv_obj_moy.getYear();
	var srv_yearstring_moy = srv_year_moy.toString();
	srv_year_moy = srv_yearstring_moy.length<4?srv_obj_moy.getYear()+1900:srv_obj_moy.getYear();
	var srv_vgl_date_moy = srv_year_moy+srv_month_moy+srv_day_moy;
	
	// Vergangenheitsprüfung
	if(parseInt(vgl_inputDate) < parseInt(srv_vgl_date_moy)){
		alert("Datum darf nicht mehr als 1 Jahr zurückliegen!");
		return "STOP";
	}
	return "GO";
}

function datumNormalisieren(servertime_in_sec,datumString,feld){
	var tag		= "tt";		// diese 3 Variablen sind immer als Strings zu sehen!
	var monat	= "mm";
	var jahr	= "jjjj";
	
	// enthält datumString Punkte?
	if(datumString.indexOf(".") == -1){
		// datumString enthält keine Punkte
		switch(datumString.length){
			case 3:{
				// 3 Zeichen
				// diese werden als tmj interpretiert
				tag		= datumString.substr(0, 1);
				monat	= datumString.substr(1, 1);
				jahr	= datumString.substr(2, 1);
				jahr = "200" + jahr;
				break;
			}
			case 4:{
				// 4 Zeichen
				// diese werden als tmjj interpretiert
				tag		= datumString.substr(0, 1);
				monat	= datumString.substr(1, 1);
				jahr	= datumString.substr(2, 2);
				jahr = "20" + jahr;
				break;
			}
			case 5:{
				// 5 Zeichen
				// diese werden als ttmmj interpretiert
				tag		= datumString.substr(0, 2);
				monat	= datumString.substr(2, 2);
				jahr	= datumString.substr(4, 1);
				jahr = "200" + jahr;
				break;
			}
			case 6:{
				// 6 Zeichen
				// diese werden als ttmmjj interpretiert
				tag		= datumString.substr(0, 2);
				monat	= datumString.substr(2, 2);
				jahr	= datumString.substr(4, 2);
				break;
			}
			case 8:{
				// 8 Zeichen
				// diese werden als ttmmjjjj interpretiert
				tag		= datumString.substr(0, 2);
				monat	= datumString.substr(2, 2);
				jahr	= datumString.substr(4, 4);
				break;
			}
			default:{
				//alert("Bitte geben Sie ein gültiges Datum ein!");
				return "STOP";
				break;
			}
		}
	} else {
		// datumString enthält Punkte
		var ersterPunkt		= -1;
		var zweiterPunkt	= -1;
		
		// ersten Punkt suchen
		ersterPunkt = datumString.indexOf(".");
		
		// zweiten Punkt suchen
		zweiterPunkt = datumString.indexOf(".", ersterPunkt + 1);
		
		if(zweiterPunkt == -1){
			// zweiter Punkt nicht vorhanden
			return "STOP";
		}
		
		// Tag ermitteln
		tag = datumString.substring(0, ersterPunkt);
		// Monat ermitteln
		monat = datumString.substring(ersterPunkt + 1, zweiterPunkt);
		// Jahr ermitteln
		jahr = datumString.substr(zweiterPunkt + 1);
		
		// Prüfen, ob Werte fehlen
		if(jahr == "" || monat == "" || tag == ""){
			return "STOP";
		}
	}

	// "Aufblasen", falls führende Nullen fehlen
	if(tag.length == 1){tag = "0" + tag;}
	if(monat.length == 1){monat = "0" + monat;}
	
	switch(jahr.length){
		case 1:{
			jahr = "200" + jahr;
			break;
		}
		case 2:{
			jahr = "20" + jahr;
			break;
		}
		case 3:{
			return "STOP";
		}
		// in 95 Jahren wird es hier zu einem Fehler kommen, jedoch gehe ich davon aus, 
		// daß dieses Script nicht so lange im Einsatz bleiben wird. ;)
	}
	
	// Neues Datum zusammenstellen
	var neuerDatumString = tag + "." + monat + "." + jahr;

	// Ist das ein plausibles Datum ??
	if(!chkDate(neuerDatumString)){
		return "STOP";
	}

	// Vergleichsdatum für Zukunfts- und Vergangenheitsprüfung zusammenstellen nur Datumsfeld
	var vgl_inputDate = jahr+monat+tag;
	if(feld == "datum" && ( !chkFuture(vgl_inputDate,servertime_in_sec,"no") || !chkPast(vgl_inputDate,servertime_in_sec) ) ){
		return "STOP";
	}

	// Überprüfung der Länge, damit solche sachen wie "999.88888.22" als Fehler erkannt werden.
	{
		var ersterPunkt		= -1;
		var zweiterPunkt	= -1;
		
		ersterPunkt		= neuerDatumString.indexOf(".");
		zweiterPunkt	= neuerDatumString.indexOf(".", ersterPunkt + 1);
		
		if(ersterPunkt != 2){
			// erster Punkt kommt nicht als drittes Zeichen
			return "STOP";
		}
		if(zweiterPunkt != 5){
			// zweiter Punkt kommt nicht als sechstes Zeichen
			return "STOP";
		}
		if(neuerDatumString.length != 10){
			// die Zeichenkette insgesammt ist nicht 10 Zeichen lang
			return "STOP";
		}
	}
	
	// Ausgabe des richtig formatierten Datums
	eval("document.imperia."+feld+".value = neuerDatumString");
	if(feld == 'l_pruefung_datum'){
		// Wiedervorlagedatum setzen
		bp_setUesi(servertime_in_sec,neuerDatumString,document.imperia.uhrzeit.value,document.imperia.ues_intervall.value);
	}
	
	return "GO";
}

function zeitNormalisieren(zeitString,feld)
{
	var stunden = "hh";		// diese 2 Variablen sind immer als Strings zu sehen!
	var minuten = "mm";
	var trennzeichen = -1;

	// Trennzeichen enthalten?
	trennzeichen = zeitString.indexOf(".");
	
	if(trennzeichen == -1){
		// Punkt nicht gefunden, suche weiter nach ':'
		trennzeichen = zeitString.indexOf(":");
	}

	if(trennzeichen == -1){
		// kein Trennzeichen gefunden
		// nach hhmm bzw. hmm zerlegen	
		switch(zeitString.length){
			case 3: { 
				stunden = zeitString.substr(0, 1);
				minuten = zeitString.substr(1, 2);
				break;
			}
			case 4:{
				stunden = zeitString.substr(0, 2);
				minuten = zeitString.substr(2, 2);
				break;
			}
			default:{
				return "STOP";
				break;
			}
		}
	} else {
		// Trennzeichen gefunden
		stunden = zeitString.substring(0, trennzeichen);
		minuten = zeitString.substr(trennzeichen + 1);
		if(stunden == "" || minuten == ""){
			return "STOP";
		}
	}

	if(parseInt(stunden) > 23 || parseInt(minuten) > 59 || parseInt(stunden) < 0 || parseInt(minuten) < 0){
		return "STOP";
	}

	// "Aufblasen", falls f?hrende Nullen fehlen
	if(stunden.length == 1){stunden = "0" + stunden;}
	if(minuten.length == 1){minuten = "0" + minuten;}

	// Neue Zeit zusammenstellen
	var neuerZeitString = stunden + ":" + minuten;
	
	// Überprüfung der Länge, damit solche sachen wie "999:88888" als Fehler erkannt werden.
	trennzeichen = neuerZeitString.indexOf(":");
	
	if(trennzeichen != 2){
		// Trennzeichen kommt nicht als drittes Zeichen
		return "STOP";
	}
	if(neuerZeitString.length != 5){
		// die Zeichenkette insgesammt ist nicht 5 Zeichen lang
		return "STOP";
	}

	// Aus-/Rückgabe der richtig formatierten Zeit
	eval("document.imperia."+feld+".value = neuerZeitString");
	return "GO";
}

// Datumsplausis und Vorbelegungen - ENDE
function dstChecker(dst){
	if (document.forms.imperia.__imperia.value == 'save') {
		if(!dst.selectedIndex){
			dst.focus();
			alert("Sie müssen eine Dienststelle auswählen");
			return "STOP";
		}
	}
	return "GO";
}

function bpInputchecker(elm,txt) {
	value = elm.value;
	name  = elm.name;
	if (document.forms.imperia.__imperia.value == 'save') {
		if(!value) {
			alert (txt);
			document.forms.imperia.__imperia.value = '';
			return "STOP";
		}
	}
	return "GO";
}

// Funktionen für Suche / Pressearchiv
function activate_fromto() {
	document.archivsuche.fromto.checked = 'true';
	document.archivsuche.periodselect.value = 'All';
}

function activate_period() {
	document.archivsuche.selectperiod.checked = 'true';
	document.archivsuche.periodfrom.value = '';
	document.archivsuche.periodto.value = '';
}

function move_values_to_field(field,val) {
	if (document.archivsuche(field).value == '') {
		document.archivsuche(field).value = val;
	}
}

