/*
	Custom validation methods for jQuery Validator plugin
*/

$(document).bind('ready', function() {
	/* adds 'regex' custom rule method to jQuery Validator plugin 
		usage example:
			rules {
				some_element: {
					required: true,
					regex: '^[a-zA-Z]*$'
				}
			}
	 */
	jQuery.validator.addMethod(
		"regex",
		function(value, element, regexp) {
			var check = false;
			var re = new RegExp(regexp);
			return this.optional(element) || re.test(value);
		},
		"Value format is invalid."
	);

	/* adds 'zipcode' custom rule method to jQuery Validator plugin
		accepts 12345 format
		usage example: 
			rules {
				el: {
					required: true,
					zipcode: true
				}
			}
	*/
	jQuery.validator.addMethod("zipcode", function(value, element) {
		return this.optional(element) || /^[0-9]{5}$/.test(value);
	}, "Must be 5 numbers");

    /* adds datevalue validation rule (assumes date is in mm/dd/yyyy format)

        Validates that a date string is a valid date; does not check format, 
        but content. For example, will determine that '02/31/2010' is invalid, 
        even though it's properly formatted. Use the standard date validation 
        function to check the format.
    */
    jQuery.validator.addMethod( "datevalue", function( value, element ) 
        {
            if( this.optional(element) && value.length == 0 ) 
                return true;

			switch($("#i18nDateFormat").val()) {
				case "ISO":
					var dateParts = value.split('-');
					var date = new Date(dateParts[0], dateParts[1] - 1, dateParts[2] );
					return dateParts[0] == date.getFullYear() &&
						   dateParts[1] == (date.getMonth() + 1) &&
						   dateParts[2] == date.getDate();
					break;
				default:
		            var dateParts = value.split('/');
    		        var date = new Date( dateParts[2], dateParts[0] - 1, dateParts[1] );
        		    return dateParts[2] == date.getFullYear() &&
                		   dateParts[0] == ( date.getMonth() + 1 ) &&
                		   dateParts[1] == date.getDate();
					break;
			}					
        }, 
    'Please enter a valid date.' );
});

