var version = "154o";
var D=document;
var Map;
var W=new Object();
var currentMap="default";
var printImage=null;

function localClass(fileName,localName){
	this.file=fileName;
	this.local=localName;
}

var arrLocal=new Array(
new localClass("MaiaDigital","MaiaDigital")
);

//Variaveis relacionadas com a informação sobre o utilizador
var userID=0;
var userRef=null;
var userDataSaved=true;

//Linguagem
var sLang="PT";

function grupoClass(design,grupo){
	this.design=design;
	this.grupo=grupo;
}

var arrGrupos=new Array(
		new grupoClass("Restauração","eating"),
		new grupoClass("Noite","nightlife"),
		new grupoClass("Natureza","nature"),
		new grupoClass("Compras","shopping"),
		new grupoClass("Saúde","health"),
		new grupoClass("Segurança","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("Educação","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","tu5",Array("btnMover","btnAproximar","btnAfastar","btnAmpliarZona","btnLupa","btnVerTudo"),"btnNavegacao"),
	new servicosClass("pessoal","tv5",Array("btnInserirPonto","btnInserirTexto","btnDesenharLinha","btnApagarObjecto","btnGuardarConfiguracaoPessoal"),"myMordomo"),
	new servicosClass("percursos","tw3",Array("btnPontoDePartida","btnPontoDeChegada","btnCalcularPercurso"),"Routing"),
	new servicosClass("queixa","ty2",Array("btnQueixa"),"Queixa"),
	new servicosClass("marcador","ty5",Array("btnMarcador"),"Marcador")
);

arrServicos[0].ligado=true; arrServicos[1].ligado=true; //Sempre Ligado

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(){
	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' archive='MordomoWeb"+version+".jar,xpp3.jar,thinlet.jar' MAYSCRIPT>");
		D.write("<param name='Service1' value='tx4'>");
		D.write("<param name='Service2' value='tv6'>");
		D.write("<param name='Service3' value='tx2'>");
		D.write("<param name='Service4' value='tv2'>");
		D.write("<param name='Service5' value='tv5'>");
		D.write("<param name='Service6' value='tu7'>");
		D.write("<param name='Service7' value='tx3'>");
		D.write("<param name='Service8' value='tw3'>");
		D.write("<param name='Service9' value='tu4'>");
		D.write("<param name='Service10' value='ty6'>");
		D.write("<param name='Service11' value='ty2'>");
		D.write("<param name='Service12' value='ty5'>");
		D.write("<param name='Service13' value='tx6'>");
		D.write("<param name='Service14' value='tx8'>");
		D.write("<param name='Service15' value='ty3'>");

		D.write("</applet>");
		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 = ARCHIVE VALUE = "MordomoWeb'+version+'.jar,xpp3.jar,thinlet.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">');
		D.write('<PARAM NAME = "Service1" VALUE ="tx4">');
		D.write('<PARAM NAME = "Service2" VALUE ="tv6">');
		D.write('<PARAM NAME = "Service3" VALUE ="tx2">');
		D.write('<PARAM NAME = "Service4" VALUE ="tv2">');
		D.write('<PARAM NAME = "Service5" VALUE ="tv5">');
		D.write('<PARAM NAME = "Service6" VALUE ="tu7">');
		D.write('<PARAM NAME = "Service7" VALUE ="tx3">');
		D.write('<PARAM NAME = "Service8" VALUE ="tw3">');
		D.write('<PARAM NAME = "Service9" VALUE ="tu4">');
		D.write("<PARAM NAME = 'Service10' VALUE ='ty6'>");
		D.write('<PARAM NAME = "Service11" VALUE ="ty2">');
		D.write('<PARAM NAME = "Service12" VALUE ="ty5">');
		D.write('<PARAM NAME = "Service13" VALUE ="tx6">');
		D.write('<PARAM NAME = "Service14" VALUE ="tx8">');
		D.write('<PARAM NAME = "Service15" VALUE ="ty3">');
		D.write('<COMMENT>');
		D.write('<EMBED id="MordomoWeb2" type="application/x-java-applet;version=1.1" CODE="MordomoWeb" ARCHIVE="MordomoWeb'+version+'.jar,xpp3.jar,thinlet.jar" NAME="MordomoWeb" WIDTH="'+w+'" HEIGHT="'+h+'" MAYSCRIPT=true '+
 		'Service1="tx4" Service2="tv6" Service3="tx2" Service4="tv2" Service5="tv5" Service6="tu7" Service7="tx3" Service8="tw3" Service9="tu4" Service10="ty6" Service11="ty2" Service12="ty5" Service13="tx6" Service14="tx8" Service15="ty3" '+
		'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(){
	D.write('<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" WIDTH="130" HEIGHT="112" 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 = ARCHIVE VALUE = "MordomoWeb'+version+'.jar,xpp3.jar,thinlet.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" ARCHIVE = "MordomoWeb'+version+'.jar,xpp3.jar,thinlet.jar" NAME = "Naveg" WIDTH = "130" HEIGHT = "112" 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(){
	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 botão de copiar e de email
			if (i==0 && (j==2 || j==3)) continue;
			//FIXME passa a frente o botão 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=\"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 botão "Pointer" do ServicoStandard
	D.getElementById(arrServicos[0].nome+"1").src = "images/"+(arrServicos[0].nome+"1")+"on.gif";
}

function criarGroupButtons(){
	p=0;
	D.write("<table width=140 border=0 cellspacing=0 cellpadding=0>");
	//Assumindo que são 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(images/poi_off.gif) no-repeat center center;'>");
				D.write("<img id=\""+arrGrupos[p].grupo+"\" !width=30 alt=\""+arrGrupos[p].design+"\" src=\"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(images/poi_off.gif) no-repeat center center;'>");
				D.write("<img id=\""+arrGrupos[p].grupo+"\" width=30 alt=\""+arrGrupos[p].design+"\" src=\"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 indisponível!");
					break;
			case 4: // mail
					servico="tv5";
					//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('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 == "tv5") {
		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 botões

	for (i=0; i<arrServicos.length; i++) {
		if (arrServicos[i].nome == "queixa" || arrServicos[i].nome == "marcador")
			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="images/"+(arrServicos[i].nome+""+(j+1))+"off.gif";
				}
			continue;
		}
		for (j=0; j<arrServicos[i].imageTips.length; j++){

			//FIXME passa a frente o botão de copiar e de email
			if (i==0 && (j==2 || j==3)) continue;
			//FIXME passa a frente o botão save user data
			if (i==2 && j==4) continue;

			D.getElementById(arrServicos[i].nome+""+(j+1)).src="images/"+(arrServicos[i].nome+""+(j+1))+"off.gif";
		}
	}

	// Fazer o setting do botão escolhido
	if (servico == "ServicoStandard") {
		switch (item){
			case 1:
				D.getElementById(arrServicos[serv].nome+item).src="images/"+(arrServicos[serv].nome+item)+"on.gif";
				break;
			case 2: case 3: case 5:
				//Activar o botão "Pointer" do ServicoStandard
				D.getElementById(arrServicos[0].nome+"1").src="images/"+(arrServicos[0].nome+"1")+"on.gif";
				break;
		}
	}

	if (servico == "tu5") {
		switch (item){
			case 1: case 4: case 5:
				D.getElementById(arrServicos[serv].nome+item).src="images/"+(arrServicos[serv].nome+item)+"on.gif";
				break;
			case 2: case 3: case 6:
				//Activar o botão "Pointer" do ServicoStandard
				D.getElementById(arrServicos[0].nome+"1").src="images/"+(arrServicos[0].nome+"1")+"on.gif";
				break;
		}
	}

	if (servico == "tw3") {
		switch (item){
			case 1: // Start Point
			case 2: // End Point
				D.getElementById(arrServicos[serv].nome+item).src="images/"+(arrServicos[serv].nome+item)+"on.gif";
				break;
			case 3: // Calculate Point
				//Activar o botão "Pointer" do ServicoStandard
				D.getElementById(arrServicos[0].nome+"1").src="images/"+(arrServicos[0].nome+"1")+"on.gif";
				break;
		}
	}

	if (servico == "ty2") {
		switch (item){
			case 1: // show/hide Queixa
				if (Map.java_isButtonOn(servico,item))
					D.getElementById(arrServicos[serv].nome+item).src="images/"+(arrServicos[serv].nome+item)+"on.gif";
				else {
					D.getElementById(arrServicos[serv].nome+item).src="images/"+(arrServicos[serv].nome+item)+"off.gif";
					D.getElementById(arrServicos[0].nome+"1").src="images/"+(arrServicos[0].nome+"1")+"on.gif";
				}
				//Activar o botão "Pointer" do ServicoStandard
				break;
		}
	}

	if (servico == "ty2") {
		switch (item){
			case 1: // show/hide Marcador
				if (Map.java_isButtonOn(servico,item))
					D.getElementById(arrServicos[serv].nome+item).src="images/"+(arrServicos[serv].nome+item)+"on.gif";
				else {
					D.getElementById(arrServicos[serv].nome+item).src="images/"+(arrServicos[serv].nome+item)+"off.gif";
					D.getElementById(arrServicos[0].nome+"1").src="images/"+(arrServicos[0].nome+"1")+"on.gif";
				}
				//Activar o botão "Pointer" do ServicoStandard
				break;
		}
	}

	if (servico == "tv5") {
		switch (item){
			case 1: // punaise
			case 2: // texto
			case 3: // polígono
				if (Map.java_isButtonOn(servico,item))
					D.getElementById(arrServicos[serv].nome+item).src="images/"+(arrServicos[serv].nome+item)+"on.gif";
				break;
			case 4: // apagar
			case 5: // gravar
				break;
			case 99: // email
				//Activar o botão "Pointer" do ServicoStandard
				D.getElementById(arrServicos[0].nome+"1").src="images/"+(arrServicos[0].nome+"1")+"on.gif";
				break;
		}
	}
}

function funcSave(){
	userID=Map.java_saveUserData("tv5",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("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(images/poi_on.gif)';
			arrGruposVisibility[which]=1;
		} else {
			elem.style.backgroundImage = 'url(images/poi_off.gif)';
			arrGruposVisibility[which]=0;
		}
		if (refresh == '1')
			Map.java_showContentType("tx3",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("tx3",0);
	else {
		Map.java_showContentType("tx3",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("tx3",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("tv5",ref);
	if (!userID){
		msg=getVarI18N(sLang,"invalidRef");
		alert(msg);
	}
	else {
		Map.java_getUserData("tv5",userID);
		return 1;
	}
	return 0;
}

function getLocationFromCookie(){
	id=0;

	str=readCookie("CityHelpEuroMap");
	if ((str != null) && (str != "")) {
		currentMap=str;
	}
	Map.requestFocus();
	Map.java_changeProject("tv2",currentMap,sLang);

	str=readCookie("CityHelpEuroLoc");
	if ((str != null) && (str != "")) {
		Map.requestFocus();
		loc=Map.java_setLocationFromStr("tu5",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) {
		viewReclPoint(Params.recX,Params.recY);
	}
}

function viewReclPoint(recX, recY)
{
	if (recX && recY) {
		loc = recX+" "+recY+" 1.0";
		Map.java_setLocationFromStr("tu5", loc);
		Map.java_buttonPressed("ty2", 11);
	}
}

function viewPoi(poi)
{
	if (poi) {
		Map.java_selectPoi("tx3",poi);
	}
}

function viewVia(id)
{
	serv=Map.java_getServiceID("tv6");
	if (serv < 0)
		return;

	resN=Map.java_pesquisa(serv," ",2000);
	if (resN<id)
		return;
	
	window.focus();
	funcViewResult(serv,id);
}

function onLoad(){
	img = new Image();
	img.src = "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("tv2",currentMap,sLang);
		if ((currentMap == "default") && (userID=getLocationFromCookie())) {
			Map.java_getUserData("tv5",userID);
		} else {
			userID=0;
		}
	}
	viewRecl();
	viewPoi(Params.localiza);
	if (Params.pois) JS_setPOIs(Params.pois);
	if (Params.mod=="serv") Map.java_buttonPressed("ty6",1);
	Map.requestFocus();
}

function onUnload(){

	Map.java_callService("ty3","vm6",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("tu5");
		writeCookie("CityHelpEuroLoc",loc);
		settingsPOIs=JS_getPOIs();
		writeCookie("CityHelpEuroSettingsPOIs",settingsPOIs);
	}
}

// Pesquisa
function funcPesquisa(servicoID){
	servico="";
	servicoNome="";
	str="";

	switch (servicoID) {
		case 1:
			servico="Vias";
			servicoNome="tv6";
			break;
		case 2:
			servico="Poi";
			servicoNome="tx3";
			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("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("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);
}

//Funções 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("tx1",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("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("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("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="images/"+(button)+state+".gif";
	if (state != "on")
		D.getElementById(arrServicos[0].nome+"1").src="images/"+(arrServicos[0].nome+"1")+"on.gif";
}

function JS_getProject(){
	return currentMap;
}

function JS_changeProject(project){
	currentMap=project;
	Map.java_changeProject("tv2",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("tw3",11);
}

function setEnd(serv,sel){
	Map.java_viewResult(serv,sel);
	Map.java_unselectResults(serv);
	Map.java_buttonPressed("tw3",12);
}

//Funções 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("tu7",x,y);
}

function JS_doAction (id){
	Map.java_doAction("tu7",id);
}

//Funções que interagem com o tx3
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 = "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();
}

function JS_queixa(args){
	i = location.href.lastIndexOf('/');
	str = location.href.substring(0,i+1);
	W["queixa"]=window.open("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();
}

function JS_onMapPick(x,y){
	W["marcador"]=window.open("marker.php?lang="+sLang+"&x="+x+"&y="+y,"Marcador","toolbar=0,directories=0,status=0,resizable=0,location=0,scrollbars=0,copyhistory=0,width=400,height=520");
	W["marcador"].focus();
}


// Funções que interagem com o tw3 *****/
function JS_verPercurso()
{
	servicoNome = "tw3";
	id = Map.java_getServiceID(servicoNome);
	if (id < 0)
		return;
	W["percurso"] = window.open("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();
}

//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;
}
