function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();

function bannerclick(id) {
    http.open('get', '/gateway.php?action=banner&id='+id);
    http.send(null);
}

function geoAddress(address) {

	http.open('get', "/gateway.php?action=geoAddress&address="+address);
	messageObj.setSize(150,50);	
	messageObj.setHtmlContent("aguarde, a obter latitude e longitude através da morada...");
	messageObj.display();	
    http.onreadystatechange = function() {
		if(http.readyState == 4){
				var response = http.responseText
				arr=response.split(",");
				if (response.length > 0) {
					document.getElementById("longitude").value=arr[0];
					document.getElementById("latitude").value=arr[1];
				}
				messageObj.close();
		}		
	}
    http.send(null);
	return false;
}

function checkIdentificador(identificador, empresa) {
	http.open('get', "/gateway.php?action=checkidentificador&identificador="+identificador+"&id="+empresa);
    http.onreadystatechange = function() {
		if(http.readyState == 4){
				var response = http.responseText
				if (response == "OK") {
					document.getElementById("identificador").className="textfieldValidState";
					document.getElementById("mensagem").innerHTML="";
					document.getElementById("livre").value="1";
				} else {
					document.getElementById("identificador").className="textfieldMaxCharsState";
					document.getElementById("mensagem").innerHTML="Já existe uma empresa com esse endereço! Escolha outro.";
					document.getElementById("livre").value="";
				}
		}		
	}
    http.send(null);	

}


function checkIdentificadorVinho(identificador, vinho) {
	http.open('get', "/gateway.php?action=checkidentificadorvinho&identificador="+identificador+"&id="+vinho);
    http.onreadystatechange = function() {
		if(http.readyState == 4){
				var response = http.responseText
				if (response == "OK") {
					document.getElementById("identificador").className="textfieldValidState";
					document.getElementById("mensagem").innerHTML="";
					document.getElementById("livre").value="1";
				} else {
					document.getElementById("identificador").className="textfieldMaxCharsState";
					document.getElementById("mensagem").innerHTML="Já existe um vinho com esse endereço! Escolha outro.";
					document.getElementById("livre").value="";
				}
		}		
	}
    http.send(null);	

}

function checkIdentificadorEnologo(identificador, enologo) {
	http.open('get', "/gateway.php?action=checkidentificadorenologo&identificador="+identificador+"&id="+enologo);
    http.onreadystatechange = function() {
		if(http.readyState == 4){
				var response = http.responseText
				if (response == "OK") {
					document.getElementById("identificador").className="textfieldValidState";
					document.getElementById("mensagem").innerHTML="";
					document.getElementById("livre").value="1";
				} else {
					document.getElementById("identificador").className="textfieldMaxCharsState";
					document.getElementById("mensagem").innerHTML="Já existe um enólogo com esse endereço! Escolha outro.";
					document.getElementById("livre").value="";
				}
		}		
	}
    http.send(null);	

}


function checkorder(order) {

	http.open('get', "/gateway.php?action=checkorder&order="+order);
	messageObj.setSize(150,50);	
	messageObj.setHtmlContent("aguarde, a obter a ordem de encomenda...");
	messageObj.display();	
    http.onreadystatechange = function() {
		if(http.readyState == 4){
				var response = http.responseText

				if (response.length > 0) {
					window.open("/gateway.php?action=checkorder&order="+order, "ordem", "");
					messageObj.close();						
				} else {
					messageObj.setHtmlContent("não foi possível obter a ordem de encomenda<br><a href='javascript:messageObj.close();'>fechar</a>");
					messageObj.display();						
				}

		}		
	}
    http.send(null);

	
}

function getDistrictFromPostal(postcode) {
	http.open('get', "/gateway.php?action=getDistrictFromPostal&postcode="+postcode);
	messageObj.setSize(150,50);	
	messageObj.setHtmlContent("aguarde, a localizar concelho na lista...");
	messageObj.display();	
    http.onreadystatechange = function() {
		if(http.readyState == 4){
				var response = http.responseText
				if (response.length > 0) {
					for (i=0; i<document.getElementById("concelho").length; i++) {
						if (document.getElementById("concelho").options[i].value==response) {
							document.getElementById("concelho").options[i].selected=true;
						}
						
					}
				}
				messageObj.close();
		}		
	}
    http.send(null);	

}


function carregaempresas(telefone) {
	if (telefone.length>4) {
		http.open('get', '/gateway.php?action=checkEmpresa&telefone='+telefone);
		http.onreadystatechange = function() {
			if(http.readyState == 4){
				var response = http.responseText;

					document.getElementById("resultados").innerHTML="<p>Resultados/Seleccione a sua empresa (clique para seleccionar):</p><p>"+response+"</p>";

			}		
		}
		http.send(null);
		document.getElementById("btn_enviar").disabled=false;
		document.getElementById("btn_enviar2").disabled=false;
	}
}


function carregaempresas2(telefoneOuNome) {

		http.open('get', '/gateway.php?action=checkEmpresa&telefoneNome='+telefoneOuNome);
		http.onreadystatechange = function() {
			if(http.readyState == 4){
				var response = http.responseText;

					document.getElementById("resultados").innerHTML="<p>Resultados/Seleccione a sua empresa (clique para seleccionar):</p><p>"+response+"</p>";

			}		
		}
		http.send(null);
		document.getElementById("btn_enviar").disabled=false;

}

function carregavinho(vinho,empresa) {

		http.open('get', '/gateway.php?action=checkVinho&vinho='+vinho+"&empresa="+empresa);
		http.onreadystatechange = function() {
			if(http.readyState == 4){
				var response = http.responseText;

					document.getElementById("resultados").innerHTML="<p>Resultados/Seleccione o vinho (clique para seleccionar):</p><p>"+response+"</p>";

			}		
		}
		http.send(null);
		document.getElementById("btn_enviar").disabled=false;

}


function carregaconcelhos(distrito) {
    http.open('get', '/gateway.php?action=concelhos&distrito='+distrito);
	messageObj.setSize(150,50);	
	messageObj.setHtmlContent("aguarde, a carregar lista de concelhos...");
	messageObj.display();
    http.onreadystatechange = function() {
		if(http.readyState == 4){
			var response = http.responseText;
			if (response.length > 0) {
				document.getElementById("concelholist").innerHTML="<select id='concelho' name='concelho'>"+response+"</select>";
				document.getElementById("concelho").onchange=function() {
					carregatipocozinha(document.getElementById('distrito').options[document.getElementById('distrito').selectedIndex].value,this.options[this.selectedIndex].value );
				}
			}
			carregatipocozinha(distrito,'');
			messageObj.close();
		}		
	}
    http.send(null);
}

function carregasubregiao(regiao) {
    http.open('get', '/gateway.php?action=subregiao&regiao='+regiao);
	messageObj.setSize(150,50);	
	messageObj.setHtmlContent("aguarde, a carregar lista de sub-regiões...");
	messageObj.display();
    http.onreadystatechange = function() {
		if(http.readyState == 4){
			var response = http.responseText;
			if (response.length > 0) {
				document.getElementById("subregiaolist").innerHTML="<select id='subregiao' name='subregiao'>"+response+"</select>";
			}
			messageObj.close();
		}		
	}
    http.send(null);
}


function carregatipocozinha(distrito,concelho) {
    http.open('get', '/gateway.php?action=tiposcozinha&distrito='+distrito+'&concelho='+concelho);
	messageObj.setSize(150,50);	
	messageObj.setHtmlContent("aguarde, a carregar tipos de cozinha...");
	messageObj.display();
    http.onreadystatechange = function() {
		if(http.readyState == 4){
			var response = http.responseText;
			if (response.length > 0) {
				document.getElementById("tipocozinhalist").innerHTML="<select name='tipo_cozinha' id='tipo_cozinha'>"+response+"</select>";
			}
			messageObj.close();
		    carregatiporestaurante(document.getElementById("distrito").options[document.getElementById("distrito").selectedIndex].value,document.getElementById("concelho").options[document.getElementById("concelho").selectedIndex].value);
		}		
	}
    http.send(null);
}


function carregatiporestaurante(distrito,concelho) {
    http.open('get', '/gateway.php?action=tiposrestaurante&distrito='+distrito+'&concelho='+concelho);
	messageObj.setSize(150,50);	
	messageObj.setHtmlContent("aguarde, a carregar tipos de restaurante...");
	messageObj.display();
    http.onreadystatechange = function() {
		if(http.readyState == 4){
			var response = http.responseText;
			if (response.length > 0) {
				document.getElementById("tiporestaurantelist").innerHTML="<select name='tipo_restaurante' id='tipo_restaurante'>"+response+"</select>";
			}
			messageObj.close();
			carregatipoambiente(document.getElementById("distrito").options[document.getElementById("distrito").selectedIndex].value,document.getElementById("concelho").options[document.getElementById("concelho").selectedIndex].value);
		}		
	}
    http.send(null);
}

function carregatipoambiente(distrito,concelho) {
    http.open('get', '/gateway.php?action=tiposambiente&distrito='+distrito+'&concelho='+concelho);
	messageObj.setSize(150,50);	
	messageObj.setHtmlContent("aguarde, a carregar tipos de ambiente...");
	messageObj.display();
    http.onreadystatechange = function() {
		if(http.readyState == 4){
			var response = http.responseText;
			if (response.length > 0) {
				document.getElementById("tipoambientelist").innerHTML="<select name='tipo_ambiente' id='tipo_ambiente'>"+response+"</select>";
			}
			messageObj.close();
		}		
	}
    http.send(null);
}


function getLocalidade(from) {
	http.open('get', "/gateway.php?action=getLocalidade&cp="+from);
	messageObj.setSize(150,50);	
	messageObj.setHtmlContent("aguarde, a obter a localidade através do código postal...");
	messageObj.display();	
    http.onreadystatechange = function() {
		if(http.readyState == 4){
				var response = http.responseText;
				if (response.length > 0) {
					document.getElementById("localidade").value=response;
				}
				messageObj.close();
				getDistrictFromPostal(document.getElementById("codigopostal1").value);
		}		
	}
    http.send(null);
}

function checkEmail(qual) {
	http.open('get', "/gateway.php?action=checkEmail&email="+qual.value);
    http.onreadystatechange = function() {
		if(http.readyState == 4){
				var response = http.responseText;
				if (response.length > 0) {
					alert(response);
					qual.className="corrigir";
				} else {
					qual.className="";
				}
		}		
	}
    http.send(null);
}

function checkUser(qual) {
	
	var ck_username = /^[A-Za-z0-9_]{3,20}$/;
	
	if (!ck_username.test(qual.value)) {
  		alert("[Nome de usuário com caracteres inválidos. Apenas são autorizadas os seguintes caracteres:] A-Z, 0-9 , _ ");	
		qual.className="corrigir";
	} else {
		qual.className="";
		http.open('get', "/gateway.php?action=checkUser&user="+qual.value);
		http.onreadystatechange = function() {
			if(http.readyState == 4){
					var response = http.responseText;
					if (response.length > 0) {
						alert(response);
						qual.className="corrigir";
					} else {
						qual.className="";
					}
			}		
		}
		http.send(null);
	}
}

function toggleLayer( whichLayer )
{
	  var elem, vis;
	  if( document.getElementById ) // this is the way the standards work
		elem = document.getElementById( whichLayer );
	  else if( document.all ) // this is the way old msie versions work
		  elem = document.all[whichLayer];
	  else if( document.layers ) // this is the way nn4 works
		elem = document.layers[whichLayer];
	  vis = elem.style;
	  // if the style.display value is blank we try to figure it out here
	  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
		vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
	  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}	

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.alt; if (!nm){ nm=val.name}; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- O campo '+nm+' deve conter um endereço de email.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- O campo '+nm+' deve conter um número.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- O campo '+nm+' deve conter um número entre '+min+' e '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- O campo '+nm+' deve ser preenchido.\n'; }
  } if (errors) alert('Ocorreram os seguintes erros:\n'+errors);
  document.MM_returnValue = (errors == '');
}


