var fQuery = jQuery.noConflict();
fQuery().ready(function(){
	
	var currentYear = new Date().getFullYear();

	var defReqTxt = '<b>Bitte ausfüllen</b>';
	var defReqSel = '<b>Bitte auswählen</b>';
	var defReqChk = '<b>Zustimmung erforderlich</b>';
	var defValidCharTxt = '<b>Nur Buchstaben möglich</b>';
	var defDigitsTxt = '<b>Geben Sie bitte nur Zahlen ein</b>';
	var emailTxt = '<b>E-Mail Adresse ist ungültig!</b>';
	var minDigitTxt = '<b>Anzahl Ziffern nicht erreicht!</b>';
	var maxDigitTxt = '<b>Anzahl Ziffern überschritten!</b>';
	var birthdateTxt = '<b>Geburtsdatum überprüfen</b>';
	
	
	// add personalized jquery methods
	fQuery.validator.addMethod('notEqualTo', function(value, element, param){
		return value != fQuery(param).val();
	}, 'Must not be equal to {0}.' );
	  
	fQuery.validator.addMethod('greaterThan', function(value, element, param){
    	return ( IsNaN( value ) && IsNaN( fQuery(param).val() ) ) || ( value > fQuery(param).val() );
	}, 'Must be greater than {0}.' );
    
	fQuery.validator.addMethod('lesserThan', function(value, element, param){
		return ( IsNaN( value ) && IsNaN( fQuery(param).val() ) ) || ( value < fQuery(param).val() );
	}, 'Must be lesser than {0}.' );
	
	fQuery.validator.addMethod('numberNative', function(value, element, param){
		return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:\,\d+)?$/.test(value);
	}, 'Not a valid number.' );
	
	fQuery.validator.addMethod('simpleDate', function(value, element, param){
		return this.optional(element) || /^\d{2}\.\d{2}\.\d{4}$/.test(value);
	}, 'Not a valid date.' );
	
	fQuery.validator.addMethod('validChar', function(value, element) {
		return this.optional(element) || /^[-a-zA-ZäÄöÖüÜà-ùÀ-Ùß ]+$/.test(value);
	}, 'Not a valid letter');
	
	fQuery.validator.addMethod('selectNone', function(value, element) { 
			if (element.value == "Bitte auswählen" || element.value == "Tag" || element.value == "Monat" || element.value == "Jahr"){ return false; } 
			else { return true; } 
		}, "Please select an option.");

	// validate the comment form when it is submitted
	fQuery("#doform374, #doform398, #doform527, #doform585, .event, #doform590, #doform657, #doform902, .newsletter_signup").validate({
		focusInvalid: true,
		//errorPlacement: function(error, element) { error.appendTo( element.parent('label') ); },
		errorElement: 'span',
		errorClass: 'warning',
		
		rules: {
			// Kontaktformular
			"FORM[doform374][el_0]":		{selectNone: true},
			"FORM[doform374][el_1]":		{selectNone: true},
			"FORM[doform374][el_2]":		{required: true, validChar: true},
			"FORM[doform374][el_4]":		{required: true, email: true},
			"FORM[doform374][el_8]":		{required: true},
			"FORM[doform374][el_9]":		{required: true},
			
			// Eintragservice
			"FORM[doform398][el_0]":		{selectNone: true},																						// Anrede
			"FORM[doform398][el_1]":		{required: true, validChar: true},														// Vorname
			"FORM[doform398][el_2]":		{required: true, validChar: true},														// Nachname
			"FORM[doform398][el_3_d]":	{selectNone: true, digits: true, range: [1,31]},							// Tag
			"FORM[doform398][el_3_m]":	{selectNone: true, digits: true, range: [1,12]},							// Monat
			"FORM[doform398][el_3_y]":	{selectNone: true, digits: true, range: [1900,currentYear]},	// Jahr
			"FORM[doform398][el_4]":		{required: true},																							// Straße und Hausnummer
			"FORM[doform398][el_5]":		{required: true, digits: true, minlength: 5, maxlength: 5},		// PLZ
			"FORM[doform398][el_6]":		{required: true},																							// Ort
			"FORM[doform398][el_7]":		{required: true, validChar: true},														// Land
			"FORM[doform398][el_8]":		{required: true, digits: true, minlength: 7},									// Telefon
			"FORM[doform398][el_9]":		{required: true, email: true},																// E-Mail Adresse
			"FORM[doform398][el_10]":		{required: true},																							// Gewinnspiele eintragen
			"FORM[doform398][el_11]":		{required: true},																							// AGB
			
			// Millionenspiel
			"FORM[doform527][el_0]":		{selectNone: true},																						// Anrede
			"FORM[doform527][el_1]":		{required: true, validChar: true},														// Vorname
			"FORM[doform527][el_2]":		{required: true, validChar: true},														// Nachname
			"FORM[doform527][el_3_d]":	{selectNone: true, digits: true, range: [1,31]},							// Tag
			"FORM[doform527][el_3_m]":	{selectNone: true, digits: true, range: [1,12]},							// Monat
			"FORM[doform527][el_3_y]":	{selectNone: true, digits: true, range: [1900,currentYear]},	// Jahr
			"FORM[doform527][el_4]":		{required: true},																							// Straße und Hausnummer
			"FORM[doform527][el_5]":		{required: true, digits: true, minlength: 5, maxlength: 5},		// PLZ
			"FORM[doform527][el_6]":		{required: true},																							// Ort
			"FORM[doform527][el_7]":		{required: true, validChar: true},														// Land
			"FORM[doform527][el_8]":		{required: true, digits: true, minlength: 7},									// Telefon
			"FORM[doform527][el_9]":		{required: true, email: true},																// E-Mail-Adresse
			"FORM[doform527][el_10]":		{required: true},																							// Teilnahmebedingung
			
			// Newsletter
			newsletter_firstname:	{required: true, validChar: true},
			newsletter_lastname:	{required: true, validChar: true},
			newsletter_email:			{required: true, email: true},
			
			// Event
			"FORM[doform585][el_1]":		{required: true, validChar: true},														// Vorname
			"FORM[doform585][el_2]":		{required: true, validChar: true},														// Nachname
			"FORM[doform585][el_3]":		{required: true, email: true},																// E-Mail Adresse
			"FORM[doform585][el_4]":		{digits: true, minlength: 7},																	// Telefon
			"FORM[doform585][el_7]":		{required: true},																							// Event
			"FORM[doform585][el_8]":		{required: true},																							// Datum
			"FORM[doform585][el_9]":		{required: true},																							// Uhrzeit
			
			// Event NEU
			"FORM[doform657][el_0]":		{required: true, validChar: true},														// Vor- und Nachname
			"FORM[doform657][el_1]":		{required: true, email: true},																// E-Mail-Adresse
			"FORM[doform657][el_2]":		{digits: true, minlength: 7},																	// Telefon
			"FORM[doform657][el_5]":		{selectNone: true},																						// Uhrzeit
						
			// Partner werden
			"FORM[doform590][el_1]":		{selectNone: true},																						// Anrede
			"FORM[doform590][el_2]":		{required: true, validChar: true},														// Vorname
			"FORM[doform590][el_3]":		{required: true, validChar: true},														// Nachname
			"FORM[doform590][el_4_d]":	{selectNone: true, digits: true, range: [1,31]},							// Tag
			"FORM[doform590][el_4_m]":	{selectNone: true, digits: true, range: [1,12]},							// Monat
			"FORM[doform590][el_4_y]":	{selectNone: true, digits: true, range: [1900,currentYear]},	// Jahr
			"FORM[doform590][el_5]":		{required: true},																							// Straße und Hausnummer
			"FORM[doform590][el_7]":		{required: true, digits: true, minlength: 5, maxlength: 5},		// PLZ
			"FORM[doform590][el_8]":		{required: true},																							// Ort
			"FORM[doform590][el_9]":		{required: true, validChar: true},														// Land
			"FORM[doform590][el_12]":		{required: true, email: true},																// E-Mail Adresse
			"FORM[doform590][el_13]":		{required: true, digits: true, minlength: 7},									// Telefon
			"FORM[doform590][el_14]":		{required: true, digits: true, minlength: 10},								// Mobil
			"FORM[doform590][el_15]":		{digits: true},																								// Fax
			"FORM[doform590][el_22]":		{required: true},																							// Bestätigung
			
			// Vertrieb
			"FORM[doform902][el_1]":		{required: true, validChar: true},
			"FORM[doform902][el_2]":		{required: true, digits: true, minlength: 7},
			"FORM[doform902][el_3]":		{required: true, email: true},
			"FORM[doform902][el_4]":		{required: true}
		},
				
		messages: {
			// Kontaktformular
			"FORM[doform374][el_0]":		{selectNone: defReqSel},
			"FORM[doform374][el_1]":		{selectNone: defReqSel},
			"FORM[doform374][el_2]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform374][el_4]":		{required: defReqTxt, email: emailTxt},
			"FORM[doform374][el_8]":		{required: defReqTxt},
			"FORM[doform374][el_9]":		{required: defReqTxt},
			
			// Eintragservice
			"FORM[doform398][el_0]":		{selectNone: defReqSel},
			"FORM[doform398][el_1]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform398][el_2]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform398][el_3_d]":	{selectNone: defReqSel, digits: birthdateTxt, range: '<b>1-31</b>'},
			"FORM[doform398][el_3_m]":	{selectNone: defReqSel, digits: birthdateTxt, range: '<b>1-12</b>'},
			"FORM[doform398][el_3_y]":	{selectNone: defReqSel, digits: birthdateTxt, range: '<b>1900-'+currentYear+'</b>'},
			"FORM[doform398][el_4]":		{required: defReqTxt},
			"FORM[doform398][el_5]":		{required: defReqTxt, digits: defDigitsTxt, minlength: minDigitTxt, maxlength: maxDigitTxt},
			"FORM[doform398][el_6]":		{required: defReqTxt},
			"FORM[doform398][el_7]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform398][el_8]":		{required: defReqTxt, digits: defDigitsTxt, minlength: minDigitTxt},
			"FORM[doform398][el_9]":		{required: defReqTxt, email: emailTxt},
			"FORM[doform398][el_10]":		{required: defReqChk},
			"FORM[doform398][el_11]":		{required: defReqChk},
			
			// Millionenspiel
			"FORM[doform527][el_0]":		{selectNone: defReqSel},
			"FORM[doform527][el_1]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform527][el_2]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform527][el_3_d]":	{selectNone: defReqSel, digits: birthdateTxt, range: '<b>1-31</b>'},
			"FORM[doform527][el_3_m]":	{selectNone: defReqSel, digits: birthdateTxt, range: '<b>1-12</b>'},
			"FORM[doform527][el_3_y]":	{selectNone: defReqSel, digits: birthdateTxt, range: '<b>1900-'+currentYear+'</b>'},
			"FORM[doform527][el_4]":		{required: defReqTxt},
			"FORM[doform527][el_5]":		{required: defReqTxt, digits: defDigitsTxt, minlength: minDigitTxt, maxlength: maxDigitTxt},
			"FORM[doform527][el_6]":		{required: defReqTxt},
			"FORM[doform527][el_7]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform527][el_8]":		{required: defReqTxt, digits: defDigitsTxt, minlength: minDigitTxt},
			"FORM[doform527][el_9]":		{required: defReqTxt, email: emailTxt},
			"FORM[doform527][el_10]":		{required: defReqChk},
			
			// Newsletter
			newsletter_firstname:	{required: defReqTxt, validChar: defValidCharTxt},
			newsletter_lastname:	{required: defReqTxt, validChar: defValidCharTxt},
			newsletter_email:			{required: defReqTxt, email: emailTxt},
			
			// Event
			"FORM[doform585][el_1]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform585][el_2]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform585][el_3]":		{required: defReqTxt, email: emailTxt},
			"FORM[doform585][el_4]":		{digits: defDigitsTxt, minlength: minDigitTxt},
			"FORM[doform585][el_7]":		{required: defReqTxt},
			"FORM[doform585][el_8]":		{required: defReqTxt},
			"FORM[doform585][el_9]":		{required: defReqSel},
			
			// Event NEU
			"FORM[doform657][el_0]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform657][el_1]":		{required: defReqTxt, email: emailTxt},
			"FORM[doform657][el_2]":		{digits: defDigitsTxt, minlength: minDigitTxt},
			"FORM[doform657][el_5]":		{selectNone: defReqSel},
			
			// Partner werden
			"FORM[doform590][el_1]":		{selectNone: defReqSel},
			"FORM[doform590][el_2]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform590][el_3]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform590][el_4_d]":	{selectNone: defReqSel, digits: birthdateTxt, range: '<b>1-31</b>'},
			"FORM[doform590][el_4_m]":	{selectNone: defReqSel, digits: birthdateTxt, range: '<b>1-12</b>'},
			"FORM[doform590][el_4_y]":	{selectNone: defReqSel, digits: birthdateTxt, range: '<b>1900-'+currentYear+'</b>'},
			"FORM[doform590][el_5]":		{required: defReqTxt},
			"FORM[doform590][el_7]":		{required: defReqTxt, digits: defDigitsTxt, minlength: minDigitTxt, maxlength: maxDigitTxt},
			"FORM[doform590][el_8]":		{required: defReqTxt},
			"FORM[doform590][el_9]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform590][el_12]":		{required: defReqTxt, email: emailTxt},
			"FORM[doform590][el_13]":		{required: defReqTxt, digits: defDigitsTxt, minlength: minDigitTxt},
			"FORM[doform590][el_14]":		{required: defReqTxt, digits: defDigitsTxt, minlength: minDigitTxt},
			"FORM[doform590][el_15]":		{digits: defDigitsTxt},
			"FORM[doform590][el_22]":		{required: defReqChk},
			
			// Vertrieb
			"FORM[doform902][el_1]":		{required: defReqTxt, validChar: defValidCharTxt},
			"FORM[doform902][el_2]":		{required: defReqTxt, digits: defDigitsTxt, minlength: minDigitTxt},
			"FORM[doform902][el_3]":		{required: defReqTxt, email: emailTxt},
			"FORM[doform902][el_4]":		{required: defReqTxt}
		}
	});
	
	
	fQuery(".newsletter_signout").validate({
		focusInvalid: true,
		//errorPlacement: function(error, element) { error.appendTo( element.parent('label') ); },
		errorElement: 'span',
		errorClass: 'warning',
		
		rules: {
			// Newsletter
			newsletter_email_signout:		{required: true, email: true}			
		},
				
		messages: {
			// Newsletter
			newsletter_email_signout:		{required: defReqTxt, email: emailTxt}
		}
	});


});