<!--
/* GENERAL VARIABLES */

var d = document;

/* SITE VARIABLES */

var siteAddress = "ccpathology.com";
var siteName    = "Central Coast Pathology";

/* FORM VALIDATION SCRIPTS */

function checkEmail(varField,varName) {
  if (!isValidEmailAddress(removeExtraSpaces(varField.value))) {
    if (varName.length > 1) // capitalize varName string
      varName = varName.substring(0,1).toUpperCase() + varName.substring(1,varName.length);
    alert(varName + " does not appear to be in the correct format.");
    varField.focus();
    return false;
    }
  else
    return true;
  }

function checkExists(varField,varName) {
  if (removeExtraSpaces(varField.value) == "") {
    alert("Please enter " + varName + ".");
    varField.focus();
    return false;
    }
  else
    return true;
  }

function checkSelect(varField,varDefault,varName) {
  // This function does not currently support multiple select boxes
  var varValue = null;
  var varType;
  if (varField.length && varField.length > 0 && varField.type && varField.type == "select-one") {
    if (varField.selectedIndex)
      varValue = varField.options[varField.selectedIndex].value;
    }
  else if (varField.length && varField.length > 0 && varField[0].type && (varField[0].type == "radio" || varField[0].type == "checkbox")) {
    varType = "multiple";
    for (var f = 0; f < varField.length; f++) {
      if (varField[f].checked) {
        varValue = varField[f].value;
        break;
        }
      }
    }
  else
    return true;  // some unhandled input type
  if (varValue == null || varValue == varDefault) {
    alert("Please select " + varName + ".");
    if (varType == "multiple")
      varField[0].focus();
    else
      varField.focus();
    return false;
    }
  else
    return true;
  }

function checkLength(varField,varName,maxLength,minLength,absoluteLength) {
  var fieldOk  = false;
  var varValue = removeExtraSpaces(varField.value);
  varName = varName.substring(0,1).toUpperCase() + varName.substring(1);
  if (absoluteLength == "") {
    if (varValue.length < minLength) {
      if (minLength == 1)
        alert(varName + " you entered is too short. Please make it at least 1 character long.");
      else
        alert(varName + " you entered is too short. Please make it at least " + minLength + " characters long.");
      }
    else if (varValue.length > maxLength)
      alert(varName + " you entered is too long. Please make it less than " + maxLength + " characters long.");
    else
      fieldOk = true;
    }
  else if (varValue.length != absoluteLength) {
    if (absoluteLength == 1)
      alert(varName + " you entered is the wrong length. Please make it 1 character long.");
    else
      alert(varName + " you entered is the wrong length. Please make it " + absolute + " characters long.");
    }
  else
    fieldOk = true;
  if (!fieldOk)
    varField.focus();
  return fieldOk;
  }

/* MOUSEOVER CREATION AND PRELOAD SCRIPTS */

var overExt = "_on";
var onExt   = "_on";

function assignImageSrcs(img) {
  if (img.src) {
    var dotAt = img.src.lastIndexOf(".");
    if (dotAt > 0) {
      var imgName = img.src.substr(0, dotAt);
      if (imgName.lastIndexOf(onExt) == imgName.length - onExt.length)
        imgName = imgName.substr(0, imgName.length - onExt.length); // remove ON extension, if any
      var imgExt  = img.src.substr(dotAt+1);
      if (imgName.lastIndexOf(overExt) == imgName.length - overExt.length) {
        // image is already on
        }
      else {
        // save original image src and mouseover src to image
        img.outSrc  = img.src;
        img.overSrc = imgName + overExt + "." + imgExt;
        }
      }
    }
  }

function applyMouseoverEvents(img) {
  eval("img.onmouseover = function () {this.src = this.overSrc};");
  eval("img.onmouseout = function () {this.src = this.outSrc};");
  }

function createMouseovers() {
  if (document.getElementsByTagName) {
    var imgs = document.getElementsByTagName("IMG");
    var i, preloads = new Array(imgs.length);
    for (i = 0; i < imgs.length; i++) {
      if (hasClassName(imgs[i], "mouseover")) {
        assignImageSrcs(imgs[i]);
        if (imgs[i].outSrc && imgs[i].overSrc) {
          // create mouseover actions
          applyMouseoverEvents(imgs[i]);
          // do preloads
          preloads[i]     = new Image;
          preloads[i].src = imgs[i].overSrc;
          }
        }
      }
    }
  }

/* MISCELLANEOUS SCRIPTS */

function focusFirstField(f,field) {
  if (f && f[field])
    f[field].focus();
  }

function isValidEmailAddress(email) {
  return email.match(/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z]{2,})$/i);
  }

function writeEmailAddress(addressee,subject,domain) {
  if (writeEmailAddress.arguments.length < 3 || domain == "") {
    domain = siteAddress;
    }
  var emailAddress = addressee + "@" + domain;
  if (writeEmailAddress.arguments.length < 2) {
    subject = "Inquiry from " + domain;
    }
  document.write("<a href=\"mailto:" + emailAddress + "?subject=" + subject + "\">" + emailAddress + "</a>");
  }

function popup(url,target,w,h) {
  var screenHeight = 600; // default to 800x600 screen
  var screenWidth  = 800;
  if (window.screen && window.screen.height && window.screen.height) {
    screenHeight = window.screen.height;
    screenWidth  = window.screen.width;
    }
  screenHeight = screenHeight-40;  // allow room for taskbars, etc.
  screenWidth  = screenWidth-40;
  if (screenHeight < h)
    h = screenHeight;
  if (screenWidth < w)
    w = screenWidth;
  var winProps = "toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=yes,scrollbars=yes,width=" + w + ",height=" + h + ",left=5,top=5";
  var popupWin = window.open(url,target,winProps);
  popupWin.focus();
  return false;
  }

function removeExtraSpaces(str) {
/*
  Remove any redundant spaces or line returns within the string and eliminate
  leading & trailing spaces and line returns. Requires regular expressions (availabe as of JavaScript 1.2).
  (Note that we use an eval statement to prevent earlier browsers from choking on the regex syntax.
  Also note that all the backslashes in the regex pattern have to be escaped as a result.)
*/
  var output = str;
  if (window.RegExp) {
    output = eval("output.replace(/[ \\t]{2,}/g,' ')");
    output = eval("output.replace(/[\\r\\n]{2,}/g,'\\r\\n')");
    output = eval("output.replace(/^[\\s]*/,'')");
    output = eval("output.replace(/[\\s]*$/,'')");
    }
  return output;
  }

// Iterates through all class names for an object and returns true if specified class name is found
function hasClassName(obj, className) {
  if (obj && obj.className) {
    var objClass = removeExtraSpaces(obj.className);
    arrClasses = objClass.split(" ");
    for (var c=0; c<arrClasses.length; c++) {
      if (className == arrClasses[c])
        return true;
      }
    }
  return false;
  }

// helper function for adding events (from http://www.dustindiaz.com/top-ten-javascript/)
function addEvent(obj, type, fn, useCapture) {
  if (obj == null)
    obj = window;
  if (obj.addEventListener) {
    obj.addEventListener( type, fn, useCapture );
    }
  else if (obj.attachEvent) {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
    obj.attachEvent( "on"+type, obj[type+fn] );
    }
  else {
    obj["on"+type] = obj["e"+type+fn];
    }
  }

addEvent(window,'load',function() { createMouseovers() },false);
//-->