		function deleteForm (formRef)
		{
			formRef.reset();
		}
		
		var alertstr = "";
		var err=false;
		function checkForm (formRef, formContrRef)
		{
			err=false;
			alertstr = "";
			var reqFields = new Array();
			var mutualFields = new Array();
			var emailFields = new Array();
			var confirmationFields = new Array();
			
			if (formContrRef.elements["reqFields"].value.length>0)
				reqFields = formContrRef.elements["reqFields"].value.split("|");
			if (formContrRef.elements["emailFields"].value.length>0)
				emailFields = formContrRef.elements["emailFields"].value.split("|");
			if (formContrRef.elements["mutualFields"].value.length>0)
				mutualFields = formContrRef.elements["mutualFields"].value.split("|");
			if ((formContrRef.elements["confirmationFields"]) && (formContrRef.elements["confirmationFields"].value.length>0))
				confirmationFields = formContrRef.elements["confirmationFields"].value.split("|");
				
			var emptyAlert = formContrRef.elements["emptyAlert"].value;
			var mutualAlert = formContrRef.elements["mutualAlert"].value;
			var emailAlert = formContrRef.elements["emailAlert"].value;
			var confirmationAlert = formContrRef.elements["confirmationAlert"] ? formContrRef.elements["confirmationAlert"].value : "";
			
			var formFieldPrefix = formContrRef.elements["formFieldPrefix"].value;
			//Check empty input fields
			
			if (reqFields.length>0)
			{
				checkEmpty(formRef, reqFields, formFieldPrefix, emptyAlert);
			}
			
			if (mutualFields.length>0)
			{
				checkMutuals(formRef, mutualFields, formFieldPrefix, mutualAlert);
			}
			
			if (emailFields.length>0)
			{
				checkEmail(formRef, emailFields, formFieldPrefix, emailAlert);
			}
			
			if (confirmationFields.length>0)
			{
				checkConfirmationFields(formRef, confirmationFields, formFieldPrefix, confirmationAlert);
			}
			
			if(err){
				window.alert (alertstr);
				return;
			}
			
			/* Special Function calls */
			if(typeof doSpecial != "undefined"){
			  if(!(doSpecial(formRef,formContrRef,formFieldPrefix)))
			        return false;	
			}
			formRef.submit();
		}
		
		//check for empty fields
		function checkEmpty(formRef, reqFields, formFieldPrefix, emptyAlert)
		{
			var empty = new Array();
			var emptycnt = 0;
			for (var i=0; i<reqFields.length; i++)
			{
				var tmp = reqFields[i];
				if (formRef.elements[formFieldPrefix+tmp].type.indexOf("select")!=-1)
				{
					if (formRef.elements[formFieldPrefix+tmp][formRef.elements[formFieldPrefix+tmp].selectedIndex].value == "none")
						empty[emptycnt++] = tmp;
				}
				else
				{
					if (formRef.elements[formFieldPrefix+tmp].value == "")
						empty[emptycnt++] = tmp;
				}
			}
			// Loop through fields not filled out
			if (emptycnt>0)
			{
				alertstr += emptyAlert + "\n\n";
				for (var i=0; i<emptycnt; i++)
				{
					if (i==0)
					{
						var testIndex = empty[i].indexOf("_");
						if (testIndex > 1) {
							alertstr += "\"" + empty[i].substr(testIndex + 1, empty[i].length) + "\"";
						} else {
							alertstr += "\"" + empty[i] + "\"";
						}
					}
					else
					{
						var testIndex = empty[i].indexOf("_");
						if (testIndex > 1) {
							alertstr += ", \"" + empty[i].substr(testIndex + 1, empty[i].length) + "\"";
						} else {
							alertstr += ", \"" + empty[i] + "\"";
						}						
					}
				}
				//window.alert (alertstr);
				err=true;
				//formRef.elements[formFieldPrefix+empty[0]].focus();
				//return false;
			}
			
			//return true;
		}
		
		// function that checks all fields in passed array for non-ascii characters and displays an
		// alert box in the case of any matchings
		function checkMutuals(formRef, fields, formFieldPrefix, mutualAlert) {						
			var error = new Array();
			var errorcnt = 0;
			
			for (var i = 0; i<fields.length; i++)
			{
			  if(formRef.elements[formFieldPrefix+fields[i]] && (formRef.elements[formFieldPrefix+fields[i]].value)){								                                
				var fieldValue = formRef.elements[formFieldPrefix+fields[i]].value;
				var detected = false;
				for(var j=0; j<fieldValue.length; j++)
				{
					if (detected) continue;
					var decimalCode = parseInt(fieldValue.charCodeAt(j).toString(10));
					if (decimalCode > 128)
					{
						 error[errorcnt++] = fields[i];
						 detected = true;
					}
				}
		          }
			}
			if (errorcnt>0)
			{
				if(alertstr!="")alertstr += "\n\n\n";
				alertstr += mutualAlert+"\n\n";
				for (var i=0; i<errorcnt; i++)
				{
					if (i==0)
					{
						alertstr += "\"" + error[i] + "\"";
					}
					else
					{
						alertstr += ", \"" + error[i] + "\"";
					}
				}
				//window.alert (alertstr);
				err=true;
				//formRef.elements[formFieldPrefix+error[0]].focus();
				//return false;
			}
			//return true;
		}
		
		//function that checks for valid email adresses
		function checkEmail(formRef, emailFields, formFieldPrefix, emailAlert)
		{
			var invalid = new Array();
			var invalidcnt = 0;
			if(emailFields){
			for (var i=0; i<emailFields.length; i++)
			{				
				var tmp = emailFields[i];
				if (((formRef.elements[formFieldPrefix+emailFields[i]])&&(formRef.elements[formFieldPrefix+emailFields[i]].value.indexOf("@")==-1)&&(formRef.elements[formFieldPrefix+emailFields[i]].value.length>0)))
					invalid[invalidcnt++] = formRef.elements[formFieldPrefix+tmp];
			}
			}
			// Loop through invalid fields
			if (invalidcnt>0)
			{
				if(alertstr!="")alertstr += "\n\n\n";
				alertstr += emailAlert + "\n\n";
				for (var i=0; i<invalidcnt; i++)
				{
					if (i==0)
					{
						alertstr += "\"" + invalid[i].value + "\"";
					}
					else
					{
						alertstr += ", \"" + invalid[i].value + "\"";
					}
				}
				//window.alert (alertstr);
				err=true;
				//invalid[0].focus();
			    //return false;
			}
		        //return true;
		}
		
		function checkConfirmationFields(formRef, confirmationFields, formFieldPrefix, confirmationAlert)
		{
			if ( (confirmationFields.length == 2) )
			{
				if((formRef.elements[formFieldPrefix+confirmationFields[0]].value != formRef.elements[formFieldPrefix+confirmationFields[1]].value))
				{
				if(alertstr!="")alertstr += "\n\n\n";
				alertstr += confirmationAlert + "\n\n";
				var testIndex1 = confirmationFields[0].indexOf("_");
				var testIndex2 = confirmationFields[1].indexOf("_");

				alertstr += confirmationFields[0].substr(testIndex1 + 1, confirmationFields[0].length) +", "+confirmationFields[1].substr(testIndex2 + 1, confirmationFields[1].length);
				//window.alert (alertstr);
				err=true;
				//return false;
				}
			}
			//return true;
		}


		function doHitlist(theForm, language) {
		  	var inputCount = theForm.elements.length;		  	
		  	var checkedCount = 0;
		  	for (var i=0; i<inputCount; i++) {
		  		var elementName = theForm.elements[i].name;
		  		var theElement = theForm.elements[i];  		
		  		if ( (elementName.indexOf("pdf")==0) && (theElement.type.indexOf("checkbox")!=-1) && (theElement.checked==true)) {
		  			checkedCount++;
		  		}
		  	}
		  	if (checkedCount==0) {
		  		if (language.indexOf("nn")!=-1) {
		  			alert('Bitte markieren Sie zuerst die gew??nschten PDF-Dateien.');
		  		} else {
		  			alert('Please mark the PDF files before clicking on the download button.');		  			
		  		}
		  	} else {
		  		theForm.submit();
		  	}		  	
		}
		
		
		
		function setParamsFromQuery () 
		{
		  query = location.search.substring(1,location.search.length).split("&");
		  if (query) { 
		    for(var i=0; i<query.length; i++) {
	  			nv = query[i].split("=");
	  			if (nv[0]) { 
	  				nv[0] = unescape(decodeURI(nv[0])); 
	  			}
	  			if (nv && nv[0] && nv[1] && document.getElementsByName(nv[0])[0]) { 
	  			    document.getElementsByName(nv[0])[0].value = unescape(decodeURI(nv[1]));
	  			}
  			}
		  }
		}
		
		
