$(document).ready(function() {
	function stripHtml(value) {
		// remove html tags and space chars
		return value.replace(/<.[^<>]*?>/g, ' ').replace(/&nbsp;|&#160;/gi, ' ')
		// remove numbers and punctuation
		.replace(/[0-9.(),;:!?%#$'"_+=\/-]*/g,'');
	}
	jQuery.validator.addMethod("maxWords", function(value, element, params) {
	    return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length < params;
	}, jQuery.validator.format("Please enter {0} words or less."));

	jQuery.validator.addMethod("minWords", function(value, element, params) {
	    return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params;
	}, jQuery.validator.format("Please enter at least {0} words."));

	jQuery.validator.addMethod("rangeWords", function(value, element, params) {
	    return this.optional(element) || stripHtml(value).match(/\b\w+\b/g).length >= params[0] && value.match(/bw+b/g).length < params[1];
	}, jQuery.validator.format("Please enter between {0} and {1} words."));

	// kontroluje pocet prvku v textu oddelenych oddelovacem (param[0] je oddelovac, param[1] je pocet
	jQuery.validator.addMethod("minItems", function(value, element, params) {
		if (this.optional(element)) return true;
	   var items = value.split( new RegExp( "\\s*" + params[0] + "\\s*", "gi" )).length;
	   if (items < params[1]) return false;
	   return true;
	}, jQuery.validator.format("You must enter at least {1} items"));

	jQuery.validator.addMethod("maxItems", function(value, element, params) {
		if (this.optional(element)) return true;
	   var items = value.split( new RegExp( "\\s*" + params[0] + "\\s*", "gi" )).length;
	   if (items > params[1]) return false;
	   return true;
	}, jQuery.validator.format("You must enter at least {1} items"));

	jQuery.validator.addMethod("rangeItems", function(value, element, params) {
		if (this.optional(element)) return true;
	   var items = value.split( new RegExp( "\\s*" + params[0] + "\\s*", "gi" )).length;
	   if (items < params[1] || items > params[2]) return false;
	   return true;
	}, jQuery.validator.format("You must enter between {1} and {2} items"));

	jQuery.validator.addMethod(
		"multiemail",
		function(value, element)
		{
			if (this.optional(element)) // return true on optional element
				return true;
			var emails = value.split( new RegExp( "\\s*,\\s*", "gi" ) );
			valid = true;
			for(var i in emails) {
				value = emails[i];
				valid=valid && jQuery.validator.methods.email.call(this, value, element);
			}
			return valid;
		},
		jQuery.validator.messages.email
	);

	$('#protirobotum').val('124');
	$('#ochrana_proti_spamu').hide();
	$('#registrationform').validate(
		{
			validClass: "success",
			errorElement: "span",
			errorPlacement: function(error, element) {
				error.insertAfter(element.parent("label"));
			},
			messages: {	}
		}
	);

	var maxEmails = 1;
	var paymentFormValidation = {
	   rules :
			{
			   emails: {
					required: true,
					multiemail: true,
					rangeItems: [',', 1, maxEmails]
		      }
	      }
   }
	$('#payment-form').validate(paymentFormValidation);

	var effect = "slide";
	var effectParams1 = { direction: "up" };
	var effectParams2 = { direction: "up" };

	function showPaymentForm()
	{
			$('#payment-others').show(effect, effectParams2, 1000);
	}
	function showPayments()
	{
			$('#payment').show(effect, effectParams2, 1000);
	}

	// platebni formular
	$('.subscribe-button').click(function()
		{
			var price = $(this).attr('price');
			var pid = $(this).attr('pid');
			var licences = $(this).attr('licences');
			var title = $(this).attr('title');
			var currency = $(this).attr('currency');
			var type = $(this).attr('type');

			paymentFormValidation.rules.emails.rangeItems = [',', 1, licences];

			$('#bb-title').text(title);
			$('#bb-type').val(type);
			$('#bb-price').text(price);
			$('#bb-currency').text(currency);
			$('#bb-maxemails').text(licences)
			$('#payment').hide(effect, effectParams1, 1000, showPaymentForm);
			//			alert(price + ' ' + currency);
			return false;
		}
	);
	$('.back-button').click(function()
		{
			$('#payment-others').hide(effect, effectParams1, 1000, showPayments);
			return false;
		}
	);
});



