/********************************************************************************************************
Validação de formulários
********************************************************************************************************/

function verficarItems(nome, formulario)
{
	//verificar se existem checkboxes true
	for (var i=0;i<formulario.elements.length;i++)
	{
		//e = elemento actual
		var e=formulario.elements[i];
		//se a checkbox for diferente de ALLBOX e igual a item entao subtituir estado pelo o da ALLBOX
		var string = e.name
		prefixo = string.substring(0, 4); //buscar prefixo da checkbox
		string = string.substring(4, e.name.length); //retirar prefixo da checkbox
		if ((e.checked==true) && (string!='allbox') && (e.type=='checkbox') && (prefixo==nome))
		{
			//confirmar submissão
			resposta=confirm ("Deseja submeter as informações?")
			if (resposta==false)
			{
				return false;
			}

			return true;
		}
	}

	alert('É necessário seleccionar items para realizar uma acção!');
	return false;
}

function validarFormulario(formulario, cor_invalida, cor_valida)
{
	/*Função de validação genérica para usar basta colocar no title o seguinte
	
	* : Campo obrigatorio
	e : Campo de email
	w : Campo de link
	i : Campo numerico
	
	os atributos devem estar separados por pipes |
	*/
	
	valido = true;

	//verificar se os campos estão preenchidos
	for (i = 0; i < formulario.elements.length; i++)
	{
		//Verificar tipo de elemento
		if (formulario.elements[i].type == "select-one")
		{
			//Se for select verificar se o index não é inválido
			if (formulario.elements[i].options[formulario.elements[i].selectedIndex].value == '-1')
			{
				formulario.elements[i].style.background = cor_invalida;
				valido = false;
			}
			else
			{
				formulario.elements[i].style.background = cor_valida;
			}
		}
		else
		{
			//Se for do tipo text ou password ou textarea
			if (formulario.elements[i].type == "text" || formulario.elements[i].type == "password" || formulario.elements[i].type == "textarea")
			{				
				//Buscar opcoes de validação guardadas no atributo title
				var opcoes = formulario.elements[i].title.split("|");
				var nopcoes = opcoes.length;

				if (nopcoes > 0)
				{
					//Verificar parametros de validação
					for(opcao in opcoes)
					{
						switch (opcoes[opcao])
						{
							case '*':
								if(formulario.elements[i].value == "")
								{
									formulario.elements[i].style.background = cor_invalida;
									valido = false;
								}
								else
									formulario.elements[i].style.background = cor_valida;	
									
								break;
							
							case 'e':
								if(!validaEmail(formulario.elements[i]))
								{
									formulario.elements[i].style.background = cor_invalida;
									valido = false;
								}
								else
									formulario.elements[i].style.background = cor_valida;	
									
								break;
								
							case 'w':
								if(!validaUrl(formulario.elements[i]))
								{
									formulario.elements[i].style.background = cor_invalida;
									valido = false;
								}
								else
									formulario.elements[i].style.background = cor_valida;	
									
								break;
								
							case 'i':
								if(!validaNumero(formulario.elements[i]))
								{
									formulario.elements[i].style.background = cor_invalida;
									valido = false;
								}
								else
									formulario.elements[i].style.background = cor_valida;	
									
								break;
						}
					}					
				}
			}
		}
	}

	return valido;
}

function validaEmail(campo)
{
	 var Reg = "^[\\w-_\.+]*[\\w-_\.]\@([\\w]+\\.)+[\\w]+[\\w]$";
	 var regex = new RegExp(Reg);
	 return regex.test(campo.value);
}

function validaUrl(campo)
{
	 var Reg = "^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$";
	 var regex = new RegExp(Reg);
	 return regex.test(campo.value);
}

function validaNumero(campo)
{
	 var Reg = "^[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?$";
	 var regex = new RegExp(Reg);
	 return regex.test(campo.value);
}