/* 
*  Copyright 2006-2010 Dynamic Site Solutions.
*  Free use of this script is permitted for commercial and non-commercial 
*  applications, subject to the requirement that this comment block be kept 
*  and not be altered.  The data and executable parts of the script may be 
*  changed as needed.  Dynamic Site Solutions makes no warranty regarding 
*  fitness of use or correct function of the script.  If you would like help
*  customizing this script or if you have other questions, contact 
*  "contact_us@dynamicsitesolutions.com".
*
*  Script by: Dynamic Site Solutions -- http://www.dynamicsitesolutions.com/
*  Last Updated: 2010-11-03
*/

function dss_addEvent(el,etype,fn) {
  if(el.addEventListener && (!window.opera || opera.version) &&
  (etype!='load')) {
    el.addEventListener(etype,fn,false);
  } else if(el.attachEvent) {
    el.attachEvent('on'+etype,fn);
  } else {
    if(typeof(fn) != "function") return;
    if(typeof(window.earlyNS4)=='undefined') {
      // to prevent this function from crashing Netscape versions before 4.02
      window.earlyNS4=((navigator.appName.toLowerCase()=='netscape')&&
      (parseFloat(navigator.appVersion)<4.02)&&document.layers);
    }
    if((typeof(el['on'+etype])=="function")&&!window.earlyNS4) {
      var tempFunc = el['on'+etype];
      el['on'+etype]=function(e){
        var a=tempFunc(e),b=fn(e);
        a=(typeof(a)=='undefined')?true:a;
        b=(typeof(b)=='undefined')?true:b;
        return (a&&b);
      }
    } else {
      el['on'+etype]=fn;
    }
  }
}

if(![].push){ // for old browsers that don't natively support Array.push()
  Array.prototype.push=function(){
    for(var i=0,l=arguments.length;i<l;i++) this[this.length]=arguments[i];
    return this.length;
  }
}
function clearText(thefield){
	if(thefield.defaultValue==thefield.value) thefield.value = '';
}
function restoreText(thefield){
	if(thefield.value=='') thefield.value = thefield.defaultValue;
}
function verify() {
  var f = document.forms['emailmsg'],errorMsg='',errors=[];
	if(f.fromname.value=='') {
		errors.push(["Your Name",f.fromname]);
		dss_addEvent(f.fromname,'change',verify);
	}
	if(f.fromadr.value=='') {
		errors.push(["Your Email Address",f.fromadr]);
		dss_addEvent(f.fromadr,'change',verify);
	} else {
		var pattern=/^[-\.\w\+]+@((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+([a-z]{2,})|((\d{1,3}\.){3}\d{1,3}))$/;
		if(!pattern.test(f.fromadr.value.toLowerCase())) {
			errors.push(["Your email address does not appear to be valid.",f.fromadr]);
			dss_addEvent(f.fromadr,'change',verify);
		}
	}
	if((f.msgtxt.value==f.msgtxt.defaultValue) || (f.msgtxt.value=='')) {
		errors.push(["Your Message",f.msgtxt]);
		dss_addEvent(f.msgtxt,'change',verify);
	}
	if(errors.length) {
	  errorMsg='<p class="error"><strong>Please fill in the following fields:'+
			'</strong></p>\n\n<ul class="error">';
	  for(var i=0,k=errors.length;i<k;i++) {
			errorMsg+=['\n  <li><a href="#',errors[i][1].id,'">',
				errors[i][0],'</a></li>'].join('');
	  }
		if(!document.getElementById) {
			alert(errorMsg.replace(/<[^>]+>/g,''));
		} else {
			var p=document.getElementById('formErrors');
			if(!p) {
		    p=document.createElement('div');
		    p.id='formErrors';
		    f.insertBefore(p,f.firstChild);
		    p.onclick=function(e){
				  e=e||window.event;
				  var el=e.target||e.srcElement;
				  if(/(^|:)a$/i.test(el.nodeName)) {
				  	var c=document.getElementById(el.href.split(/#/)[1]);
				  	setTimeout(function(){c.focus()},0);
				    return false;
				  }
				}
		  }
		  p.innerHTML=errorMsg+'\n</ul>';
		  location.hash="#formErrors";
		}
		return false;
	}
	return true;
}
(function(){
  var f = document.forms['emailmsg'];
  if(!f) return;
  f.onsubmit = verify;
  var msgtxt = f.elements['msgtxt'];
  msgtxt.onfocus = function(){clearText(this)}
  msgtxt.onblur = function(){restoreText(this)}
})();

