$(document).ready(function() {
    
	// user_questionsForm
	$('#question_info').hide();
    
	// validate contact form & send
	$('#send').click(function() {
		var $myForm = $('#kontaktform');
	    
		$myForm.validate({
			errorPlacement: function(error, element) {
				element.parents("p").addClass("fehler");
				//error.prependTo( element.parents("p") );
				$('.meldung').show();
			},
			errorClass: "fehler",
			errorElement: "strong",
			onkeyup: false, // deactivate because of errorHandlerContainer 
			onclick: false // deactivate because of errorHandlerContainer 
		});
	    
		var errorHandlerContainer = function() {
			$(this).valid(); // validate active field based on event (blur, keyup, change)
	            
			var $cont = $(this).parents("p"); // get field's parent p
			var haserror = $("strong.message:visible", $cont).size(); // find error msg
			if (haserror<1) {
				$cont.removeClass("fehler"); // no error -> remove
			} else {
				$cont.addClass("fehler"); // error -> add
			}
		} 
	    
		// check for blur
		$(":input", $myForm).blur(errorHandlerContainer); 
		// check for keyup
		$("input, textarea", $myForm).keyup(errorHandlerContainer); 
		// check for change (selectbox)
		$("select", $myForm).change(errorHandlerContainer); 
	});

	// validate 'Passwort vergessen' & send
	$('#send').click(function() {
		var $myForm = $('#resetpass');
	    
		$myForm.validate({
			errorPlacement: function(error, element) {
				element.parents("p").addClass("fehler");
				//error.prependTo( element.parents("p") );
				$('.meldung').show();
			},
			errorClass: "fehler",
			errorElement: "strong",
			onkeyup: false,
			onclick: false
		});
	    
		var errorHandlerContainer = function() {
			$(this).valid();
	            
			var $cont = $(this).parents("p");
			var haserror = $("strong.message:visible", $cont).size();
			if (haserror<1) {
				$cont.removeClass("fehler");
			} else {
				$cont.addClass("fehler");
			}
		} 
	    
		$(":input", $myForm).blur(errorHandlerContainer); 
		$("input, textarea", $myForm).keyup(errorHandlerContainer); 
		$("select", $myForm).change(errorHandlerContainer); 
	});
	
	
	
	// REGISTER - validate & send
	// no promocode
	/*
	promocode: { 
		required: false,
		remote: livesite+"/includes/remote.validation/validate_code.php"
	},
	*/
	//$('#register').click(function() {
		var $myForm = $('#registerForm');
	    
		$myForm.validate({
		//var validator = $("#registerForm").validate({ 
			rules: {
	    	username: { 
					required: true, 
					minlength: 6,
					remote: livesite+"/includes/remote.validation/validate_username.php"
				},
				email: { 
					required: true,
					email: true,
					remote: livesite+"/includes/remote.validation/validate_email.php"
				},
				password: { 
					required: true, 
					minlength: 6 
				}, 
				password2: { 
					required: true, 
					minlength: 6, 
					equalTo: "#password" 
				},
				agb: { 
					required: true 
				}
			}, 
	
			messages: { 
				username: { 
					required: "Trage hier Deinen Benutzernamen ein", 
					minlength: jQuery.format("Der Benutzername muss mind. {0} Zeichen enthalten"),
					remote: jQuery.format("Der Benutzername ist entweder bereits vergeben oder enthält unzulässige Zeichen")
				}, 
				email: { 
					required: "Trage hier Deine korrekte eMail-Adresse ein",
					email: "Bitte eine gültige eMail-Adresse eintragen",
					remote: jQuery.format("Die eMail-Adresse wird bereits benutzt")
				}, 
				password: { 
					required: "Trage hier Dein Password ein", 
					minlength: jQuery.format("Das Passwort muss mind. {0} Zeichen enthalten") 
				}, 
				password2: { 
					required: "Passwort Wiederholung", 
					minlength: jQuery.format("Das Passwort muss mind. {0} Zeichen enthalten"), 
					equalTo: "Trage hier das gleiche Passwort nochmals ein" 
				},
				promocode: { 
					remote: jQuery.format("Kein Promo-Code eingegeben oder Promo-Code ungültig")
				},
				agb: {
					required: ""
				}
			}, 
	
			// the errorPlacement has to take the table layout into account 
			errorPlacement: function(error, element) {
				element.parents("p").addClass("fehler");
				element.parent().siblings("td").children("div.errormsg").text( error.text() );
				$('#agb_text').addClass("fehler");
				//$('.meldung').show(); // show contextuell messages

				/*
				if ( element.is(":radio") ) 
					error.appendTo( element.parent().next().next() ); 
				else if ( element.is(":checkbox") ) 
					error.appendTo ( element.next() ); 
				else 
					error.appendTo( element.parent().next() );
				*/
			},

			/*
			// specifying a submitHandler prevents the default submit -> for test purposes
			submitHandler: function() { 
				alert("submitted!"); 
			},
			
			// set this class to error-labels to indicate valid fields 
			success: function(label) { 
				// set as text for IE 
				label.html(" ").addClass("checked"); 
			},
			*/

			highlight: function(element) {
				$(element).parent().siblings("td").children("span.statusmsg").css({ display:"none" });
				$(element).parent().siblings("td").children("div.errormsg").css({ display:"block" });
				$(element).parent().siblings("td").children("div.successmsg").css({ display:"none" });
			},
			
			unhighlight: function(element) {
				$(element).parent().siblings("td").children("div.errormsg").css({ display:"none" });
				$(element).parent().siblings("td").children("span.statusmsg").css({ display:"none" });
				$(element).parent().siblings("td").children("div.successmsg").css({ display:"block" });
			}
			
			/*
			errorClass: "fehler",
			errorElement: "strong",
			onkeyup: false,
			onclick: false
			*/
		});
	    
		/*
		var errorHandlerContainer = function(){
			$(this).valid();
	            
			var $cont = $(this).parents("p");
			var haserror = $("strong.message:visible", $cont).size();
			if (haserror<1) {
				$cont.removeClass("fehler");
			} else {
				$cont.addClass("fehler");
			}
		} 
	    
		$(":input", $myForm).blur(errorHandlerContainer); 
		$("input, textarea", $myForm).keyup(errorHandlerContainer); 
		$("select", $myForm).change(errorHandlerContainer); 
		*/
		/*

		$myForm.submit();
		*/
	//});

	// change eMail - user_account.php
	//$('#change_email').click(function() {
		var $myForm = $('#user_account_emailForm');
	    
		$myForm.validate({
			rules: {
				oldemail: { 
					required: true,
					remote: {
						url: livesite+"/includes/remote.validation/validate_oldemail.php",
						type: "post",
						data: {
							username: function() {
								return $("#username").val();
							}
						}
					}
				},
				email: { 
					required: true,
					email: true,
					remote: {
						url: livesite+"/includes/remote.validation/validate_email.php",
						type: "post"
					}
				},
				email2: { 
					required: true, 
					equalTo: "#email" 
				}
			}, 
	
			messages: { 
				oldemail: { 
					required: "Trage hier Deine aktuelle eMail-Adresse ein",
					remote: jQuery.format("Bitte die korrekte eMail-Adresse eintragen")
				}, 
				email: { 
					required: "Trage hier Deine neue eMail-Adresse ein",
					email: "Bitte eine gültige eMail-Adresse eintragen",
					remote: jQuery.format("Die eMail-Adresse wird bereits benutzt")
				}, 
				email2: { 
					required: "eMail Wiederholung", 
					email: "Bitte eine gültige eMail-Adresse eintragen",
					equalTo: "Trage hier die gleiche eMail nochmals ein" 
				}
			}, 
	
			// the errorPlacement has to take the table layout into account 
			errorPlacement: function(error, element) {
				element.parents("p").addClass("fehler");
				element.parent().siblings("td").children("div.errormsg").text( error.text() );
			},

			/*
			// specifying a submitHandler prevents the default submit -> for test purposes
			submitHandler: function() { 
				alert("submitted!"); 
			},
			*/

			highlight: function(element) {
				$(element).parent().siblings("td").children("span.statusmsg").css({ display:"none" });
				$(element).parent().siblings("td").children("div.errormsg").css({ display:"block" });
				$(element).parent().siblings("td").children("div.successmsg").css({ display:"none" });
			},
			
			unhighlight: function(element) {
				$(element).parent().siblings("td").children("div.errormsg").css({ display:"none" });
				$(element).parent().siblings("td").children("span.statusmsg").css({ display:"none" });
				$(element).parent().siblings("td").children("div.successmsg").css({ display:"block" });
			}
		});
	//});

	// change pass - user_account.php
	//$('#change_pass').click(function() {
		var $myForm = $('#user_account_passForm');
	    
		$myForm.validate({
			rules: {
				oldpass: { 
					required: true,
					remote: {
						url: livesite+"/includes/remote.validation/validate_pass.php",
						type: "post",
						data: {
							username: function() {
								return $("#username").val();
							}
						}
					}
				},
				pass: { 
					required: true, 
					minlength: 6 
				},
				pass2: { 
					required: true, 
					equalTo: "#pass" 
				}
			}, 
	
			messages: { 
				oldpass: { 
					required: "Trage hier Dein aktuelles Passwort ein",
					remote: jQuery.format("Bitte das korrekte Passwort eintragen")
				}, 
				pass: { 
					required: "Trage hier Dein Password ein", 
					minlength: jQuery.format("Das Passwort muss mind. {0} Zeichen enthalten") 
				},
				pass2: { 
					required: "Passwort Wiederholung", 
					equalTo: "Trage hier das gleiche Passswort nochmals ein" 
				}
			}, 
	
			// the errorPlacement has to take the table layout into account 
			errorPlacement: function(error, element) {
				element.parents("p").addClass("fehler");
				element.parent().siblings("td").children("div.errormsg").text( error.text() );
			},

			/*
			// specifying a submitHandler prevents the default submit -> for test purposes
			submitHandler: function() { 
				alert("submitted!"); 
			},
			*/

			highlight: function(element) {
				$(element).parent().siblings("td").children("span.statusmsg").css({ display:"none" });
				$(element).parent().siblings("td").children("div.errormsg").css({ display:"block" });
				$(element).parent().siblings("td").children("div.successmsg").css({ display:"none" });
			},
			
			unhighlight: function(element) {
				$(element).parent().siblings("td").children("div.errormsg").css({ display:"none" });
				$(element).parent().siblings("td").children("span.statusmsg").css({ display:"none" });
				$(element).parent().siblings("td").children("div.successmsg").css({ display:"block" });
			}
		});
	//});
	
	// activate user
	$('#activate').click(function() {
	    var $myForm = $('#user_activate');
	    
	    $myForm.validate({
	      errorPlacement: function(error, element) {
	        element.parents("p").addClass("fehler");
	        $('.meldung').show();
	      },
	      errorClass: "fehler",
	      errorElement: "strong",
	      onkeyup: false,
	      onclick: false
	    });
	    
	    var errorHandlerContainer = function(){
	      $(this).valid();
	            
	      var $cont = $(this).parents("p");
	      var haserror = $("strong.message:visible", $cont).size();
	      if (haserror<1) {
	        $cont.removeClass("fehler");
	      } else {
	        $cont.addClass("fehler");
	      }
	    } 
	    
	    $(":input", $myForm).blur(errorHandlerContainer); 
	    $("input, textarea", $myForm).keyup(errorHandlerContainer); 
	    $("select", $myForm).change(errorHandlerContainer); 
	     
	});
	
	// send activation code again
	$('#new-activation').click(function() {
	    var $myForm = $('#activate_code');
	    	   
	    $myForm.validate({
	      errorPlacement: function(error, element) {
	        element.parents("p").addClass("fehler");
	        $('.meldung').show();
	      },
	      errorClass: "fehler",
	      errorElement: "strong",
	      onkeyup: false,
	      onclick: false
	    });
	    
	    var errorHandlerContainer = function(){
	      $(this).valid();
	            
	      var $cont = $(this).parents("p");
	      var haserror = $("strong.message:visible", $cont).size();
	      if (haserror<1) {
	        $cont.removeClass("fehler");
	      } else {
	        $cont.addClass("fehler");
	      }
	    } 
	    
	    $(":input", $myForm).blur(errorHandlerContainer); 
	    $("input, textarea", $myForm).keyup(errorHandlerContainer); 
	    $("select", $myForm).change(errorHandlerContainer); 
	     
	});
	
	// Werbekontaktformular
	$('#sendrequest').click(function() {
	    var $myForm = $('#werbung_kontakt');
	    	   
	    $myForm.validate({
	      errorPlacement: function(error, element) {
	        element.parents("p").addClass("fehler");
	        $('.meldung').show();
	      },
	      errorClass: "fehler",
	      errorElement: "strong",
	      onkeyup: false,
	      onclick: false
	    });
	    
	    var errorHandlerContainer = function(){
	      $(this).valid();
	            
	      var $cont = $(this).parents("p");
	      var haserror = $("strong.message:visible", $cont).size();
	      if (haserror<1) {
	        $cont.removeClass("fehler");
	      } else {
	        $cont.addClass("fehler");
	      }
	    } 
	    
	    $(":input", $myForm).blur(errorHandlerContainer); 
	    $("input, textarea", $myForm).keyup(errorHandlerContainer); 
	    $("select", $myForm).change(errorHandlerContainer); 
	    
	    $("#back", $myForm).click(function() {
	    	document.location = 'index.php';
	    }); 
	});
	
	
	/* search form */
	// send form
	$('#search').click(function() { 
		var searchform = $('#suche');
		
		searchform.submit();
	});

	// send onchange (filter)
	$('#sort').change(function() {          
		var searchform = $('#searchform');

		searchform.submit();
	});
    
	$('#ansicht').change(function() {
		if($('#searchform')) {
			var form = $('#searchform');
		} else {
			var form = $('#listform');
		}

		form.submit();
	});

	/* list form (user_list.php) */
	// send onchange (filter)
	$('#orderby').change(function() {          
		var form = $('#searchform');

		form.submit();
	});
    
	$('#view').change(function() {
		var form = $('#searchform');

		form.submit();
	});
	
	/* datepicker - activity */
	// startdate
	$(function() {
		$.datepicker.setDefaults($.datepicker.regional['de']);
		$("#activity_startdate").datepicker({
			showOn: 'button', 
			buttonImage: livesite+'/user/images/iconDatePicker.gif', 
			buttonImageOnly: true, 
			dateFormat: 'dd.mm.yy',
			prevText: 'Vorheriger',
			nextText: 'N&auml;chster',
			monthNames: ['Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','December'],
			dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
			dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']
		});	
	});
	
	// enddate
	$(function() {
		$.datepicker.setDefaults($.datepicker.regional['de']);
		$("#activity_enddate").datepicker({
			showOn: 'button', 
			buttonImage: livesite+'/user/images/iconDatePicker.gif', 
			buttonImageOnly: true, 
			dateFormat: 'dd.mm.yy',
			prevText: 'Vorheriger',
			nextText: 'N&auml;chster',
			monthNames: ['Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','December'],
			dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
			dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']
		});	
	});

	/* datepicker - contactad */
	// startdate
	$(function() {
		$.datepicker.setDefaults($.datepicker.regional['de']);
		$("#contactad_startdate").datepicker({
			showOn: 'button', 
			buttonImage: livesite+'/user/images/iconDatePicker.gif', 
			buttonImageOnly: true, 
			dateFormat: 'dd.mm.yy',
			prevText: 'Vorheriger',
			nextText: 'N&auml;chster',
			monthNames: ['Januar','Februar','M&auml;rz','April','Mai','Juni','Juli','August','September','Oktober','November','December'],
			dayNamesMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
			dayNames: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']
		});	
	});
		
	// activity form
	// v.1
	$('#new_activity').click(function() {
		var $myForm = $('#sel_activity');
	    	   
		$myForm.validate({
			errorPlacement: function(error, element) {
				element.parents("p").addClass("fehler");
				$('.meldung').show();
			},
			errorClass: "fehler",
			errorElement: "strong",
			onkeyup: false,
			onclick: false
		});
	    
		var errorHandlerContainer = function() {
			$(this).valid();
	            
			var $cont = $(this).parents("p");
			var haserror = $("strong.message:visible", $cont).size();
			if (haserror<1) {
				$cont.removeClass("fehler");
			} else {
				$cont.addClass("fehler");
			}
		} 
	    
		$(":input", $myForm).blur(errorHandlerContainer); 
		$("input, textarea", $myForm).keyup(errorHandlerContainer); 
		$("select", $myForm).change(errorHandlerContainer); 
	    
		$("#back", $myForm).click(function() {
			document.location = 'index.php';
		}); 
	});

	
	// activity form
	// v.2 -> USED
	$('#saveActivity').click(function() {
		var $myForm = $('#activity');
	    	  
		$myForm.validate({
			errorPlacement: function(error, element) {
				element.parents("p").addClass("fehler");
				$('.meldung').show();
			},
			errorClass: "fehler",
			errorElement: "strong",
			onkeyup: false,
			onclick: false
		});
	    
		var errorHandlerContainer = function() {
			$(this).valid();
	            
			var $cont = $(this).parents("p");
			var haserror = $("strong.message:visible", $cont).size();
			if (haserror<1) {
				$cont.removeClass("fehler");
			} else {
				$cont.addClass("fehler");
			}
		} 
	    
		$(":input", $myForm).blur(errorHandlerContainer); 
		$("input, textarea", $myForm).keyup(errorHandlerContainer); 
		$("select", $myForm).change(errorHandlerContainer); 
	    
		// not used - use 'cancel'
		$("#back", $myForm).click(function() {
			document.location = 'index.php';
		}); 
	});

	// activity form - search
	$('#activitysearch').click(function() {
		var $myForm = $('#activitysearchForm');
	    	  
		$myForm.validate({
			errorPlacement: function(error, element) {
				element.parents("p").addClass("fehler");
				$('.meldung').show();
			},
			errorClass: "fehler",
			errorElement: "strong",
			onkeyup: false,
			onclick: false
		});
	    
		var errorHandlerContainer = function() {
			$(this).valid();
	            
			var $cont = $(this).parents("p");
			var haserror = $("strong.message:visible", $cont).size();
			if (haserror<1) {
				$cont.removeClass("fehler");
			} else {
				$cont.addClass("fehler");
			}
		} 
	    
		$(":input", $myForm).blur(errorHandlerContainer); 
		$("input, textarea", $myForm).keyup(errorHandlerContainer); 
		$("select", $myForm).change(errorHandlerContainer); 
	    
		$("#cancel", $myForm).click(function() {
			document.location = 'index.php';
		}); 
	});

	// contactad form
	$('#saveContactad').click(function() {
		var $myForm = $('#contactad');
	    	  
		$myForm.validate({
			errorPlacement: function(error, element) {
				element.parents("p").addClass("fehler");
				$('.meldung').show();
			},
			errorClass: "fehler",
			errorElement: "strong",
			onkeyup: false,
			onclick: false
		});
	    
		var errorHandlerContainer = function() {
			$(this).valid();
	            
			var $cont = $(this).parents("p");
			var haserror = $("strong.message:visible", $cont).size();
			if (haserror<1) {
				$cont.removeClass("fehler");
			} else {
				$cont.addClass("fehler");
			}
		} 
	    
		$(":input", $myForm).blur(errorHandlerContainer); 
		$("input, textarea", $myForm).keyup(errorHandlerContainer); 
		$("select", $myForm).change(errorHandlerContainer); 
	});

});
