validateEmail = function(emailStr) {

   /** NOTE:
    * This returns true or false so not to confuse/annoy the user with 
    * overly-detailed reasons why the e-mail address was not valid.
    * This places the burden of handling required/optional checks and 
    * displaying error messages outside of this function.
    */

    if (emailStr == '') return true;

    var emailPat=/^(.+)@(.+)$/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
    var validChars="\[^\\s" + specialChars + "\]"
    var quotedUser="(\"[^\"]*\")"
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom=validChars + '+'
    var word="(" + atom + "|" + quotedUser + ")"
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

    var matchArray=emailStr.match(emailPat)

    if (matchArray==null) return false;

    var user=matchArray[1]
    var domain=matchArray[2]

    if (user.match(userPat)==null) return false;

    var IPArray=domain.match(ipDomainPat)
    if (IPArray!=null) {
        for (var i=1;i<=4;i++) {
	        if (IPArray[i]>255) {
	            return false;
	        }
        }
        return true;
    }

    var domainArray=domain.match(domainPat)
    if (domainArray==null) return false;

    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) {
        return false;
    }

    if (len<2) return false;

    return true;
}

setAnchors = function() {
   for (var i=0; i < document.links.length; i++) {
      if ((document.links[i].href == document.location) || (document.links[i].href == document.location + 'index.asp')) {
		 //alert(document.links[i].innerHTML+' is active');
         document.links[i].className = 'active';
         document.links[i].title = 'You are here.';
      }
	}
}

handleExternalLinks = function() {
	var internalLinkCriteria = Array(
		"hershahotels",
		"localhost"
	);

	var externalLinkCriteria = Array(
		".pdf"
	);

	var anchors = document.getElementsByTagName("a");
	var i, href;
	var match_internal, match_external;

	for(i = 0; i < anchors.length; i++){
		if(!anchors[i].href) continue;
		href = anchors[i].href;
		match_internal = false;
		match_external = false;

		// look for things that must open in the same browser window.
		for (var j = 0; j < internalLinkCriteria.length; j++) {
			if (href.indexOf(internalLinkCriteria[j]) >= 0) {
				match_internal = true;
			}
		}

		if(!match_internal){ // Href is not a file on my server
			if(href.indexOf("javascript:") == -1){ // Href is not a javascript call
				if(!anchors[i].onclick){ // Href does not have an onclick event
					if(href.indexOf("mailto:") == -1){ // Href is not a mailto:
						if(href.indexOf("http://") != -1 || href.indexOf("https://") != -1) { // Href is not relative (for Safari)
							anchors[i].setAttribute("target","_blank");
						}
					}
				}
			}
		}

		for (var j = 0; j < externalLinkCriteria.length; j++) {
			if (href.indexOf(externalLinkCriteria[j]) >= 0) {
				match_external = true;
			}
		}
		if (match_external) anchors[i].setAttribute("target","_blank");
	}
}

restoreDefault = function() {
   if (!this.value){
      this.value=this.defaultValue;
   }
}

clearDefault = function() {
   if (this.value==this.defaultValue){
      this.value='';
   }
}

setInputHandlers = function() {
   for(var i=0;i<document.forms.length;i++){
      f=document.forms[i];
      for(var j=0;j<f.length;j++){
         c=f[j];
         if(c.type == 'text' || c.type == 'textarea'){
            c.onfocus=clearDefault;
            c.onblur=restoreDefault;
         }
      }
   }
}

addEvent = function(obj, evType, fn, useCapture) {
   if (obj.addEventListener){
      obj.addEventListener(evType, fn, useCapture);
      return true;
   } else if (obj.attachEvent){
      var r = obj.attachEvent("on"+evType, fn);
      return r;
   //} else {
   //   alert("Handler could not be attached");
   }
}

removeEvent = function(obj, evType, fn, useCapture) {
   if (obj.removeEventListener) {
      obj.removeEventListener(evType, fn, useCapture);
      return true;
   } else if (obj.detachEvent){
      var r = obj.detachEvent("on"+evType, fn);
      return r;
   //} else {
   //   alert("Handler could not be removed");
   }
}

