/**
* @brief Erzeugt ein Standarddialogfenster mit einem individuellem Text, dabei werden zwei 
* Buttons angeboten 'ja' und 'nein'. Je nachdem was ausgewählt wird, kann eine andere Seite
* aufgerufen werden
* param text (String) Text der angezeigt werden soll
* param yes (String) URL die aufgerufen werden soll, wenn auf Ja geklickt wird
* param no (String) URL die aufgerufen werden soll, wenn auf Nein geklickt wird
*/
function ask(text, yes, no) {           
	res = confirm(text);
	if (res == true) {
		if (yes == false || yes == null || yes == undefined ) {
			return;
		} else {
			window.location.href = yes;
		}
	}
	if (res == false) {
		if (no == false || no == null || no == undefined ) {
			return;
		} else {
			window.location.href = no;    
		}
	}
}

/**
* @brief Erzeugt ein neues Fenster, über Parameter kann man die Fenstergenerierung steuern
* @param target (String) Datei die im Fenster geöffnet werden soll
* @param name (String) Bezeichnung des Fensters
* @param param (Objekt) erwartet ein Objekt mit den Fensterparametern, wenn kein Wert übergeben wird, 
* werden die Standardwerte benutzt
*
*/
function openWindow(target, name, param) {
	
	/* Standardwerte festlegen */
	std_param = {
		/* Höhe des neuen Fensters in Pixeln */
		height : 200,
		/* Breite des neuen Fensters in Pixeln, z.B. width=400. */
		width  : 200,
		/* Horizontalwert der linken oberen Ecke des neuen Fensters in Pixeln, z.B. left=100. */
		left   : 'auto',
		/* Vertikalwert der linken oberen Ecke des neuen Fensters in Pixeln, z.B. top=100. */
		top    : 'auto',
		/*  Wenn ja (yes), wird das Fenster geschlossen, wenn sein Elternfenster geschlossen wird. Wenn nein (no = Voreinstellung), bleibt das Fenster erhalten, wenn sein Elternfenster geschlossen wird. */        
		dependent : 'yes',
		/* Wenn nein (no), werden Tastaturbefehle zum Steuern des Browsers in dem Fenster deaktiviert. Wenn ja (yes = Voreinstellung), bleiben Tastaturbefehle des Browsers in dem Fenster gültig. */        
		hotkeys : 'yes', 
		/* Höhe des Anzeigebereichs des neuen Fensters in Pixeln, z.B. innerHeight=200. */
		innerHeight : 200,
		/* Wenn ja (yes), erhält das Fenster eine eigene Adresszeile. Wenn nein (no), erhält es keine Adresszeile. Voreinstellung ist no, beim Internet Explorer jedoch nur, wenn die Optionenzeichenkette mindestens eine Option enthält. Netscape 6.1 interpretiert diese Angabe nicht. */
		location : 'no',
		/* Wenn ja (yes), erhält das Fenster eine eigene Menüleiste mit Browser-Befehlen. Wenn nein (no), erhält es keine Menüleiste. Voreinstellung ist no, beim Internet Explorer jedoch nur, wenn die Optionenzeichenkette mindestens eine Option enthält. Beachten Sie: Bei Safari ist die Menüleiste wie auf dem Macintosh üblich nicht Bestandteil des Fensters, kann also nicht ausgeblendet werden. */
		menubar : 'no',
		/* Wenn ja (yes), erhält das Fenster eine eigene Werkzeugleiste. Wenn nein (no), erhält es keine Werkzeugleiste. Voreinstellung ist no, beim Internet Explorer jedoch nur, wenn die Optionenzeichenkette mindestens eine Option enthält. */
		toolbar : 'no',
		/* Wenn ja (yes), kann der Anwender das Fenster in der Größe verändern. Wenn nein (no), kann er die Fenstergröße nicht ändern. Voreinstellung ist no, beim Internet Explorer jedoch nur, wenn die Optionenzeichenkette mindestens eine Option enthält. */
		resizable : 'yes',
		/* Horizontalwert der linken oberen Ecke des neuen Fensters in Pixeln, z.B. screenX=100. */
		screenX : 100,
		/* Vertikalwert der linken oberen Ecke des neuen Fensters in Pixeln, z.B. screenY=30. */
		screenY : 100,
		/* Wenn ja (yes), erhält das Fenster Scroll-Leisten. Wenn nein (no), kann der Anwender in dem Fenster nicht scrollen. Voreinstellung ist no, beim Internet Explorer jedoch nur, wenn die Optionenzeichenkette mindestens eine Option enthält. */
		scrollbars : 'no',
		/* Wenn ja (yes), erhält das Fenster eine eigene Statuszeile. Wenn nein (no), erhält es keine Statuszeile. Voreinstellung ist no, beim Internet Explorer jedoch nur, wenn die Optionenzeichenkette mindestens eine Option enthält. */
		status : 'no'
	}
		
	/* Wenn keine Parameter übergeben worden sind, die Standardwerte benutzen */
	if (param == undefined) param = std_param;
			
	/* Parameterwerte übernehmen und fehlende Angaben durch Standardwerte ergänzen */
	for (p in std_param) {
		if (param[p] == undefined) param[p] = std_param[p];        
	}
	
	/* bei 'auto' werten bei width bzw. heigth wird das neue Fenster mittig auf dem Bildschirm
	   positioniert. Hier werden die Autowerte berechnet 
	*/
	if (isNaN(param['left']))
		if (param['left'].toLowerCase() == 'auto') {         
		 param['left'] = window.screenX + (window.outerWidth / 2) - (parseInt(param['width']) / 2);         
		}
	if (isNaN(param['top']))
		if (param['top'].toLowerCase() == 'auto') {         
		 param['top'] = window.screenY + (window.outerHeight / 2) - (parseInt(param['height']) / 2);
		}
	
	/* Parameterstring aus der Array erzeugen */
	var param_array = new Array();    
	for (p in param) {
		param_array.push(p + "=" + param[p]);        
	}    
	param_string = param_array.join(',');
	
	/* Leerzeichen entfernen (Bug bei IE) */
	name = name.replace(/ /g, '_');
	
	/* Fenster genierieren */
	win = window.open(target, name, param_string);
	
	return win;
}

/**
* @brief Erzeugt ein neues Fenster, dass die Daten über die POST Methode übergibt
* @param STRING (target) Datei die im Fenster geöffnet werden soll
* @param STRING (winName) Bezeichnung des Fensters
* @param OBJECT (data) erwartet eine Liste von Wertepaaren die über POST an den Server übermittelt werden sollen
* @param OBJECT (winparam) erwartet ein Objekt mit den Fensterparametern, wenn kein Wert übergeben wird, 
* werden die Standardwerte benutzt
* @return gibt die Instanz vom erzeugten Fenster zurück
*
*/
function openWindowByPost(target, winName, data, winparam) {      
	owin = openWindow('', winName, winparam);
	
	owin.document.writeln("<html><title></title><body>");
	
	owin.document.writeln('<form name="form1" method="post" action="' + target + '">');
	
	for ( d in data) {        
		owin.document.writeln('<input type="hidden" name="' + d + '" value="' + data[d] + '" />');
	}
	
	owin.document.writeln('</form></body></html>');
	
	owin.document.close();
	owin.document.forms[0].submit();
	
	return owin;
}

