/**
  * Visage integration with $ validation plugin
  * 
  * created by: Nathanael Utama	1/6/2009
  * 
  *
  */
 (function($){  
	// Validate for 2 decimal for money
	$.validator.addMethod('currency', function(value, element) {
		return this.optional(element) || /^(\d{1,3})(\.\d{2})?$/.test(value);
	}, 'Must be in currency format 0.99');
	
	/**
	  * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
	  *
	  * @example $.validator.methods.date('01/01/1900')
	  * @result true
	  *
	  * @example $.validator.methods.date('01/13/1990')
	  * @result false
	  *
	  * @example $.validator.methods.date('01.01.1900')
	  * @result false
	  *
	  * @example <input name="pippo" class="{dateITA:true}" />
	  * @desc Declares an optional input element whose value must be a valid date.
	  *
	  * @name $.validator.methods.dateITA
	  * @type Boolean
	  * @cat Plugins/Validate/Methods
	  */
	$.validator.addMethod(
		'dateITA',
		function(value, element) {
			var check = false;
			var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
			if( re.test(value)){
				var adata = value.split('/');
				var gg = parseInt(adata[0],10);
				var mm = parseInt(adata[1],10);
				var aaaa = parseInt(adata[2],10);
				var xdata = new Date(aaaa,mm-1,gg);
				if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
					check = true;
				else
					check = false;
			} else
				check = false;
			return this.optional(element) || check;
		}, 
		'Please enter a correct date'
	);
	
	// alphanumeric validation method
	$.validator.addMethod('alphanumeric', function(value, element) {
		return this.optional(element) || /^\w+$/i.test(value);
	}, 'Letters, numbers, spaces or underscores only please');  

	// alpha validation method
	$.validator.addMethod('lettersonly', function(value, element) {
		return this.optional(element) || /^[a-z]+$/i.test(value);
	}, 'Letters only please'); 



	/* visage validation class list
	class="required"
	class="required validate-email"
	class="required validate-currency"
	class="required validate-url"
	class="required validate-date"
	class="required validate-alphanum"
	class="required validate-number"
	class="required validate-digits"
	class="required validate-alpha"
	*/	
		
	$.validator.addClassRules('validate-email', {
		email: true
	});
	
	$.validator.addClassRules('validate-url', {
		url: true
	});

	$.validator.addClassRules('validate-currency', {
		currency: true
	});		
	
	$.validator.addClassRules('validate-date', {
		dateITA: true
	});
			
	$.validator.addClassRules('validate-alphanum', {
		alphanumeric: true
	});
			
	$.validator.addClassRules('validate-number', {
		number: true
	});
	
	$.validator.addClassRules('validate-digits', {
		digits: true
	});
			
	$.validator.addClassRules('validate-alpha', {
		lettersonly: true
	});
})(jQuery);