function fuckYouSpambot(username, domain) {
    document.write('<a href="mailto:'+username+'@'+domain+'">'+username+'@'+domain+'</a>');
}
function disable(element) {
	element.disabled = true;
   	element.style.backgroundColor = "#cccccc";
   	element.style.color = "#cccccc";
}

function enable(element) {
	element.disabled = false;
   	element.style.backgroundColor = "#ffffff";
   	element.style.color = "#000000";
}

function enableIf(element, when) {
	(when) ? enable(element) : disable(element);
}

function disableAll(elements) {
	for( var i=0; i<elements.length; i++)
		disable(elements[i]);
}

function enableAll(elements) {
	for( var i=0; i<elements.length; i++)
		enable(elements[i]);
}

function enableAllIf(elements, when) {
	for( var i=0; i<elements.length; i++)
		(when) ? enable(elements[i]) : disable(elements[i]);
}

function display( element ) {
	element.style.display = 'block';
}

function hide( element ) {
	element.style.display = 'none';
}

function displayIf( element, when ) {
	( when ) ? display( element ) : hide( element );
}

var toValidate = new Array();

function validateAndSubmit( myform ) {
	validation_array = (toValidate[myform.name]) ? toValidate[myform.name] : new Array();
	if( validate( document.forms[myform.name], toValidate[myform.name]) ) {
    		document.forms[myform.name].submit();
	}
}

function validate(sender,myarray) {

	var err_msg = new Array('Folgende Fehler sind aufgetreten:\n');
	var error = false;
	
	if(myarray[0]=="*") {
		return confirm("Element löschen?");
	}
	
	else{
	for (i=0;i<myarray.length;i++) {
	  field = document.forms[sender.name].elements[myarray[i][0]];
	
	/* Block 1 überprüft Felder, die ausgefüllt sein müssen */
	  if (myarray[i][1].indexOf('e')>-1) {
	   	
		if (!field.value && !field.disabled) {
	      
		 error = true;
	      err_msg.push(myarray[i][2]);
	    }
		
	  }
	
	/* Block 2 überprüft, ob die Emailadresse formal richtig ist */
	 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]);
	        }
	      }
	    }
		
		/* Block 3 überprüft Felder, deren Wert eine Zahl sein muss */
	  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]);
	    }
	  }
	
	
	/* Block 4 überprüft ob eine postleitzahl vorliegt*/
	 if (myarray[i][1].indexOf('p')>-1) {
	    var plz_error = false;
	    if(field.value) {
	      var myvalue = field.value;
	      var num = myvalue.match(/[^0-9]/g);
			if (num!=null) 	      plz_error = true;
			else if (myvalue.length>5) plz_error=true;
		}
		
	  
	    if (plz_error==true) {
	        error = true;
	        err_msg.push(myvalue+" "+myarray[i][2]);
	    }
	  }
	/* Block 5 Überprüft ob eine alphanumerische Eingabe vorliegt */
	 if (myarray[i][1].indexOf('a')>-1) {
	    var alnum_error = false;
	    if (field.value) {
			var myvalue = field.value;
			var num = myvalue.match(/[^0-9a-zA-Z\s]/gi);
	      	if (num!=null) alnum_error = true;
	    }
	    if (alnum_error==true) {
			error = true;
			err_msg.push(myvalue+" "+myarray[i][2]);
	    }			 	
	  }
	  /* Block 6 Überprüft ob ein port vorliegt */
	 if (myarray[i][1].indexOf('o')>-1) {
	    var port_error = false;
	    if (field.value) {
			var myvalue = field.value;
			var num = myvalue.match(/[^0-9]/g);
			if (num!=null) port_error = true;
			else if ((myvalue < 0) || (myvalue > 65535)) port_error=true;
	    }
	    if (port_error==true) {
			error = true;
			err_msg.push(myvalue+" "+myarray[i][2]);
	    }			 	
	  }
	  
	 /* Block 7 Überprüft ob eine ip vorliegt */
	 if (myarray[i][1].indexOf('z')>-1) {
	    var ip_error = false;
	    if (field.value) {
			var myvalue = field.value;
			var ip = myvalue.match(/\b(([0-2]?\d{1,2}\.){3}[0-2]?\d{1,2})\b/g);
			var temp = myvalue.match(/[9]/g);
			if((temp != null) &&( temp.length > 6)) ip_error = true;
			else if ((ip==null) || (ip.length > 1 )) ip_error = true;
		}
	    if (ip_error==true) {
			error = true;
			err_msg.push(myvalue+" "+myarray[i][2]);
	    }			 	
	  }
	   /* Block 8 Überprüft ob eine name vorliegt */
	 if (myarray[i][1].indexOf('c')>-1) {
	    var name_error = false;
	    if (field.value) {
			var myvalue = field.value;
			var name = myvalue.match(/[^a-zA-ZäöüßÄÖÜ\-\s]/g);
			var mi = myvalue.match(/[^\-\s]/g);
			var ws = myvalue.match(/[\s]/g);
			if ((ws != null) && (ws.length > 4)) name_error = true;
			else if(mi == null) name_error=true;
			else if (name!=null) name_error = true;
		}
	    if (name_error==true) {
			error = true;
			err_msg.push(myvalue+" "+myarray[i][2]);
	    }			 	
	  }
	   /* Block 9 Überprüft ob eine preis vorliegt */
	 if (myarray[i][1].indexOf('x')>-1) {
	    var price_error = false;
	    if (field.value) {
			var myvalue = field.value;
			var price = myvalue.match(/euro/gi);
			var price2 = myvalue.match(/[^0-9euro\s,\.]/gi);
			var eur = myvalue.match(/\/g);
	     	var dot = myvalue.match(/\./g);
	     	var com = myvalue.match(/,/g);
	     	
			if((price != null) && (price.length > 1)) price_error=true;
			else if(price2 != null) price_error = true;
			else if((eur!=null) && (eur.length > 1)) price_error=true;
			else if((price!=null) && (eur!=null)) price_error=true;
			else if ((dot!=null)&&(dot.length>1)) price_error = true;
	     	else if ((com!=null)&&(com.length>1)) price_error = true;
	      	else if ((com!=null)&&(dot!=null))    price_error = true;
		}
	    if (price_error==true) {
			error = true;
			err_msg.push(myvalue+" "+myarray[i][2]);
	    }			 	
	  }
	    /* Block 10 Überprüft select  */
	 if (myarray[i][1].indexOf('s')>-1) {
		var select_error = true;
		if((field.selectedIndex > -1) && (field.options[field.selectedIndex].text))
			select_error = false;
		
	    if (select_error == true) {
			error = true;
			err_msg.push(myarray[i][2]);
	    }			 	
	 }
	   /* Block 11 Überprüft radiobuttons */
	 if (myarray[i][1].indexOf('r')>-1) {
		var radio_error = true;
		for(var k=0;k<field.length;k++) {
			if (field[k].checked) {
				radio_error = false;
				break;
			}
		}
	    if (radio_error) {
			error = true;
			err_msg.push(myarray[i][2]);
	    }			 	
	 }
	
	  /* Block 12 Überprüft telefonnummern */
	 if (myarray[i][1].indexOf('t')>-1) {
		var tel_error = false;
	    if(field.value) {
	      var myvalue = field.value;
	      var num = myvalue.match(/[^0-9\-\/\s]/g);
		  if (num!=null) tel_error = true;
		}
		if (tel_error==true) {
			error = true;
			err_msg.push(field.value+" "+myarray[i][2]);
	    }
	}
	/* Block 13 Überprüft ob eine strasse + hausnummer vorliegt */
	 if (myarray[i][1].indexOf('w')>-1) {
	    var alnum_error = false;
	    if (field.value) {
			var myvalue = field.value;
			var num = myvalue.match(/[^0-9a-zA-ZßüäöÜÄÖ\.\-\s]/gi);
	      	if (num!=null) alnum_error = true;
	    }
	    if (alnum_error==true) {
			error = true;
			err_msg.push(myvalue+" "+myarray[i][2]);
	    }			 	
	  }
	
	}
	/* 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;
	  }
	}
}



var dwin = null;

function debug(msg) {
	if ((dwin == null) || (dwin.closed)) {
		dwin = window.open("","debugconsole","scrollbars=yes,resizable=yes,height=100,width=300");
		dwin.document.open("text/html", "replace");
	}
	dwin.document.writeln(''+msg);
	dwin.scrollTo(0,10000);
	dwin.focus();
	// dwin.document.close();  // uncomment this if you want to see only last message , not all the previous messages
}


