function EmailOK (objField) {

   var emailStr = new String(objField.value);
                                                                              
   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) {                                                                                                                         
      alert("E-mail address is blank or incorrect (check @ and .'s)")                                     
      objField.focus();                                                                                                                                                                     
      return false                                                                                        
   }                                                                                                      
   var user=matchArray[1]                                                                                 
   var domain=matchArray[2]                                                                                                                                                         
   if (user.match(userPat)==null) {                                                                                                                                                
      alert("Problem with the username part of the e-mail address")                                       
      objField.focus();                                                                                   
      return false;                                                                                       
   }                                                                                                                                                   
   var IPArray=domain.match(ipDomainPat)                                                                  
   if (IPArray!=null) {                                                                                                                                                           
       for (var i=1;i<=4;i++) {                                                                           
       	if (IPArray[i]>255) {                                                                          
    	   alert("E-mail IP address is incorrect")                                                     
           objField.focus();                                                                           
   	   return false                                                                                
           }                                                                                              
       }                                                                                                  
       return true                                                                                        
   }                                                                                                                                                                           
   var domainArray=domain.match(domainPat)                                                                
   if (domainArray==null) {                                                                               
      alert("E-mail address is incorrect - check the domain name.")                                       
      objField.focus();                                                                                   
      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>3) {                                                                                                     
      alert("E-mail address is incorrect - must end in 2/3 letter domain/country.")                                  
      objField.focus();                                                                                   
      return false                                                                                        
   }                                                                                                                                                     
   if (len<2) {                                                                                           
      alert("E-mail address is incorrect - error in host name.")                                           
      objField.focus();                                                                                   
      return false                                                                                        
   }                                                                                                                                                                                 
   return true;                                                                                           
}
function isWhitespace (s) {
    var whitespace = " \t\n\r";
    var i;
    if ( (s == null) || (s.length == 0) ) return true;
    for (i = 0; i < s.length; i++)
    {   
	var c = s.charAt(i);

	if (whitespace.indexOf(c) == -1)  return false;
    }
    return true;
}
function CheckNotBlank(objField, FieldName)
{
	var strField = new String(objField.value);
	if (isWhitespace(strField)) {
		alert("You must enter " + FieldName);
		objField.focus();
		return false;
	}
	return true;
}
function ValidateRegistrationForm () {

   var OK = false;
   OK = CheckNotBlank( document.registration.titlename , 'your title' );
   if (!OK) return false;
   OK = CheckNotBlank( document.registration.firstname , 'your first name' );
   if (!OK) return false;
   OK = CheckNotBlank( document.registration.lastname , 'your last name' );
   if (!OK) return false;
   OK = CheckNotBlank( document.registration.organisation , 'your organisation' );
   if (!OK) return false;
   OK = EmailOK( document.registration.email );
   if (!OK)  return false;
   OK = CheckNotBlank( document.registration.phone , 'your telephone number' );
   if (!OK) return false;
   OK = CheckNotBlank( document.registration.password , 'your password' );
   if (!OK) return false;
   OK = CheckNotBlank( document.registration.password_confirm , 'your password again for confirmation' );
   if (!OK) return false;
   return true;
   
}
function CheckSearchForm(){

	StartMonth = document.search.startmonth.value
	StartYear = document.search.startyear.value
	
	if (((StartMonth!="") & (StartYear=="")) | ((StartMonth=="") & (StartYear!=""))) {
		alert("To Perform a search using the 'Start Date' you must select both a month and year.");
		document.search.startmonth.focus();
		return false;
		}
}
function CheckProjectForm(){

	ProjectTitle = document.project.projecttitle.value
	StartDate = document.project.startdate.value
	StartDate_Length = document.project.startdate.value.length
	EndDate = document.project.enddate.value
	EndDate_Length = document.project.enddate.value.length
	Status = document.project.status.value
	LeadOrganisationID = document.project.leadorganisationid.value
	KeyContactID = document.project.keycontactid.value
	ResearchDescription = document.project.researchdescription.value	

	if (LeadOrganisationID=="") {
		alert("Please enter the lead organisation.");
		document.project.leadorganisationid.focus();
		return false;
		}
	if (KeyContactID=="") {
		alert("Please enter the key contact.");
		document.project.keycontactid.focus();
		return false;
		}
	if (ProjectTitle=="") {
		alert("Please enter the project title.");
		document.project.projecttitle.focus();
		return false;
		}
	if (StartDate_Length <= 7)
		{ 	alert ("Start Date is not valid. The valid format is month name year e.g. November 2002");
			document.project.startdate.Value="";
			document.project.startdate.focus();
			return false; }
			
	 if	((EndDate != "") & (EndDate_Length <= 7))
		{ 	alert ("End Date is not valid. The valid format is month name year e.g. November 2002");
			document.project.enddate.Value="";
			document.project.enddate.focus();
			return false; }

	if (Status=="") {
		alert("Please enter the project status.");
		document.project.status.focus();
		return false;
		}
	if (ResearchDescription=="") {
		alert("Please enter the research description.");
		document.project.researchdescription.focus();
		return false;
		}	
}
function CheckOrgContact(){

	LeadOrganisationID = document.project.leadorganisationid.value	

	if ( (LeadOrganisationID=="") ) {
		alert("Please select a Lead Organisation.");
		document.project.leadorganisationid.focus();
		return false;
		}
}
function CheckOrgForm(){

	OrganisationName = document.organisation.organisationname.value		

	if (OrganisationName=="")  {
		alert("Please enter the name of the organisation.");
		document.organisation.organisationname.focus();
		return false;
	}
}
function CheckConForm(){

	ContactFirstName = document.contact.contactsfirstname.value	
	ContactLastName = document.contact.contactslastname.value

	if (ContactFirstName=="")  {
		alert("Please enter the contacts first name.");
		document.contact.contactsfirstname.focus();
		return false;
		}
	if (ContactLastName=="") {
		alert("Please enter the contacts last name.");
		document.contact.contactslastname.focus();
		return false;
		}

	if (!EmailOK(document.contact.contactsemail)) { return false; }
}
function CheckUserForm(){

	FirstName = document.new_user.firstname.value
	LastName = document.new_user.lastname.value
	Organisation = document.new_user.organisation.value
	Email = document.new_user.email.value
	Phone = document.new_user.phone.value
	Password = document.new_user.password.value
	Access_Level = document.new_user.access_level.value	

	if (FirstName=="") {
		alert("Please enter the users first name.");
		document.new_user.firstname.focus();
		return false;
		}
	if (LastName=="") {
		alert("Please enter the users last name.");
		document.new_user.lastname.focus();
		return false;
		}
	if (Organisation=="") {
		alert("Please enter the users organisation.");
		document.new_user.organisation.focus();
		return false;
		}
	if (Email=="") {
		alert("Please enter the users email address.");
		document.new_user.email.focus();
		return false;
		}
	if (Phone=="") {
		alert("Please enter the users telephone number.");
		document.new_user.phone.focus();
		return false;
		}
	if (Password=="") {
		alert("Please enter the users password.");
		document.new_user.password.focus();
		return false;
		}
	if (Access_Level=="") {
		alert("Please enter the access level.");
		document.new_user.access_level.focus();
		return false;
		}	
}
function ConfirmDelete(sWhat)
{
var agree=confirm("Are you sure you wish to delete this " + sWhat + "?");
if (agree)
	return true ;
else
	return false ;
}
