var version = "-v3";
var D=document;
var Map;
var W=new Object();
var currentMap="default";
var printImage=null;
var baseUrl="./";

//Linguagem
var sLang="PT";

var query = window.location.search.substring(1);
var Params = parseParams();
			
//inicializao por default dos parametros
if (!Params.lang)
	Params["lang"] = "PT";
if ((Params.lang != "EN") && (Params.lang != "ES") && (Params.lang != "PT"))
	Params["lang"] = "PT";
sLang = Params.lang;
			
//var helpTitle = getVarI18N(sLang,"helpTitle1");
var helpTitle = "Ajuda";

function localClass(fileName,localName){
	this.file=fileName;
	this.local=localName;
}

var arrLocal=new Array(
new localClass("Porto","Porto")
);

//Variaveis relacionadas com a informao sobre o utilizador
var userID=0;
var userRef=null;
var userDataSaved=true;


function grupoClass(design,grupo){
	this.design=design;
	this.grupo=grupo;
}

var arrGrupos=new Array(
		new grupoClass("Restaurao","eating"),
		new grupoClass("Noite","nightlife"),
		new grupoClass("Natureza","nature"),
		new grupoClass("Compras","shopping"),
		new grupoClass("Sade","health"),
		new grupoClass("Segurana","safety"),
		new grupoClass("Transportes","transports"),
		new grupoClass("Utilidades","utilities"),
		new grupoClass("Cultura","culture"),
		new grupoClass("Empresas","companies"),
		new grupoClass("Desporto","sports"),
		new grupoClass("Alojamento","sleeping"),
		new grupoClass("Estado","government"),
		new grupoClass("Educao","education"),
		new grupoClass("Turismo","tourism"),
		new grupoClass("Monumentos","monuments")
		);

var arrGruposVisibility=new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

function servicosClass(nomeServico,serv,items,designacao){
	this.nome=nomeServico;
	this.servico=serv;
	this.designacao=designacao;
	this.w=0;
	this.imageTips=items;
	this.ligado=false;
}

var arrServicos=new Array(
	new servicosClass("standard","ServicoStandard",Array("btnInformacao","btnImprimir","btnCopiar","btnEmail","btnAjuda"),"brnBasico"),
	new servicosClass("cartografia","ServicoGeoref",Array("btnMover","btnAproximar","btnAfastar","btnAmpliarZona","btnLupa","btnVerTudo"),"btnNavegacao"),
	new servicosClass("pessoal","ServicoUser",Array("btnInserirPonto","btnInserirTexto","btnDesenharLinha","btnApagarObjecto","btnGuardarConfiguracaoPessoal"),"myMordomo"),
	new servicosClass("percursos","ServicoPercursos",Array("btnPontoDePartida","btnPontoDeChegada","btnCalcularPercurso"),"Routing")
);

arrServicos[0].ligado=true; arrServicos[1].ligado=true; //Sempre Ligado


var arrServicosJava = new Array(
	'ServicoRgn',
	'ServicoVias',
	'ServicoPnt',
	'ServicoProject',
	'ServicoUser',
	'ServicoNaveg',
	'ServicoPoi',
	'ServicoPercursos',
	'ServicoOverlay',
	'ServicoNotificador',
	'ServicoListaPOIs',
	'ServicoStats'
);


function isSafari()
{
	var agt=navigator.userAgent.toLowerCase();
	if (agt.indexOf("safari") != -1) return true;
	return false;
}

function isIE()
{
	var agt=navigator.userAgent.toLowerCase();
	if (agt.indexOf("msie") != -1) return true;
	return false;
}

function isKonqueror()
{
	var agt=navigator.userAgent.toLowerCase();
	if (agt.indexOf("konqueror") != -1) return true;
	return false;
}


function getSize() {
	var myWidth = 0, myHeight = 0;
	if( typeof( window.innerWidth ) == 'number' ) {
		//Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if( document.documentElement &&
			  ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		//IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
		//alert("IE 6+ in 'standards compliant mode'");
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		//IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
		//alert("IE 4 compatible");
	}
	//window.alert( 'Width = ' + myWidth );
	//window.alert( 'Height = ' + myHeight );
	var size=new Object();
	size["w"]=myWidth;
	size["h"]=myHeight;
	return size;
}

function criarMordomo(){
	if (!baseUrl)
		baseUrl="";
	
	var h = '100%';
	var w = '100%';

	if(isSafari()) {
		size = getSize();
		h = size["h"]-193;
		w = size["w"]-210;
	}

	if(isSafari() || isKonqueror()) {
		D.write("<applet style='margin: 0px;' code='MordomoWeb' height='"+h+"' width='"+w+"' name='MordomoWeb' id='MordomoWeb' codebase='"+baseUrl+"' archive='"+baseUrl+"MordomoWeb"+version+".jar' MAYSCRIPT>");
		
		for (i=0; i<arrServicosJava.length; i++) 
			D.write("<param name='Service"+(i+1)+"' value='"+arrServicosJava[i]+"'>");
	
		Map=D.applets["MordomoWeb"];
	} else {
		D.write('<OBJECT id="MordomoWeb" classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="'+w+'" height="'+h+'" codebase="http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=1,1,0,0">');
		D.write('<PARAM NAME = CODE VALUE = "MordomoWeb" >');
		D.write('<PARAM NAME = CODEBASE VALUE = "'+baseUrl+'" >');
		D.write('<PARAM NAME = ARCHIVE VALUE = "'+baseUrl+'MordomoWeb'+version+'.jar" >');
		D.write('<PARAM NAME = NAME VALUE = "MordomoWeb" >');
		D.write('<PARAM NAME = MAYSCRIPT VALUE = true >');
		D.write('<PARAM NAME = "type" VALUE="application/x-java-applet;version=1.1">');
		
		var serv_str = '';
		for (i=0; i<arrServicosJava.length; i++) {
			n = i+1;
			D.write('<PARAM NAME = "Service'+n+'" VALUE ="'+arrServicosJava[i]+'">');
			serv_str += 'Service'+n+'="'+arrServicosJava[i]+'" ';
		}

		D.write('<COMMENT>');
		D.write('<EMBED id="MordomoWeb2" type="application/x-java-applet;version=1.1" CODE="MordomoWeb" CODEBASE="'+baseUrl+'" ARCHIVE="'+baseUrl+'MordomoWeb'+version+'.jar" NAME="MordomoWeb" WIDTH="'+w+'" HEIGHT="'+h+'" MAYSCRIPT=true '+
 		serv_str +
		'pluginspage="http://java.sun.com/products/plugin/index.html#download">');

		D.write('<NOEMBED>  No Java 2 SDK, Standard Edition v 1.4 support for APPLET!! </NOEMBED>');
		D.write('</EMBED>');
		D.write('</COMMENT>');
		D.write('</OBJECT>');

		if (isIE())	Map=D.getElementById("MordomoWeb");
		else Map=D.getElementById("MordomoWeb2");
	}
}


function criarNaveg(width,height){
	if (!width)
		width = 130;
	if (!height)
		height = 112;

	D.write('<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" WIDTH="'+width+'" HEIGHT="'+height+'" codebase="http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=1,1,0,0">');
    D.write('<PARAM NAME = CODE VALUE = "Naveg" >');
    D.write('<PARAM NAME = CODEBASE VALUE = "'+baseUrl+'" >');
	D.write('<PARAM NAME = ARCHIVE VALUE = "'+baseUrl+'MordomoWeb'+version+'.jar" >');
	D.write('<PARAM NAME = NAME VALUE = "Naveg" >');
	D.write('<PARAM NAME = MAYSCRIPT VALUE = true >');
    D.write('<PARAM NAME = "type" VALUE="application/x-java-applet;version=1.1">');
	D.write('<COMMENT>');
	D.write('<EMBED type="application/x-java-applet;version=1.1"  CODE = "Naveg" CODEBASE="'+baseUrl+'" ARCHIVE = "'+baseUrl+'MordomoWeb'+version+'.jar" NAME = "'+width+'" WIDTH = "130" HEIGHT = "'+height+'" MAYSCRIPT = true  pluginspage="http://java.sun.com/products/plugin/index.html#download">');
	D.write('<NOEMBED> No Java 2 SDK, Standard Edition v 1.4 support for APPLET!! </NOEMBED>');
	D.write('</EMBED>');
	D.write('</COMMENT>');
	D.write('</OBJECT>');
}

function criarToolbar(){
	if(!baseUrl)
		baseUrl="";
	D.write("<td width=5></td>\n");
	for (i=0; i<arrServicos.length; i++) {
		for (var j=0; j<arrServicos[i].imageTips.length; j++) {

			//FIXME passa a frente o boto de copiar e de email
			if (i==0 && (j==2 || j==3)) continue;
			//FIXME passa a frente o boto save user data
			if (i==2 && j==4) continue;

			D.write("<td style=\"cursor: hand;\" onMouseDown=accaoBotaoToolbar(\""+i+"\","+(j+1)+") width=23 align=center>");
			D.write("<img alt=\"\" id=\""+arrServicos[i].nome+""+(j+1)+"\" border=0 height=19 src=\""+baseUrl+"images/"+arrServicos[i].nome+""+(j+1)+"off.gif\"></td>\n");
		}
		if(i<arrServicos.length-1) D.write("<td width=10></td>\n");
	}
	D.write("<td width=5></td>\n");
	//Activar o boto "Pointer" do ServicoStandard
	D.getElementById(arrServicos[0].nome+"1").src = baseUrl+"images/"+(arrServicos[0].nome+"1")+"on.gif";
}

function criarGroupButtons(){
	p=0;
	D.write("<table width=140 border=0 cellspacing=0 cellpadding=0>");
	//Assumindo que so 15 grupos
	for (i=0; i<4; i++)
	{
		D.write("<tr height=38 align=center valign=center>");

		for (j=0; j<4; j++) {
			if(3-j<=i /*&& !(i==3 && j==3)*/) {
				D.write("<td width=38 id=groupButton"+p+" style='background: transparent url("+baseUrl+"images/poi_off.gif) no-repeat center center;'>");
				D.write("<img id=\""+arrGrupos[p].grupo+"\" !width=30 alt=\""+arrGrupos[p].design+"\" src=\""+baseUrl+"images/groups20/"+arrGrupos[p].grupo+".gif\" onmouseover=\"javascript:changeStateGroupButton('"+p+"','1','0');\" onmouseout=\"javascript:changeStateGroupButton('"+p+"','0','0');\" onclick=\"javascript:changeStateGroupButton('"+p+"','2','1');Map.java_refresh();\"></td>");
				p++;
			} else D.write("<td width=38></td>");
		}
		D.write("</tr>");
	}
	for (i; i<7; i++)
	{
		D.write("<tr height=38 align=center valign=center>");
		for (j=0; j<4; j++) {
			if(3-(7-i)<j) {
				D.write("<td width=38 id=groupButton"+p+" style='background: transparent url("+baseUrl+"images/poi_off.gif) no-repeat center center;'>");
				D.write("<img id=\""+arrGrupos[p].grupo+"\" width=30 alt=\""+arrGrupos[p].design+"\" src=\""+baseUrl+"images/groups20/"+arrGrupos[p].grupo+".gif\" onmouseover=\"javascript:changeStateGroupButton('"+p+"','1','0');\" onmouseout=\"javascript:changeStateGroupButton('"+p+"','0','0');\" onclick=\"javascript:changeStateGroupButton('"+p+"','2','1');Map.java_refresh();\"></td>");
				p++;
			} else D.write("<td width=38></td>");
		}
		D.write("</tr>");
	}
	D.write("<tr align=center valign=center style='font: bold 10px verdana; color:#003772;'><td colspan=4>Pontos de Interesse</td></tr>");
	//D.write("<tr align=center valign=center style='background: #8FBE00; font: bold 8px verdana; color:#003772;'>");
	D.write("<tr align=center valign=center style='background: #003772; font: bold 8px verdana; color:#FFF;'>");
	D.write("<td id='SelectAllButton' title='Seleccionar todos' style='cursor:hand; border: solid 1px #ECF5E4;' colspan=2 onclick='javascript:changeStateSelectAllButton(1);'>+</td>");
	D.write("<td id='SelectNoneButton' title='Seleccionar nenhum' style='cursor:hand; border: solid 1px #ECF5E4;' colspan=2 onclick='javascript:changeStateSelectAllButton(0);'>-</td></tr>");
	D.write("</table>");
}

function accaoBotaoToolbar(serv,item){
	var servico=arrServicos[serv].servico;
	var opcao=arrServicos[serv].imageTips[item-1];

	// Dispatch do evento de buttonPressed
	if (servico == "ServicoStandard") {
		switch (item){
			case 2: // print
					Map.java_print();
					break;
			case 3: // clipboard
					alert("Funcionalidade indisponvel!");
					break;
			case 4: // mail
					servico="ServicoUser";
					//E necessario mudar o valor do item,porque senao ele entra em baixo e
					//em vez de enviar email,grava os dados...
					item=99;
					break;
			case 5: // ajuda
					W["help"]=window.open(baseUrl+'ajuda.php?lang='+sLang+'&title='+helpTitle+'&file=ajuda_main','help','toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=400,height=520');
					break;
		}
	}
	if (servico == "ServicoUser") {
		switch (item) {
			case 5: //Save
				funcSave();
				return;
			case 99: //email
				break;
			default: userDataSaved=false; break;
		}
	}

	//alert(servico + " " + item);
	Map.java_buttonPressed(servico,item);

	// Fazer reset de todos os botes

	for (i=0; i<arrServicos.length; i++) {
		if (arrServicos[i].nome == "queixa")
			continue;
		if (arrServicos[i].nome == "percursos") {
			for (j=0; j<2; j++) {
				str=D.getElementById(arrServicos[i].nome+""+(j+1)).src;
				str=str.substr(str.length - 6,2);
				if (str == "on")
					D.getElementById(arrServicos[i].nome+""+(j+1)).src=baseUrl+"images/"+(arrServicos[i].nome+""+(j+1))+"off.gif";
				}
			continue;
		}
		for (j=0; j<arrServicos[i].imageTips.length; j++){

			//FIXME passa a frente o boto de copiar e de email
			if (i==0 && (j==2 || j==3)) continue;
			//FIXME passa a frente o boto save user data
			if (i==2 && j==4) continue;

			D.getElementById(arrServicos[i].nome+""+(j+1)).src=baseUrl+"images/"+(arrServicos[i].nome+""+(j+1))+"off.gif";
		}
	}

	// Fazer o setting do boto escolhido
	if (servico == "ServicoStandard") {
		switch (item){
			case 1:
				D.getElementById(arrServicos[serv].nome+item).src=baseUrl+"images/"+(arrServicos[serv].nome+item)+"on.gif";
				break;
			case 2: case 3: case 5:
				//Activar o boto "Pointer" do ServicoStandard
				D.getElementById(arrServicos[0].nome+"1").src=baseUrl+"images/"+(arrServicos[0].nome+"1")+"on.gif";
				break;
		}
	}

	if (servico == "ServicoGeoref") {
		switch (item){
			case 1: case 4: case 5:
				D.getElementById(arrServicos[serv].nome+item).src=baseUrl+"images/"+(arrServicos[serv].nome+item)+"on.gif";
				break;
			case 2: case 3: case 6:
				//Activar o boto "Pointer" do ServicoStandard
				D.getElementById(arrServicos[0].nome+"1").src=baseUrl+"images/"+(arrServicos[0].nome+"1")+"on.gif";
				break;
		}
	}

	if (servico == "ServicoPercursos") {
		switch (item){
			case 1: // Start Point
			case 2: // End Point
				D.getElementById(arrServicos[serv].nome+item).src=baseUrl+"images/"+(arrServicos[serv].nome+item)+"on.gif";
				break;
			case 3: // Calculate Point
				//Activar o boto "Pointer" do ServicoStandard
				D.getElementById(arrServicos[0].nome+"1").src=baseUrl+"images/"+(arrServicos[0].nome+"1")+"on.gif";
				break;
		}
	}

	if (servico == "ServicoQueixa") {
		switch (item){
			case 1: // show/hide fotos
				if (Map.java_isButtonOn(servico,item))
					D.getElementById(arrServicos[serv].nome+item).src=baseUrl+"images/"+(arrServicos[serv].nome+item)+"on.gif";
				else {
					D.getElementById(arrServicos[serv].nome+item).src=baseUrl+"images/"+(arrServicos[serv].nome+item)+"off.gif";
					D.getElementById(arrServicos[0].nome+"1").src=baseUrl+"images/"+(arrServicos[0].nome+"1")+"on.gif";
				}
				//Activar o boto "Pointer" do ServicoStandard
				break;
		}
	}

	if (servico == "ServicoUser") {
		switch (item){
			case 1: // punaise
			case 2: // texto
			case 3: // polgono
				if (Map.java_isButtonOn(servico,item))
					D.getElementById(arrServicos[serv].nome+item).src=baseUrl+"images/"+(arrServicos[serv].nome+item)+"on.gif";
				break;
			case 4: // apagar
			case 5: // gravar
				break;
			case 99: // email
				//Activar o boto "Pointer" do ServicoStandard
				D.getElementById(arrServicos[0].nome+"1").src=baseUrl+"images/"+(arrServicos[0].nome+"1")+"on.gif";
				break;
		}
	}
}

function funcSave(){
	userID=Map.java_saveUserData("ServicoUser",userID);
	writeCookie("CityHelpEuroID",userID);
	settingsPOIs=JS_getPOIs();
	writeCookie("CityHelpEuroSettingsPOIs",settingsPOIs);
	msg=getVarI18N(sLang,"userDataSaved");
	alert(msg);
	userDataSaved=true;
}

function JS_funcPrint(){
	jver=Map.java_version();
	/*
	if (jver <= 1){
		printImage=Map.java_print1();
	}
	else {
		printImage=Map.java_print2();
	}
	*/
	printImage=Map.java_print3();
	width=640;
	height=600;
	W["print"]=window.open(baseUrl+"imprimir.php?lang="+sLang+"&version="+version,"print","left="+(screen.availWidth / 2 - width / 2)+",top="+(screen.availHeight / 2 - height / 2)+",toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width="+width+",height="+height);
	W["print"].focus();
}

var current=-1;

function changeStateGroupButton(which,state,refresh){
	/*elem=eval('groupButton'+which);

	if (elem == current)
		return;

	if (state == 2) {
		if (arrGruposVisibility[which] == 0) {
			elem.style.backgroundImage = 'url('+baseUrl+'images/poi_on.gif)';
			arrGruposVisibility[which]=1;
		} else {
			elem.style.backgroundImage = 'url('+baseUrl+'images/poi_off.gif)';
			arrGruposVisibility[which]=0;
		}
		if (refresh == '1')
			Map.java_showContentType("ServicoPoi",arrGrupos[which].grupo,arrGruposVisibility[which]);
	} else {
		if (state == 1) {
			elem.style.cursor="hand";
			//elem.style.borderColor="548D9E";
		} else {
			elem.style.cursor="";
			//elem.style.borderColor="FFFFFF";
		}
	}*/
}

function changeStateSelectAllButton(state){
	if (state == 0)
		Map.java_showContentType("ServicoPoi",0);
	else {
		Map.java_showContentType("ServicoPoi",1);
	}
	for (i=0; i<arrGrupos.length; i++) {
		arrGruposVisibility[i]=state ^1;
		changeStateGroupButton(i,2,0);
	}
}

function setStateSubgroupButton(subgroup,state,refresh){
	gName=Map.java_getGroup("ServicoPoi",subgroup);
	if (gName != "")
		setStateGroupButton(gName,state,refresh);
}

function setStateGroupButton(gName,state,refresh){
	for (g=0; g<arrGrupos.length; g++) {
		if (arrGrupos[g].grupo == gName) {
			if (arrGruposVisibility[g] != state) {
				arrGruposVisibility[g]=state ^1;
				changeStateGroupButton(g,2,refresh);
			}
			break;
		}
	}
}

function getLocationRef(){
	if(Params.refKey && Params.refKey!="ERROR") {
		userRef=Params.refKey;
		return getDataByRef(userRef);
	}
	return 0;
}

function getDataByRef(ref){
	userID=Map.java_getUserFromRef("ServicoUser",ref);
	if (!userID){
		msg=getVarI18N(sLang,"invalidRef");
		alert(msg);
	}
	else {
		Map.java_getUserData("ServicoUser",userID);
		return 1;
	}
	return 0;
}

function getLocationFromCookie(){
	id=0;

	str=readCookie("CityHelpEuroMap");
	if ((str != null) && (str != "")) {
		currentMap=str;
	}
	Map.requestFocus();
	Map.java_changeProject("ServicoProject",currentMap,sLang);

	str=readCookie("CityHelpEuroLoc");
	if ((str != null) && (str != "")) {
		Map.requestFocus();
		loc=Map.java_setLocationFromStr("ServicoGeoref",str);
	}

	str=readCookie("CityHelpEuroID");
	if (str != null) {
		id=parseInt(str);
	}

	settingsPOIs=0;
	str=readCookie("CityHelpEuroSettingsPOIs");
	if (str != null)
		eval("settingsPOIs=" + str + ";");
	JS_setPOIs(settingsPOIs);

	return id;
}

function writeCookie(name,value){
	var argv=writeCookie.arguments;
	var argc=writeCookie.arguments.length;
	date=new Date;
	date.setMonth(date.getMonth()+12);
	var expires=date;
	var path=(argc > 3) ? argv[3] : null;
	var domain=(argc > 4) ? argv[4] : null;
	var secure=(argc > 5) ? argv[5] : false;
	D.cookie =	name+"="+escape(value)+
						((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
						((path==null) ? "" : ("; path="+path))+
						((domain==null) ? "" : ("; domain="+domain))+
						((secure==true) ? "; secure" : "");
}

function getCookieVal(offset){
	var endstr=D.cookie.indexOf (";",offset);
	if (endstr == -1)
		endstr=D.cookie.length;
	return unescape(D.cookie.substring(offset,endstr));
}

function readCookie(name){
	var arg=name+"=";
	var alen=arg.length;
	var clen=D.cookie.length;
	var i=0;
	while (i<clen) {
		var j=i+alen;
		if (D.cookie.substring(i,j) == arg)
			return getCookieVal(j);
		i=D.cookie.indexOf(" ",i)+1;
		if (i==0)
			break;
	}
	return null;
}

function viewRecl()
{
	if (Params.recX && Params.recY) {
		loc = Params.recX+" "+Params.recY+" 1.0";
		Map.java_setLocationFromStr("ServicoGeoref", loc);
		Map.java_buttonPressed("ServicoQueixa", 11);
	}
}

function viewPoi(poi)
{
	if (poi) {
		Map.java_selectPoi("ServicoPoi",poi);
	}
}

function onLoad(){
	img = new Image();
	img.src = baseUrl+"images/poi_on.gif";
	//alert("onLoad "+Map);
	//D.getElementById("abc32").height = Map.getHeight();
	//D.getElementById("abc32").height = '800';
	Map.java_toConsole("CityHelp Web - version "+version);
	updateI18N(sLang);
	Map.java_initAll();

	if (getLocationRef()) {
	} else {
		if (currentMap != "default")
			Map.java_changeProject("ServicoProject",currentMap,sLang);
		if ((currentMap == "default") && (userID=getLocationFromCookie())) {
			Map.java_getUserData("ServicoUser",userID);
		} else {
			userID=0;
		}
	}
	viewRecl();
	viewPoi(Params.localiza);
	if (Params.pois) JS_setPOIs(Params.pois);
	Map.requestFocus();
}

function onUnload(){

	Map.java_callService("ServicoStats","F_close",null);

	for (var i in W) {
		if (W[i] && W[i].open && !W[i].closed) W[i].close();
	}

	if (userRef==null) {
		/*
		if (!userDataSaved){
				msg=getVarI18N(sLang,"saveUserDataQuestion");
				var save=confirm(msg);
				if (save == true)
					funcSave();
		}
		*/
		if (userID != 0){
			writeCookie("CityHelpEuroID",userID);
		}

		writeCookie("CityHelpEuroMap",currentMap);
		loc=Map.java_getLocationStr("ServicoGeoref");
		writeCookie("CityHelpEuroLoc",loc);
		settingsPOIs=JS_getPOIs();
		writeCookie("CityHelpEuroSettingsPOIs",settingsPOIs);
	}
}

// Pesquisa
function funcPesquisa(servicoID){
	servico="";
	servicoNome="";
	str="";

	switch (servicoID) {
		case 1:
			servico="Vias";
			servicoNome="ServicoVias";
			break;
		case 2:
			servico="Poi";
			servicoNome="ServicoPoi";
			break;
	}
	str=D.getElementById("txtProcura"+servico).value;
	id=Map.java_getServiceID(servicoNome);
	if (id < 0)
		return;

	resN=Map.java_pesquisa(id,str,10);
   if (resN < 0) {
		resTotal=resN*(-1);
		resN=10;
	} else {
		resTotal=resN;
	}

	switch (resN) {
		case 0:
			msg=getVarI18N(sLang,"noResults");
			alert(msg);
			break;
		case 1:
			W["Results"+servico]=window.open(baseUrl+"results"+servico+".php?lang="+sLang+"&servico="+id+"&str="+str+"&num="+resN+"&total="+resTotal,"Results"+servico,"toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width=400,height=340");
			//W["Results"+servico].blur();
			window.focus();
			funcViewResult(id,0);
			break;
		default:
			W["Results"+servico]=window.open(baseUrl+"results"+servico+".php?lang="+sLang+"&servico="+id+"&str="+str+"&num="+resN+"&total="+resTotal,"Results"+servico,"toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width=400,height=340");
			W["Results"+servico].focus();
			break;
	}
}

function funcGetResult(s,r){
	return Map.java_getResult(s,r);
}

function funcGetResultWF(s,r,flag){
	return Map.java_getResult(s,r,flag);
}

function funcViewResult(s,r){
	Map.java_viewResult(s,r);
}

function funcSelectPoi(s,subgroup,p){
	Map.java_selectPoi(s,p);
}

//Funes que interagem com o MordomoWeb
function JS_alert(msg){
	alert(msg);
}

function JS_alertVar(v){
	msg=getVarI18N(sLang,v);
	alert(msg);
}

function JS_setProject (map,mapName){
	currentMap=map;
	currentMapName=mapName;
	//D.all["localidade"].innerHTML="&nbsp;" + mapName;
}

function JS_getLbsPhone(){
	txt=D.getElementById("txtProcuraRua").value;
	Map.java_setLbsPhone("ServicoLbs",txt);
}

function JS_getLocationRef(){
	//FIXME Apagar assim que possivel. Hugo
}

function JS_openWindow (url,name,props){
	W[name]=window.open(url,name,props);
	W[name].focus();
}

function JS_verFotoEuro (id){
	W["foto"]=window.open(baseUrl+"showPhotoEuro.php?lang="+sLang+"&id="+id,"foto","toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width=640,height=560");
	W["foto"].focus();
}

function JS_verFoto1 (id,design){
	W["foto"]=window.open(baseUrl+"showPhoto.php?lang="+sLang+"&local="+currentMap+"&id="+id+"&design="+design,"foto","toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width=640,height=560");
	W["foto"].focus();
}

function JS_verFoto360 (id,design){
	W["foto360"]=window.open(baseUrl+"showPhoto360.php?lang="+sLang+"&local="+currentMap+"&id="+id+"&design="+design,"foto360","toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width=380,height=390");
	W["foto360"].focus();
}

function JS_navegSetLocation (x,y,w,h){
	D.getElementById("Naveg").java_setLocation(x,y,w,h);
}

function JS_toolbarSetButtonState(button,state){
	D.getElementById(button).src=baseUrl+"images/"+(button)+state+".gif";
	if (state != "on")
		D.getElementById(arrServicos[0].nome+"1").src=baseUrl+"images/"+(arrServicos[0].nome+"1")+"on.gif";
}

function JS_getProject(){
	return currentMap;
}

function JS_changeProject(project){
	currentMap=project;
	Map.java_changeProject("ServicoProject",currentMap,sLang);
}

function JS_getPOIs(){
	pois=0;
	for (i=0; i<arrGrupos.length; i++)
		pois |= arrGruposVisibility[i] << i;
	return pois;
}

function JS_setPOIs(pois){
	for (i=0; i<arrGrupos.length; i++)
		arrGruposVisibility[i]=(pois & (1 << i))?1:0;
}

function JS_setStateGroupButton(gName,state,refresh){
	setStateGroupButton(gName,state,refresh);
}

// FROM MordomoWeb TO NAVEG
function JS_navegSetImage (img){
	D.getElementById("Naveg").java_setImage(img);
}

function JS_enviaMail(str){
	var linkURL=str+"%26lang="+sLang;
	window.open("mailto:?Subject=CityHelp&Body=%0A%0A"+linkURL+"%0A","");
}

function setStart(serv,sel){
	Map.java_viewResult(serv,sel);
	Map.java_unselectResults(serv);
	Map.java_buttonPressed("ServicoPercursos",11);
}

function setEnd(serv,sel){
	Map.java_viewResult(serv,sel);
	Map.java_unselectResults(serv);
	Map.java_buttonPressed("ServicoPercursos",12);
}

//Funes que interagem com o Naveg
function JS_navegSetHeight (h){
	//D.getElementById("Naveg").style.height=h;
	//D.all.Naveg.style.height=h;
}

function JS_centerFromNaveg (x,y){
	Map.java_setCenter("ServicoNaveg",x,y);
}

function JS_doAction (id){
	Map.java_doAction("ServicoNaveg",id);
}

//Funes que interagem com o ServicoPoi
function JS_getGruposState (){
	active="";
	for (i=0; i<arrGrupos.length; i++) {
		if (arrGruposVisibility[i] == 1) {
			arrGruposVisibility[i]=0;
			changeStateGroupButton(i,2,0);
			active += arrGrupos[i].grupo+" ";
		}
	}
	return active;
}

function JS_verConteudo (tipo,id){
	url = baseUrl+"showConteudo.php?lang="+sLang+"&local="+currentMap+"&tipo="+tipo+"&id="+id;
	if (Params.mod)
		url += "&mod="+Params.mod;
	W["conteudo"]=window.open(url,"conteudo","toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width=400,height=520");
	W["conteudo"].focus();
}

// Funes que interagem com o ServicoQueixa *****/
function JS_queixa(args){
	i = location.href.lastIndexOf('/');
	str = location.href.substring(0,i+1);
	W["queixa"]=window.open(baseUrl+"queixa.php?lang="+sLang+"&link="+str+"?"+args,"queixa","toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width=700,height=520");
	W["queixa"].focus();
}

// Funes que interagem com o ServicoPercursos *****/
function JS_verPercurso()
{
	servicoNome = "ServicoPercursos";
	id = Map.java_getServiceID(servicoNome);
	if (id < 0)
		return;
	W["percurso"] = window.open(baseUrl+"resultsPercurso.php?lang="+sLang+"&servico="+id,"ResultsPercurso","toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width=400,height=520");
	W["percurso"].focus();
}

// Funes que interagem com o ServicoNotificador *****/
function JS_onMapPick(x,y,x1,y1,x2,y2) {
	alert(x+","+y+"\n"+x1+","+y1+"\n"+x2+","+y2);
}


//Util
function parseParams(){
	var args=new Object();
	var query=window.top.location.search.substring(1); 	//Get query string.
	var pairs=query.split("&");				//Break at comma.
	for (var i=0; i < pairs.length; i++) {
		var pos=pairs[i].indexOf('=');		//Look for name=value
		var argname="";
		if (pos == -1)
			argname=pairs[i];
		argname=pairs[i].substring(0,pos);	//Extract the name
		if (argname.length == 0)
			argname="ERROR" + i;
		var value=pairs[i].substring(pos+1);		//Extracts the value
		if (value.length == 0)
			value="ERROR";
		args[argname]=unescape(value);
	}
	return args;
}

