// Add the Program validator
jQuery.validator.addMethod(
	"affProgram",
	function(value, element) {
		var check = false;
		
		var re = /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i
		if( re.test(value)){
			check = true;
		} else {
			if(value.toUpperCase() == 'N/A') {
				check = true;
			} else {
				check = false;
			}
		}
		return this.optional(element) || check;
	}, 
	"Please enter a valid URL or enter N/A"
);

// Contact Form
$.validator.setDefaults({
//	submitHandler: function() { alert("submitted!"); } // Used primarily for debugging
});

$().ready(function() {
	$("#contactform").validate({
		rules: {
			linkback: {
				url: true
			},
			type: {
				required: true
			},
			agreement: {
				required: true
			},
			title: {
				required: true,
				minlength: 2
			},
			name: {
				required: true,
				minlength: 2
			},
			email: {
				required: true,
				email: true
			},
			site: {
				required: true,
				url: true
			},
			code: {
				required: true,
				minlength: 5
			}			
		},
		messages: {
			linkback: {
				url: "Please enter a valid URL"
			},
			type: {
				required: "Please select an a type of review"
			},
			agreement: {
				required: "Please accept our terms before submitting"
			},
			title: {
				required: "Provide a title",
				rangelength: jQuery.format("Enter at least {0} characters")
			},
			name: {
				required: "Provide a contact name",
				rangelength: jQuery.format("Enter at least {0} characters")
			},
			email: {
				required: "Please enter a valid email address",
				minlength: "Please enter a valid email address"
			},
			site: {
				required: "Please enter the website's URL",
				url: "Please enter a valid URL"
			},
			code: {
				required: "Please enter the characters in the image above",
				rangelength: jQuery.format("There should be {0} characters.")
			}			
		}
	});
});
