/************************************************************************************************************
(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();

/* These two event functions are from http://ejohn.org/apps/jselect/event.html */

function addEvent( obj, type, fn ) { 
  //alert(obj.id);
  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 
    try
	{
		obj.addEventListener( type, fn, false ); 
	}
	catch(err)
	{
	//Handle errors here
	}
	
	
} 
function removeEvent( obj, type, fn ) { 
  if ( obj.detachEvent ) { 
    obj.detachEvent( 'on'+type, obj[type+fn] ); 
    obj[type+fn] = null; 
  } else 
    try
	{
	//Run some code here
		obj.removeEventListener( type, fn, false );
	}
	catch(err)
	{
	//Handle errors here
	}
	 
} 

function validateInput(e,inputObj)
{
	if(!inputObj)inputObj = this;		
	var inputValidates = true;
	
	if(formElementArray[inputObj.name]['minLenght'] && inputObj.tagName=='INPUT' && inputObj.value.length < inputObj.getAttribute('minLenght') && (inputObj.getAttribute('type')=='text' ||inputObj.getAttribute('type')=='password') )inputValidates = false;
	
	if(formElementArray[inputObj.name]['maxLenght'] && inputObj.tagName=='INPUT' && inputObj.value.length < inputObj.getAttribute('maxLenght') && (inputObj.getAttribute('type')=='text' ||inputObj.getAttribute('type')=='password') )inputValidates = false;
	
	if(formElementArray[inputObj.name]['required'] && inputObj.tagName=='INPUT' && inputObj.value.length==0 && (inputObj.getAttribute('type')=='text' ||inputObj.getAttribute('type')=='password') )inputValidates = false;
	if(formElementArray[inputObj.name]['required'] && inputObj.tagName=='INPUT' && inputObj.checked==0 && inputObj.getAttribute('type')=='checkbox' )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;
	


/////:Gestion de l'email
	if (inputObj.id == 'email2_field')
	{
		if (inputObj.value == document.getElementById('email_field').value && inputObj.value != '')
		{
			inputValidates = true;
		} else 
		{
			inputValidates = false;
		}
	}
/////Fin Gestion de l'email

////////:Gestion du mot de passe 
	if (inputObj.id == 'password2_field')
	{
		if (inputObj.value == document.getElementById('password_field').value && inputObj.value != '')
		{
			inputValidates = true;
			
		} else 
		{
			inputValidates = false;
			
		}
	}
/////////Fin Gestion du mot de passe
	

//gestion de la date de naissance
	if (inputObj.id == 'AnneeDeNaissance') inputValidates = false;	
	if (inputObj.id == 'JourDeNaissance' || inputObj.id == 'MoisDeNaissance' || inputObj.id == 'AnneeDeNaissance') 		
	{
		//alert('aaaa');
		if (document.getElementById('JourDeNaissance').options[document.getElementById('JourDeNaissance').selectedIndex].value != 0 && document.getElementById('MoisDeNaissance').value != 0 && document.getElementById('AnneeDeNaissance').value != 0)
		{
			inputValidates = true;
			document.getElementById('AnneeDeNaissance').parentNode.className='validInput';
			//document.getElementById('_AnneeDeNaissance').innerHTML = '<img style="padding-bottom:2px;vertical-align:middle;" src="administrator/images/tick.png" border="0" alt="" />';
			
		} else 
		{
			inputValidates = false;
			document.getElementById('AnneeDeNaissance').parentNode.className='invalidInput';
		}
		
	}
	
	if(inputValidates){
		inputObj.parentNode.className='validInput';
		if (inputObj.id == 'JourDeNaissance' || inputObj.id == 'MoisDeNaissance' || inputObj.id == 'AnneeDeNaissance')
			document.getElementById('_AnneeDeNaissance').innerHTML = '<img style="padding-bottom:2px;vertical-align:middle;" src="administrator/images/tick.png" border="0" alt="" />';
		else		
			document.getElementById('_'+inputObj.id).innerHTML = '<img style="padding-bottom:2px;vertical-align:middle;" src="administrator/images/tick.png" border="0" alt="" />';
	}else{
		if (inputObj.id == 'JourDeNaissance' || inputObj.id == 'MoisDeNaissance')
			inputObj.parentNode.className='validInput';
		else 
			inputObj.parentNode.className='invalidInput';
		if (inputObj.id == 'JourDeNaissance' || inputObj.id == 'MoisDeNaissance' || inputObj.id == 'AnneeDeNaissance') 
			document.getElementById('_AnneeDeNaissance').innerHTML = '<img style="padding-bottom:2px;vertical-align:middle;" src="administrator/images/publish_x.png" border="0" alt="" />';
		else 	
			document.getElementById('_'+inputObj.id).innerHTML = '<img style="padding-bottom:2px;vertical-align:middle;" src="administrator/images/publish_x.png" border="0" alt="" />';
	}
}

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++){
		if (inputFields[no].getAttribute('valid') ==1) {
		inputs[inputs.length] = inputFields[no];
		}
	}	
	for(var no=0;no<selectBoxes.length;no++){
		if (selectBoxes[no].getAttribute('valid') ==1) {
		inputs[inputs.length] = selectBoxes[no];
		}
		
	}
	
	for(var no=0;no<inputs.length;no++){
		var className = inputs[no].parentNode.className;
		//alert(inputs[no].getAttribute('id'));
		if(className && className.indexOf('validInput')>=0 && inputs[no].getAttribute('id') != 'AnneeDeNaissance' )continue;			
		//alert(inputs[no].getAttribute('id'));
		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;
		
		var minLenght = inputs[no].getAttribute('minLenght');
		if(!minLenght)minLenght = inputs[no].minLenght;
		
		var maxLenght = inputs[no].getAttribute('maxLenght');
		if(!maxLenght)maxLenght = inputs[no].maxLenght;
		
		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';
		div.style.width = 'auto';
//		div.style.float = 'right';
		div.style.padding = '1px';
		
		addEvent(inputs[no],'blur',validateInput);
		addEvent(inputs[no],'change',validateInput);
		addEvent(inputs[no],'paste',validateInput);
		addEvent(inputs[no],'keyup',validateInput);
		addEvent(inputs[no],'click',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;
		formElementArray[inputs[no].name]['minLenght'] = minLenght;
		formElementArray[inputs[no].name]['maxLenght'] = maxLenght;
		

		validateInput(false,inputs[no]);
			
	}	
}


