//Validierung

$(function(){
				// Grab each form element
				$("label[title]").each(function(){
					//$(this).append("<div class=\"infopop\">");	
					//titletext = $(this).attr("title");
					//$(this).removeAttr("title");
					//$(".infopop",this).css({opacity:0}).html(titletext);
					$("input",this).focus(function(){
						// Mouseover
						doFocus(this);
					}).blur(function(){
						// MouseOut
						doBlur(this);
					});
				});
			});
			
			function doFocus(obj) {
				$(obj).addClass("active").parents("label").addClass("active");
			}
			
			function doBlur(obj) {
				if (validate(obj)) { 
					isGood(obj);
				}
			}
			
			function reportErr(obj, message) {
			$(obj).addClass("error").parents("label").removeClass("isgood").addClass("required").addClass("error").find(".infopop").html(message).addClass("errorpop");
			}
			
			function isGood(obj) {
				//
			$(obj).removeClass("error").removeClass("active").parents("label").addClass("isgood").removeClass("error").removeClass("active");
			} 			
			
			function validate(obj) {
				// Extend jQuery object to include Regular expression masks assigned to properties
				mask = jQuery.extend({textfieldmask: /^[a-z\.\s-]{5,}$/i,numbermask: /^[0-9\.\s-]{4,}$/i,phonemask: /^[0-9\(\)\+\.\s-]{8,}$/i,passwordmask: /^\w{5,}$/, emailmask:/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/, checkboxmask:/^([1])$/});
				// Extend jQuery object to include error messages assigned to properties
				errmsg = jQuery.extend({textfielderr:"Bitte nur gültige Buchstaben eingeben",phoneerr: "Bitte geben Sie eine gültige Telefonnummer an",passworderr:"Minimum 5 characters",emailerr:"Invalid address",numbererr: "Bitte geben Sie nur Ziffern an", checkboxerr:"Bitte akzeptieren Sie unsere Bedingungen",  matcherr: "Must match"});
			
				// Set up variables to hold details of which mask to use and whether the field should match another field
				var masktouse = null;
				var mustmatch = null;
				
				// Determine the type of mask we're going to validate against -> Hier alle Felder aufführen, die gecheckt werden sollen
				switch(obj.name) {
					
					// Vorname
					case "first_name": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					// Nachname
					case "last_name": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					// Firma
					case "company": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					// Anschrift
					case "street": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					// Bundesland
					case "state": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					// Telefon
					case "phone": masktouse="phonemask"; 			errtouse="phoneerr"; 		break;
					// Mobilnummer
					case "mobile": masktouse="phonemask"; 			errtouse="phoneerr"; 		break;
					// Email
					case "email": masktouse="emailmask"; 			errtouse="emailerr"; 		break;
                    //AGB akzeptieren
                    case "agb": masktout:"checkboxmask";            errtouse="checkboxerr";     break;
					//Widerufsrecht
                    case "widerruf": maskout:"checkboxmask";        errtouse="checkboxerr";     break;
					
                    
                    //Geburtsdatum
					case "00ND0000002nlYU": masktouse="numbermask"; 		errtouse="numbererr"; 	break;
					//Beruflicher Status
					case "00ND0000002nlY0": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					// Status seit
					case "00ND0000002nlak": masktouse="numbermask"; 		errtouse="numbererr"; 	break;
					// Taetigkeit
					case "00ND0000002nlY5": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					// Geschäftsidee
					case "00ND0000002nlYZ": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					//Jahresumsatz
					case "00ND0000002nlYj": masktouse="numbermask"; 		errtouse="numbererr"; 	break;
					//Jahresgewinn
					case "00ND0000002nlYe": masktouse="numbermask"; 		errtouse="numbererr"; 	break;
					//Kredithöhe
					case "00ND0000002nlYo": masktouse="numbermask"; 		errtouse="numbererr"; 	break;
					//Laufzeit
					case "00ND0000002nlYt": masktouse="numbermask"; 		errtouse="numbererr"; 	break;
					//Kreditverwendung
					case "00ND0000002nlYy": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					//Gefunden?
					case "00ND0000002nlfl": masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
		
					
/////////////////////Beispielfelder und Einsatz der Masken ///////////////////////////////////////////////////////////					
					//case "vorname": 		masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					//case "nachname": 		masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					//case "telefon": 		masktouse="phonemask"; 			errtouse="phoneerr"; 		break;
					//case "username": 	masktouse="textfieldmask"; 		errtouse="textfielderr"; 	break;
					//case "email": 		masktouse="emailmask"; 			errtouse="emailerr"; 		break;
					
					
					
///////////////////////Angabe über Felder die gegeneinander gecheckt werden müssen Bsp.///////////////////////////////////////////////////////////
					//case "password": 	masktouse="passwordmask"; 		errtouse="passworderr"; 	mustmatch="verpassword"; 	break;
					//case "verpassword": masktouse="passwordmask"; 		errtouse="passworderr"; 	mustmatch="password"; 		break;
				}
				// Check that the element is a required field before validating against it.
				if($(obj).parents("label").hasClass("required") && masktouse) {
					// Set up a quick way of accessing the object we're validating
					pointer = $(obj);
					// Test the value of the field against the Regular Expression
					if (mask[masktouse].test(pointer.val())) {
						// The field validated successfully!
						
						// Check to see if the field needs to match another field in the form
						if (mustmatch) {
							// It does need to match, so grab the object it needs to match
							matchobj = $("#"+mustmatch);
							if (matchobj.val()!='' && matchobj.val()!=pointer.val()) {
								// The fields don't match, so report an error on both of them
								reportErr(obj,errmsg["matcherr"]);	
								reportErr(matchobj,errmsg["matcherr"]);
							}
							else {
								// Either the fields match, or the other field hasn't been completed yet
								// If the other field has been completed, call the isGood function to clear any error message showing
								if (matchobj.val()!='') { isGood(matchobj);}
								return true;
							}
						}
						else {
							// No match is required, so return true - validation passed!
							return true;
						} 
					}
					else { 
						// The field failed to validate against the Regular Expression
						reportErr(obj,errmsg[errtouse]);
						return false; 
					}
				} 
				else {	
					// This isn't a required field, so we won't validate it against anything			
					return true;
				}
			}
            
	   
