// 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 ) { 

  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 

    obj.addEventListener( type, fn, false ); 

} 

function removeEvent( obj, type, fn ) { 

  if ( obj.detachEvent ) { 

    obj.detachEvent( 'on'+type, obj[type+fn] ); 

    obj[type+fn] = null; 

  } else 

    obj.removeEventListener( type, fn, false ); 

} 





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;

		//alert("f1");

	}

	if(formElementArray[inputObj.name]['required'] && inputObj.tagName=='SELECT' && inputObj.selectedIndex==0 && inputObj.value.length==0){

		inputValidates = false;

		//alert("f1s");

	}

	if(formElementArray[inputObj.name]['mask'] && !inputObj.value.match(formValidationMasks[formElementArray[inputObj.name]['mask']])){

		inputValidates = false;

		//alert("f-mask");

	}



	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

		//alert("f-freemask");

	}	

	

	if(formElementArray[inputObj.name]['regexpPattern']){

		var tmpMask = eval(formElementArray[inputObj.name]['regexpPattern']);

		if(!inputObj.value.match(tmpMask))inputValidates = false

		

		//alert("f-regexp");

	}

	if(!formElementArray[inputObj.name]['required'] && inputObj.value.length==0 && inputObj.tagName=='INPUT'){

		inputValidates = true;

		//alert("true !!!");

	}

	

	//alert( inputObj.name +" -- "+inputValidates );

	

	if(inputValidates){

		inputObj.parentNode.className='validInput';

		//alert("valid");

	}else{

		inputObj.parentNode.className='invalidInput';

		//alert("INvalid");

	}

}



function isFormValid(target){
//eh, aici probleme pentru ca am dezactivat nush ce
	if(!target) target = document;

	else {
		target = document.getElementById(target);	
	}
	var divs = target.getElementsByTagName('DIV');

	for(var no=0;no<divs.length;no++){
		if(divs[no].className=='invalidInput') return false;

	}
	return true;	
}









function initFormValidation(target){

	

	//alert('initFormValidation');

	

	if(!target) target = document;

	else {

		target = document.getElementById(target);	

	}

	

	var inputFields = target.getElementsByTagName('INPUT');

	var selectBoxes = target.getElementsByTagName('SELECT');

	

	var inputs = new Array();

	

	

	for(var no=0; no<inputFields.length; no++){

		if(BrowserDetect.browser == "Explorer"){

			if(inputFields[no].getAttribute('required') != null)	inputs.push(inputFields[no]);

		} else {

			if(inputFields[no].hasAttribute('required'))	inputs.push(inputFields[no]);

		}

	}	

	

	for(var no=0; no<selectBoxes.length; no++){

		if(BrowserDetect.browser == "Explorer"){

			if(selectBoxes[no].getAttribute('required') != null)	inputs.push(selectBoxes[no]);

		} else {

			if(selectBoxes[no].hasAttribute('required'))	inputs.push(selectBoxes[no]);

		}

	}

	

	for(var no=0;no<inputs.length;no++){

		var className = inputs[no].parentNode.className;

		if(className && className.indexOf('validInput')>=0)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;

		

		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';

		

		addEvent(inputs[no],'blur',validateInput);
		addEvent(inputs[no],'change',validateInput);
		addEvent(inputs[no],'paste',validateInput);
		addEvent(inputs[no],'keyup',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 = function(){ initFormValidation(); }
