var requiredFields=new Array();
var requiredFieldsName=new Array();
var requiredSelect=new Array();
var requiredSelectName=new Array();
var checkBoxField=new Array();
var checkBoxName=new Array();
var emailFields=new Array();
var requiredFieldsNumber=new Array();   
var requiredFieldsNameNumber=new Array();
var checkRadioField=new Array();
var checkRadioName=new Array();
var familyFieldsName = new Array();
var familyFields = new Array();

function validateGeneralForm(formname){
	var error="";
	var error1;

	for(var i=0;i<requiredFields.length;i++){
		if(eval("document."+formname+"."+requiredFields[i]+".value") == ""){
			if(error==""){
				eval("document."+formname+"."+requiredFields[i]+".focus()");
			}
			error=error+"\n   - "+requiredFieldsName[i];
		}
	}

	for(var i=0;i<checkRadioField.length;i++){
		var field = "";
		var cary = 0;
		field = eval("document."+formname+"."+checkRadioField[i]);
		for(j= 0;j < eval("document."+formname+"."+checkRadioField[i]+".length");j++){
			if(!field[j].checked && cary != 1){
				cary = 0;
				if(error==""){
					eval("document."+formname+"."+field[j].name+"[0].focus()");
				}//end if
			}//end if	
			else cary = 1;
		}//end for
		if(cary == 0) error=error+"\n   - "+checkRadioName[i];
	}//end for


	for(var i=0;i<requiredSelect.length;i++){
		if(eval("document."+formname+"."+requiredSelect[i]+".selectedIndex") == "0"){
			if(error==""){
				eval("document."+formname+"."+requiredSelect[i]+".focus()");
			}
			error=error+"\n   - "+requiredSelectName[i];
		}
	}
	
	
		for(var i=0;i<checkBoxField.length;i++){
			if(eval("document."+formname+"."+checkBoxField[i]+".checked") == ""){
				if(error==""){
					eval("document."+formname+"."+checkBoxField[i]+".focus()");
				}//end if
				error=error+"\n   - "+checkBoxName[i];
			}//end if
		}//end for

	for(var i=0;i<emailFields.length;i++){
		if(eval("document."+formname+"."+emailFields[i]+".value") != ""){
			if(!emailCheckMultiple(formname,emailFields[i])){
				error1=1;
				//here I fix this condition to make a priority of fileds focus
				if(!error)eval("document."+formname+"."+emailFields[i]+".focus()");
			}
		}
	}

   var ValidChars = "0123456789.";
   var Char;
   var j,errornumber = '',error_number=0;

   for (j = 0; j < requiredFieldsNumber.length;j++){
     var text_insert = eval("document."+formname+"."+requiredFieldsNumber[j]+".value");
	 error_number = "";
	 for (i = 0; i < text_insert.length;i++){ 
	   Char = text_insert.charAt(i); 
	   if (ValidChars.indexOf(Char) == -1){
		  error_number=1;
	   }//end if
    }//end for
	if(error_number){
		if(!errornumber)eval("document."+formname+"."+requiredFieldsNumber[j]+".focus()"); 
		errornumber =  errornumber + "-   "+ requiredFieldsNameNumber[j]+"\n";
	}
  }//end for	

	if(error){
		alert("Bitte füllen  Sie folgende Felder aus:"+error);
		return false;
	}else{
		if(error1){
			alert("Bitte geben Sie eine korrekte E-Mail Adresse an");
			return false;
		}else if(errornumber){
			alert("Bitte tragen Sie eine Zahl in die folgenden Felder ein:\n"+errornumber);
			return false;
		}else{
			return true;
		}
	}
}

function CheckDate(name,year,month,day)
{
// check for valide date
var idx = eval("document."+name+"."+day+".selectedIndex");
var cdate = eval("document."+name+"."+day+".options[idx].text");

var idx = eval("document."+name+"."+month+".selectedIndex");
var cmonth = eval("document."+name+"."+month+".options[idx].text");

var idx = eval("document."+name+"."+year+".selectedIndex");
var cyear = eval("document."+name+"."+year+".options[idx].text");

	// Is date valid for month?
	if (cmonth == 2) {
		// Check for leap year
		if ( ( (cyear%4 == 0)&&(cyear%100 != 0) ) || (cyear%400 == 0) ) { // leap year
			if (cdate > 29){ alert("Bitte überprüfen Sie das Datum. \n\nDer Monat Februar hat maximal nur 29 Tage."); return false; }
			}
		else {
			if (cdate > 28) { alert("Bitte überprüfen Sie das Datum. \n\nDer Tag für den Monat Februar ist für dieses Jahr nicht korrekt."); return false;  }
			}
		}
	if ((cmonth==4)||(cmonth==6)||(cmonth==9)||(cmonth==11)) {
		if (cdate > 30) {  alert("Bitte überprüfen Sie das Datum. \n\nDieser Monat hat keine 31 Tage."); return false; }
		}
	if (cdate == "") {  alert("Bitte überprüfen Sie das Datum. \n\n"); return false; }
	if (cmonth == "") {  alert("Bitte überprüfen Sie das Datum. \n\n"); return false; }
	if (cyear == "") {  alert("Bitte überprüfen Sie das Datum. \n\n"); return false; }
		
return true;

}

//--------------------Here I make this cheking:  if data are number,valid day,month,year --------
	var nr_family = familyFieldsName.length;
	var member_family = familyFields.length;
	var error_family = 0,minim,maxim;
	for(var i=0;i < (nr_family);i= i + 1){
			if(i==0){minim = 0;maxim = 31;}
			if(i==1){minim = 0;maxim = 12;}
			if(i==2){minim = 1940;maxim = 2000;}
			if(eval("document."+formname+"."+familyFields[i]+".value") <= minim || eval("document."+formname+"."+familyFields[i]+".value") > maxim || this.checkNumber(eval("document."+formname+"."+familyFields[i]+".value"))){
				if(error == "")eval("document."+formname+"."+familyFields[i]+".focus()");
				error=error+"\n   - "+familyFieldsName[i]+" falsches Datum";	
			}//end if	
	}//end for	
//----------------------------------------------------------------------------------------------


function emailCheckMultiple(formname,emailfield)
{
	var formname,ret;
	var emailfield;
	  var email_list=eval("document."+formname+"."+emailfield+".value");
      var pl=email_list.split(",");
      for(var j=0;j<pl.length;j++){
		var item = (pl[j].replace(' ','')).replace(' ','');
		var returnVal = false
        checkVal = 0
        period = 0
        count1 = 0
        count2 = 0
		ret = 0
		//----------------- here I check the name of email before @ start -------
		var text_error = item.split('www');	
		if(!text_error["0"])return false;
		var text_error = item.split('@');	
		if(text_error["1"] == "hotmail.de" || text_error["1"] == "aol.de")return false;
		//-----------------------------------------------------------------------		
		
		for (var i=0; i < item.length; i++)
        {
				//------------checking the name between @ and .must be more than 1 char.
				if (item.substring(i,i+1) == '@')
                {
                        checkVal = checkVal + 1
                        count1 = count1 + 1
                }
                if (item.substring(i,i+1) == '!')
                {
                        checkVal = checkVal + 2
                        count2 = count2 + 1
                }
                if (item.substring(i,i+1) == '.')
                {
                        if (period != 1)
                        {
                           checkVal = checkVal + 4
                           period = 1
                        }
                }
                if (item.substring(i,i+1) == ' ')
                {
                        checkVal = 8
                }
                if (item.substring(i,i+1) == ',')
                {
                        checkVal = 8
                }
                if (item.substring(i,i+1) == '"')
                {
                        checkVal = 8
                }
                if (item.substring(i,i+1) == '\'')
                {
                        checkVal = 8
                }
        }
        if (checkVal == 5 || checkVal == 6)
        {
               var p=item.split("@");
               var r=p[1].split(".");
			   var lungime=(r.length-1);
				
				//here I work with the text after "@"
				if(p[0].length<1 || (p[0].search("[^0-9a-zA-Z_\.-]")) > -1){
		        	var ret=1;
		        	fout="1";
		        }
				//here I work with the text between "@" and "."
				if(r[0].length<1){// || r[0].length > 4
		        	var ret=1;
		        	fout="1";
		        }
  		        //here I work with the text before "."
				if(r[lungime].length<2 || r[lungime].length>4){
					if(r[lungime].length<2){//here I check if the domain is one integer
					   if(r[lungime] <= 0 || r[lungime] >= 10)var ret=1;
					}//end if
					else var ret=1;
		        	fout="1";
		        }
				else if(r[lungime] >= 10 || r[lungime] <= 0)var ret=1;//here I check if the domain is an integer between 0 and 10
				if(ret==1){
		        	returnVal=false;
		        }else{
		        	returnVal = true
		        }
        }
        else

        if (checkVal == 0) fout = '1'
        if (checkVal == 1) fout = '1'
        if (checkVal == 2) fout = '1'
        if (checkVal == 3) fout = '1'
        if (checkVal == 4) fout = '1'
        if (checkVal == 7) fout = '1'
        if (checkVal > 7)  fout = '1'

        if (count1 > 1) fout =    '1'
        if (count2 > 1) fout =    '1'
	}
    return returnVal;
}
function emailCheck(formname,emailfield)
{
	var formname;
	var emailfield;
	if (eval("document."+formname+"."+emailfield+".value") == "")
	 { alert("Bitte tragen Sie Ihre Email-Adresse ein!");
	   
	   return false;}
      
		var item = eval("document."+formname+"."+emailfield+".value");
	   
        var returnVal = false
        checkVal = 0
        period = 0
        count1 = 0
        count2 = 0
        
        for (var i=0; i < item.length; i++)
        {
                if (item.substring(i,i+1) == '@')
                {
                        checkVal = checkVal + 1
                        count1 = count1 + 1
                }
                if (item.substring(i,i+1) == '!')
                {
                        checkVal = checkVal + 2
                        count2 = count2 + 1
                }
                if (item.substring(i,i+1) == '.')
                {
                        if (period != 1)
                        {
                           checkVal = checkVal + 4
                           period = 1
                        }
                }
                if (item.substring(i,i+1) == ' ')
                {
                        checkVal = 8
                }
                if (item.substring(i,i+1) == ',')
                {
                        checkVal = 8
                }
                if (item.substring(i,i+1) == '"')
                {
                        checkVal = 8
                }
                if (item.substring(i,i+1) == '\'')
                {
                        checkVal = 8
                }
        }
        if (checkVal == 5 || checkVal == 6)
        {
               var p=item.split("@");
               var r=p[1].split(".");
               var lungime=(r.length-1);
		        if(p[0].length<1){
		        	var ret=1;
		        	fout="Vor dem @ muss mindestens ein Zeichen stehen!";
		        }
		        
		        if(r[0].length<1){
		        	var ret=1;
		        	fout="Vor dem . muss mindestens ein Zeichen stehen!";
		        }
		        if(r[lungime].length<2){
		        	var ret=1;
		        	fout="Nach dem . müssen mindestens zwei Zeichen stehen!";
		        }
		        if(r[lungime].length>3){
		        	var ret=1;
		        	fout="Nach dem . dürfen höchstens drei Zeichen stehen!";
		        }
		        if(ret==1){
		        	returnVal=false;
		        }else{
		        	returnVal = true
		        }
               
               
                
        }
        else

        if (checkVal == 0) fout = 'Die Email-Adresse ist unvollstaendig !'
        if (checkVal == 1) fout = 'In der Email-Adresse fehlt der Punkt !'
        if (checkVal == 2) fout = 'In der Email-Adresse fehlt der Punkt !'
        if (checkVal == 3) fout = '-@- und -!- sind nicht gleichzeitig erlaubt in der Email-Adresse !'
        if (checkVal == 4) fout = 'In der Email-Adresse fehlt das -@- !'
        if (checkVal == 7) fout = '-@- und -!- sind nicht gleichzeitig erlaubt in der Email-Adresse !'
        if (checkVal > 7)  fout = 'In der Email-Adresse dürfen weder Komma, Leerzeichen \nnoch Anführungszeichen enthalten sein !'

        if (count1 > 1) fout =    'In der Email-Adresse sind mehrere -@- Zeichen !'
        if (count2 > 1) fout =    'In der Email-Adresse sind mehrere -@- Zeichen !'
        
        if (returnVal == false)
        {
                alert('Ihre Email-Adresse ist nicht korrekt.\nBitte ueberpruefen Sie Ihre Eingabe.\n\nFehler:\n' + fout)
   			   

        }else{
        	if(p[0].substring(0,4)=='www.'){
		        	return confirm("Eine Email-Adresse beginnt normalerweise nicht mit www. \nSind Sie sicher dass Ihre EMail-Adresse lautet:"+item+" ?");
		        	
		        	
		        }
        }
        return returnVal
}

function openWin(url, w, h)
{
	var thisWindow;
	thisWindow = window.open(url, "newWin", "width=" + w + ", height=" + h + ",scrollbars=no,screenX=0,screenY=0");
	thisWindow.moveTo((screen.width-w)/2,(screen.height-h)/2);
 	thisWindow.window.focus();
}

function window_picture( newsitem, x, y, title )
{
	var thisWindow;
	thisWindow = window.open(newsitem,title,"width="+x+",height="+y+",scrollbars=auto,screenX=0,screenY=0,toolbar=no,location=no,menubar=no");
	thisWindow.moveTo((screen.width-x)/2,(screen.height-y)/3);
 	thisWindow.window.focus();
}

function window_picture1( newsitem, x, y, title )
{
	var thisWindow;
	thisWindow = window.open(newsitem,title,"width="+x+",height="+y+",scrollbars=yes,screenX=0,screenY=0,toolbar=no,location=no,resizable=yes,menubar=no");
	thisWindow.moveTo((screen.width-x)/2,(screen.height-y)/3);
 	thisWindow.window.focus();
}

function window_picture_tree_location( newsitem, x, y, title ){
	var thisWindow;
	thisWindow = window.open(newsitem,title,"width="+x+",height="+y+",scrollbars=yes,screenX=0,screenY=0,toolbar=no,location=no,resizable=no,menubar=no");
	thisWindow.moveTo((screen.width-x)/2,(screen.height-y)/3);
 	thisWindow.window.focus();
}



function window_normal( newsitem, x, y, title )
{
	var thisWindow;
	thisWindow = window.open(newsitem,title,"width="+x+",height="+y+",scrollbars=yes,screenX=0,screenY=0,toolbar=yes,location=yes,menubar=yes,resizable=yes");
	thisWindow.moveTo((screen.width-x)/2,(screen.height-y)/3);
 	thisWindow.window.focus();
}
function window_new( newsitem, title )
{
	var thisWindow;
	thisWindow = window.open(newsitem,title,"width=780,height=550,scrollbars=yes,screenX=0,screenY=0,toolbar=no,location=no,menubar=no");
	thisWindow.moveTo((screen.width-780)/2,(screen.height-550)/3);
 	thisWindow.window.focus();
}


function stopErrors() {
	return true;
}



function captureMousePosition(e) {
    if (document.layers) {
        // When the page scrolls in Netscape, the event's mouse position
        // reflects the absolute position on the screen. innerHight/Width
        // is the position from the top/left of the screen that the user is
        // looking at. pageX/YOffset is the amount that the user has 
        // scrolled into the page. So the values will be in relation to
        // each other as the total offsets into the page, no matter if
        // the user has scrolled or not.
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    } else if (document.all) {
        // When the page scrolls in IE, the event's mouse position 
        // reflects the position from the top/left of the screen the 
        // user is looking at. scrollLeft/Top is the amount the user
        // has scrolled into the page. clientWidth/Height is the height/
        // width of the current page the user is looking at. So, to be
        // consistent with Netscape (above), add the scroll offsets to
        // both so we end up with an absolute value on the page, no 
        // matter if the user has scrolled or not.
        xMousePos = window.event.x+document.body.scrollLeft;
        yMousePos = window.event.y+document.body.scrollTop;
        xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
        yMousePosMax = document.body.clientHeight+document.body.scrollTop;
    } else if (document.getElementById) {
        // Netscape 6 behaves the same as Netscape 4 in this regard 
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    }
	//return xMousePos;
}
function setFormCookie(){
	//get all forms
	for(var i=0;i<document.forms.length;i++){
		var form_name=document.forms[i].name;
		var elm="";
		//get form elemennts and create a string with name&values
		for (var j=0;j<document.forms[i].elements.length;j++){
			if((document.forms[i].elements[j].type=='hidden')||(document.forms[i].elements[j].type=='text')||(document.forms[i].elements[j].type=='textarea')||(document.forms[i].elements[j].type=='file')){
				var val1=encodeURI(document.forms[i].elements[j].value);
				elm=elm+"#|#"+document.forms[i].elements[j].name+"=|="+val1;//+document.forms[i].elements[j].value.replace("\r","|r|").replace("\n","|n|");
			}
			//alert(document.forms[i].elements[j].type);
			if(document.forms[i].elements[j].type=='select-one'){
				var idx=document.forms[i].elements[j].selectedIndex;
				elm=elm+"#|#"+document.forms[i].elements[j].name+"=|="+document.forms[i].elements[j].options[idx].value;
			}
			if(document.forms[i].elements[j].type=='radio'){
				if(document.forms[i].elements[j].checked){
					elm=elm+"#|#"+document.forms[i].elements[j].name+"=|="+document.forms[i].elements[j].value;
				}
			}
			if(document.forms[i].elements[j].type=='checkbox'){
				
					elm=elm+"#|#"+document.forms[i].elements[j].name+"=|="+document.forms[i].elements[j].checked;
				
			}
			
		}
		//alert (elm);
		//set cookie
		setCookie(form_name, elm);
	} 
}
function getFormCookie(){
	//get all forms


	popForm = getCookie("popForm");

// Do we need to populate the form
if (popForm == 1){

	delCookie("popForm");

	
	for(var i=0;i<document.forms.length;i++){
		
		var form_name=document.forms[i].name;
		if(form_name==''){
			return false;
		}
		var elements=getCookie(form_name);
		delCookie (form_name);
		//alert(elements);
		if(elements!=null){
			//get cookie val and create vars 
			var elm=elements.split("#|#");
			
			for(var k=0;k<elm.length;k++){
				
				if(elm[k]){
					//alert(elm[k]);
					var elm1=elm[k].split("=|=");
					//alert ("var "+elm1[0]+"_='"+elm1[1]+"'");
					eval ("var "+elm1[0]+"_='"+elm1[1]+"'");
				}
			}
			
			//get form elements and put old values
			for (var j=0;j<document.forms[i].elements.length;j++){
				
				if((document.forms[i].elements[j].type=='hidden')||(document.forms[i].elements[j].type=='text')||(document.forms[i].elements[j].type=='textarea')||(document.forms[i].elements[j].type=='file')){
					
					document.forms[i].elements[j].value=decodeURI(eval(document.forms[i].elements[j].name+"_"));
				}
				if(document.forms[i].elements[j].type=='select-one'){
					for(var idx=0;idx<document.forms[i].elements[j].length;idx++){
						if(document.forms[i].elements[j].options[idx].value==eval(document.forms[i].elements[j].name+"_")){
							document.forms[i].elements[j].selectedIndex=idx;
						}
					}
				}
				if(document.forms[i].elements[j].type=='radio'){
					if(document.forms[i].elements[j].value==eval(document.forms[i].elements[j].name+"_")){
						document.forms[i].elements[j].checked=true;
					}
				}
				if(document.forms[i].elements[j].type=='checkbox'){
					if(eval(document.forms[i].elements[j].name+"_")=='true'){
						document.forms[i].elements[j].checked=true;
					}
				}
			}
			//delete cookie
			
		}
		
		//alert('ok');
	} 
} // end popForm
}	


function setCookie(NameOfCookie, value, expiredays) {
	var ExpireDate = new Date ();
	//ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 5 * 3600 * 1000));
	ExpireDate.setTime(0);
	document.cookie = NameOfCookie + "=" + escape(value) +
	((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}
 
function delCookie (NameOfCookie) {
	
	if (getCookie(NameOfCookie)) {
		document.cookie = NameOfCookie + "=" + "; expires=Thu, 01-Jan-1970 00:00:01 GMT";
	}
}
function getCookie(NameOfCookie){
	if (document.cookie.length > 0) {
		begin = document.cookie.indexOf(NameOfCookie+"=");
		if (begin != -1) {
			begin += NameOfCookie.length+1;
			end = document.cookie.indexOf(";", begin);
			if (end == -1) end = document.cookie.length;
			return unescape(document.cookie.substring(begin, end));
			}
		}
	return null;
}

window.onerror = stopErrors;