// JavaScript Document by William Antony Fernandes

/*
valida_form: valida formulários

Parâmetros:
	form: objeto do formulário que chama a função
	
Para funcionar:
	- A label do input deve estar dentro de um marcador com o mesmo nome do input e o sufixo "_lbl"
	- Os inputs devem ter o id declarados e com o mesmo nome do nome
	- Os inputs que utilizarem a função add_item devem ter o "_" antes da palavra que precede o "00". A mesma é
usada no prefixo do nome do marcador nome+"_lbl"
	- O nome dos inputs não podem ter "0" a não ser que utilizem a função add_item
	- Caso haja algum campo do formulário que não tenha preenchimento obrigatório, o prefixo v_ deve ser inserido 
no nome e no id do input.
*/

//cria os arrays que irão armazenar o nome e o tipo dos elementos do formulário.
nome_e = new Array();
tipo = new Array();
v = 0;

function valida_form(form)
{
	v = 0;
	//Armazena o nome do formulário.
	//d_form = document.getElementById(form).name;
	d_form = form;
	
	//Faz uma varredura nos elementos do formulário.
	for(n=0; n<d_form.length; n++)
	{
		
		//Armazena o elemento para poder acessar os atributos.
		
		
		//Armazena o nome e o tipo do elemento.
		nome_e[n] = d_form.elements[n].name;
		d_input = document.getElementById(nome_e[n]);
		tipo[n] = d_input.type;
				
		//Verifica o tipo do elemento e faz a validação.		
		if(tipo[n] == "text")
		{
			verif_v = nome_e[n].indexOf("v_");
			if(verif_v == "-1")
			{
				verif_index0 = nome_e[n].indexOf("0");
				if(d_input.value == "")
				{
					if(verif_index0 != "-1")
					{
						verif_index_ = nome_e[n].indexOf("_");
						verif_nome = nome_e[n].slice(verif_index_+1, verif_index0);
						//document.getElementById(verif_nome+"_lbl").style.color = "red";
						document.getElementById(d_input.name).style.borderStyle = "solid";
						document.getElementById(d_input.name).style.borderColor = "red";
					}
					else
					{
						document.getElementById(d_input.name+"_lbl").style.color = "red";
					}
				
					v++;
				}
				else
				{
					if(document.getElementById(d_input.name+"_lbl") == null)
					{
						verif_index0 = nome_e[n].indexOf("0");
						verif_index_ = nome_e[n].indexOf("_");
						verif_nome = nome_e[n].slice(verif_index_+1, verif_index0);
						document.getElementById(d_input.name).style.borderColor = "white";
						//document.getElementById(verif_nome+"_lbl").style.color = "white";
					}
					else
						document.getElementById(d_input.name+"_lbl").style.color = "white";
				}
			}
		}
		
		if(tipo[n] == "checkbox")
		{
			verif_v = nome_e[n].indexOf("v_");
			if(verif_v == "-1")
			{
				verif_index0 = nome_e[n].indexOf("0");
				if(d_input.checked == false)
				{
					if(verif_index0 != "-1")
					{
						verif_index_ = nome_e[n].indexOf("_");
						verif_nome = nome_e[n].slice(verif_index_+1, verif_index0);
						//document.getElementById(verif_nome+"_lbl").style.color = "red";
						document.getElementById(d_input.name).style.borderStyle = "solid";
						document.getElementById(d_input.name).style.borderColor = "red";
					}
					else
					{
						document.getElementById(d_input.name+"_lbl").style.color = "red";
					}
				
					v++;
				}
				else
				{
					if(document.getElementById(d_input.name+"_lbl") == null)
					{
						verif_index0 = nome_e[n].indexOf("0");
						verif_index_ = nome_e[n].indexOf("_");
						verif_nome = nome_e[n].slice(verif_index_+1, verif_index0);
						document.getElementById(d_input.name).style.borderColor = "white";
						//document.getElementById(verif_nome+"_lbl").style.color = "white";
					}
					else
						document.getElementById(d_input.name+"_lbl").style.color = "white";
				}
			}
		}
		/*if(tipo[n] == "textarea")
		{
			verif_v = nome_e[n].indexOf("v_");
			if(verif_v == "-1")
			{
				alert(d_input.inne);
				if(d_input.value == "" || d_input.value == "			")
				{
					v++;
					document.getElementById(d_input.name+"_lbl").style.color = "red";
				}
				else
					document.getElementById(d_input.name+"_lbl").style.color = "white";
			}			
		}*/
		/*else if(tipo[n] == "password")
		{
			if(d_input.value = "")
				v++;
		}
		else if(tipo[n] == "checkbox")
		{
			alert("checkbox");
			v++;
		}*/
		else if(tipo[n] == "file")
		{
			verif_v = nome_e[n].indexOf("v_");
			if(verif_v == "-1")
			{
				if(d_input.value == "")
				{
					verif_index0 = nome_e[n].indexOf("0");
					if(verif_index0 != "-1")
					{
						verif_index_ = nome_e[n].indexOf("_");
						verif_nome = nome_e[n].slice(verif_index_+1, verif_index0);
						//document.getElementById(verif_nome+"_lbl").style.color = "red";
						document.getElementById(d_input.name).style.borderStyle = "solid";
						document.getElementById(d_input.name).style.borderColor = "red";
					}
					else
					{
						document.getElementById(d_input.name+"_lbl").style.color = "red";
					}
					v++;
				}
				else
				{
					if(document.getElementById(d_input.name+"_lbl") == null)
					{
						document.getElementById(d_input.name).style.borderColor = "white";
						//document.getElementById(verif_nome+"_lbl").style.color = "white";
					}
					else
						document.getElementById(d_input.name+"_lbl").style.color = "white";
				}
			}
		}
		/*else if(tipo[n] == "radio")
		{
			alert("radio");
			v++;
		}
		else if(nome[n] == "select")
		{
			alert("select");
			v++;
		}*/
	}
	
	//Caso algum elemento esteja inválido, a mensagem é enviada e o envio do formulário cancelado.
	if(v>0)
	{
		alert("Você deixou de preencher algum campo do formulário");
		return false;
	}
}
