// JavaScript Document

var language_array = new Array();
language_array['error_message'] = new Array();
language_array['error_message']['de'] = 'Eingabe-Fehler:\n';
language_array['fill_in'] = new Array();
language_array['fill_in']['de'] = ': Bitte ausfüllen!\n';
language_array['wrong_format'] = new Array();
language_array['wrong_format']['de'] = ': Das Format ist nicht korrekt!\n';


Array.prototype.inArray = function(search_term) {
  var i = this.length;
  if (i > 0) {
	 do {
		if (this[i] === search_term) {
		   return true;
		}
	 } while (i--);
  }
  return false;
}

/* Check ob der übergeben Ausdruck eine gültige Emailadresse ist
*
*@param email Zu überprüfender Ausdruck
*
*@return boolean ob Ausdruck eine gültige Emailadresse
*/
function checkForm(form_name, lang) {
 var error_message = language_array['error_message'][lang];
 var error = false;
 var first_error = 999;
 var focus_on;
  
 // Obligatorisch Felder auf Schwarz setzten
    for(var i = 0; i < document.getElementsByTagName("td").length; i++){
        	if(document.getElementsByTagName("td")[i].style.color == 'rgb(255, 0, 0)'){
    			document.getElementsByTagName("td")[i].style.color = '#000000';
    		}
    }
    for(var i = 0; i < document.getElementsByTagName("span").length; i++){
    		if(document.getElementsByTagName("span")[i].style.color == 'rgb(255, 0, 0)'){
    			document.getElementsByTagName("span")[i].style.color = '#000000';
    		}
    }
        for(var i = 0; i < document.getElementsByTagName("p").length; i++){
        	if(document.getElementsByTagName("p")[i].style.color == 'rgb(255, 0, 0)'){
    			document.getElementsByTagName("p")[i].style.color = '#000000';
    		}
    }


for(var i = 0; i < document.forms[form_name].elements.length; i++){

    var current_element = document.forms[form_name].elements[i];
	var type_exclude = new Array('hidden','submit','textarea');
	
	//alert(current_element.type+ '  '+current_element.alt);
	if(!type_exclude.inArray(current_element.type) && current_element.alt)
	{
		//alert(current_element.type);
		if(current_element.type == "radio")
		{
			if(current_element.alt.indexOf('r') > -1)
			{
				var radios = document.forms[form_name].elements[current_element.name]
				k = 0;
				for(h = 0; h < radios.length; h++)
				{
				  if (radios[h].checked)
				  {
					k++;
				  }
				}
				if(k == 0)
				{
				  	error = true;
					if(document.getElementById(current_element.id + '_text').firstChild.nodeValue == null) {
				  		error_message += document.getElementById(current_element.id + '_text').firstChild.firstChild.nodeValue + language_array['fill_in'][lang];
					}
					else{
						error_message += document.getElementById(current_element.id + '_text').firstChild.nodeValue + language_array['fill_in'][lang];
					}					document.getElementById(current_element.id + '_text').style.color = '#FF0000';
					if(i < first_error) {first_error = i; focus_on = current_element;}
				}
				i = i + radios.length - 1;
				
			}//end if(current_element.alt.indexOf('r') > -1)	
		}//end if(current_element.type == "radio")			
		else if(current_element.type == "checkbox")
		{
			if(current_element.alt.indexOf('r') > -1)
			{
				if (!current_element.checked)
				{
				  	error = true;
					if(document.getElementById(current_element.id + '_text').firstChild.nodeValue == null) {
				  		error_message += document.getElementById(current_element.id + '_text').firstChild.firstChild.nodeValue + language_array['fill_in'][lang];
					}
					else{
						error_message += document.getElementById(current_element.id + '_text').firstChild.nodeValue + language_array['fill_in'][lang];
					}
					document.getElementById(current_element.id + '_text').style.color = '#FF0000';
					if(i < first_error) {first_error = i; focus_on = current_element;}
				}
			}//end if(current_element.alt.indexOf('r') > -1)	
		}//end else if(current_element.type == "checkbox")
		else
		{
			if (current_element.value == '')
			{
				if(current_element.alt.indexOf('r') > -1)
				{
					error = true;
				  	if(document.getElementById(current_element.id + '_text').firstChild.nodeValue == null) {
				  		error_message += document.getElementById(current_element.id + '_text').firstChild.firstChild.nodeValue + language_array['fill_in'][lang];
					}
					else{
						error_message += document.getElementById(current_element.id + '_text').firstChild.nodeValue + language_array['fill_in'][lang];
					}
					document.getElementById(current_element.id + '_text').style.color = '#FF0000';
					if(i < first_error) {first_error = i; focus_on = current_element;}
				}
			}
			else
			{
				if(current_element.alt.indexOf('n') > -1)
				{
					if(!check_number(current_element.value))
					{
						error = true;
						if(document.getElementById(current_element.id + '_text').firstChild.nodeValue == null) {
				  			error_message += document.getElementById(current_element.id + '_text').firstChild.firstChild.nodeValue + language_array['wrong_format'][lang];
						}
						else{
							error_message += document.getElementById(current_element.id + '_text').firstChild.nodeValue + language_array['wrong_format'][lang];
						}
						document.getElementById(current_element.id + '_text').style.color = '#FF0000';
						if(i < first_error) {first_error = i; focus_on = current_element;}
					}
				}
				else if(current_element.alt.indexOf('d') > -1)
				{
					if(!check_date(current_element.value))
					{
						error = true;
						if(document.getElementById(current_element.id + '_text').firstChild.nodeValue == null) {
				  			error_message += document.getElementById(current_element.id + '_text').firstChild.firstChild.nodeValue + language_array['wrong_format'][lang];
						}
						else{
							error_message += document.getElementById(current_element.id + '_text').firstChild.nodeValue + language_array['wrong_format'][lang];
						}						document.getElementById(current_element.id + '_text').style.color = '#FF0000';
						if(i < first_error) {first_error = i; focus_on = current_element;}
					}
				}
				else if(current_element.alt.indexOf('e') > -1)
				{
					if(!check_email(current_element.value))
					{
						error = true;
						if(document.getElementById(current_element.id + '_text').firstChild.nodeValue == null) {
				  			error_message += document.getElementById(current_element.id + '_text').firstChild.firstChild.nodeValue + language_array['wrong_format'][lang];
						}
						else{
							error_message += document.getElementById(current_element.id + '_text').firstChild.nodeValue + language_array['wrong_format'][lang];
						}						document.getElementById(current_element.id + '_text').style.color = '#FF0000';
						if(i < first_error) {first_error = i; focus_on = current_element;}
					}
				}
			}		
		}//end else	
	}//if(!type_exclude.inArray(current_element.type))
	else if (current_element.type == 'textarea')
	{
	//alert(current_element.type+ '  '+current_element.id+'  '+current_element.value);
				if(current_element.id.indexOf('_r') > -1)
				{
					if(current_element.value == '')
					{
						error = true;
					  	if(document.getElementById(current_element.id + '_text').firstChild.nodeValue == null) {
					  		error_message += document.getElementById(current_element.id + '_text').firstChild.firstChild.nodeValue + language_array['fill_in'][lang];
						}
						else{
							error_message += document.getElementById(current_element.id + '_text').firstChild.nodeValue + language_array['fill_in'][lang];
						}
						document.getElementById(current_element.id + '_text').style.color = '#FF0000';
						if(i < first_error) {first_error = i; focus_on = current_element;}
					}
				}
	}			
}//for(var i = 0; i < document.forms[form_name].elements.length; i++)



	if(error)
	{		
		alert(error_message);
  		focus_on.focus();
		return false;
	}
	else
	{
		//alert('no error');
		return true;
	}
}
 /* Ueberpruefen des Name-Feldes auf Inhalt
 if (document.formular.name.value == '') {
  error = true;
  error_message += "- Bitte Name angeben!\n";
  document.getElementById("name").style.color = '#FF0000';
  if(1 < first_error) {first_error = 1; focus_on = document.formular.name;}
 }
*/ 
 


/* Check ob der übergeben Ausdruck eine gültige Emailadresse ist
*
*@param email Zu überprüfender Ausdruck
*
*@return boolean ob Ausdruck eine gültige Emailadresse
*/
function check_email(email)
{
	var mailUser   = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
	var mailDomain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
		var regExp     = "^" + mailUser + "\@" + mailDomain + "$";
		var regExpObj  = new RegExp(regExp);
	if (regExpObj.test(email))
	{
		return true;
	}
	else
	{
		return false;
	}
}

/* Check ob der übergeben Ausdruck eine Zahl ist
*
*@param mumber Zu überprüfender Ausdruck
*
*@return boolean ob Ausdruck eine Zahl
*/
function check_number(number)
{
	var regExp    = /^-?[0-9]+(,[0-9]+|.[0-9]+)?$/gi;
	var regExpObj = new RegExp(regExp);
	
	if (regExpObj.test(number))
	{
		return true;
	}
	else
	{
	  return false;
	}
}

/* Check ob der übergeben Ausdruck ein Datum ist
*
*@param date Zu überprüfender Ausdruck
*
*@return boolean ob Ausdruck ein Datum
*/
function check_date(date)
{
   	var regExp = /^((19|20|21)\d{2})-(0[0-9]|1[0-2])-(0[0-9]|[12][0-9]|3[01]) ?$/;
	var regExpObj = new RegExp(regExp);
	
	if (regExpObj.test(date))
	{
		return true;
	}
	else
	{
	  return false;
	}
}
