// Validate all input for quote form
  function validate1(formnum) {

    var t_or_f = true ;

    if (t_or_f) t_or_f = vl(formnum,"EMname",6,"Your name") ;
    if (t_or_f) t_or_f = ve(formnum,"EMemail","Y") ;
    if (t_or_f) t_or_f = vt(formnum,"telephone","Y","The Telephone Number") ;
    if (t_or_f) t_or_f = vt(formnum,"fax","N","The Fax Number") ;

    if (t_or_f) t_or_f = vl(formnum,"description",4,"The Cargo Description") ;
    if (t_or_f) t_or_f = vl(formnum,"origin",15,"The Collection address") ;
    if (t_or_f) t_or_f = vl(formnum,"desti" ,15,"The Destination address") ;
    if (t_or_f) t_or_f = vr(formnum,"doorDeliv",2,"Door delivery") ;
    if (t_or_f) t_or_f = vl(formnum,"port"  , 4,"The Destination port/airport") ;
   // if (t_or_f) t_or_f = vr(formnum,"Transport",2,"Transport (Sea / Air)") ;

    if (t_or_f) t_or_f = vv(formnum,"kg",1,"The Weight") ;

    if (t_or_f) {
	var valid1 = vl(formnum,"dimensions",5,"The Dimensions data","N") ;
	var valid2 = vv(formnum,"volume",1,"The Volume","N") ;
	(t_or_f) = (valid1 || valid2) ? true : false ;
	if (!t_or_f) {
	  window.alert("Please complete either the Dimensions (min 5 characters) or the Volume");
	  val = eval("document.forms[formnum].dimensions.focus()") ;
	}
    }

    if (t_or_f) t_or_f = vv(formnum,"pieces",1,"The No of pieces") ;

    if (!document.layers) {	// Ignore NS4
    if (t_or_f) {	// Sea Freight checked
      if (document.forms[formnum].Transport[0].checked && document.forms[formnum].load.value == "*") {
	window.alert("For Sea Freight you must choose a Service required");
	t_or_f = false;
      }			// Air Freight checked
      if (document.forms[formnum].Transport[1].checked && document.forms[formnum].load.value != "*") {
	window.alert("For Air Freight you should not choose a Service required");
	document.forms[formnum].load.value = "*"
	t_or_f = false;
      }
    }
    
    }
//	t_or_f = vd(formnum,"load","*","the Service required") ;

    if (t_or_f) t_or_f = vv(formnum,"value",1,"The Value") ;
    if (t_or_f) t_or_f = vr(formnum,"Insurance",2,"Insurance") ;
    if (!document.layers) {	// Ignore NS4
    if (t_or_f) {	// Insurance checked
      if (document.forms[formnum].Insurance[0].checked) {
	t_or_f = vr(formnum,"valueBase",2,"'What is the value based on'") ;
	t_or_f = vr(formnum,"Packed",2,"'How are the goods to be packed'") ;
      }
    }
    }

    if (t_or_f){
    	if (document.forms[formnum].readTerms.checked==false){
		alert("Please read the standard BIFA terms and conditions,\nthen tick the box to proceed.")
		t_or_f=false;
	}
    }
    if (t_or_f) t_or_f = vd(formnum,"EMsource","default","How did you hear about our website") ;

    return t_or_f ;
  }

// Validate all input for partnership form
  function validate2(formnum) {

    var t_or_f = true ;

    if (t_or_f) t_or_f = vl(formnum,"name",6,"Your name") ;
    if (t_or_f) t_or_f = vl(formnum,"company",4,"Your company name") ;
    if (t_or_f) t_or_f = ve(formnum,"email","Y") ;
    if (t_or_f) t_or_f = vt(formnum,"telephone","Y","Your Telephone Number") ;
    if (t_or_f) t_or_f = vt(formnum,"fax","N","Your Fax Number") ;

    if (t_or_f) t_or_f = vx(formnum,"website","Y","web site URL") ;

    if (t_or_f) t_or_f = vl(formnum,"comments",30,"Comments") ;

    return t_or_f ;
  }

// Validate all input for enquiry form
  function validate3(formnum) {

    var t_or_f = true ;

    if (t_or_f) t_or_f = vl(formnum,"EMname",6,"Your name") ;
    if (t_or_f) t_or_f = ve(formnum,"EMemail","Y") ;
    if (t_or_f) t_or_f = vt(formnum,"telephone","Y","Your Telephone Number") ;
    if (t_or_f) t_or_f = vt(formnum,"fax","N","Your Fax Number") ;

    if (t_or_f) t_or_f = vl(formnum,"enquiry",30,"Enquiry") ;
    if (t_or_f) t_or_f = vd(formnum,"EMsource","default","How did you hear about our website") ;

    return t_or_f ;
  }

// Validate all input for reciprocal links form
function EMlinkRequest(formnum) {
    var t_or_f = true ;
    if (t_or_f) t_or_f = vl(formnum,"EMname",6,"Your name") ;
    if (t_or_f) t_or_f = vl(formnum,"EMcompany",3,"Your company name") ;
    if (t_or_f) t_or_f = ve(formnum,"EMemail","Y") ;
    if (t_or_f) t_or_f = vx(formnum,"siteURL","Y","website URL") ;
    if (t_or_f) t_or_f = vl(formnum,"siteURL",16,"Your website URL") ;
    if (t_or_f) t_or_f = vx(formnum,"linkURL","Y","link page URL") ;
    if (t_or_f) t_or_f = vl(formnum,"linkURL",16,"Your link page URL") ;
    if (t_or_f) t_or_f = vl(formnum,"title",3,"Your link title") ;
    if (t_or_f) t_or_f = vm(formnum,"title",50,"Your link title") ;
    if (t_or_f) t_or_f = vl(formnum,"description",10,"Your link description") ;
    if (t_or_f) t_or_f = vm(formnum,"description",200,"Your link description") ;
   // if (t_or_f) t_or_f = vd(formnum,"EMsource","default","How did you hear about us")
    return t_or_f ;
}


// Remove all blanks from a string
function blankout(strname) {
  var i = 1 ;
  do {
    if (strname.charAt(i)==" " ) {
      strname = strname.substring(0,i) + strname.substring(i+1,strname.length) ;
      i-- ;
    }
    i++ ;
  }
  while (i<strname.length) ;
  return strname ;
}

// Validate telephone/fax number
function vt(formnum,fieldname,needed,inputtext) {
  var minlength = 9 ;
  var valid = true ;
  var vble = eval("document.forms[formnum]."+fieldname+".value")
  if (needed.toUpperCase() == "N" && vble == "") return true ;  // Allow blank telephone/fax number
  if (vble.length < minlength) {
    valid=false ;
    window.alert(inputtext+" must be at least "+minlength+" characters long") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()") ;
    return false ;
  }
  if (vble.charAt(0) != "0" && vble.charAt(0) != "+") {
    valid=false ;
    window.alert(inputtext+" must begin with a '0' (zero) or '+' (plus)") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()") ;
    return false ;
  }
  return true ;
}

// Validate e-mail address
function ve(formnum,fieldname,needed) {
  var val 	= eval("document.forms[formnum]."+fieldname+".value")
  var newVal	= val.replace(/,/g,".")
  var val	= eval("document.forms[formnum]."+fieldname+".value='" + newVal +"'")
  var email = eval("document.forms[formnum]."+fieldname+".value")
  email = blankout(email) ;
  email = email.toLowerCase() ;
//window.alert("E-Mail is ("+email+")") ;
  if (needed.toUpperCase() == "N" && email == "") return true ;  // Allow blank e-mail address
  if ((email>="0" && email<="9") || (email>="a" && email<="z")) {
    val = 0
  }
  else {
    window.alert("Invalid email address : must begin with a letter or number") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()") ;
    return false ;
  }
  if (email.indexOf("@")<0) {
    window.alert("Invalid email address : must contain a '@' within your email address") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()") ;
    return false ;
  }
  else {
    e1 = email.indexOf("@") ;
    if (email.indexOf("@",e1+1) > 0 ) {
      window.alert("Invalid email address : must only contain one '@' within your email address") ;
      val = eval("document.forms[formnum]."+fieldname+".focus()") ;
      return false ;
    }
  }
  if ((email.indexOf("@")>=0 && email.indexOf("@")<2) || email.indexOf("@")>email.length-3) {
    window.alert("Invalid position for '@' within your email address") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()") ;
    return false ;
  }
  if (email.indexOf(".")<0) {
    window.alert("Must contain a '.' within your email address") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()") ;
    return false ;
  }
  if ((email.indexOf(".")>=0 && email.indexOf(".")<1) || email.indexOf(".")>email.length-3) {
    window.alert("Invalid position for '.' within  your email address") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()")
    return false ;
  }
  if (email.indexOf("@") > email.lastIndexOf(".")) {
    window.alert("Must contain a '.' after the '@' in  your email address") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()")
    return false ;
  }
  return true ;
}

// Ensure string has minimum length
function vl(formnum,fieldname,minlength,inputtext,walert) {
  var valid = true ;
  var vble = eval("document.forms[formnum]."+fieldname+".value")
//window.alert("Value is >"+vble+"<   Length is >"+vble.length+"<") ;

  if (vble.length < minlength) {
    valid=false ;
    if (walert != "N") {
      var char1 = (minlength == 1) ? " character" : " characters" ;
      window.alert(inputtext+" must be at least "+minlength+char1+" long") ;
      val = eval("document.forms[formnum]."+fieldname+".focus()") ;
    }
  }
  return valid ;
}

// Ensure string does not exceed maximum length
function vm(formnum,fieldname,maxlength,inputtext) {
  var valid = true ;
  var vble = eval("document.forms[formnum]."+fieldname+".value")
//window.alert("Value is >"+vble+"<   Length is >"+vble.length+"<") ;

  if (vble.length > maxlength) {
    valid=false ;
    var char1 = (maxlength == 1) ? " character" : " characters" ;
    window.alert(inputtext+" must be at no more than "+maxlength+char1+" long") ;
  }
  if (!valid) val = eval("document.forms[formnum]."+fieldname+".focus()") ;
  return valid ;
}

// Ensure variable has minimum value
function vv(formnum,fieldname,minvalue,inputtext,walert) {
  var valid = true ;
  var vble  = eval("document.forms[formnum]."+fieldname+".value")

  if (parseInt(vble) != vble)	valid = false;
  if (vble < minvalue)		valid = false;

  if (!valid) {
    if (walert != "N") {
      window.alert(inputtext+" must have a numeric value of at least "+minvalue) ;
      val = eval("document.forms[formnum]."+fieldname+".focus()") ;
    }
  }
  return valid ;
}

// Validate drop-down list
function vd(formnum,fieldname,defaultval,inputtext) {
  var valid = true ;
  var vble  = eval("document.forms[formnum]."+fieldname+".value")
//window.alert("Value is >"+vble+"<") ;
  if (vble == defaultval) {
    valid=false ;
    window.alert("Please choose an option from the "+inputtext+" list") ;
  }
  return valid ;
}
  
// Validate radio buttons
function vr(formnum,fieldname,buttons,inputtext) {
  var check = false ;
//window.alert("Validating buttons") ;
  for (var i=0 ; i<buttons ; i++) {
    var vble  = eval("document.forms[formnum]."+fieldname+"["+i+"].checked") ;
    if (vble) check = true ;
//window.alert("Value is >"+vble+"<") ;
  }
  if (!check) window.alert("Please check one of the "+inputtext+" buttons") ;
  valid=check
  return valid ;
}

// Validate checkboxes
function vc(formnum,fieldname,totboxes,minboxes,maxboxes,inputtext) {
  var check = 0 ;
//window.alert("Validating boxes") ;
  for (var i=0 ; i<totboxes ; i++) {
    var vble  = eval("document.forms[formnum]."+fieldname+"["+i+"].checked") ;
    if (vble) check++ ;
//window.alert("Value is >"+vble+"<") ;
  }
  if (check<minboxes) window.alert("Please check at least "+minboxes+" of the "+inputtext+" boxes") ;
  if (check>maxboxes) window.alert("Please check no more than "+maxboxes+" of the "+inputtext+" boxes") ;
  valid = (check<minboxes || check>maxboxes) ? false : true ;
  return valid ;
}

// Confirm Web Site address begins with 'www.' or 'http://www.'
function vx(formnum,fieldname,needed,inputtext) {
  var valid = true ;

  var vble = eval("document.forms[formnum]."+fieldname+".value")
  vble = blankout(vble) ;
  vble = vble.toLowerCase() ;
  if (needed.toUpperCase() == "N" && vble == "") return true ;  // Allow blank web site address

  var valid = (vble.substring(0,4)  == "www.") ? true : false ;
  var valid = (vble.substring(0,11) == "http://www.") ? true : valid ;
  if (!valid) {
    window.alert("please enter a valid "+inputtext) ;
    val = eval("document.forms[formnum]."+fieldname+".focus()")
  }
  return valid ;
}

// Validate and format postcode
function vp(formnum,fieldname,needed,inputtext) {
  var valid = true ;

  var pcode = eval("document.forms[formnum]."+fieldname+".value")
  pcode = blankout(pcode) ;
  pcode = pcode.toUpperCase() ;
  if (needed.toUpperCase() == "N" && pcode == "") return true ;  // Allow blank postcode
  if (pcode.length<5) {
    window.alert("INVALID POSTCODE : must be at least 5 digits long") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()")
    return false ;
  }
  if (pcode<"A" || pcode>"Z") {
    window.alert("INVALID POSTCODE : must begin with a letter") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()")
    return false ;
  }
  var strg1 = pcode.charAt(pcode.length-3) ;
  if (strg1<"0" || strg1>"9") {
    window.alert("INVALID POSTCODE : third character from the end is >"+strg1+"< : must be a number") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()")
    return false ;
  }
  var strg2 = pcode.charAt(pcode.length-2) ;
  var strg3 = pcode.charAt(pcode.length-1) ;
  if (strg2<"A" || strg2>"Z" || strg3<"A" || strg3>"Z") {
    window.alert("INVALID POSTCODE : must end with two letters") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()")
    return false ;
  }
  if (pcode.length<5) {
    window.alert("INVALID POSTCODE : must be more than 4 characters long") ;
    val = eval("document.forms[formnum]."+fieldname+".focus()")
    return false ;
  }
  pcode = pcode.substring(0,pcode.length-3) + " " + pcode.substring(pcode.length-3,pcode.length) ;
  var resetpcode = eval("document.forms[formnum]."+fieldname+".value=pcode")
//  document.contact01.pcode.value = pcode ;
//  window.alert("Post Code is ("+pcode+")") ;
  return true ;
}