// JavaScript Document/************************************************************************************************************
//(C) www.dhtmlgoodies.com, February 2006
//
//This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	
//
//Terms of use:
//You are free to use this script as long as the copyright message is kept intact. However, you may not
//redistribute, sell or repost it without our permission.
//
//Thank you!
//
//www.dhtmlgoodies.com
//Alf Magne Kalleland
//
//************************************************************************************************************/	
	
	
// Patterns
var formValidationMasks = new Array();
formValidationMasks['email'] = /\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/gi;	// Email
formValidationMasks['numeric'] = /^[0-9]+$/gi;	// Numeric
formValidationMasks['zip'] = /^[0-9]{5}\-[0-9]{4}$/gi;	// Numeric

var formElementArray = new Array();

function validateInput(e,inputObj)
{
	if(!inputObj)inputObj = this;		
	var inputValidates = true;
	
	if(formElementArray[inputObj.name]['required'] && inputObj.tagName=='INPUT' && inputObj.value.length==0)inputValidates = false;
	if(formElementArray[inputObj.name]['required'] && inputObj.tagName=='SELECT' && inputObj.selectedIndex==0){
		inputValidates = false;
	}
	if(formElementArray[inputObj.name]['mask'] && !inputObj.value.match(formValidationMasks[formElementArray[inputObj.name]['mask']]))inputValidates = false;

	if(formElementArray[inputObj.name]['freemask']){
		var tmpMask = formElementArray[inputObj.name]['freemask'];
		tmpMask = tmpMask.replace(/-/g,'\\-');
		tmpMask = tmpMask.replace(/S/g,'[A-Z]');
		tmpMask = tmpMask.replace(/N/g,'[0-9]');
		tmpMask = eval("/^" + tmpMask + "$/gi");
		if(!inputObj.value.match(tmpMask))inputValidates = false
	}	
	
	if(formElementArray[inputObj.name]['regexpPattern']){
		var tmpMask = eval(formElementArray[inputObj.name]['regexpPattern']);
		if(!inputObj.value.match(tmpMask))inputValidates = false
	}
	if(!formElementArray[inputObj.name]['required'] && inputObj.value.length==0 && inputObj.tagName=='INPUT')inputValidates = true;
	
	
	if(inputValidates){
		inputObj.parentNode.className='validInput';
	}else{
		inputObj.parentNode.className='invalidInput'
	}
}

function isFormValid()
{
	var divs = document.getElementsByTagName('DIV');
	for(var no=0;no<divs.length;no++){
		if(divs[no].className=='invalidInput')return false;
	}
	return true;	
}




function initFormValidation() 
{ 
   var inputFields = document.getElementsByTagName('INPUT'); 
   var selectBoxes = document.getElementsByTagName('SELECT'); 
    
   var inputs = new Array(); 
    
    
   for(var no=0;no<inputFields.length;no++){ 
      inputs[inputs.length] = inputFields[no]; 
       
   }    
   for(var no=0;no<selectBoxes.length;no++){ 
      inputs[inputs.length] = selectBoxes[no]; 
       
   } 
    
   for(var no=0;no<inputs.length;no++){ 
      if(inputs[no].type=='radio')continue; 
       
      var required = inputs[no].getAttribute('required'); 
      if(!required)required = inputs[no].required;       
       
      var mask = inputs[no].getAttribute('mask'); 
      if(!mask)mask = inputs[no].mask; 
       
      var freemask = inputs[no].getAttribute('freemask'); 
      if(!freemask)freemask = inputs[no].freemask; 
       
      var regexpPattern = inputs[no].getAttribute('regexpPattern'); 
      if(!regexpPattern)regexpPattern = inputs[no].regexpPattern; 
       
      if(regexpPattern || required || mask || freemask){ 
       
         var div = document.createElement('DIV'); 
         div.className = 'invalidInput'; 
         inputs[no].parentNode.insertBefore(div,inputs[no]); 
         div.appendChild(inputs[no]); 
         div.style.width = inputs[no].offsetWidth + 'px'; 
          
         inputs[no].onblur    = validateInput; 
         inputs[no].onchange = validateInput; 
         inputs[no].onpaste    = validateInput; 
         inputs[no].onkeyup    = validateInput; 
          
         formElementArray[inputs[no].name] = new Array(); 
         formElementArray[inputs[no].name]['mask'] = mask; 
         formElementArray[inputs[no].name]['freemask'] = freemask; 
         formElementArray[inputs[no].name]['required'] = required; 
         formElementArray[inputs[no].name]['regexpPattern'] = regexpPattern; 
    
         validateInput(false,inputs[no]); 
      } 
          
   }    
} 

window.onload = initFormValidation;
