/*
e  	empty  	 das Element darf nicht leer sein
n 	number 	das Element muss eine Zahl sein
m 	mail 	eine Emailadresse muss formal richtig sein
r 	regexp 	der Wert soll ein bestimmtes Muster haben
p 	price 	der Wert soll in der Form "10,00" sein (mit Komma)
p. 	price_dot 	der Wert soll in der Form "10.00" sein (mit Punkt)
c 	capitalize 	Namen sollen korrigiert werden
a   radiobuttons prüfen
s   selectfelder prüfen
b   checkboxen prüfen

*/

// check vorschlag
var ckeckForm = new Array();
ckeckForm[0] = new Array('nachname','e','','','eingabe_size1');
ckeckForm[1] = new Array('telefon','e','','','eingabe_size1');
ckeckForm[2] = new Array('email','m','','','eingabe_size1');
ckeckForm[3] = new Array('nachricht','e','','','textarea_size1');

function cssFehler(elementName,nameStyle)
{
	document.getElementById(elementName).className = nameStyle + "_falsch";
}
function cssRichtig(elementName,nameStyle)
{
	document.getElementById(elementName).className = nameStyle;
}

// ############################ Validierung ############################
function validate(sender,myarray){
  error = false;
  var formname = sender.name;
  
	
  for (i=(myarray.length-1);i>=0;i--){
    field = document.forms.formular.elements[myarray[i][0]];
    //name des formularfeldes
    feldnamen = field.name;
  
    //Block 1
    if (myarray[i][1].indexOf('e')>-1){
      fillIn(feldnamen,myarray[i][4],formname);
    }
    // Block 2
    else if (myarray[i][1].indexOf('m')>-1) {
      emailCheck(feldnamen,myarray[i][4],formname);
    }
    // Block 3
    else if (myarray[i][1].indexOf('n')>-1) {
      numbersCheck(feldnamen,myarray[i][4],formname);
    }
    // Block 4	
    else if (myarray[i][1].indexOf('r')>-1) {
      regCheck(feldnamen,myarray[i][4],formname);
    }
    // Block 5
    else if (myarray[i][1].indexOf('c')>-1) {
      upper_lower_case(feldnamen,myarray[i][4],formname);
    }
    // Block 6
    else if (myarray[i][1].indexOf('a')>-1) {
      radios(myarray[i][0],myarray[i][4],myarray[i][5],formname);
    }
    // Block 7
    //else if (myarray[i][1].indexOf('s')>-1) {
    //  selectfield(feldnamen,myarray[i][4],formname);
    //}
  }
  //alert('error: ' + error);
  if (error == true) {
	document.getElementById('absenden').className = "falsch";  
    return false;
  }
  else {
    return true;
  }
  
}

// ############################ Block 1: überprüft Felder, die ausgefüllt sein müssen ############################ 
function fillIn(namefeld,nameStyle,formname)
{	
    var field = document.forms.formular.elements[namefeld];
    var feldnamen = field.name;	
	if (!field.value){
		
	  document.formular[feldnamen].focus(); 	
	  cssFehler(feldnamen,nameStyle);
      error = true;
    }
	else
	{
	  cssRichtig(feldnamen,nameStyle);
	}
}
// ############################ Block 2: überprüft, ob die Emailadresse formal richtig ist ############################ 
function emailCheck(namefeld,nameStyle,formname)
{
	var field = document.forms.formular.elements[namefeld];
    var feldnamen = field.name;	
		 
	if (field.value) {
      var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
      var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
      var regex = "^"+usr+"\@"+domain+"$";
      var myrxp = new RegExp(regex);
      var check = (myrxp.test(field.value));
        if (check!=true) {
          error=true;
		  cssFehler(feldnamen,nameStyle);
        }
		else
		{
	  	  cssRichtig(feldnamen,nameStyle);
		}
    }
	else
	{
      error=true;
	  cssFehler(feldnamen,nameStyle);
	}
}
// ############################ Block 3 überprüft Felder, deren Wert eine Zahl sein muss ############################ 
function numbersCheck(namefeld,nameStyle,formname)
{	
    var field = document.forms.formular.elements[namefeld];
    var feldnamen = field.name;	
	
	var num_error = false;
    if(field.value) {
      var myvalue = field.value;
      var num = myvalue.match(/[^0-9,\.]/gi)
      var dot = myvalue.match(/\./g);
      var com = myvalue.match(/,/g);
        if (num!=null) {
          num_error = true;
        }
        else if ((dot!=null)&&(dot.length>1)) {
          num_error = true;
        }
        else if ((com!=null)&&(com.length>1)) {
          num_error = true;
        }
        else if ((com!=null)&&(dot!=null)) {
          num_error = true;
        }
    }
    if (num_error==true) {
        error = true;		
		cssFehler(feldnamen,nameStyle);
    }
	else
	{
	  cssRichtig(feldnamen,nameStyle);
	}
}
// ############################ Block 4 überprüft Wert anhand eines regulären Audrucks auf bestimmte Muster ############################ 
function regCheck(namefeld,nameStyle,formname)
{	
    var field = document.forms.formular.elements[namefeld];
    var feldnamen = field.name;	
	var regexp = /\d{5,5}/;
	
	
    //if (field.value) {
      if (!regexp.test(field.value)) {
        error = true;
		cssFehler(feldnamen,nameStyle);
      }
	  else
	  {
	    cssRichtig(feldnamen,nameStyle);
	  }
  //  }
}

// ############################ Block 5 überprüft Namensfelder, und korrigiert evtl. die Groß-/Kleinschreibung ############################ 
function upper_lower_case(namefeld,nameStyle,formname)
{	    
    var field = document.forms.formular.elements[namefeld];
    var feldnamen = field.name;	
	
	var noble = new Array("de","von","van","der","d","la","da","of");
    var newvalue='';
    var myvalue = field.value.split(/\b/);
    for (k=0;k<myvalue.length;k++) {
      newvalue+= myvalue[k].substr(0,1).toUpperCase()+myvalue[k].substring(1);
    }
    for(k=0;k<noble.length;k++){
      var reg = new RegExp ("\\b"+noble[k]+"\\b","gi");
      newvalue = newvalue.replace(reg,noble[k]);
    }
    field.value = newvalue;
}

// ############################ Block 6: überprüft radio buttons ############################ 
function radios(feldname,nameStyle,subElement,formname)
{
	var ra = document.formular[feldname];
	
	var count = 0;
	
	for(var i = 0; i < ra.length; i++)
	{//alert(document.formular[feldname][i].name);
		if(document.formular[feldname][i].checked == false) 
		{	
			count++;
		}
	}	
	if(count == ra.length)
	{
		cssFehler(subElement,nameStyle);
        error = true;
	}
	else
	{
		cssRichtig(subElement,nameStyle);
	}
}


// ############################ Block 7: selectfelder prüfen ############################ 
/*function selectfield(namefeld,nameStyle,formname)
{
	var field = document.forms.formular.elements[namefeld];
    var feldnamen = field.name;	
	
	if(field.selectedIndex == 0)
	{
	  cssFehler(feldnamen,nameStyle);
      error = true;
    }
	else
	{
	  cssRichtig(feldnamen,nameStyle);
	}
}*/