
// isEmpty
	function isEmpty (strValue) {
		return (! strValue.replace (/^(\s*)/, "", strValue));
	}

// isValidEmail
	function isValidEmail (emailStr) {

		var emailPat=/^(.+)@(.+)$/; 
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]"; 
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var atom=validChars + '+'; 
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

		var matchArray=emailStr.match(emailPat)
		if (matchArray==null) {
			return false;
		}
		
		var user=matchArray[1];
		var domain=matchArray[2];
		
		if (user.match(userPat)==null) {
			return false;
		}
		
		var IPArray=domain.match(ipDomainPat)
		if (IPArray!=null) {
			for (var i=1;i<=4;i++) {
				if (IPArray[i]>255) {
					return false;
				}
			}
			return true;
		}
		
		var domainArray=domain.match(domainPat)
		if (domainArray==null) {
		    return false;
		}

		var atomPat=new RegExp(atom,"g")
		var domArr=domain.match(atomPat)
		var len=domArr.length
		if (domArr[domArr.length-1].length<2 || 
			domArr[domArr.length-1].length>4) {
			return false;
		}
	
		if (len<2) {
			return false;
		}

		return true;
	}

	function isValidCurrency(strValue)  {
		var objRegExp = /(^\${0,1}\d{1,3}(,{0,1}\d{3})*(\.\d{2})*$)|(^\(\${0,1}\d{1,3}(,{0,1}\d{3})*(\.\d{2}\))*$)/;
		return objRegExp.test( strValue );
	}

// isValidDate
	function isValidDate (strValue) {
		var datePat = /^(\d{2})(\/|-)(\d{2})\2(\d{4})$/;
		var matchArray = strValue.match(datePat); 
		if (matchArray == null) { return false;	}
		day = matchArray[1]; month = matchArray[3]; year = matchArray[4];
		if (month < 1 || month > 12) { return false; }
		if (day < 1 || day > 31) { return false; }
		if ((month==4 || month==6 || month==9 || month==11) && day==31) { return false; }
		if (month==2) {
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day>29 || (day==29 && !isleap)) { return false; }
		}
		return true;
	}

// reduceToDigits
	function reduceToDigits (strValue) {
		return (strValue.replace (/([^0-9])/g, "", strValue));
	}
	
//check form for downloading files
function checkDownloadForm(formObj) {  

	var alert_message = "";
	if (!isValidEmail(formObj.dwnEmail.value)) {
		alert_message = "error";
	}

	if (alert_message) {
		alert ("Sorry, but that's not a valid email address");
		return false;
	} else {
		return true;
	}
}


//check form for downloading files
function checkContactForm(formObj) {  

	var alert_message = "";
	
	if (isEmpty(formObj.conName.value)) {
		alert_message = alert_message + " - Your Name\n";
	}
	
	if (!isValidEmail(formObj.conEmail.value)) {
		alert_message = alert_message + " - A valid email address\n";
	}
	
	if (isEmpty(formObj.conComments.value)) {
		alert_message = alert_message + " - Comments\n";
	}

	if (alert_message) {
		alert ("CONTACT FORM\n\nSorry, your form is incomplete.\n" +
			   "You must supply the following information:\n\n" +
				alert_message);
		return false;
	} else {
		return true;
	}
}


//check form for license key renewal
function checkLicenseRenewForm(formObj) {  

	var alert_message = "";
	
	if (formObj.licLicenseType.value == "bNav Trial License (Multi-Client)"){
		
		if (isEmpty(formObj.licOrganisation.value)) {
			alert_message = alert_message + " - Organisation\n";
		}		
		if (isEmpty(formObj.licName.value)) {
			alert_message = alert_message + " - Your Name\n";
		}
		if (!isValidEmail(formObj.licEmail.value)) {
			alert_message = alert_message + " - A valid email address\n";
		}
		if (isEmpty(formObj.licPhone.value)) {
			alert_message = alert_message + " - Phone\n";
		}
		
	} else {
		
		if (isEmpty(formObj.licOrganisation.value)) {
			alert_message = alert_message + " - Organisation\n";
		}
		if (isEmpty(formObj.licAddress1.value)) {
			alert_message = alert_message + " - Street Address\n";
		}
		if (isEmpty(formObj.licSuburb.value)) {
			alert_message = alert_message + " - Suburb/City\n";
		}
		if (isEmpty(formObj.licPostcode.value)) {
			alert_message = alert_message + " - Postcode\n";
		}
		if (isEmpty(formObj.licCountry.value)) {
			alert_message = alert_message + " - Country\n";
		}
		if (isEmpty(formObj.licName.value)) {
			alert_message = alert_message + " - Your Name\n";
		}
		if (!isValidEmail(formObj.licEmail.value)) {
			alert_message = alert_message + " - A valid email address\n";
		}
		if (isEmpty(formObj.licPhone.value)) {
			alert_message = alert_message + " - Phone\n";
		}	
		
	}
	
	if(!formObj.licAgreeTerms.checked){
		alert_message = alert_message + " - Agreement with Terms and Conditions\n";
	}
	
	if (alert_message) {
		alert ("REQUEST LICENSE KEY\n\nSorry, your form is incomplete.\n" +
			   "You must supply the following information:\n\n" +
				alert_message);
		return false;
	} else {
		return true;
	}
}

//check form for downloading bNavigator
function checkbNavDownloadForm(formObj) {  

	var alert_message = "";
	
	if (isEmpty(formObj.licOrganisation.value)) {
		alert_message = alert_message + " - Organisation\n";
	}		
	if (isEmpty(formObj.licCountry.value)) {
		alert_message = alert_message + " - Country\n";
	}
	if (isEmpty(formObj.licName.value)) {
		alert_message = alert_message + " - Your Name\n";
	}
	if (!isValidEmail(formObj.licEmail.value)) {
		alert_message = alert_message + " - A valid email address\n";
	}
	if (isEmpty(formObj.licPhone.value)) {
		alert_message = alert_message + " - Phone\n";
	}
	
	if(!formObj.licAgreeTerms.checked){
		alert_message = alert_message + " - Agreement with Terms and Conditions\n";
	}
	
	if (alert_message) {
		alert ("REQUEST LICENSE KEY\n\nSorry, your form is incomplete.\n" +
			   "You must supply the following information:\n\n" +
				alert_message);
		return false;
	} else {
		return true;
	}
}

//check form for Partner Enrollment
function checkPartnerForm(formObj) {  

	var alert_message = "";
	
	if (isEmpty(formObj.coyName.value)) {
		alert_message = alert_message + " - Company\n";
	}		
	if (isEmpty(formObj.coyCity.value)) {
		alert_message = alert_message + " - City\n";
	}
	if (isEmpty(formObj.coyCountry.value)) {
		alert_message = alert_message + " - Country\n";
	}
	if (isEmpty(formObj.coyOffices.value)) {
		alert_message = alert_message + " - Number of Offices\n";
	}		
	if (isEmpty(formObj.coyEmployees.value)) {
		alert_message = alert_message + " - Number of Employees\n";
	}
	if (isEmpty(formObj.coyConsultants.value)) {
		alert_message = alert_message + " - Number of Consultants\n";
	}
	if (isEmpty(formObj.conName.value)) {
		alert_message = alert_message + " - Your Name\n";
	}
	if (!isValidEmail(formObj.conEmail.value)) {
		alert_message = alert_message + " - A valid email address\n";
	}
	if (isEmpty(formObj.conPhone.value)) {
		alert_message = alert_message + " - Phone\n";
	}
	if (isEmpty(formObj.conCountry.value)) {
		alert_message = alert_message + " - Country\n";
	}
	
	if (alert_message) {
		alert ("PARTNER ENROLLMENT\n\nSorry, your form is incomplete.\n" +
			   "You must supply the following information:\n\n" +
				alert_message);
		return false;
	} else {
		return true;
	}
}

//check form for Consulting Requirement
function checkServiceForm(formObj) { 

	var alert_message = "";
	
	if (isEmpty(formObj.coyName.value)) {
		alert_message = alert_message + " - Company\n";
	}		
	if (isEmpty(formObj.reqLocation.value)) {
		alert_message = alert_message + " - Location\n";
	}
	if (isEmpty(formObj.reqComments.value)) {
		alert_message = alert_message + " - Description\n";
	}
	if (isEmpty(formObj.conName.value)) {
		alert_message = alert_message + " - Your Name\n";
	}
	if (!isValidEmail(formObj.conEmail.value)) {
		alert_message = alert_message + " - A valid email address\n";
	}
	if (isEmpty(formObj.conPhone.value)) {
		alert_message = alert_message + " - Phone\n";
	}
	if (isEmpty(formObj.conCountry.value)) {
		alert_message = alert_message + " - Country\n";
	}
	
	if (alert_message) {
		alert ("CONSULTING REQUIREMENT\n\nSorry, your form is incomplete.\n" +
			   "You must supply the following information:\n\n" +
				alert_message);
		return false;
	} else {
		return true;
	}
}
