   var newwindow;
   
   function popwindow(url)
   {
	newwindow=window.open(url,'name','height=700,width=690,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=yes,status=yes');
	if (window.focus) {newwindow.focus()}
   }
   
   function CheckSearchBox (MyForm) {
       if (MyForm.SearchFor.value=="") {
	      alert(ErrEnterSearchItem);
          MyForm.SearchFor.focus();
          return (false);
	   }
       return (true);
    }	
      
   function CheckQty (MyField, val, FormName) {
      var RefString=" 1234567890";
	  for (Count=0; Count < val.length; Count++) {
         TempChar= val.substring (Count, Count+1);
         if (RefString.indexOf (TempChar, 0)==-1) {
	        alert(ErrEnterValidNumber);
            eval(FormName + "." + MyField + ".focus();");
            return (false);
	     }
      }
	  
       return (true);
   }

   function CheckSpace (MyField, val, FormName) {
      if (val.substring(0,1)==" ") {
	     alert(ErrEnterVisibleCharacters);
         eval(FormName + "." + MyField + ".focus();");
         return (false);
	  }
      return (true);
   }

   function isNumberString (MyField, val, DisplayErrorText, FormName) {
      var RefString="1234567890.()-+ ";	
	  for (Count=0; Count < val.length; Count++) {
         TempChar= val.substring (Count, Count+1);
         if (RefString.indexOf (TempChar, 0)==-1) {
	        if (DisplayErrorText) alert(ErrEnterValidContactNumber);
            eval(FormName + "." + MyField + ".focus();");
            return (false);
	     }
      }
      return (true);
   }
   
   function isLetterString (MyField, val, DisplayErrorText, FormName) {
      var RefString="'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- ";
      if (val.substring(0,1)==" ") {
	     if (DisplayErrorText) alert(ErrEnterVisibleCharacters);
         eval(FormName + "." + MyField + ".focus();");
         return (false);
	  }
      for (Count=0; Count < val.length; Count++) {
         TempChar= val.substring (Count, Count+1);
         if (RefString.indexOf (TempChar, 0)==-1) {
	        if (DisplayErrorText) alert(ErrEnterValidAlphaName);
            eval(FormName + "." + MyField + ".focus();");
            return (false);
	     }
      }
      return (true);
   }

   function emailCheck (myForm, DisplayErrorText) {
      var emailStr=myForm.email.value;
      /* The following pattern is used to check if the entered e-mail address
         fits the user@domain format.  It also is used to separate the username
         from the domain. */
      var emailPat=/^(.+)@(.+)$/
      /* The following string represents the pattern for matching all special
         characters.  We don't want to allow special characters in the address. 
         These characters include ( ) < > @ , ; : \ " . [ ]    */
      var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
      /* The following string represents the range of characters allowed in a 
         username or domainname.  It really states which chars aren't allowed. */
      var validChars="\[^\\s" + specialChars + "\]"
      /* The following pattern applies if the "user" is a quoted string (in
         which case, there are no rules about which characters are allowed
         and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
         is a legal e-mail address. */
      var quotedUser="(\"[^\"]*\")"
      /* The following pattern applies for domains that are IP addresses,
         rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
         e-mail address. NOTE: The square brackets are required. */
      var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
      /* The following string represents an atom (basically a series of
         non-special characters.) */
      var atom=validChars + '+'
      /* The following string represents one word in the typical username.
         For example, in john.doe@somewhere.com, john and doe are words.
         Basically, a word is either an atom or quoted string. */
      var word="(" + atom + "|" + quotedUser + ")"
      // The following pattern describes the structure of the user
      var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
      /* The following pattern describes the structure of a normal symbolic
         domain, as opposed to ipDomainPat, shown above. */
      var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

      /* Finally, let's start trying to figure out if the supplied address is
         valid. */

      /* Begin with the coarse pattern to simply break up user@domain into
         different pieces that are easy to analyze. */
      var matchArray=emailStr.match(emailPat)

      if (emailStr!="") {
         if (matchArray==null) {
            /* Too many/few @'s or something; basically, this address doesn't
               even fit the general mould of a valid e-mail address. */
	        if (DisplayErrorText) alert(ErrIncorrectEmailAddress)
	        myForm.email.focus()
	        return false
         }
         var user=matchArray[1]
         var domain=matchArray[2]
         // See if "user" is valid 
         if (user.match(userPat)==null) {
            // user is not valid
            if (DisplayErrorText) alert(ErrIncorrectEmailUsername)
	        myForm.email.focus();
            return false
         }
         /* if the e-mail address is at an IP address (as opposed to a symbolic
            host name) make sure the IP address is valid. */
         var IPArray=domain.match(ipDomainPat)
         if (IPArray!=null) {
            // this is an IP address
	        for (var i=1;i<=4;i++) {
	           if (IPArray[i]>255) {
	              if (DisplayErrorText) alert(ErrIncorrectEmailIP)
		          myForm.email.focus();
		          return false
               }
            }
            return true
         }
         // Domain is symbolic name
         var domainArray=domain.match(domainPat)
         if (domainArray==null) {
            if (DisplayErrorText) alert(ErrIncorrectEmailDomain)
            myForm.email.focus();
            return false
         }

         /* domain name seems valid, but now make sure that it ends in a
            three-letter word (like com, edu, gov) or a two-letter word,
            representing country (uk, nl), and that there's a hostname preceding 
            the domain or country. */

         /* Now we need to break up the domain to get a count of how many atoms
            it consists of. */

         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) {
            // the address must end in a two letter or three letter word.
            if (DisplayErrorText) alert(ErrIncorrectEmailExt)
            myForm.email.focus();
            return false
         }
         // Make sure there's a host name preceding the domain.
         if (len<2) {
            if (DisplayErrorText) alert(ErrMissingEmailHost)
            myForm.email.focus();
            return false
         }
      }
      // If we've gotten this far, everything's valid!
      return true;
   }
      
      function postit(MyField, test, Country, FormName){ //check postcode format is valid
      size = test.length;
      var errorString="";
      if (test!="") {
         if ((Country == "Great Britain") || (Country == "United Kingdom")) {
            while (test.slice(0,1) == " ") //Strip leading spaces
               {test = test.substr(1,size-1);size = test.length
               }
            while(test.slice(size-1,size)== " ") //Strip trailing spaces
               {test = test.substr(0,size-1);size = test.length
               }
            eval("document.form1." + MyField + ".value = test;"); //write back to form field
            if (size < 6 || size > 8){ //Code length rule
               errorString = (test + ErrInvalidPostcodeLength);
            }
            if (!(isNaN(test.charAt(0)))){ //leftmost character must be alpha character rule
               errorString = (test + ErrInvalidPostcodeStart);
            }
            if (isNaN(test.charAt(size-3))){ //first character of inward code must be numeric rule
               errorString = (test + ErrInvalidPostcodeAlphaPos);
            }
            if (!(isNaN(test.charAt(size-2)))){ //second character of inward code must be alpha rule
               errorString = (test + ErrInvalidPostcodeNumberPos);
            }
            if (!(isNaN(test.charAt(size-1)))){ //third character of inward code must be alpha rule
               errorString = (test + ErrInvalidPostcodeNumberPos);
            }
            if (!(test.charAt(size-4) == " ")){//space in position length-3 rule
               errorString = (test + ErrInvalidPostcodeSpace);
            }
            count1 = test.indexOf(" ");count2 = test.lastIndexOf(" ");
            if (count1 != count2){//only one space rule
               errorString = (test + ErrInvalidPostcodeOneSpaceOnly);
            }
         }
      }
	  if (errorString!=""){
         if (!confirm(ErrProblemWithPostcode + "   " + errorString + AlertProceedOrCancel)) {
            eval(FormName + "." + MyField + ".focus();");
	        return false; }
		 else
		    return true
	  }
	  else
         return true;
   }
   
      function validateExchange(myForm) {
      var errorString="";

      if (myForm.fullname.value == "") {
        errorString = "1"
	  }
	  
      if (myForm.email.value == "") {
         errorString = "1"
	  } else {
         if (!emailCheck(myForm,true)) {
		    myForm.email.focus();
			return false;
         }		 
	  }
	  
	  if (myForm.urlwithlink.value == "") {
        errorString = "1"
	  }
	  if (myForm.linktext.value == "") {
        errorString = "1"
	  }
	  if (myForm.url.value == "") {
        errorString = "1"
	  }
	  if (myForm.linkdescription.value == "") {
        errorString = "1"
	  }


      if (myForm.fullname.value == "") {
         myForm.fullname.focus()
      } else {
         if (myForm.email.value == "") {
          myForm.email.focus()
         } else {
            if (myForm.urlwithlink.value == "") {
             myForm.urlwithlink.focus()
            } else {
               if (myForm.linktext.value == "") {
                myForm.linktext.focus()
               } else {
                  if (myForm.url.value == "") {
                   myForm.url.focus()
                  } else {
                     if (myForm.linkdescription.value == "") {
                      myForm.linkdescription.focus()
                     }
                  }
               }
            }
         }
      }
	  
      if (errorString!="") {
         alert(ErrGeneral);
         return false;
      } else {
         return true;
      }
   }
