	
	$.validator.addMethod("validWebAddress", function(value, element) {  
		return this.optional(element) || /^((https:\/\/)|(http:\/\/))*www+[\\.]{1}[a-zA-Z0-9]+[\\.]{1}[(com)|(org)|(edu)|(net)]+([\\.](au))*$/.test(value);  	
	}, "Please enter a valid web address in the format www.domain.com.au"); 
	
	$.validator.addMethod("optionalValidWebAddress", function(value, element) { 
		return this.optional(element) || /^((https:\/\/)|(http:\/\/))*www+[\\.]{1}[a-zA-Z0-9]+[\\.]{1}[(com)|(org)|(edu)|(net)]+([\\.](au))*$/.test(value);    			
	}, "Please enter a valid web address in the format www.domain.com.au"); 
	
	$.validator.addMethod("noSpecialChars", function(value, element) {  
		return this.optional(element) || /^[a-zA-Z0-9 \_\!\$\%\&\*\(\)\=\+\:\;\'\"\,\.\?\-]+$/i.test(value);  
	}, "Please do not use special characters."); 	
	
	$.validator.addMethod("optionalAlphaNumeric", function(value, element) { 
		
		if(checkIfOrganisationIsCompany())
		{			
			return this.optional(element) || /^[a-zA-Z 0-9]+$/i.test(value);  
		}else
			return true;
	}, "Please enter alphabets and digits only."); 
	
	$.validator.addMethod("alphaNumeric", function(value, element) {  
		return this.optional(element) || /^[a-zA-Z 0-9]+$/i.test(value);  
	}); 
	
	$.validator.addMethod("companyName", function(value, element) {  
		return this.optional(element) || /^[a-zA-Z 0-9\'\@\$\!\-\*\&,\.]+$/i.test(value);  
	}); 
	
	$.validator.addMethod("alphaOnly", function(value, element) {  
		return this.optional(element) || /^[a-zA-Z ]+$/i.test(value);  
	}); 
		
	$.validator.addMethod("onlyNumbersLettersHyphensAndSpaces", function(value, element) {  
		return this.optional(element) || /^[a-zA-Z0-9]?[a-zA-Z0-9 -]*[a-zA-Z0-9 ]+$/.test(value);  
	}, "Please enter only numbers, letters, hyphens and spaces."); 
	
	$.validator.addMethod("numbersLettersAndpunctuation", function(value, element) {  
		return this.optional(element) || /^[a-zA-Z0-9 ]+[a-zA-Z0-9 \.\,\?\!\:\;\-\-\(\)\[\]\'\/]*[a-zA-Z0-9\.\?\! ]+$/.test(value);  
	}, "Please enter only numbers, letters, hyphens and spaces."); 
	
	

	$.validator.addMethod("onlyLettersHyphensAndSpaces", function(value, element) {  
		return this.optional(element) || /^[a-zA-Z]?[a-zA-Z- ]*[a-zA-Z ]+$/i.test(value);  
	}); 
	
	$.validator.addMethod("exactlength", function(value, element, param) {
		return this.optional(element) || value.length == param;
	}, jQuery.format("Please enter exactly {0} characters."));
	

	$.validator.addMethod("poboxRequired", function(value, element) {
		if(!$("#fpostaldiff").is(':checked')) {
			return true;
		} else {
			if(!isSet(value) && !isSet($("#fpstreetno").val())  && !isSet($("#fpstreet").val())){
				return false;
			} else {
				return true;
			}
		}
	}, "PO Box No. required if Street No. and Street not specified");
	
	$.validator.addMethod("pstreetnoRequired", function(value, element) {
		if(!$("#fpostaldiff").is(':checked')) {
			return true;
		} else {
			if(!isSet(value) && !isSet($("#fpobox").val())  && !isSet($("#fpstreet").val())){
				return false;
			} else if (!isSet($("#fpobox").val()) && isSet($("#fpstreet").val()) && !isSet(value)) {
				return false;
			} else {
				return true;
			}
		}
	}, "Street No. required if PO Box No. not specified");
	
	$.validator.addMethod("pstreetRequired", function(value, element) {
		if(!$("#fpostaldiff").is(':checked')) {
			return true;
		} else {
			if(!isSet(value) && !isSet($("#fpobox").val())  && !isSet($("#fpstreetno").val())){
				return false;
			} else if (!isSet($("#fpobox").val()) && isSet($("#fpstreetno").val()) && !isSet(value)) {
				return false;
			} else {
				return true;
			}
		}
	}, "Street required if PO Box No. not specified");
	
	$.validator.addMethod("State", function(value, element) {
		return this.optional(element) || (value == "ACT" || value == "NSW" || value == "NT" || value == "QLD" || value == "SA" || value == "TAS" || value == "VIC" || value == "WA");		
	});
	
	$.validator.addMethod("otherSaluteCheck", function(value, element) {
		if($("#fpcsalute").val()=='Other') {						
			return this.optional(element) || /^[a-zA-Z]+$/i.test($("#fpcsaluteOther").val());  			
		} else {
			$("#fpcsaluteOther").val("");
			return true;			
		}
	}, "Please specify the salutataion (maximum 4 characters, only alphabetical values allowed)");	
	
	function validateDate(value)
	{	
		if(value=="")
			return false;
			
		var validDate= false;
		var dates= value.split("/");						
		var newDate = new Date();
		try{
			newDate= Date.fromString(value);															
			
			if(newDate != 'undefined' || null != newDate)
			{
				validDate= 	parseInt(dates[0],10) > 0;						
				if(validDate)
					validDate= 	parseInt(dates[1],10) >0;											
				if(validDate)
					validDate= 	parseInt(dates[2]) >=1990;
					
				if(validDate)
					validDate= newDate <= new Date();
			}else
				validDate= false;
				
			//todayDate.setDate(todayDate.getDate()-1);
		}catch(ee){				
			validDate= false;				
		}
		
		return validDate;
	}
	$.validator.addMethod("dateValidation", function(value, element) {		
		//return this.optional(element) || (value.match(/^([0-9]){1,2}(\/){1}([0-9]){1,2}(\/)([0-9]){4}$/) && validateDate(value));		
		return this.optional(element) || value.match(/^([0-9]){1,2}(\/){1}([0-9]){1,2}(\/)([0-9]){4}$/);		
		
    }, "Please enter the date the business was registered by ASIC");		
	
	function checkMinLength(){
		if(checkIfOrganisationIsSoleTrader())
			return 2;
		else 
			return 0;
	}
	
	function validateDateOfBirth(idfield)
	{
		/*Reduce total year by one in order to get correct age validation, 18-1=17*/
		var check = new Date();
		check.setFullYear(check.getFullYear() - 17);			
		return (new Date($('#'+idfield).val()).getTime() - check.getTime() < 0)?true:false;				
		
	}
