function setVariables() {
		if (navigator.appName == "Netscape") {
			v=".top=";
			dS="document.";
			sD="";
			y="window.pageYOffset";
		}
		else {
			v=".pixelTop=";
			dS="";
			sD=".style";
			y="document.body.scrollTop";
		}
	}



function openWindow(ort, w, h, wname) 
	{
	if(arguments.length < 4) wname='newwin';
	if(arguments.length < 3)
	 {
	  w=500; 
      h=500;	 
	 }
    popup = window.open(ort, wname, "'toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width="+w+",height="+h+"'");
    //popup.moveTo(50,50);
        
	}	
	

function checkForm(strForm)
	{

	var strFields = document.forms[strForm].fields.value;
	var strElement;
	var strFieldTyp;
	var strErrorText;
	var blnError;
	var intLen;
	var intArray;
	var arrFields = new Array();
	var strText;
	var strValue;
	var blnCheck;
	var blnOptional;
	var blnSelectField = false;
	var i = 0;
	var j = 0;
	var strTest;
	
	arrFields = strFields.split(",");
	blnError = false;

	for(i=0;i<arrFields.length;i++)
		{
		blnSelectField = false;
		strElement = "";		
		if(arrFields[i].indexOf("[",0) < 0)
			{
			intLen = arrFields[i].length - 3;
			
			strFieldTyp = arrFields[i].substr(0,3);
			strFieldTyp = strFieldTyp.toLowerCase();
			
			strElement = arrFields[i].substr(3,intLen);
			strElement = strElement.toLowerCase();
			
			blnOptional = false;
			}
		else
			{
			intLen = arrFields[i].length - 5;
			
			strFieldTyp = arrFields[i].substr(1,3);
			strFieldTyp = strFieldTyp.toLowerCase();
			
			strElement = arrFields[i].substr(4,intLen);
			strElement = strElement.toLowerCase();			
			
			blnOptional = true;
			}
	

	// Formularfeld auslesen
	//	if(strElement.indexOf("]",0) >= 0) strElement = strElement.substr(0,strElement.length-1);
	//	alert("Element:" + strElement);
			strValue = "";
			intArray = 0;
			//eval("blnCheck = document.forms[strForm]." + strElement + ".options");
			blnCheck = document.forms[strForm][strElement].type;
			//blnCheck = document.forms[strForm][strElement].options;
	//		alert("Select" + blnCheck);
				if(blnCheck.indexOf("select",0) >= 0)
				//if(eval("document.forms[strForm]." + strElement + ".options") )
					{
					eval("strValue = document.forms[strForm]." + strElement + ".options[document.forms[strForm]." + strElement + ".selectedIndex].value");
					blnSelectField = true;
					}
				else if(blnCheck == "checkbox" )
					{
					eval("strValue = document.forms[strForm]." + strElement + ".value");
					}
				else if(blnCheck == "radio")
					{
					// Radio, Checkboxen und andere Elemente, die mehrfach existieren
					intArray = document.forms[strForm][strElement].length;
					for(j=0;j<intArray;j++)
						{
						if(eval("document.forms[strForm]." + strElement+"[" + j + "]" + ".checked == true ")) strValue = eval("document.forms[strForm]." + strElement+"[" + j + "]" + ".value");
						}
					}
				else
					{
					eval("strValue = document.forms[strForm]." + strElement + ".value");
					}
					// button checkbox file hidden image password radio reset submit text
		// Eingegebenen Wert überprüfen
	
		if(checkValue(blnOptional,strFieldTyp,strValue) != true) 
			{ 
				blnError = true;
				if(eval("document.forms[strForm].msg" + strElement))
					{ eval("strErrorText = document.forms[strForm].msg" + strElement +".value"); }
				else
					{ strErrorText = "Fehler in Formular Feld: " + strElement;}
			
				alert(strErrorText);
				if(blnSelectField == false && !intArray )
					{
					 eval("document.forms[strForm]."+strElement+".select();");
					 eval("document.forms[strForm]."+strElement+".focus();");   
					}
				else if(blnSelectField == false)
					{
					 eval("document.forms[strForm]."+strElement+"[0].select();");
					 eval("document.forms[strForm]."+strElement+"[0].focus();"); 					
					}		
			}
			if(blnError == true) break;
		
		}
	
	if(blnError == true)
		{  return false; }
	else
		{  return true; }
	
	
	}


function checkValue(blnOptional,strFieldTyp,strValue)
	{
		
		// Zahlen
		//alert(strFieldTyp + "-" + strValue);
		if(strFieldTyp == "int")
			{
			if(conv2Number(strValue) == "NULL")
				{ 
				if(blnOptional == true && (strValue == "" || strValue.length == 0))
					{ return true;	}
				else
					{ return false;	}
				}
			else
				{ return true;	}
			}
			
		// Strings
		else if(strFieldTyp == "str")
			{
			if(strValue.length > 0 && isBlank(strValue) == false)
				{  return true;	}
			else
				{ 
				if (blnOptional == true)
					{ return true;	}
				else
					{ return false;	}
				}
			}	
		else if(strFieldTyp == "dte")
			{
			if(conv2Date(strValue) == "NULL")
				{
				if(blnOptional == true && (strValue == "" || strValue.length == 0))
					{ return true;	}
				else
					{ return false;	}				
				}
			else
				{ return true;	}
			
			
			}
	}

function isNumber(val){
	if (String(Number(val)).toUpperCase()!="NAN") {
		return true;
	}
	return false;
}


function isBlank(s){
	// prüft, ob ein String nur aus leerzeichen besteht
	for (var i=0; i<s.length;i++){
		var c=s.charAt(i);
		if((c!=' ')&&(c!='\n')&&(c!='\t')) return false;
	}
	return true;
}

function isNaN(s){
	//prüft, ob eine Zahl = NaN ist
	var dummy = 'dummy';
	var n = new Number(s);
	var x = new Number(dummy);
	
	if(eval(n == x)) {
	alert("TRUE Fkt NAN " + n);
			return true;
	}
	else {
		alert("FALSE Fkt NAN " + n);
		return false;
	}


}

function conv2String(s, alt){
	// nur ein parameter: gibt bei einem gültigen String den String (mit anfangs- und end-"'") zurück, sonst "NULL"
	// zwei parameter: gibt bei einem gültigen String den String (ohne anfangs- und end-"'") zurück, sonst zweiten parameter <alt>
	s=String(s);
	if ((isBlank(s))||(s.toUpperCase()=="NULL")||(s.toUpperCase()=="UNDEFINED")){		
		return (arguments.length==2)?alt:"NULL";
	}
	else {
		return (arguments.length==2)?s:("'"+s+"'");
	}
}

function conv2Number(n, alt){
	// nur ein parameter: gibt bei einer gültigen Nummer den String zurück, sonst "NULL"
	// nur ein parameter: gibt bei einer gültigen Nummer den String zurück, sonst zweiten parameter <alt>
	s=String(n);
	n=Number(n);
	if ((isBlank(s))||(s.toUpperCase()=="NULL")||isNumber(s)==false){
		return (arguments.length==2)?alt:"NULL";
	}
	else {
		return n;
	}
}

function conv2Bit(n){
	// gibt 0 / 1 / NULL zurück 
	s=String(n);
	if ((isBlank(s))||(s.toUpperCase()=="NULL")||(s.toUpperCase()=="UNDEFINED")){
		return "NULL";
	}
	if (Number(n)==1){
		return 1;
	}
	else {
		return 0;
	}
}




function conv2Date(i,alt){
	var back;
	s=String(i);
	if (conv2String(s)=="NULL"){
		back=(arguments.length==2)?alt:"NULL";
	}
	else {
		back=new Date(s);
	}
	return back;
}

function getYearDiff(dateA, dateB){
	// liefert die differenz *ganzer* jahre zwischen zwei daten (z.b. zur ermittlung des alters)
	dateA=new Date(dateA);
	dateB=new Date(dateB);
	if (dateB>dateA){
		var tempdate=dateA;
		dateA=dateB;
		dateB=tempdate;
	}
	var back=dateA.getFullYear()-dateB.getFullYear();
	if (dateA.getMonth()<dateB.getMonth()) back-=1;
	if ((dateA.getMonth()==dateB.getMonth())&&(dateA.getDate()<dateB.getDate())) back-=1;
	return back;
}

function isDate(d,m,y,y_range_from, y_range_to) {
	//Rückgabewert: true=Datum gültig false=Datum ungültig
	//optional: jahres-range einsetzbar
	var error=false;
	if ((String(Number(d)).toUpperCase()=="NAN")||(String(Number(m)).toUpperCase()=="NAN")||(String(Number(y)).toUpperCase()=="NAN")) error=true;
	d=Number(d);
	m=Number(m);
	y=Number(y);
	if ((y_range_from!=0)||(y_range_to!=0))	{
		if ((y<y_range_from)||(y>y_range_to)) error=true;
	}
	if ((y<0)||(m<1)||(m>12)||(d<1)) error=true;
	switch (m){
		case 1,3,5,7,8,10,12:
			if (d>31) error=true;
			break;
		case 4,6,9,11:
			if (d>30) error=true;
			break;
		case 2:
			if (isSwitchYear(y)){
				if (d>29) {
					error=true;
				}
			}
			else {
				if (d>28) {
					error=true;
				}	
			}
			break;
	}
	return (!error);
}

function isSwitchYear(y) {
	// Rückgabewert: true=Jahr ist Schaltjahr false=Jahr ist kein Schaltjahr
	var back=false;
	if (((y%4==0)&&(y%100>0))||(y%400==0)) {
		back=true;
	}
	return back;
}	


function movieobject(moviename)
{
//IE und Netscape behandeln movie-objekte unterschiedlich
//Diese Funktion gibt die entsprechende Syntax browserabhängig zurück

	if (navigator.appName.indexOf ("Microsoft") !=-1) 
	{
	return window[moviename]
	}

	else
	{
	return document[moviename]
	}
}

function playmovie()
{
	var moviename = "intro";
	var movie_ready = "false";
	if(movie_ready == "false")
		{
			while(movie_ready == "false")
			{
				if(movieobject(moviename).PercentLoaded() == 100)
				{
					movieobject(moviename).TGotoLabel("_level0/","menu");
					movieobject(moviename).Play();
					movie_ready = "true";
				}
			}
		}
		
	else
	{
					movieobject(moviename).Play();
	}
}

function reloadPopup(element,strUrl,intWidth,intHeight)
{
	 var strPath;
	 if(element.options[element.selectedIndex].value >= 0)
		{
		strPath = "../../popup.asp?tid=" + element.options[element.selectedIndex].value + "&path=" +strUrl;
		openWindow(strPath,intWidth,intHeight);
		}
}

function confirmAction(strURL,strText)
{
	if (confirm(strText) == true)
		{
			document.location.href = strURL;
		}
}

