
	function DoOpenParamWin(strLocation,NewWinX,NewWinY,NewWinScrollbar,NewWinToolbar,NewResizable,ssl)
	{
		GetLocationHost(strLocation,ssl);
		var OpenedWin;
		OpenedWin = window.open(strLocation,'OpenedWin','width='+NewWinX+',height='+NewWinY+',dependent=yes,scrollbars='+NewWinScrollbar+',toolbar='+NewWinToolbar+',resizable='+NewResizable+'');
		OpenedWin.focus();
	}
	function DoOpenTop(strLocation,ssl)
	{
		GetLocationHost(strLocation,ssl);
		top.location.href = strLocation;
	}
	function DoOpenFullWin(strLocation,ssl)
	{
		GetLocationHost(strLocation,ssl);
		window.open(strLocation);
	}

	function DoOpenSelf(strLocation,ssl)
	{
		GetLocationHost(strLocation,ssl);
		location.href = strLocation;
	}
	
	function DoOpenLocation(strLocation,strTarget,ssl,NewWin,NewWinX,NewWinY,NewWinScrollbar,NewWinToolbar,NewResizable)
	{
		if( NewWin == 1 )
		{
			DoOpenParamWin(strLocation,NewWinX,NewWinY,NewWinScrollbar,NewWinToolbar,NewResizable,ssl);
			return;
		}
		else if( strTarget == '_top')
		{
			DoOpenTop(strLocation,ssl);
			return;
		}
		else if( strTarget == '_blank' || strTarget == '' )
		{
			DoOpenFullWin(strLocation,ssl);
			return;
		}
		else if( strTarget == 'fh_inhalt' )
		{
			DoOpenFHInhalt(strLocation,ssl);
			return;
		}
		else if( strTarget == '_self' )
		{
			DoOpenSelf(strLocation,ssl);
			return;
		}
	}

	function ChangeImage(paName,paPath,paImage)
	{
		eval( "document." + paName + ".src = '" + paPath + paImage + "';" ); 
	}


// ---------------------------------------------------------------
//
//	DoCheckemail
//	@Die Funktion DoCheckemail prueft einen String auf eine 
//	gueltige Email Adresse   
//
// ---------------------------------------------------------------

function DoCheckemail( str )
{
	// Feld darf nicht leer sein
	if( trim(str) == '' )
	{
		alert('Eingabefeld EMail darf nicht leer sein!');
		return(false);
	}
	// Auf Zeichen @
	if( str.indexOf("@") == -1 )
	{
		alert('Eingabefeld Email hat falsches Format!\nZeichen -@- fehlt.');
		return(false);
	}
	// Auf Zeichen -.-
	if( str.indexOf(".") == -1 )
	{
		alert('Eingabefeld Email hat falsches Format!\nZeichen -.- fehlt.');
		return(false);
	}
	return(true);
}


// ---------------------------------------------------------------
//
//	trim
//	@Die Funktion trim uebernimmt einen String entfernt
//	 ggf. vorausstehende sowie anhaengende Blanks und 
//	 gibt den (modifizierten) String wieder zurueck.   
//
// ---------------------------------------------------------------

function trim( str )
{
	var n;
	var i;

	// initialisieren der Blanks vor dem String i entspricht dem ersten Index		 
	for( i = 0; i < str.length; i ++ )
	{
		if( str.charAt( i ) != " ") { break; }
	}
	
	// initialisieren der Blanks nach dem String n entspricht dem zweiten Index	
	for( n = str.length-1; n >= i; n -- )
	{
		if( str.charAt( n ) != " " ) { break; }
	}

	// Ausschneiden des Stringabschnittes	
	str=str.substring( i, n+1 );

	// Rueckgabe des modifizierten Strings   
	return(str);
	
} // trim


// ---------------------------------------------------------------
//
//	stringToDate
//	@Datumseingabe im Format <dd.mm.yy> oder <dd.mm.yyyy> in Date wandeln
//   Leerzeichen zu Beginn und am Ende werden als entfernt vorausgesetzt.
//   Abgedeckt wird der Datumsbereich [01.01.1600 : 31.12.2199]
//   Zweistellige Jahreszahlen werden auf den Bereich [1940-2039] abgebildet
//  @<datum>: zu wandelnder String
//  @return: resultierendes Date-Object
//
// ---------------------------------------------------------------

function stringToDate( datum )
{
	var i, j, str, ch;
	var anzPunkte = 0;
	var len = datum.length;
	var day, month, year;
	var date;

	// ---
	// Konsitenzpuefungen
	// ---
	if( datum.length < 6 || datum.length > 10 )
	{
		alert( "Datum <" + datum + "> hat falsches Format (falsche Laenge )" );
		return( null );
	}
	for( i = 0; i < datum.length; i ++ )
	{
		ch = datum.charAt( i );
		if( ch == '.' )
		{ 
			anzPunkte ++;
		}
		else
		{
			if( ch < '0' || ch > '9' )
			{
				alert( "Datum <" + datum + "> enthaelt das ungueltige Zeichen <" + ch + ">" );
				return( null );
			}
		}
	}
	if( anzPunkte != 2 )
	{
		alert( "Datum <" + datum + "> enthaelt nicht genau zwei Punkte als Trennzeichen." );
		return( null );
	}
	
	// ---
	// Datum scheint gueltig, jetzt in Date-Object wandeln
	// ---
	i = j = 0;
	while( i < len && datum.charAt( i ) != '.' ) { i ++; }
	day = eval( datum.substring( j, i ));
	i = j = i+1;
	while( i < len && datum.charAt( i ) != '.' ) { i ++; }
	month = eval( datum.substring( j, i ));
	year = eval( datum.substring( i+1, len ));

	// ---
	// Letzte, schwache Konsitenzpruefung, die Schaltjahre ausser Acht laesst
	// ---
	if( day < 1 || day > 31 ||
	    day > 29 && month == 2 ||
		day > 30 && ( month == 4 || month == 6 || month == 9 || month == 11 ))
	{
		alert( "Datum <" + datum + "> enthaelt den ungueltigen Tageswert <" + day + ">" );
		return( null );
	}
	if( month < 1 || month > 12 )
	{
		alert( "Datum <" + datum + "> enthaelt den ungueltigen Monatswert <" + month + ">" );
		return( null );
	}
	if( year < 0 || year > 2199 || ( year >= 100 && year < 1600 ))
	{
		alert( "Datum <" + datum + "> enthaelt den ungueltigen Jahresswert <" + year + ">" );
		return( null );
	}

	// Zweistellige Jahreszahlen auf vierstellige abbilden
	if( year < 100 )
	{
		if( year < 40 ) { year += 2000; }
		else            { year += 1900; }
	}

	// Alles OK
	return( new Date( year, month-1, day ));
	
} // stringToDate


// ---------------------------------------------------------------
//
//	checkInteger
//  @Diese Funktion prueft, ob es sich um ganze Zahl handelt
//
// ---------------------------------------------------------------

function checkInteger( Field )
{	
	// Testen, ob ueberhaupt etwas im Feld steht
	if( Field.value != "" )
	{ 
		var FieldChar;

		// Jeden Char prüfen
		for( var i = 0; i < Field.value.length; i++ )
		{
			// Char aus dem String holen
			FieldChar = Field.value.charAt(i);

			// testen, ob der Char im gueltigen Bereich liegt
			if( (FieldChar < "0") || ("9" < FieldChar))
			{ 
				if ( (i==0) && (FieldChar == "-") )
				{	}
				else
				{
					alert("Sie müssen eine ganze Zahl eingeben");
					return false;
				}
			}
		}
	}
	else
	{
		alert("Sie müssen eine ganze Zahl eingeben");
		return false;
	}
	
	// Alles OK
	return true;
	
} // checkInteger


// ---------------------------------------------------------------
//
//	checkIntegerWithRange
//  @Diese Funktion prueft, ob es sich um ganze Zahl handelt, 
//   die in dem Bereich Min bzw. Max liegt
// ---------------------------------------------------------------

function checkIntegerWithRange( Field, Min, Max )
{
	// Testen, ob es eine ganze Zahl ist
	if( checkInteger( Field ) )
	{
		// Den Wert der Zahl ermitteln und auf den Bereich pruefen
		Zahl = eval( Field.value );
		if( (Min <= Zahl) && (Zahl <= Max) )
		{
			return( true );
		}
		else
		{
			alert( "Die Zahl liegt nicht im zulässigen Bereich [" + Min + "," + Max + "]" );
			return false;
		}
	}

	// Error
	return false;
	
} // checkIntegerWithRange


// ---------------------------------------------------------------
//
//	checkFloat
//	@Diese Funktion prueft, ob es sich um Zahl mit , oder . handelt
//	@Ein Komma wird , genau wie ein Punkt, als Nachkommaseparator behandelt
//
// ---------------------------------------------------------------

function checkFloat( Field, MaxNachkommastellen )
{ 
	// Testen, ob ueberhaupt etwas im Feld steht
	if( Field.value != "" )
	{ 
		// zaehlt wieviele Dezimalpunkte gefunden wurden
		var Dezimalpunkte = 0;
		var Nachkommastellen = 0;
		var FieldChar;

		// Jeden Char prüfen
		for( var i = 0; i < Field.value.length; i++ )
		{
			// Char aus dem String holen
			FieldChar = Field.value.charAt(i);
			
			// Optionales Vorzeichen handeln
			if( (i==0) && (FieldChar == "+") && (FieldChar == "-") )
			{ continue;	}

			// testen, ob der Char im gueltigen Bereich liegt
			if( (FieldChar != "." ) && ((FieldChar < "0") || (FieldChar > "9")) )
			{
				// testen, ob ein Dezimalpunkgefunden wurde
				if( (FieldChar == ",") && (Dezimalpunkte == 0)) 
				{
					Dezimalpunkte++;
				}
				else
				{
					alert("Sie müssen eine Zahl eingeben");
					return false;
				}
			}
			else
			{
				if( Dezimalpunkte > 0 )
				{
					Nachkommastellen++;
					if(Nachkommastellen > MaxNachkommastellen) 
					{
						if( MaxNachkommastellen == 1)
						{
							alert("Es ist nur 1 Nachkommastelle erlaubt");
						}
						else
						{
							alert("Es sind nur "+MaxNachkommastellen+" Nachkommastellen erlaubt");
						}
						return false;
					}
				}
			}
		}
	}
	else
	{
		alert("Sie müssen eine Zahl eingeben");
		return false;
	}
	return true;
	
} // checkFloat


// ---------------------------------------------------------------
//
//	checkFloatWithRange
//	@Gleitkommazahl auch auf Bereich pruefen
//
// ---------------------------------------------------------------

function checkFloatWithRange( Field, MaxNachkommastellen, Min, Max )
{ 
	if( checkFloat(Field, MaxNachkommastellen) )
	{
		Zahl = eval(Field.value);
	}
	else
	{
		return false;
	}
	
	if( (Min <= Zahl) && (Zahl <= Max) )
	{
		return( true );
	}
	else
	{
		alert("Die Zahl liegt nicht im zulässigen Bereich ( "+Min+", "+Max+" ) ");
		return false;
	}
} // checkFloatWithRange


// ---------------------------------------------------------------
//
//	checkDateInput
//	@Date-Eingabe pruefen
//  @<val>: zu pruefendes Feld
//  @return: <true> bei korrekter Eingabe, <false> sonst
//  @return: <Date> bei korrekter Eingabe, <null> sonst
//
// ---------------------------------------------------------------

function checkDateInput( val )
{
	var value;	// Datumsobject
	
	// Eingabe in Datumsobjekt wandeln
	if( (value  = stringToDate( val.value )) == null )
	{
		return( null );
	}

	// Alles OK
	return( value );
	
} // checkDateInput


// ---------------------------------------------------------------
//
//	changeAbsolutFrame
//	@Neuen Frame setzen (Diese Funktion nicht inlinen!)
//	@Man beachte: Absoluter Bezug mittels <top>
//
// ---------------------------------------------------------------
function changeAbsolutFrame( URL, Target )
{
	top.frames[Target].location.href=URL;
	
} // changeAbsolutFrame


// ---------------------------------------------------------------
//
//	changeFrame
//	@Neuen Frame setzen (Diese Funktion nicht inlinen!)
//	@Man beachte: Relativer Bezug mittels <parent>
//
// ---------------------------------------------------------------
function changeFrame( URL, Target )
{
	parent.frames[ Target ].location.href = URL;
	
} // changeFrame

function MM_findObj(n, d) { //v4.0
  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 && document.getElementById) x=document.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') {
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (val<min || max<val) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' wird benötigt.\n'; }
  } if (errors) alert('Folgende Felder bitte ausfüllen:\n'+errors);
  document.MM_returnValue = (errors == '');
}

