window.alert=function(){

var E=document.getElementById("alert");
if(E){
	document.body.removeChild(E)
}
E=document.createElement("DIV");
E.id=E.className="alert";
document.body.appendChild(E);

if(arguments.length==1){
	arguments=["",arguments[0]]
}
E.innerHTML=(arguments[0]==""?"":'<div class="alerttitle">'+arguments[0]+"</div>")
			+'<div class="alertbody">'+arguments[1]+'</div><br /><div class="alertbutton"><a href="" onclick="document.body.removeChild(document.getElementById(\'alert\'));return( false );">OK</a></div>';


E.style.display="block";
}


function validate(sender,myarray,err_hd) {
var err_msg = !err_hd?new Array(''):new Array(''+err_hd+'<br/>');
var error = false;

for (i=0;i<myarray.length;i++) {

  field = document.forms[sender.name].elements[myarray[i][0]];

/* Block 1a überprüft Felder, die ausgefüllt sein müssen */
  if (myarray[i][1].indexOf('e')>-1) {

    if (!field.value) {

      error = true;
      err_msg.push(myarray[i][2]+'<br>');
    }
  }

/* Arrays: Block 1b überprüft Felder, die ausgefüllt sein müssen */
  else if (myarray[i][1].indexOf('a')>-1) {

	var localerror = false;
	for (var j=0; j < field.length; j++) {
		if (!field[j].value) {
			localerror = true;
		}
	}
    if (localerror) {
      error = true;
      err_msg.push(myarray[i][2]+'<br>');
    }

  }


/* Block 2 überprüft Radio-Buttons, die ausgewaehlt sein müssen */
  else if (myarray[i][1].indexOf('o')>-1) {
	var localerror = true;
	if (field.length > 0 ) {
		for (var j=0; j < field.length; j++) {
			if (field[j].checked) {
				localerror = false;
			}
		}
	} else {
		if (field.checked) {
			localerror = false;
		}
	}
    if (localerror) {
      error = true;
      err_msg.push(myarray[i][2]+'<br>');
    }
  }

/* Block 2 überprüft, ob die Emailadresse formal richtig ist */
  else if (myarray[i][1].indexOf('m')>-1) {
    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;
          err_msg.push(field.value+" "+myarray[i][2]+'<br>');
        }
      }
    }

/* Block 3a überprüft 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(myvalue+" "+myarray[i][2]+'<br>');
    }
  }


/* fuer Arrays: Block 3b überprüft Felder, deren Wert eine Zahl sein muss */
  else if (myarray[i][1].indexOf('z')>-1) {

	var localerror = false;
    var num_error = false;

	for (var j=0; j < field.length; j++) {

		if(field[j].value) {
		  var myvalue = field[j].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(myvalue+" "+myarray[i][2]+'<br>');
    }

  }



/* Block 4 überprüft Wert anhand eines regulären 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(field.value+" "+myarray[i][2]+'<br>');
      }
    }
  }

/* Block 5 überprüft Felder, die als Preis formatiert sein müssen, ä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]+'<br>');
      }
      else if (myvalue.substring(myvalue.indexOf(',') + 3)!='') {
        error=true;
        err_msg.push(field.value+" "+myarray[i][2]+'<br>');
      }
      else if (num!=null) {
        error=true;
        err_msg.push(field.value+" "+myarray[i][2]+'<br>');
      }
    }
  }


}

/* 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<li>');
    alert('Bitte überprüfen Sie Ihre Eingaben:', '<ul>'+ err_msg +'</ul>');
    return false;
  }
  else {
    return true;
  }
}

