/* FORM CHECK - CSS & REGEX & JAVACSCRIPT */
/* Based on 'Form validation Script' 
   available on http://www.htmlgoodies.com/ (C)
   on  February 2006  by Alf Magne Kalleland */

// Patterns
var formValidationMasks = new Array();
formValidationMasks['email'] = /\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/gi;	// E-mail
formValidationMasks['numero'] = /^[0-9]+$/gi;	// Número
formValidationMasks['numero4'] = /^[0-9]{4}$/gi;	// Número com 4 caracteres
formValidationMasks['numero2'] = /^[0-9]{2}$/gi;	// Número com 2 caracteres
formValidationMasks['cep'] = /^[0-9]{5}\-[0-9]{3}$/gi;	// CEP
formValidationMasks['url'] = /\b[A-Z0-9.-]+\.[A-Z]{2,4}\b/gi;	// URL (WEBSITE)
formValidationMasks['misto6'] = /^[\W \w]{6,255}/gi;	// Mínimo de 6 caracteres com espaço. Max 255.
formValidationMasks['misto2'] = /^[\W \w]{2,255}/gi;	// Mínimo de 2 caracteres com espaço. Max 255.
formValidationMasks['mistoNS6'] = /^[A-Z0-9]{6,255}/gi;	// Mínimo de 6 caracteres contínuos. Max 255.
formValidationMasks['misto15'] = /^[\W \w]{15,255}/gi;	// Mínimo de 15 caracteres com espaço. Max 255.
formValidationMasks['numeroNS5'] = /^[0-9]{7,255}$/gi;	// Mínimo de 7 dígitos contínuos. Max 255.
formValidationMasks['data'] = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/gi;	// DATA DD/MM/YYYY
formValidationMasks['hora'] = /^\d+:[0-5]\d:[0-5]\d$/gi;	// HORA HH:II:SS
/*formValidationMasks['CNPJ'] =/\d{2}.\d{3}.\d{3}/\d{4}-\d{2}/gi;	// CNPJ ruin, nao sei porque */


var formElementArray = new Array();

function validateInput(e,inputObj)
{
	//alert();
	if(!inputObj)inputObj = this;		
	var inputValidates = true;
	
	if(formElementArray[inputObj.name]['obrigatorio'] && inputObj.tagName=='INPUT' && inputObj.value.length==0 && !inputObj.disabled)inputValidates = false;
	if(formElementArray[inputObj.name]['obrigatorio'] && inputObj.tagName=='SELECT' && inputObj.selectedIndex==0 && !inputObj.disabled){
		inputValidates = false;
	}
	if(formElementArray[inputObj.name]['obrigatorio'] && inputObj.tagName=='TEXTAREA' && inputObj.value.length==0 && !inputObj.disabled){
		inputValidates = false;
	}
	if(formElementArray[inputObj.name]['masc'] && !inputObj.value.match(formValidationMasks[formElementArray[inputObj.name]['masc']]) && !inputObj.disabled)inputValidates = false;

	if(formElementArray[inputObj.name]['masclivre'] && !inputObj.disabled){
		var tmpMask = formElementArray[inputObj.name]['masclivre'];
		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]['mascregex'] && !inputObj.disabled){
		var tmpMask = eval(formElementArray[inputObj.name]['mascregex']);
		if(!inputObj.value.match(tmpMask))inputValidates = false
	}
	if(!formElementArray[inputObj.name]['obrigatorio'] && 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('SPAN');
	for(var no=0;no<divs.length;no++){
		//alert(divs[no].disabled);
		if((divs[no].className=='invalidInput'))return false;
	}
	return true;	
}


var inputs = new Array();
function initFormValidation()
{
	var inputFields = frmDinamico.getElementsByTagName('INPUT');
	var selectBoxes = frmDinamico.getElementsByTagName('SELECT');
	var textareaField = frmDinamico.getElementsByTagName('TEXTAREA');
	
	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<textareaField.length;no++){
		inputs[inputs.length] = textareaField[no];	
	}
	
	for(var no=0;no<inputs.length;no++){

		var obrigatorio = inputs[no].getAttribute('obrigatorio');
		if(!obrigatorio) {
			obrigatorio = inputs[no].obrigatorio;
			//JSWriteOnObject(txtNote,'<br><br>'+obrigatorio+': '+inputs[no].name+'<br>');	
		}
		
		var mask = inputs[no].getAttribute('masc');
		if(!mask)mask = inputs[no].mask;
		
		var masclivre = inputs[no].getAttribute('masclivre');
		if(!masclivre)masclivre = inputs[no].masclivre;
		
		var mascregex = inputs[no].getAttribute('mascregex');
		if(!mascregex)mascregex = inputs[no].mascregex;
		
		var div = document.createElement('SPAN');
		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].onpaste = validateInput;
		inputs[no].onkeyup = validateInput;
	
		/* == ATENÇÃO ==
		 A verificação abaixo foi necessária para que o script funcionasse normalmente
		  em conjunto com: AJAX -- busca de resultado no banco dentro de uma combo-box.
		*/
		if (inputs[no].type != 'select-one'){
			inputs[no].onchange = validateInput;
		}

		formElementArray[inputs[no].name] = new Array();
		formElementArray[inputs[no].name]['masc'] = mask;
		formElementArray[inputs[no].name]['masclivre'] = masclivre;
		formElementArray[inputs[no].name]['obrigatorio'] = obrigatorio;
		formElementArray[inputs[no].name]['mascregex'] = mascregex;

		
		validateInput(false,inputs[no]);

	}	
		
}


function Verifica(){
//	frmDinamico = document.frmDinamico;
	if(isFormValid()){
		var submitButton = frmDinamico.getElementById('submit');
		submitButton.disabled = true;
		JSWriteOnObject(txtNote,'Aguarde. Gravando informações . . .',1);
//		frmDinamico.submit();
	}
	else{ 
		alert('Semana Nacional de Ciência & Tecnlogia\n\nExistem campos que não foram preenchidos corretamente.');
		JSWriteOnObject(txtNote,'<font color=red><b>ATENÇÃO</b></font><br>Existe um ou mais erro(s) no preenchimento de algum(ns) campo(s). Por favor, verifique novamente o preenchimento do(s) mesmo(s).',1);
		return false; 
	}
}

function DJSInability(theobj){
	theobj.parentNode.className='validInput';
	theobj.disabled = true;
	
}

window.onload = initFormValidation;

