/**
 * Função validarCampoText()
 * 
 * Funçao responsável por validar os campos de inserção de dados.
 * 
 * @param string form		Formulário do campo
 * @param string label		Label descritiva do campo
 * @param string campo		Valor name do campo
 * @param integer chars		Quantidade de caracteres mínimos que o campo deve conter.
 * */
function validarCampoText(form, label, campo, chars)
{
	// Obtem os campos do formulário
	var el = form.elements;
	// Percorre todos os elementos
	for (i = 0; i < el.length; i++)
	{
		// Se encontrar um elemento com o nome informado...
		if (el[i].name == campo)
		{
			var erro = new Error();
			erro.name = 'Aviso';
			// ... verifica se foi definido um número mínimo de caracteres e se o valor é menor que esse número...
			if (chars && el[i].value.length < chars)
			{
				// ... e lança uma mensagem de erro.
				erro.message = 'Campo ' + label + ' deve conter no mínimo '	+ chars + ' caracteres';
				el[i].focus();
				throw erro;
			}
			// ... e não for definido um número mínimo de caracteres, verifica se o campo está vazio...
			else if (el[i].value == "")
			{
				// ... e lança uma mensagem de erro.
				erro.message = 'Campo ' + label + ' deve ser preenchido';
				el[i].focus();
				throw erro;
			}
		}
	}
}
/**
* Função validarCampoSelect()
* 
* Funçao responsável por validar os campos de seleção de dados.
* 
* @param string form		Formulário do campo
* @param string label		Label descritiva do campo
* @param string campo		Valor name do campo
* */
function validarCampoSelect(form, label, campo)
{
	// Obtem os campos do formulário
	var el = form.elements;
	// Percorre todos os elementos
	for (i = 0; i < el.length; i++)
	{
		// Se encontrar um campo com o nome informado e nenhum valor estiver selecionado...
		if (el[i].name == campo && el[i].selectedIndex == 0)
		{
			// ... lança uma mensagem de erro.
			var erro = new Error();
			erro.name = 'Aviso';
			erro.message = 'Selecione um valor para o campo ' + label;
			el[i].focus();
			throw erro;
		}
	}
}
/**
 * Função validarCampoCheckBox()
 * 
 * Funçao responsável por validar os campos de checkbox.
 * 
 * @param string form		Formulário do campo
 * @param string label		Label descritiva do campo
 * @param string campo		Valor name do campo
 * */
function validarCampoCheckBox(form, label, campo)
{
	// Obtem os campos do formulário
	var el = form.elements;
	var checked = false;
	// Percorre todos os elementos
	for (i = 0; i < el.length; i++)
	{
		// Se encontrar um campo checkbox com o nome informado e estiver selecionado...
		if(el[i].type == 'checkbox' && el[i].name == campo && el[i].checked == 1)
		{
			// ... define como marcado. 
			checked = true;
		}
	}
	// Se não tiver nenhum checkbox marcado, lança uma mensagem de erro.
	if (!checked)
	{
		var erro = new Error();
		erro.name = 'Aviso';
		erro.message = 'Selecione ao menos um item no campo ' + label;
		throw erro;
	}
}
/**
 * Função validarCampoRadio()
 * 
 * Funçao responsável por validar os campos de radio.
 * 
 * @param string form		Formulário do campo
 * @param string label		Label descritiva do campo
 * @param string campo		Valor name do campo
 * */
function validarCampoRadio(form, label, campo)
{
	// Obtem os campos do formulário
	var el = form.elements;
	var checked = false;
	// Percorre todos os elementos
	for (i = 0; i < el.length; i++)
	{
		// Se encontrar um campo radio com o nome informado e estiver selecionado...
		if(el[i].type == 'radio' && el[i].name == campo && el[i].checked == 1)
		{
			// ... define como marcado. 
			checked = true;
		}
	}
	// Se não tiver nenhum radio marcado, lança uma mensagem de erro.
	if (!checked)
	{
		var erro = new Error();
		erro.name = 'Aviso';
		erro.message = 'Selecione ao menos um item no campo ' + label;
		throw erro;
	}
}
/**
* Função validarCampoFile()
* 
* Funçao responsável por validar os campos de upload de Arquivo.
* 
* @param string form		Formulário do campo
* @param string label		Label descritiva do campo
* @param string extensoes	Extensões permitidas de arquivo
* */
function validarCampoFile(form, label, extensoes)
{
	// Obtem os campos do formulário
	var el = form.elements;
	// Transforma as extensões em um array
	var extensoes = extensoes.split(';');
	var arq = false;
	// Percorre todos os elementos 
	for (i = 0; i < el.length; i++)
	{
		// Se o elemento for do tipo file...
		if (el[i].type == 'file')
		{
			// ... e não estiver vazio...
			if (el[i].value != "")
			{
				// ... verifica se existe restrição nas extensões.
				if (extensoes)
				{
					var ext = false;
					// Obtem o nome do arquivo.
					var arquivo = el[i].value;
					// Obtem a extensão do arquivo.
					var extensao = arquivo.substr(arquivo.lastIndexOf('.') + 1,	arquivo.length - 1);
					// Percorre o vetor contendo as extensões permitidas.
					for (j = 0; j < extensoes.length; j++)
					{
						// Se encontrar a extensão no vetor, marca como permitido. 
						if (extensao == extensoes[j])
						{
							ext = true;
						}
					}
					// Se a extensão não for permitida, lança uma mensagem de erro.
					if (!ext)
					{
						var erro = new Error();
						erro.name = 'Aviso';
						erro.message = 'Não é permitido o envio de arquivos com a extensão ' + extensao;
						throw erro;
					}
				}
				arq = true;
			}
		}
	}
	// Se nenhum arquivo for selecionado, lança uma mensagem de erro.
	if (!arq)
	{
		var erro = new Error();
		erro.name = 'Aviso';
		erro.message = 'Campo ' + label + ' deve ser preenchido';
		throw erro;
	}
}
