// FUNÇÕES AJAX

function GetXmlHttpObject()
{
  var xmlHttp=null;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
  return xmlHttp;
}

function checkUsername(str)
{
	if (str.length == 0)
	{
		document.getElementById("checkusername").innerHTML="";
		return;
	}
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
  {
  	alert ("AJAX não suportado!");
  	return;
  }
  var url="ajax_check_username.php?v="+str+"&sid="+Math.random();
  xmlHttp.onreadystatechange=function()
  {
		if(xmlHttp.readyState<4)
		{
      document.getElementById("checkusername").innerHTML='<img src="imagens/ajax_load.gif" />';
		}
		else if(xmlHttp.readyState==4)
    {
      document.getElementById("checkusername").innerHTML=xmlHttp.responseText;
    }
  }
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function checkEmail(str)
{
	if (str.length == 0)
	{
		document.getElementById("checkemail").innerHTML="";
		return;
	}
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
  {
  	alert ("AJAX não suportado!");
  	return;
  }
  var url="ajax_check_email.php?v="+str+"&sid="+Math.random();
  xmlHttp.onreadystatechange=function()
  {
		if(xmlHttp.readyState<4)
		{
      document.getElementById("checkemail").innerHTML='<img src="imagens/ajax_load.gif" />';
		}
		else if(xmlHttp.readyState==4)
    {
      document.getElementById("checkemail").innerHTML=xmlHttp.responseText;
    }
  }
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function reenvia_confirmacao(id)
{
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
  {
  	alert ("AJAX não suportado!");
  	return;
  }
  var url="ajax_reenvia_confirmacao.php?id="+id+"&sid="+Math.random();
  xmlHttp.onreadystatechange=function()
  {
		if(xmlHttp.readyState<4)
		{
      document.getElementById("reenvio"+id).innerHTML='<img src="../imagens/ajax_load.gif" />';
		}
		else if(xmlHttp.readyState==4)
    {
      document.getElementById("reenvio"+id).innerHTML=xmlHttp.responseText;
    }
  }
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

// OUTRAS FUNCÕES

// Devolve false se o argumento não for um dígito
function isDigit(num)
{
	if (num.length>1){return false;}
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
}

// Devolve false se o argumento não for um inteiro
function isInteger(val)
{
	if (val.length == 0) {return false;}
	for(var i=0;i<val.length;i++)
	{
		if(!isDigit(val.charAt(i))){return false;}
	}
	return true;
}

// Adiciona o método Trim a todas as strings
String.prototype.trim = function()
{
	return this.replace(/^\s+|\s+$/g,"");
}

// Devolve false se o argumento não for um URL válido
function isURL(val)
{
	retorno = false;
	val=val.trim();
	lengthValue = val.length;
	if (lengthValue != 0)
	{
		var j = new RegExp();
		j.compile("^[A-Za-z]+://[A-Za-z0-9-]+\.[A-Za-z0-9]+");
		if (j.test(val))
		{
			retorno = true;
		}
	}
	return retorno;
}

function nif_valido(str)
{
	if (!isInteger(str) || str.length < 9) return false;
	return true;
}

function emailValido(str)
{
	return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}

function valida_cliente(formulario)
{
	var msg="";
	
	with (formulario)
	{
		if (username.value.length < 3) {msg += "O nome de utilizador deve ter pelo menos 3 caracteres.\n";}
		if (password.value.length < 3) {msg += "A password deve ter pelo menos 3 caracteres.\n";}
		if (password.value != password2.value) {msg += "A password e a sua repetição devem ser iguais.\n";}
		if (!nif_valido(nif.value)) {msg += "O NIF deve ser constituído por 9 dígitos.\n";}
		if (nome.value.length == 0) {msg += "O nome completo deve ser preenchido.\n";}
		if (morada.value.length == 0) {msg += "O morada deve ser preenchida.\n";}
		if (cp1.value.length == 0 || cp2.value.length == 0 || cpalfa.value.length == 0) {msg += "O código postal deve ser preenchido.\n";}
		if (!isInteger(cp1.value) || !isInteger(cp2.value)) {msg += "A parte inicial do código postal deve conter apenas dígitos.\n";}
		if (!emailValido(email.value)) {msg += "Deve introduzir um email válido.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}
	else
	{
		valida = true;
	}
	return valida;
}

function valida_actualiza(formulario)
{
	var msg="";
	
	with (formulario)
	{
		if (username.value.length < 3) {msg += "O nome de utilizador deve ter pelo menos 3 caracteres.\n";}
		if (password.value.length != 0 && password.value.length < 3) {msg += "A password deve ter pelo menos 3 caracteres.\n";}
		if (password.value != password2.value) {msg += "A password e a sua repetição devem ser iguais.\n";}
		if (!nif_valido(nif.value)) {msg += "O NIF deve ser constituído por 9 dígitos.\n";}
		if (nome.value.length == 0) {msg += "O nome completo deve ser preenchido.\n";}
		if (morada.value.length == 0) {msg += "O morada deve ser preenchida.\n";}
		if (cp1.value.length == 0 || cp2.value.length == 0 || cpalfa.value.length == 0) {msg += "O código postal deve ser preenchido.\n";}
		if (!isInteger(cp1.value) || !isInteger(cp2.value)) {msg += "A parte inicial do código postal deve conter apenas dígitos.\n";}
		if (!emailValido(email.value)) {msg += "Deve introduzir um email válido.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}
	else
	{
		valida = confirm('Tem a certeza que deseja efectuar esta actualização?');
	}
	return valida;
}

function valida_actualiza_backoffice(formulario)
{
	var msg="";
	
	with (formulario)
	{
		if (!emailValido(email.value)) {msg += "Deve introduzir um email válido.\n";}
		if (!nif_valido(nif.value)) {msg += "O NIF deve ser constituído por 9 dígitos.\n";}
		if (nome.value.length == 0) {msg += "O nome completo deve ser preenchido.\n";}
		if (morada.value.length == 0) {msg += "O morada deve ser preenchida.\n";}
		if (cp1.value.length == 0 || cp2.value.length == 0 || cpalfa.value.length == 0) {msg += "O código postal deve ser preenchido.\n";}
		if (!isInteger(cp1.value) || !isInteger(cp2.value)) {msg += "A parte inicial do código postal deve conter apenas dígitos.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}
	else
	{
		valida = confirm('Tem a certeza que deseja efectuar esta actualização?');
	}
	return valida;
}

function valida_activacao(formulario)
{
	var msg="";
	
	with (formulario)
	{
		if (!emailValido(email.value)) {msg += "Deve introduzir um email válido.\n";}
		if (chave.value.length != 32) {msg += "A chave deve conter 32 caracteres.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}
	else
	{
		valida = true;
	}
	return valida;
}

function valida_reenviopassword(formulario)
{
	var msg="";
	
	with (formulario)
	{
		if (!emailValido(email.value)) {msg += "Deve introduzir um email válido.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}
	else
	{
		valida = true;
	}
	return valida;
}

function valida_login(formulario)
{
	var msg="";
	
	with (formulario)
	{
		if (username.value.length < 3) {msg += "O nome de utilizador deve ter pelo menos 3 caracteres.\n";}
		if (password.value.length < 3) {msg += "A password deve ter pelo menos 3 caracteres.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}
	else
	{
		valida = true;
	}
	return valida;
}

function valida_categoria(formulario)
{
	var msg="";
	
	with (formulario)
	{
		if (nome.value.length < 1) {msg += "O campo «Nome da categoria»\né de preenchimento obrigatório.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}
	else
	{
		valida = true;
	}
	return valida;
}

function valida_link(formulario)
{
	var msg="";
	
	with (formulario)
	{
		if (nome.value.length < 1) {msg += "O campo «Nome do link» é de preenchimento obrigatório.\n";}
		if (!isURL(ligacao.value)) {msg += "O «Endereço do link» tem de ser válido.\n";}
		if (categoria.value.length < 1) {msg += "É obrigatória a selecção de uma categoria. Crie uma categoria se necessário.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}
	else
	{
		valida = true;
	}
	return valida;
}

function valida_areadeactuacao(formulario)
{
	var msg="";
	var valida = true;
	
	with (formulario)
	{
		if (nome.value.length < 1) {msg += "O campo «Nome da área» é de preenchimento obrigatório.\n";}
		if (categoria.value.length < 1) {msg += "É obrigatória a selecção de uma categoria. Crie uma categoria se necessário.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}

	return valida;
}

function valida_citacao(formulario)
{
	var msg="";
	var valida = true;
	
	with (formulario)
	{
		if (frase.value.length < 1) {msg += "O campo «Frase» é de preenchimento obrigatório.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}

	return valida;
}

function valida_instalacoes(formulario)
{
	var msg="";
	var valida = true;
	
	with (formulario)
	{
		if (ficheiro.value.length < 1) {msg += "É obrigatório seleccionar o ficheiro da foto.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}

	return valida;
}

function valida_equipa(formulario)
{
	var msg="";
	var valida = true;
	
	with (formulario)
	{
		if (nome.value.length < 1) {msg += "O campo «Nome» é de preenchimento obrigatório.\n";}
		if (email.value.length > 0 && !emailValido(email.value)) {msg += "O endereço de email deve ser válido.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}

	return valida;
}

function validaConsulta(formulario)
{
	var msg="";
	var valida = true;
	
	with (formulario)
	{
		if (questao.value.length < 1) {msg += "É obrigatório preencher o campo da questão.\n";}
	}
	if (msg != "")
	{
		alert(msg);
		valida = false;
	}
	else
	{
		valida=confirm("Tem a certeza que deseja efectuar esta consulta?\n(Não poderá alterar mais tarde o que escreveu)");
	}

	return valida;
}
