// ###### BASE JAVASCRIPT ######

// Safari BG fix

isB = navigator.userAgent.indexOf("Safari"); 

                if ( isB > -1 ) { document.write("<style type='text/css'> #contactInformation { padding-bottom: 3px; } #navigationMain a{ margin-bottom: -3px; } </style>") }

/**
 * Copy the value of an input field's title attribute to its value attribute.
 * Clear the input field on focus if its value is the same as its title.
 * Repopulate the input field on blur if it is empty.
 * Hide the input field's associated label if it has one.
 */
var autoPopulate = {
	sInputClass:'populate', // Class name for input elements to autopopulate
	sHiddenClass:'structural', // Class name that gets assigned to hidden label elements
	bHideLabels:true, // If true, labels are hidden
	/**
	 * Main function
	 */
	init:function() {
		// Check for DOM support
		if (!document.getElementById || !document.createTextNode) {return;}
		// Find all input elements with the given className
		var arrInputs = autoPopulate.getElementsByClassName(document, 'input', autoPopulate.sInputClass);
		var iInputs = arrInputs.length;
		var oInput;
		for (var i=0; i<iInputs; i++) {
			oInput = arrInputs[i];
			// Make sure it's a text input
			if (oInput.type != 'text') { continue; }
			// Hide the input's label
			if (autoPopulate.bHideLabels) { autoPopulate.hideLabel(oInput.id); }
			// If value is empty and title is not, assign title to value
			if ((oInput.value == '') && (oInput.title != '')) { oInput.value = oInput.title; }
			// Add event handlers for focus and blur
			autoPopulate.addEvent(oInput, 'focus', function() {
				// If value and title are equal on focus, clear value
				if (this.value == this.title) {
					this.value = '';
					this.select(); // Make input caret visible in IE
				}
			});
			autoPopulate.addEvent(oInput, 'blur', function() {
				// If the field is empty on blur, assign title to value
				if (!this.value.length) { this.value = this.title; }
			});
		}
	},
	hideLabel:function(sId) {
		var arrLabels = document.getElementsByTagName('label');
		var iLabels = arrLabels.length;
		var oLabel;
		for (var i=0; i<iLabels; i++) {
			oLabel = arrLabels[i];
			if (oLabel.htmlFor == sId) {
				oLabel.className = oLabel.className + ' ' + autoPopulate.sHiddenClass;
			}
		}
	},
	/**
	 * getElementsByClassName function included here for portability.
	 * Remove if you are already using one.
	 * Written by Jonathan Snook, http://www.snook.ca/jonathan
	 * Add-ons by Robert Nyman, http://www.robertnyman.com
	 */
	getElementsByClassName:function(oElm, strTagName, strClassName) {
	    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
	    var arrReturnElements = new Array();
	    strClassName = strClassName.replace(/\-/g, "\\-");
	    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	    var oElement;
	    for(var i=0; i<arrElements.length; i++){
	        oElement = arrElements[i];      
	        if(oRegExp.test(oElement.className)){
	            arrReturnElements.push(oElement);
	        }   
	    }
	    return (arrReturnElements)
	},
	/**
	 * addEvent function included here for portability.
	 * Remove if you are already using an addEvent/DOMReady function.
	 * Found at http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html
	 */
	addEvent:function(obj, type, fn) {
		if (obj.addEventListener)
			obj.addEventListener(type, fn, false);
		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]);
		}
	}
};

/**
 * Init on window load.
 * Replace this with a call to your own addEvent/DOMReady function if you use one.
 */
autoPopulate.addEvent(window, 'load', autoPopulate.init);
  
  
  // ################################ FORM VALIDATION ################################

function validateForm(form) { 
		// Validate
		if (isEmpty( form.txtName, "Please enter your name.")) { return false; }
		if (emailValidator( form.txtEmail, "Invalid E-mail address. Please ensure e-mail address is formatted correctly, name@domain.xxx .")) { return false; }
		if (isPhoneNumber( form.txtPhone, "Invalid Phone number. Please ensure Phone number is formatted correctly, XXX-XXX-XXXX.")) { return false; }
		if (isEmpty( form.txtDescription, "Please enter a message.")) { return false; }
		
	}

// If the length of the element's string is 0 then display helper message
function isEmpty(elem, helperMsg){
		if(elem.value.length == 0){
			alert(helperMsg);
			elem.focus(); // set the focus to this input
			return true;
		}
		return false;
	}

// E-Mail address validation
function emailValidator(elem, helperMsg){
		var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
		if(elem.value.match(emailExp)){
			return false;
		}else{
			alert(helperMsg);
			elem.focus();
			return true;
		}
	}

// Phone number validation
function isPhoneNumber(elem, helperMsg) {
		var phoneExp = /\d{3}\-\d{3}\-\d{4}/;
		if(elem.value.match(phoneExp)){
			return false;
		}else{
			alert(helperMsg);
			elem.focus();
			return true;
		}
	}


// Format Phone number
function formatPhone(userInput) {
	// XXXXXXXXXX
	if (userInput.value.length == 10) {
		/* Format a 10 digit number */ 
		_return = "";
		var ini = userInput.value.substring(0,3);
		_return+=ini+"-";
		var st = userInput.value.substring(3,6);
		_return+=st+"-";
		var end = userInput.value.substring(6,10);
		_return+=end;
		
		formattedPhone = _return;
		userInput.value = formattedPhone;
	
	  }
		// (XXX)XXX-XXX)  
	 if (userInput.value.length == 13) {
		/* Format a 10 digit number */ 
		_return = "";
		var ini = userInput.value.substring(1,4);
		_return+=ini+"-";
		var st = userInput.value.substring(5,8);
		_return+=st+"-";
		var end = userInput.value.substring(9,13);
		_return+=end;
		
		formattedPhone = _return;
		userInput.value = formattedPhone;
	
	  } 

}


// Call to initiate preroll()
// Rollover/preload script by Matt Ditter (Nov. 2007)
// version 1.2 (Dec. 2007)
var prePaths = [], preImages = [], rollImages = [];
function addEvent(evt,func,obj) {
 obj = obj ? obj : window;
 if (obj.addEventListener) { obj.addEventListener(evt,func,false); return true; }
 else if (obj.attachEvent) { var ev = obj.attachEvent('on'+evt,func,event); return ev; }
 else return false;
}
function preload() {
 for (var i=0, path; path = prePaths[i]; i++) {
  var l = preImages.length;
  preImages[l] = new Image();
  preImages[l].src = path;
}}
function preroll() {
 var pre = [], pics = document.getElementsByTagName('img'), links = document.getElementsByTagName('a');
 for (var i=0, pic; pic = pics[i]; i++) {
  if (pic.className.match(/[^\-]\bover\b[^\-]|^over$|^over\b[^\-]|[^\-]\bover$/i)) {
   var wrap = pic.parentNode, path = pic.src, dot = path.lastIndexOf('.');
   if (path && (dot > 0)) prePaths[prePaths.length] = path.substring(0,dot)+'-o'+path.substring(dot,path.length);
   if (wrap && wrap.tagName == 'A') { 
    addEvent('mouseover',rollover,wrap);
    addEvent('mouseout',rollout,wrap);
    addEvent('focus',rollover,wrap);
    addEvent('blur',rollout,wrap);
 }}}
 for (var i=0, a; a = links[i]; i++)
  if (a.onmouseover && a.childNodes[0].tagName == 'IMG') a.onfocus = a.onmouseover;
 for (var i=0, arg; arg = arguments[i]; i++) prePaths[prePaths.length] = arg;
 addEvent('load',preload);
}
function rollover(e) {
 var ev = e ? e : window.event, srcEl = ev.target ? ev.target : ev.srcElement;
 if (srcEl.nodeType == 3) srcEl = srcEl.parentNode; // Safari fix
 srcEl = srcEl.tagName == 'IMG' ? srcEl : srcEl.childNodes[0];
 var path = srcEl.src, dot = path.lastIndexOf('.');
 srcEl.src = (srcEl.className.indexOf('activeimg') > -1) ? path.replace('-a.','-o.') : (!path.match(/\-o\./gi)) ? path.substring(0,dot)+'-o'+path.substring(dot,path.length) : path;
}
function rollout(e) {
 var ev = e ? e : window.event, srcEl = ev.target ? ev.target : ev.srcElement;
 if (srcEl.nodeType == 3) srcEl = srcEl.parentNode; // Safari fix
 srcEl = srcEl.tagName == 'IMG' ? srcEl : srcEl.childNodes[0];
 var path = srcEl.src;
 srcEl.src = (srcEl.className.indexOf('activeimg') > -1) ? path.replace('-o.','-a.') : path.replace('-o.','.'); 
}
// roll() function only used for inline event handlers
function roll(e) {
 var a = arguments;
 if (a.length < 2) for (var i=0, img; img = rollImages[i]; i++) img.src = img.old;
 else {
  for (var i=0, pic; pic = document.getElementById(a[i]); i=i+2) {
   var flag = 0, path = a[i+1], ev = window.event ? window.event : e, srcEl = ev.target ? ev.target : ev.srcElement;
   if (!path || !ev) return;
   if (srcEl && srcEl.nodeType == 3) srcEl = srcEl.parentNode; // Safari fix
   for (var j=0, img; img = rollImages[j]; j++)
    if (pic == img) { flag = 1; break; }
   if (!flag) rollImages[rollImages.length] = pic;
   if (!pic.old) pic.old = pic.src;
   pic.src = path;
   if (!i) {
    addEvent('mouseout',roll,srcEl);
    addEvent('blur',roll,srcEl);
}}}}