function trim(s) {

    if((s==null)||(typeof(s)!='string')||!s.length) {
        return '';
    }
    return s.replace(/^\s+/,'').replace(/\s+$/,'');

}

function check_blank(field) {
    
    var stripped = trim(field.replace(/(<([^>]+)>)/ig,""));
    stripped = stripped.replace(/&nbsp;/ig,"");

    if (field == '') {
        return false;
    }
    if (trim(field) == '') {
        return false;
    }
    if (stripped == '') {
	return false;
    }
    return true;
}

function echeck(str) {

      var at="@";
      var dot=".";
      var lat=str.indexOf(at);
      var lstr=str.length;
      var ldot=str.indexOf(dot);

      if (str.indexOf(at)==-1){
           return false;
      }

      if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
          return false;
      }

      if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
          return false;
      }

      if (str.indexOf(at,(lat+1))!=-1){
          return false;
      }

      if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
          return false;
      }

      if (str.indexOf(dot,(lat+2))==-1){
          return false;
      }

      if (str.indexOf(" ")!=-1){
          return false;
      }

      return true;
}

function validate_complaint() {
    
    var email = document.form1.email.value;

    if (!check_blank(email)) {
	alert('Email address cannot be blank.');
	return false;
    }
    else if (!echeck(email)) {
	alert('Invalid email address.');
	return false;
    }
    else {
	return true;
    }
}

function validate_nomination_form() {
    
    var nomName = document.form1.nomName.value;
    var nomPhone = document.form1.nomPhone.value;
    var nomEmail = document.form1.nomEmail.value;

    var eeName = document.form1.eeName.value;
    var eePhone = document.form1.eePhone.value;
    var eeAddress = document.form1.eeAddress.value;
    var eeDetails = document.form1.eeDetails.value;

    if (!check_blank(nomName)) {
	alert('Nominator\'s Name cannot be blank.');
	return false;
    }
    else if (!check_blank(nomPhone)) {
	alert('Nominator\'s Phone Number cannot be blank.');
	return false;
    }
    else if (!check_blank(nomEmail)) {
	alert('Nominator\'s Email cannot be blank.');
	return false;
    }
    else if (!echeck(nomEmail)) {
	alert('Nominator\'s Email is invalid.');
	return false;
    }

    else if (!check_blank(eeName)) {
	alert('Nominee\'s Name cannot be blank.');
	return false;
    }
    else if (!check_blank(eePhone)) {
	alert('Nominee\'s Phone Number cannot be blank.');
	return false;
    }
    else if (!check_blank(eeAddress)) {
	alert('Nominee\'s Home Address cannot be blank.');
	return false;
    }
    else if (!check_blank(eeDetails)) {
	alert('Details cannot be blank.');
	return false;
    }
    else {
	return true;
    }
}

function validate_simple_search() {
    
    var term = document.searchForm.multiTerms.value;

    if (!check_blank(term)) {
	alert('You cannot search a blank term.');
	return false;
    }

    return true;
}

function validate_medium_search() {
    
    var term = document.searchFormMedium.multiTerms.value;
    var searchWebsite = document.getElementById('searchWebsite');
    var searchDocs = document.getElementById('searchDocs');
    var searchNews = document.getElementById('searchNews');

    if (!check_blank(term)) {
	alert('You cannot search a blank term.');
	return false;
    }

    if (!searchWebsite.checked && !searchDocs.checked && !searchNews.checked) {
	alert('You must choose to search at least one of Website, Documents or News');
	return false;
    }

    return true;
}

function validate_advanced_search() {
    
    var multiTerms = document.searchFormAdvanced.multiTerms.value;
    var term = document.searchFormAdvanced.term.value;
    var searchWebsite = document.getElementById('searchWebsite');
    var searchDocs = document.getElementById('searchDocs');
    var searchNews = document.getElementById('searchNews');

    if (check_blank(multiTerms) && check_blank(term)) {
	alert('Please only fill in one of the search areas.\n(i.e. This exact wording or phrase)');
	return false;
    }

    if (!check_blank(multiTerms) && !check_blank(term)) {
	alert('Please fill in one of the search areas.');
	return false;
    }

    if (!searchWebsite.checked && !searchDocs.checked && !searchNews.checked) {
	alert('You must choose to search at least one of Website, Documents or News');
	return false;
    }

    return true;
}

function validate_members_search() {
    
    var multiTerms = document.searchFormMembers.multiTerms.value;
    var term = document.searchFormMembers.term.value;

    if (!check_blank(multiTerms) && !check_blank(term)) {
	alert('You cannot search for something.');
	return false;
    }
    
    if (check_blank(multiTerms) && check_blank(term)) {
	alert('You must only search for one of "All these words" or "The exact wording or phrase".');
	return false;
    }

    return true;
}
