function trim(TRIM_VALUE){
if(TRIM_VALUE.length < 1){
return"";
}
TRIM_VALUE = RTrim(TRIM_VALUE);
TRIM_VALUE = LTrim(TRIM_VALUE);
if(TRIM_VALUE==""){
return "";
}
else{
return TRIM_VALUE;
}
} //End Function

function RTrim(VALUE){
var w_space = String.fromCharCode(32);
var v_length = VALUE.length;
var strTemp = "";
if(v_length < 0){
return"";
}
var iTemp = v_length -1;

while(iTemp > -1){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(0,iTemp +1);
break;
}
iTemp = iTemp-1;

} //End While
return strTemp;

} //End Function

function LTrim(VALUE){
var w_space = String.fromCharCode(32);
if(v_length < 1){
return"";
}
var v_length = VALUE.length;
var strTemp = "";

var iTemp = 0;

while(iTemp < v_length){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(iTemp,v_length);
break;
}
iTemp = iTemp + 1;
} //End While
return strTemp;
} //End Function

// Prüfung auf gltige E-Mail-Adresse:

function EMail(s)
{
 var a = false;
 var res = false;
 if(typeof(RegExp) == 'function')
 {
  var b = new RegExp('abc');
  if(b.test('abc') == true){a = true;}
  }

 if(a == true)
 {
  reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
                   '(\\@)([a-zA-Z0-9\\-\\.]+)'+
                   '(\\.)([a-zA-Z]{2,4})$');
  res = (reg.test(s));
 }
 else
 {
  res = (s.search('@') >= 1 &&
         s.lastIndexOf('.') > s.search('@') &&
         s.lastIndexOf('.') >= s.length-5)
 }
 return(res);
}



/*
Source: http://aktuell.de.selfhtml.org/tippstricks/javascript/formkontrolle/

Parameter fr die Art der Validierung:

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

*/

/* (ausgelagert, um Mehrsprachigkeit zu ermglichen)
var msg_1 = 'Bitte beachten Sie:';
var var_1 = new Array();
var_1[0] = new Array('vorname','e','Bitte geben Sie den Vornamen an.','');
var_1[1] = new Array('name','e','Bitte geben Sie den Namen an.','');
var_1[2] = new Array('str','e','Bitte geben Sie die Straße an.','');
var_1[3] = new Array('plz','e','Bitte geben Sie die Postleitzahl an.','');
var_1[4] = new Array('ort','e','Bitte geben Sie den Ort an.','');
var_1[5] = new Array('land','e','Bitte geben Sie das Land an.','');
var_1[6] = new Array('tel','e','Bitte geben Sie eine Telefonnummer an.','');
var_1[7] = new Array('email','m','Bitte geben Sie eine korrekte E-Mail Adresse an.','');
var_1[8] = new Array('text','e','Bitte geben Sie einen kurzen Beschreibungstext ein.','');
*/

function validate(sender,myarray,err_hd) {
var err_msg = new Array(err_hd+'\n');
var error = false;

for (i = 0; i < myarray.length; i++) {
  field = document.forms[sender.id].elements[myarray[i][0]];

/* Block 1 überprüft Felder, die ausgefüllt sein mssen */
  if (myarray[i][1].indexOf('e')>-1) {
    //if (!field.value) {
		if (trim(field.value)=='') {
      error = true;
      err_msg.push(myarray[i][2]);
    }
  }

/* Block 2 überprüft, ob die Emailadresse formal richtig ist */
  else if (myarray[i][1].indexOf('m')>-1) {
    if (trim(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;
		  	err_msg.push(myarray[i][2]);
      }
    } else {
			error=true;
			err_msg.push(myarray[i][2]);
		}
  }

/* Block 3 berprft Felder, deren Wert eine Zahl sein muss */
  else if (myarray[i][1].indexOf('n')>-1) {
    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;
		err_msg.push(myarray[i][2]);
    }
  }

/* Block 4 berprft Wert anhand eines regulren Audrucks auf bestimmte Muster */
  else if (myarray[i][1].indexOf('r')>-1) {
    var regexp = myarray[i][3];
    if (field.value) {
      if (!regexp.test(field.value)) {
        error = true;
        err_msg.push(myarray[i][2]);
      }
    }
  }

/* Block 5 berprft Felder, die als Preis formatiert sein mssen, ndert die Formatierung eventuell */
  else if (myarray[i][1].indexOf('p')>-1) {
    var myvalue = field.value;
    var reg = /,-{1,}|\.-{1,}/;
    var nantest_value = myvalue.replace(reg,"");
    var num = nantest_value.match(/[^0-9,\.]/gi)
    sep = myarray[i][1].substr(1,1)?myarray[i][1].substr(1,1):',';
    if (field.value) {
      var myvalue = field.value.replace(/\./,',');
      if (myvalue.indexOf(',')==-1) {
        field.value = myvalue+sep+'00';
      }
      else if (myvalue.indexOf(",--")>-1) {
        field.value = myvalue.replace(/,--/,sep+'00');
      }
      else if (myvalue.indexOf(",-")>-1) {
        field.value = myvalue.replace(/,-/,sep+'00');
      }
      else if (!myvalue.substring(myvalue.indexOf(',') + 2)) {
        error=true;
        err_msg.push(field.value+" "+myarray[i][2]);
      }
      else if (myvalue.substring(myvalue.indexOf(',') + 3)!='') {
        error=true;
        err_msg.push(field.value+" "+myarray[i][2]);
      }
      else if (num!=null) {
        error=true;
        err_msg.push(field.value+" "+myarray[i][2]);
      }
    }
  }

/* Block 6 berprft Namensfelder, und korrigiert evtl. die Gro-/Kleinschreibung */
  else if (myarray[i][1].indexOf('c')>-1) {
    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;
  }
}
/* im Fehlerfall werden hier die gesammelten Fehlermeldungen verarbeitet und angezeigt. Wenn das
Formular ohne Beanstandung ist, wird es bertragen */
  if (error) {
    err_msg = err_msg.join('\n\xB7 ');
    alert(err_msg);
    return false;
  }
  else {
    return true;
  }
}
