//portions of script written by and copyright PeterPaulKoch - www.quirksmode.com
//and clearly adapted by Alejandro Gervasio in an article published October 2006 by www.devarticles.com
//script adapted by Pamela Riesmeyer - www.wingsofmercury.com February, 2007
//applied to contact form mybigbusinesscard.com October, 2009



 var valid='';
 var W3CDOM = (document.getElementsByTagName && document.createElement);
 // validate form
function validData(formName){
	valid=true;
 	var errorstring = '';
 	var errors = '';
 	var message = "Please check the form again\n";
 	var message2="\nSome fields need your attention.\n";
 	var frm = document.getElementById(formName);
 	// check the name fields 

	if(isEmpty(frm.name1.value)|| (alpha(frm.name1.value))){
		showError(frm.name1,'*Please provide us with your name');
	}

  	//check e-mail
 		
	if (checkEmail(frm.email.value) == true){
 		showError(frm.email,'*Check e-mail address');
 	}
 
 	
 	if(isEmpty(frm.phone.value)){
 		showError(frm.phone,'*Please provide a phone number for us to contact you');
 	}
 	
 	
 	if(!isChosen(frm.department)){
		 		showError(frm.department,'*Please choose a department.');
		
		}
 	
 	
 		
	if(isEmpty(frm.subject.value)){
			showError(frm.subject,'*Please tell us the subject of your request');
	 	}
	 		
	 	
 	if(isEmpty(frm.message.value)){
 		showError(frm.message,'*Please let us know your concerns or questions');
 	}
 		
	
	
	
 	if(!valid){
	 errors = message + errors + message2;
 	alert(errors);	
	}
 	if (!W3CDOM){
 		alert(errorstring);
 	}
 	
     return valid;
}



// display error messages
function showError(obj,message){
            if(!obj.errorNode){
	      obj.className += ' error';	    
              obj.onchange=hideError;
              var sp=document.createElement('p');
              sp.className = 'error';
              sp.appendChild(document.createTextNode(message));
              obj.parentNode.appendChild(sp);
              obj.errorNode=sp;
            }
	    valid=false;
            return;
}

// hide error messages
function hideError(){
	    this.className = this.className.substring(0,this.className.lastIndexOf(' '));	
            this.parentNode.removeChild(this.errorNode);
            this.errorNode=null;
            this.onchange=null;
           
}


/******************Utility functions ********************/

function trimSp(str)
{
   return str.replace(/^\s*|\s*$/g,"");
}



// function to test whether text input is empty
function isEmpty(str)
{

    str = trimSp(str);
    
    if(str == null || str.length == 0)
    {
	return true;
    }
    else
    {
	return false;
    }
}
  
function alpha(str)
{
    var regEx = /^[A-Za-z]+\s*[\-A-Za-z]*?\s*[\-A-Za-z]*?$/;
    
    str = trimSp(str);
    
    if(!(str.match(regEx)))
    {
		return true;
	
	}else{
		return false;
	}
   
}

	
function checkEmail(addy){

	//var emailFilter = /^[a-z][\w\.]*@[\w\.]+\.[a-z]{2,3}/i;
	var emailFilter = /^\w(\.?[\w-])*@\w(\.?[\w-])*\.[a-z]{2,4}$/i;
	var illegalChars = /[\(\)\<\>\,\;\:\\\"[\]]/;
	
	addy = trimSp(addy);
	
	if((addy == "") || (!(emailFilter.test(addy))) || (addy.match(illegalChars))){
		return true;
	}else{
		return false;
	}
	
}


//validate select element
function isChosen(select){
	if(select.selectedIndex==0){
		return false;
	}else{
		return true;
	}
}


	
/***************End Utility Functions *********************/



