//Essa função vai pegar todo e qualquer form e envia-las para validação
function validateForms()
{
	var elementsForms;
	
	if (!document.getElementsByTagName) return false;
	
	elementsForms = document.getElementsByTagName("form");
	
	//Para cada formulário encontrado, faça a validação do form
	for (var intCounter = 0; intCounter < elementsForms.length; intCounter++) 
	{ 
		return validateForm(elementsForms[intCounter]);
	} 
}

//Essa função faz a validação efetiva de cada elemento do form	
function validateForm(currentForm)
{
	var elementsInputs;
	
 	elementsInputs = currentForm.getElementsByTagName("input");
 
	//Para cada elemento do form
	for (var intCounter = 0; intCounter < elementsInputs.length; intCounter++)
	{
		var className = elementsInputs[intCounter].className;
		
		if (className.indexOf("reqemail") != -1)
		{
			if (validateEmail(elementsInputs, intCounter))
			{
				return false;
			}	
		}
		else if (className.indexOf("reqfield") != -1)
		{
			if (validateText(elementsInputs, intCounter))
			{
				return false;
			}
		}
		else if (className.indexOf("reqradio") != -1)
		{
			if (validateRadio(currentForm.elements.sexo))
			{
				return false;
			}
		}
		else if (className.indexOf("reqcheckbox") != -1)
		{
			if (validateCheckBox(elementsInputs, intCounter))
			{
				return false;
			}
		}
	}
	return true;
}

//Funcao pra validar email com expressao regular.
function validateEmail(elementsInputs, intCounter)
{
	var emailRegex = /^.+@.+\..{2,3}$/;

	//Se o teste não passar, de um aviso.
	if (!emailRegex.test(elementsInputs[intCounter].value))
	{
		//Texto que aparecera como alerta.
		alert('Por favor, insira um email válido.')
				
		elementsInputs[intCounter].focus();
		
		return true;
	}
}
				
//Funcao generica pra validar campos de texto
function validateText(elementsInputs, intCounter)
{
	if (elementsInputs[intCounter].value == "")
	{
		//Adicionar os ids desejados e seus respectivos textos
		if(elementsInputs[intCounter].name == "arquivo")
		{
			alert('Por favor, selecione sua foto.');
			elementsInputs[intCounter].focus();
		}
		
		if(elementsInputs[intCounter].name == "nome")
		{
			alert('Por favor, preencha o seu nome completo.');
			elementsInputs[intCounter].focus();
		}
		
		if(elementsInputs[intCounter].name == "endereco")
		{
			alert('Por favor, preencha o seu endereço.');
			elementsInputs[intCounter].focus();
		}
		
		if(elementsInputs[intCounter].name == "cep")
		{
			alert('Por favor, preencha o seu CEP.');
			elementsInputs[intCounter].focus();
		}
		
		if(elementsInputs[intCounter].name == "telefone")
		{
			alert('Por favor, preencha o seu telefone.');
			elementsInputs[intCounter].focus();
		}
		
		if(elementsInputs[intCounter].name == "cpf")
		{
			alert('Por favor, preencha o seu CPF.');
			elementsInputs[intCounter].focus();
		}
		
		return true;
	}
}

//Funcao generica pra validar radio buttons
function validateRadio(radioGroup)
{
	/*i = radioGroup.length-1;
	
	for (var i = 0; i < radioGroup.length; i++)
	{
		if (radioGroup[i].checked)
		{
			i--;
		}
    }

	if (i>0)
	{
		//Adicionar os ids desejados e seus respectivos textos
		if(radioGroup[0].name == "sexo")
		{
			alert('Por favor defina seu sexo.');
			radioGroup.focus();
		}
		return true;
	}*/
	
	myOption = -1;
	for (i=radioGroup.length-1; i > -1; i--)
	{
		if (radioGroup[i].checked)
		{
			myOption = i; i = -1;
		}
	}
	if (myOption == -1)
	{
		alert("Por favor defina seu sexo.");
		return true;
	}
}

//Funcao generica pra validar check box
function validateCheckBox(elementsInputs, intCounter)
{
	if (elementsInputs[intCounter].checked == false)
	{
		//Adicionar os ids desejados e seus respectivos textos
		if(inputElement.name == "declaracao")
		{
			alert('Por favor, aceite os termos e declaração.');
			elementsInputs[intCounter].focus();
		}
	
		return true;
	}
}

function applyOnSubmitToForms()
{
	elementsForms = document.getElementsByTagName("form"); 
	for (var intCounter = 0; intCounter < elementsForms.length; intCounter++) 
	{ 
		elementsForms[intCounter].onsubmit = function ()
		{
			if (!validateForms())
			{
				return false;
			}
		}
	} 
}		
function addLoadEvent(func) 
{
 	var oldonload = window.onload;
	if (typeof window.onload != 'function') 
	{
		window.onload = func;
	} 
	else 
	{
		window.onload = function() 
		{
	      		oldonload();
	      		func();
	    	}
	}
}

addLoadEvent(applyOnSubmitToForms);