﻿
// extend global client error messages
$.extend($.validator.messages, {
	digits: "Bitte geben Sie nur Ziffern ein.",
	maxlength: $.validator.format("Bitte geben Sie nicht mehr als {0} Zeichen ein."),
	minlength: $.validator.format("Bitte geben Sie mindestens {0} Zeichen ein."),
	rangelength: $.validator.format("Bitte geben Sie einen Wert zwischen {0} und {1} Zeichen ein."),
	range: $.validator.format("Bitte geben Sie einen Wert zwischen {0} und {1} ein."),
	max: $.validator.format("Bitte geben Sie einen Wert größer oder gleich als {0} ein."),
	min: $.validator.format("Bitte geben Sie einen Wert kleiner oder gleich als {0} ein"),
	email: $.validator.format("Bitte geben Sie eine gültige Email ein.")
});


/*
 * jQuery validate.password plug-in 1.0
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-validate.password/
 *
 * Copyright (c) 2009 Jörn Zaefferer
 *
 * $Id: customclient.js 5850 2010-03-17 06:43:59Z emb-sringou $
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function($) {
	
	var LOWER = /[a-z]/,
		UPPER = /[A-Z]/,
		DIGIT = /[0-9]/,
		DIGITS = /[0-9].*[0-9]/,
		SPECIAL = /[^a-zA-Z0-9]/,
		SAME = /^(.)\1+$/;
		
	function rating(rate, message) {
		return {
			rate: rate,
			messageKey: message
		};
	}
	
	function uncapitalize(str) {
		return str.substring(0, 1).toLowerCase() + str.substring(1);
	}
	
	$.validator.passwordRating = function(password, username) {
		if (!password || password.length < 8)
			return rating(0, "too-short");
		if (username && password.toLowerCase().match(username.toLowerCase()))
			return rating(0, "similar-to-username");
		if (SAME.test(password))
			return rating(1, "very-weak");
		
		var lower = LOWER.test(password),
			upper = UPPER.test(uncapitalize(password)),
			digit = DIGIT.test(password),
			digits = DIGITS.test(password),
			special = SPECIAL.test(password);
		
		if (lower && upper && digit || lower && digits || upper && digits || special)
			return rating(4, "strong");
		if (lower && upper || lower && digit || upper && digit)
			return rating(3, "good");
		return rating(2, "weak");
	}
	
	$.validator.passwordRating.messages = {
		"similar-to-username": "Too similar to username",
		"too-short": "Too short",
		"very-weak": "Very weak",
		"weak": "Weak",
		"good": "Good",
		"strong": "Strong"
	}
	
	$.validator.addMethod("password", function(value, element, usernameField) {
		// use untrimmed value
		var password = element.value,
		// get username for comparison, if specified
			username = $(typeof usernameField != "boolean" ? usernameField : []);
			
		var rating = $.validator.passwordRating(password, username.val());
		// update message for this field
		
		var meter = $(".password-meter", element.form);
		
		meter.find(".password-meter-bar").removeClass().addClass("password-meter-bar").addClass("password-meter-" + rating.messageKey);
		meter.find(".password-meter-message")
		.removeClass()
		.addClass("password-meter-message")
		.addClass("password-meter-message-" + rating.messageKey)
		.text($.validator.passwordRating.messages[rating.messageKey]);
		// display process bar instead of error message
		
		return rating.rate > 2;
	}, "&nbsp;");
	// manually add class rule, to make username param optional
	$.validator.classRuleSettings.password = { password: true };




	$.validator.addMethod("birthdate", function(value, element, param) {

//		console.dir([value, element, param]);
		
		var returnValue = true;

		$.each(param.check, function(i, val) {
			console.dir(['pre', returnValue, val, ($('#'+ val).val() != '')]);

			returnValue = returnValue && ($('#'+ val).val() != '');

			console.dir(['past', returnValue, val, ($('#'+ val).val() != '')]);
		});
//		console.dir([ids, value, element, param]);

		return returnValue;
//		return false;
	}, "Fehler Message birthdate validation");
	
})(jQuery);

