function getElement(id) {
  var element = null;
  if (document.getElementById) {
    element = document.getElementById(id);
  } else if (document.layers) {
    element = document.layers[id];
  } else if (document.all) {
    element = document.all[id];
  }
  return element;
}

var defvals = [];
defvals.zip = 'ZIP';
defvals.email = 'EMAIL';

function clear_val(id) {
  var field = getElement(id);
  if (field.value == defvals[id]) {
    field.value = '';
  }
}

function unclear_val(id) {
  var field = getElement(id);
  if (field.value == '') {
    field.value = defvals[id];
  }
}

var reqfields = ['header_zip','header_email'];
var valfuncs = [];
valfuncs.header_zip = ['validateZip', 'zip code'];
valfuncs.header_email = ['validateEmail', 'email address'];

function validate_header_form() {
  var has_errors = false;
  for (var i=0; i<reqfields.length; i++) {
    var fieldname = reqfields[i];
    var field = getElement(fieldname);
    var value = field.value;
    field.className = field.className.replace("error", "");
    if (!value) {
      field.className += " error";
    } else {
      try {
        if (valfuncs[fieldname][0]) {
          var valfunc = valfuncs[fieldname][0];
          if (!eval(valfunc+"(value)")) {
            field.className += " error";
            has_errors = true;
          }
        }
      } catch(e) { }
    }
  }
  if (has_errors) {
    return false;
  } else {
    return true;
  }
}

function validateZip(field) {
  var valid = "0123456789-";
  var hyphencount = 0;
  if (field.length!=5 && field.length!=10) { return false; }
  for (var i=0; i < field.length; i++) {
    var temp = "" + field.substring(i, i+1);
    if (temp == "-") { hyphencount++; }
    if (valid.indexOf(temp) == "-1") { return false; }
    if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-"))
    { return false; }
  }
  return true;
}


function validateEmail(field) {
  if (field.length < 5)
  { return false; }
  var iChars = "*|,\":<>[]{}`';()&$#%";
  var eLength = field.length;
  for (var i=0; i < eLength; i++) {
    if (iChars.indexOf(field.charAt(i)) != -1)
    { return false; }
  }
  var atIndex = field.lastIndexOf("@");
  if(atIndex < 1 || (atIndex == eLength - 1))
  { return false; }
  var pIndex = field.lastIndexOf(".");
  if(pIndex < 4 || (pIndex == eLength - 1))
  { return false; }
  if(atIndex > pIndex)
  { return false; }
  return true;
}


