
    var i_errfound; //for function error()

    function trim(argvalue) {
          var tmpstr = ltrim(argvalue);

          return rtrim(tmpstr);
    }

    function ltrim(argvalue) {
          while (1) {
          if (argvalue.substring(0, 1) != ' ')
              break;
              argvalue = argvalue.substring(1, argvalue.length);
      }
          return argvalue;
    }

    function rtrim(argvalue) {
          while (1) {
          if (argvalue.substring(argvalue.length - 1, argvalue.length)!= ' ')
              break;
              argvalue = argvalue.substring(0, argvalue.length - 1);
      }
          return argvalue;
    }

    function error(elem, text) {
            if (i_errfound) return;
            window.alert (text);
            elem.focus();
            i_errfound=true;
    }

        function ValidLength(item, len) {
        //true if item.length >= len
                return (item.length >= len);
        }


        function gjfValidEmail(item) {
                var alertEmailAddrNotEntered         ="Sorry, you must enter your email address.";
                var alertInvalidCharFoundInEmailAddr ="Sorry, this email address seems wrong.";
                var alertAtSignMissingInEmailAddr    ="Sorry, this email address seems wrong.";
                var alertBlankSpaceFoundInEmailAddr  ="Sorry, this email address seems wrong.";
                var invalidEmailChars = "\"|&;<>!*\\";

                email = item;

          if (! gjfValidateAsciiData (email)) {
            //alert(alertInvalidCharFoundInEmailAddr);
            return false;
          }

          var invalidChars = invalidEmailChars;
          for (var i = 0; i < invalidChars.length; i++) {
            if (email.indexOf(invalidChars.charAt(i)) != -1) {
              //alert(alertInvalidCharFoundInEmailAddr);
              return false;
            }
          }

           if (email == ""){
            //alert(alertEmailAddrNotEntered);
            return false;
          }
          if (email.indexOf("@") == -1){
            //alert(alertAtSignMissingInEmailAddr);
            return false;
          }

          if (email.indexOf(" ") != -1){
            //alert(alertBlankSpaceFoundInEmailAddr);
            return false;
          }

          if (window.RegExp) {
            var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
            var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";

            var reg1 = new RegExp (reg1str);
            var reg2 = new RegExp (reg2str);

            if (reg1.test(email) || !reg2.test(email)) {
              //alert(alertInvalidCharFoundInEmailAddr);
              return false;
            }
          }
          return true;
        }

        function gjfValidateAsciiData(urstr) {
        //use by gjfValidEmail
          var i;
          var result;

          for (i=0; i<urstr.length; i++) {
            if ((urstr.charAt(i) < " ") || (urstr.charAt(i) > "~"))
              return false;
          }
          return true;
        }
function makeArray(n) {
        for (var i = 1; i <= n; i++) {
                      this[i] = 0
           }
           return this
 }
