$().ready(function(){
	
	var currentDay = new Date().getDate();
	var currentMonth = new Date().getMonth()+1;
	var currentYear = new Date().getFullYear();
	var age = 15;
	var yearFrom = 1900;
	var yearTo = currentYear - age;
	
	var reqDefTxt = 'Feld bitte ausfüllen';
	var letDefTxt = 'Bitte nur Buchstaben eingeben';
	var minChrTxt = 'Mind. {0} Zeichen sind erforderlich';
	var maxChrTxt = 'Max. Anzahl von Zeichen überschritten';
	var defDigitsTxt = 'Geben Sie bitte nur Zahlen ein';
	var radDefTxt = 'Bitte auswählen';
	var notFullAgeTxt = 'Überprüfen Sie Ihr Geburtsdatum';
	var invalidDateFormatTxt = 'Datumsformat ungültig (Bsp. '+currentDay+'.'+currentMonth+'.'+currentYear+')';
	var defRangeTxt = $.format('Ziffer zwischen {0} und {1} eingeben');

	
	jQuery.validator.addMethod('notEqualTo', function(value, element, param) {
		return value != jQuery(param).val();
	}, 'Must not be equal to {0}.');
	
	jQuery.validator.addMethod('validChars', function (value) {
		var iChars = "-0123456789_!@#$%^&()+=[]\\\';,./{}|\"<>?";
		for (var i = 0; i < value.length; i++) {
			if (iChars.indexOf(value.charAt(i)) != -1) {
				return false;
			}
		}
		return true;
	}, '');
	
	jQuery.validator.addMethod('check_date_of_birth', function(value, element) {
		var day = $("#el_5_day").val();
		var month = $("#el_5_month").val();
		var year = $("#el_5_year").val();
		
		var mydate = new Date();
		mydate.setFullYear(year, month-1, day);

		var currdate = new Date();
		currdate.setFullYear(currdate.getFullYear() - age);

		return (currdate - mydate < 0 ? false : true);
	}, 'You are not 18');
	
	jQuery.validator.addMethod('notSelect', function(value, element, param) {
		var wert = $(element).val();
		return (wert == '-' || wert == 'Bitte auswählen' || wert == 'Bitte auswählen ...' ? false : true);
	}, 'Please choose');

	/*
	jQuery.validator.addMethod("datefuture", function(value, element){
		var currdate = new Date();
		var datumParse = $(element).parseDate(value);
		
		currdate.setFullYear(currdate.getFullYear());
		
		if ((currdate - datumParse) > 0){
			return true;
		}
		return false;
	});
	
	//Check if date is right
	jQuery.validator.addMethod("dateright", function(value, element){
		var datum = $(element).isDate(value);
		if (!datum){
			return true;
		}
		return false;
	});
	*/
	
	// Validate
	$("#doform35").validate({
		errorClass: "errormsg",
		
		success: function(label) {
			label.addClass("valid").text('')
		},

		rules: {
			'FORM[doform35][el_1]':			{required: true, notSelect: true},
			'FORM[doform35][el_3]':			{required: true, validChars: true, minlength: 2},
			'FORM[doform35][el_4]':			{required: true, validChars: true, minlength: 2},
			'FORM[doform35][el_5_day]':		{required: true, check_date_of_birth: true, digits: true, range: [1,31]},
			'FORM[doform35][el_5_month]':	{required: true, check_date_of_birth: true, digits: true, range: [1,12]},
			'FORM[doform35][el_5_year]':	{required: true, check_date_of_birth: true, digits: true, range: [yearFrom,yearTo]},
			'FORM[doform35][el_8]':			{required: true},
			'FORM[doform35][el_9]':			{required: true, digits: true, minlength: 5, maxlength: 5},
			'FORM[doform35][el_10]':		{required: true},
			'FORM[doform35][el_11]':		{required: true, digits: true, minlength: 6},
			'FORM[doform35][el_12]':		{digits: true, minlength: 6},
			'FORM[doform35][el_13]':		{digits: true, minlength: 10},
			'FORM[doform35][el_14]':		{required: true, email: true},
			'FORM[doform35][el_19]':		{required: true, dateDE: true},
			'FORM[doform35][el_20]':		{required: true},
			'FORM[doform35][el_21]':		{required: true},
			'FORM[doform35][el_24]':		{required: true},
			'FORM[doform35][el_32]':		{required: true, minlength: 5, maxlength: 5},
			'upload[]':						{required: false}
		},
		
		messages: {
			'FORM[doform35][el_1]':			{required: reqDefTxt, notSelect: radDefTxt},
			'FORM[doform35][el_3]':			{required: reqDefTxt, validChars: letDefTxt, minlength: $.format(minChrTxt)},
			'FORM[doform35][el_4]':			{required: reqDefTxt, validChars: letDefTxt, minlength: $.format(minChrTxt)},
			'FORM[doform35][el_5_day]':		{required: reqDefTxt, check_date_of_birth: notFullAgeTxt, digits: defDigitsTxt, range: defRangeTxt},
			'FORM[doform35][el_5_month]':	{required: reqDefTxt, check_date_of_birth: notFullAgeTxt, digits: defDigitsTxt, range: defRangeTxt},
			'FORM[doform35][el_5_year]':	{required: reqDefTxt, check_date_of_birth: notFullAgeTxt, digits: defDigitsTxt, range: $.format('Jahr zwischen {0} und {1} eingeben')},
			'FORM[doform35][el_8]':			{required: reqDefTxt},
			'FORM[doform35][el_9]':			{required: reqDefTxt, digits: defDigitsTxt, minlength: $.format(minChrTxt), maxlength: maxChrTxt},
			'FORM[doform35][el_10]':		{required: reqDefTxt},
			'FORM[doform35][el_11]':		{required: reqDefTxt, digits: defDigitsTxt, minlength: $.format(minChrTxt)},
			'FORM[doform35][el_12]':		{digits: defDigitsTxt, minlength: $.format(minChrTxt)},
			'FORM[doform35][el_13]':		{digits: defDigitsTxt, minlength: $.format(minChrTxt)},
			'FORM[doform35][el_14]':		{required: reqDefTxt, email: 'E-Mail-Adresse ungültig'},
			'FORM[doform35][el_19]':		{required: reqDefTxt, dateDE: invalidDateFormatTxt},
			'FORM[doform35][el_20]':		{required: radDefTxt},
			'FORM[doform35][el_21]':		{required: radDefTxt},
			'FORM[doform35][el_24]':		{required: radDefTxt},
			'FORM[doform35][el_32]':		{required: reqDefTxt, minlength: $.format(minChrTxt), maxlength: maxChrTxt},
			'upload[]':						{required: '', maxlength: ''}	
		}
	});
	
	$("#doform302").validate({
		errorClass: "errormsg",
		
		success: function(label) {
			label.addClass("valid").text('')
		},

		rules: {
			'FORM[doform302][el_1]':	{required: true, notSelect: true},
			'FORM[doform302][el_4]':	{required: true, notSelect: true},
			'FORM[doform302][el_5]':	{required: true, validChars: true, minlength: 2},
			'FORM[doform302][el_6]':	{required: true, validChars: true, minlength: 2},
			'FORM[doform302][el_7]':	{required: true},
			'FORM[doform302][el_8]':	{required: true, notSelect: true},
			'FORM[doform302][el_9]':	{required: true},
			'FORM[doform302][el_10]':	{required: true},
			'FORM[doform302][el_11]':	{required: true, digits: true, minlength: 5, maxlength: 5},
			'FORM[doform302][el_12]':	{required: true},
			'FORM[doform302][el_13]':	{required: true, digits: true, minlength: 6},
			'FORM[doform302][el_14]':	{digits: true, minlength: 6},
			'FORM[doform302][el_15]':	{required: true, email: true},
			'FORM[doform302][el_25]':	{required: true, dateDE: true},
			'FORM[doform302][el_26]':	{required: true, dateDE: true},
			'FORM[doform302][el_27]':	{required: true},
			'FORM[doform302][el_29]':	{required: true, notSelect: true},
			'FORM[doform302][el_34]':	{required: true, minlength: 5, maxlength: 5}
		},
		
		messages: {
			'FORM[doform302][el_1]':	{required: reqDefTxt, notSelect: radDefTxt},
			'FORM[doform302][el_4]':	{required: reqDefTxt, notSelect: radDefTxt},
			'FORM[doform302][el_5]':	{required: reqDefTxt, validChars: letDefTxt, minlength: $.format(minChrTxt)},
			'FORM[doform302][el_6]':	{required: reqDefTxt, validChars: letDefTxt, minlength: $.format(minChrTxt)},
			'FORM[doform302][el_7]':	{required: reqDefTxt},
			'FORM[doform302][el_8]':	{required: reqDefTxt, notSelect: radDefTxt},
			'FORM[doform302][el_9]':	{required: reqDefTxt},
			'FORM[doform302][el_10]':	{required: reqDefTxt},
			'FORM[doform302][el_11]':	{required: reqDefTxt, digits: defDigitsTxt, minlength: $.format(minChrTxt), maxlength: maxChrTxt},
			'FORM[doform302][el_12]':	{required: reqDefTxt},
			'FORM[doform302][el_13]':	{required: reqDefTxt, digits: defDigitsTxt, minlength: $.format(minChrTxt)},
			'FORM[doform302][el_14]':	{digits: defDigitsTxt, minlength: $.format(minChrTxt)},
			'FORM[doform302][el_15]':	{required: reqDefTxt, email: 'E-Mail-Adresse ungültig'},
			'FORM[doform302][el_25]':	{required: reqDefTxt, dateDE: invalidDateFormatTxt},
			'FORM[doform302][el_26]':	{required: reqDefTxt, dateDE: invalidDateFormatTxt},
			'FORM[doform302][el_27]':	{required: reqDefTxt},
			'FORM[doform302][el_29]':	{required: reqDefTxt, notSelect: radDefTxt},
			'FORM[doform302][el_34]':	{required: reqDefTxt, minlength: $.format(minChrTxt), maxlength: maxChrTxt}
		}
	});
});