
    function isValidEmail(email, required) {

        if (required==undefined) {   // if not specified, assume it's required
            required=true;
        }
        if (email==null) {
            if (required) {
                return false;
            }
            return true;
        }
        if (email.length==0) {  
            if (required) {
                return false;
            }
            return true;
        }
        if (! allValidChars(email)) {  // check to make sure all characters are valid
            return false;
        }
        if (email.indexOf("@") < 1) { //  must contain @, and it must not be the first character
            return false;
        } else if (email.lastIndexOf(".") <= email.indexOf("@")) {  // last dot must be after the @
            return false;
        } else if (email.indexOf("@") == email.length) {  // @ must not be the last character
            return false;
        } else if (email.indexOf("..") >=0) { // two periods in a row is not valid
	    return false;
        } else if (email.indexOf(".") == email.length) {  // . must not be the last character
	    return false;
        }
        return true;

    }

    function allValidChars(email) {

      var parsed = true;
      var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
      for (var i=0; i < email.length; i++) {
        var letter = email.charAt(i).toLowerCase();
        if (validchars.indexOf(letter) != -1)
          continue;
        parsed = false;
        break;
      }
      return parsed;
      
    }
    
    function isUrl(s) {
	    var regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
	    return regexp.test(s);
    }
