/*$.validator.setDefaults({
	submitHandler: function() { 		
		//alert($.validator.currentForm.action)		
	}
});*/

$.validator.addMethod("noSpecialChars", function(value, element) {  
	 return this.optional(element) || /[A-Za-z]{1,2}[0-9A-Za-z]{1,2}[ ]?[0-9]{0,1}[A-Za-z]{2}/.test(value);  
	}, "Please provide a valid postcode"); 

$.validator.addMethod("isLandline", function(value, element) {										 
	var result = true;
    if (value.length > 0) {
        // Only allow leading '+', 0-9, spaces, hyphens, dots, brackets
        if(value.replace(/^0\+?[0-9\s\-\.\(\)]*/g, "").length === 0) {
            // Remove leading +
            value = value.replace(/^(\+)?/, "");
            // Remove single pair of brackets
            if (value.search(/\(/) !== -1) {
                value = value.replace(/\([0-9\s\-\.]*\)/, "");
            }
            // Remove spaces, hyphens, dots
            value = value.replace(/[\s\-\.]*/g, "");
            // Pass only if remaining characters are digits and there are 10/11 of them
            if ((value.replace(/[0-9]/g, "").length !== 0) || (value.length < 10)) {
                result = false;
            }

			// allow only phone numbers starting 01 or 02
			result=/[0][1-2][0-9]/.test(value);

        } else {
            result = false;
        }
    }
    return result;
	}, "Please provide a valid landline number"); 

$.validator.addMethod("isPostcode", function(value, element) {										 
	return this.optional(element) || /^\s*[A-Z]{1,2}[0-9R][0-9A-Z]? {0,1}[0-9][ABD-HJLNP-UW-Z]{2}\s*$/.test(value.toUpperCase());
	}, "Please provide a valid Postcode"); 

$().ready(function() {	
	// validate signup form on keyup and submit
	$("#lineChecker").validate({
		rules: {
			housename: "required",
			postcode: {
				required: true,
				minlength: 5,
				maxlength: 8,
				noSpecialChars: true,
				isPostcode:true
			}
		},
		messages: {
			housename: "Please tell us your house number/name",
			postcode: {
				required: "Please tell us your postcode",
				minlength: "Please provide a valid postcode",
				maxlength: "Please provide a valid postcode",
				noSpecialChars: "Please provide a valid postcode",
				isPostcode: "Please provide a valid Postcode"
			}
		}
	});
	
	$("#lineChecker01").validate({
		rules: {
			telephone: {
				required: true,
				isLandline: true,
				minlength: 10,
				maxlength: 12				
			}
		},
		messages: {
			telephone: {
				required: "Please tell us your landline number",
				isLandline: "Please provide a valid landline number",
				minlength: "Please provide a valid landline number",
				maxlength: "Please provide a valid landline number"				
			}
		}
	});

	$("#lineChecker02").validate({
		rules: {
			housename: {
			  required: true,
			  minlength: 1,
			  maxlength: 30			  
			},
			postcode: {
				required: true,
				minlength: 5,
				maxlength: 8,
				noSpecialChars: true,
				isPostcode:true
			}
		},
		messages: {
			housename: "Please tell us your house number/name",
			postcode: {
				required: "Please tell us your postcode",
				minlength: "Please provide a valid postcode",
				maxlength: "Please provide a valid postcode",
				noSpecialChars: "Please provide a valid postcode",
				isPostcode: "Please provide a valid Postcode"
			}
		}
	});
});
