/* presselounge.js - globale JavaScript-Grundfunktionen */

// Ausgabe Javscriptfehler deaktivieren
function handleError() {
	return true;
}
window.onerror = null;
window.onerror = handleError;

// Druckt aktuelles Dokument
function printIt() {
	self.print();
}

// Entfernt Leerzeichen
function trim(str)
{
  return( (""+str).replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1') );
}

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 MM_reloadPage(init) {  // Bugfix NS 4 Reload 
  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();
}
MM_reloadPage(true);

// Längenprüfung von Feldeinträgen
// Input:   max. Zeichenanzahl
// Wichtig: für jedes zu prüfende Feld muß eine ID definiert werden.
// Beispiel: <textarea id="Kopfzeile" cols="80" rows="2" name="nl_header" onblur="return CheckMaxLength(20);">Sehr geehrter Herr...</textarea>
function CheckMaxLength(length) {
	if (window.event.srcElement.value.length > length) {
    	alert("Die maximale Anzahl von " + length + " Zeichen im Feld " + window.event.srcElement.id + " wurde überschritten.\nBitte kürzen Sie den Eintrag.");
		document.getElementById(window.event.srcElement.id).select();
		document.getElementById(window.event.srcElement.id).focus();
		return false;                         
    }
}

// Überprüft eine deutsches Datum im Format tt.mm.jj bzw. tt.mm.jjjj auf Gültigkeit.
// Input: Datumsfeld
function check_date(field) {

	var checkstr = "0123456789";
	var DateField = field;
	var Datevalue = "";
	var DateTemp = "";
	var seperator = ".";
	var day;
	var month;
	var year;
	var leap = 0;
	var err = 0;
	var i;
   
	err = 0;
	DateValue = DateField.value;
	
	/* Alle nicht-numerischen Zeichen entfernen, es werden lediglich Ziffern zwischen 0..9 akzeptiert */
	for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
	}
	DateValue = DateTemp;
	/* Datum als 8-stelligen-String prüfen */
	/* wurde das Jahr 2-stellig eingegeben - wird automatisch 20xx vorangestellt */
	if (DateValue.length == 6) {DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2);}
	if (DateValue.length != 8) {err = 19;}
	/* Jahr 0000 ist falsch */
	year = DateValue.substr(4,4);
	if (year == 0) {err = 20;}
	/* Validation Monat */
	month = DateValue.substr(2,2);
	if ((month < 1) || (month > 12)) {err = 21;}
	/* Validation Tage*/
	day = DateValue.substr(0,2);
	if (day < 1) {err = 22;}
	/* Validation Schaltjahr (leap=1) / Februar und Tage */
	if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {leap = 1;}
	if ((month == 2) && (leap == 1) && (day > 29)) {err = 23;}
	if ((month == 2) && (leap != 1) && (day > 28)) {err = 24;}
	/* Validation der anderen Monate */
	if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {err = 25;}
	if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {err = 26;}
	/* Wurde kein Wert eingegeben bzw. Wert = 00, dann kein Fehler */
	if ((day == 0) && (month == 0) && (year == 00)) {err = 0; day = ""; month = ""; year = ""; seperator = "";}
	/* Wenn kein Fehler, dann vollständige Ausgabe des Datums (z.B. 13.12.2001) */
	if (err == 0) {
		DateField.value = day + seperator + month + seperator + year;
	}
	/* Ausgabe Error, wenn err != 0 */
	else {
		alert("Bitte geben Sie ein gültiges Datum ein.");
		DateField.select();
		DateField.focus();
		return false;
	}
}

// Diese Funktion prüft eine Uhrzeit auf ihre Gültigkeit
// Folgendes Zeitformat wird erwartet: (h)h.(m)m oder (h)h:(m)m
function check_time(field) {

	var checkstr = "0123456789";
	var TimeField = field;
	var TimeValue = "";
	var TimeTemp = "";
	var seperator = ".";
	var hours ="";
	var minutes ="";
	var err = 0;
	var i;
   
	TimeValue = TimeField.value;
	
	/* Alle nicht-numerischen Zeichen entfernen, es werden lediglich Ziffern zwischen 0..9 akzeptiert */
	for (i = 0; i < TimeValue.length; i++) {
	  if (checkstr.indexOf(TimeValue.substr(i,1)) >= 0) {
	     TimeTemp = TimeTemp + TimeValue.substr(i,1);
	  }
	  else {
	  	if(TimeValue.substr(i,1) == "." || TimeValue.substr(i,1) == ":"){
			hours = TimeTemp;
			TimeTemp = "";
		} 
		else {	// jedes andere Zeichen als . oder : führt zum Fehler
			err = 1;
		}
	  }
	}
	
	if( err == 0 ) {
		// Jetzt Minuten speichern
		minutes = TimeTemp;
		if (hours.length == 1) {hours = '0' + hours;}
		if (minutes.length == 1) {minutes = '0' + minutes;}
		if (hours > 23 || minutes > 59 || hours.length != 2 || minutes.length != 2) {err = 1;}
		/* Wurde kein Wert eingegeben bzw. Wert = 00, dann kein Fehler */
		if (hours == 0 && minutes == 0) { err = 0; hours = ""; minutes = ""; seperator = "";}
	}
	
	/* Wenn kein Fehler, dann vollständige Ausgabe der Uhrzeit (z.B. 09.55) */
	if (err == 0) {
		TimeField.value = hours + seperator + minutes;
	}
	
	/* Ausgabe Error, wenn err != 0 */
	else {
		alert("Bitte geben Sie eine gültige Uhrzeit ein.");
		TimeField.select();
		TimeField.focus();
		return false;
	}
}


// Funktion zur Prüfung einer Emailadresse 
// Input:   -
// Wichtig: für jedes zu prüfende Email-Feld muß eine ID definiert werden.
// Beispiel: <input type="Text" id="Absenderemail" name="abs_email" onChange="return checkEMail();" size="60">
function checkEMail() {
	
	var email = window.event.srcElement.value;
	var f_id = window.event.srcElement.id;
	var strLen = email.length;
	
	var a = false;
	var res = false;
	
	// Wenn kein Wert vorhanden, dann zurück...
	if(strLen == 0) {return true;}
		
	if(typeof(RegExp) == "function") {
		var b = new RegExp("abc");
		if(b.test("abc") == true){a = true;}
	}

	if(a == true) {
		reg = new RegExp("^([a-zA-Z0-9\\-\\.\\_]+)"+
        				 "(\\@)([a-zA-Z0-9\\-\\.]+)"+
                   		 "(\\.)([a-zA-Z]{2,4})$");
		res = (reg.test(email));
	}
	else {
		res = (email.search("@") >= 1 &&
        email.lastIndexOf(".") > email.search("@") &&
        email.lastIndexOf(".") >= email.length-5)
	}
	if(res == false) {
    	alert("Bitte geben Sie eine korrekte Emailadresse im Feld " + f_id + " ein.");
		document.getElementById(f_id).select();
		document.getElementById(f_id).focus();
		return false;                         
	}
}

// Oeffnet ein POPUP-Fenster und gibt den uebergebenen Inhalt aus.
function popup_call (str_content,nHeight,nWidth,nTop,nLeft,str_scrollbars) {

	var obj_popup = window.open( "","POPUP",'width='+nWidth+',height='+nHeight+',status=no,resizable=yes,top='+nTop+',left='+nLeft+',dependent=yes,alwaysRaised=yes,scrollbars='+str_scrollbars);
	
	obj_popup.document.open();
	obj_popup.document.write(str_content);
	obj_popup.document.close();
	
	obj_popup.opener = window;
	obj_popup.focus();
	
}

function Layer_reload() {location.reload();}

// Zentrierte Ausgabe eines definierten Layers
function ShowLayer() { //v4.1.1

	if (document.layers || document.all || document.getElementById){
		var winWidth, winHeight, i, horz, vert, width, height, offsetX, offsetY, negX, negY, group, x, y, args;

		args = ShowLayer.arguments;
		onresize = Layer_reload;
			
		winWidth = (document.all)?document.body.clientWidth:window.innerWidth;
		winHeight = (document.all)?document.body.clientHeight:window.innerHeight;
				
		for (i=0; i<(args.length-9); i+=10) {
			horz    = args[i+1];
			vert    = args[i+2];
			width   = parseInt(args[i+3]);
			height  = parseInt(args[i+4]);
			offsetX = parseInt(args[i+5]);
			offsetY = parseInt(args[i+6]);
			negX    = args[i+7];
			negY    = args[i+8];
		
			x = ((winWidth - width)/2) + offsetX;
			y = ((winHeight - height)/2) + offsetY;
						
			x = (negX=='false' && (x < 0))?0:x;
			y = (negY=='false' && (y < 0))?0:y;
			
			layerObj = (document.getElementById)?document.getElementById(args[i]):MM_findObj(args[i]);
			
			if (layerObj!=null) {
				layerObj = (layerObj.style)?layerObj.style:layerObj;
				layerObj.left = (horz=="true")?x:layerObj.left;
				layerObj.top = (vert=="true")?y:layerObj.top;

				var name = navigator.appName;
				var version = navigator.appVersion.substring(0,1);
				if (name=="Microsoft Internet Explorer") { name="ms"; }
				//if (name=="Netscape") { name="ns"; }

				if (name=="ms") layerObj.visibility="visible";
				//if (name=="ns" && version=="4") layerObj.visibility="show";
				//if (name=="ns" && version=="5") layerObj.visibility="visible"; 

			}
		}
	}
}

// Diese Funktion prüft, ob Änderungen an den Werten des Formulars vorgenommen wurden.
// Input: Formname
// Funktionsaufruf erfolgt im onsubmit-Ereignis des Formulars (onsubmit="return SaveChangedForm(this);")
function SaveChangedForm(frm){

	var changed = false;
	var f = frm.elements;
	var f_len = frm.elements.length;
	
	for (var i = 0; i < f_len; i++) {

		//alert("Typ: " + f[i].type + " Name: " + f[i].name + " ID: " + f[i].id);
		
		// Text, Textarea und Passwort prüfen 
		if ((f[i].type == 'text' || f[i].type == 'textarea' || f[i].type == 'password')) {
			if (f[i].defaultValue != f[i].value) { 
				//alert("Typ: " + f[i].type + " Name: " + f[i].name + " ID: " + f[i].id);
				changed = true; 
			}
		}

		// Checkbox und Radiobutton prüfen
		if (f[i].type == 'checkbox' || f[i].type == 'radio') {
			if (f[i].defaultChecked != f[i].checked) { 
				//alert("Typ: " + f[i].type + " Name: " + f[i].name + " ID: " + f[i].id);
				changed = true; 
			}
		}

		// Selectboxen prüfen (Ausnahme Selectboxen ohne Namen, diese gehören zum Wysiwyg-Editor !!!)
		if ((f[i].type == 'select-one' || f[i].type == 'select-multiple') && f[i].name != '') {
			
			for (var k = 0; k < f[i].length; k++) {
				if (f[i].options[k].defaultSelected != f[i].options[k].selected) {
					//alert("Typ: " + f[i].type + " Name: " + f[i].name + " ID: " + f[i].id);
					changed = true; 
				}
			}
		}
	}
	
	// Wenn Formular geändert wurde...
	if (changed == true) {
		if (frm.name == "frmSendungSave" || frm.name == "frmFolgeSave" || frm.name == "frmProgrammpunkt"){
			alert('Ein oder mehrere Werte des Formulars wurden geändert. Bitte speichern Sie erst Ihre Eingaben.');
			return false;
		}
		else
		{
			return confirm('HINWEIS\nEin oder mehrere Werte des Formulars wurden geändert.\n\nMöchten Sie speichern?');
		}
	}
	else {
		// Formular wurde nicht geändert!
		return true;
	}
}

/* ChangeImage (Image, NewImagePath, NewImage)
Ermöglicht den Austausch eines existierenden Images mit einem neuen Image.
Eignet sich hervorragend für eine Imagevorschau.

1. Parameter: Name des Bildes, welches ersetzt werden soll.
2. Parameter: Pfad des neuen Bildes, wichtig mit / am Pfadende
3. Parameter: Name des neuen Bildes

Beispielaufruf : <SELECT style="font-size:12px; width=180;" name="startpage_bild" onchange="ChangeImage('tumb','media/bilder/',this.value);">
wobei Image definiert sein muss z.B. <img name="tumb" src="media/bilder/hallo.jpg" border="0"> */

function ChangeImage(Image,NewImagePath,NewImage) {
	if(NewImage != '') {
		document[Image].src =  NewImagePath+NewImage;
	}
	else {
		document[Image].src =  '_images/spacer.gif';
	}
	return true;
}
