//////////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES PUBLICAS QUE SE PUEDEN LLAMAR DESDE LA PAGINA HTML
//////////////////////////////////////////////////////////////////////////////////////////

// Funcion para situar el mapa en un punto
function html2flash(posiciox,posicioy,posicioz)
{
  nueva_x = posiciox;
  nueva_y = posicioy;
  nueva_z = posicioz;

	oMapa=window.parent.document.mapa;
	if (!oMapa) oMapa=ObtenerMapaGuiaUrbana();
	Buscar(oMapa,Math.round(posiciox*15),Math.round(posicioy*15),Math.round(posicioz),true);
}

function ActivarOpcionDistancias()
{
	RealizarAccionMapa('Distancias');
}

function ActivarOpcionMover()
{
	RealizarAccionMapa('Mover');
}

function ActivarOpcionZoomMas()
{
	RealizarAccionMapa('ZoomMas');
}

function ActivarOpcionZoomMenos()
{
	RealizarAccionMapa('ZoomMenos');
}

function RealizarAccionCentrar()
{
	RealizarAccionMapa('Centrar');
}

function RealizarAccionImprimir()
{
	RealizarAccionMapa('Imprimir');
}

function AplicarZoomInput()
{
	var oTxtEscala=document.getElementById('txtEscala');
	if (oTxtEscala)	AplicarZoomEspecifico(oTxtEscala.value);
}

function AplicarZoom(sMetros)
{
	var oMapa=ObtenerMapaGuiaUrbana();
	oMapa.SetVariable("sMetrosZoom",sMetros);
  oMapa.TCallLabel('_root', 'Zoom');
}

function ActivarDesactivarCapa(sIdCapaActivar, iEntidad)
{
	var oMapa=ObtenerMapaGuiaUrbana();
	oMapa.SetVariable("sIdCapaActivar",sIdCapaActivar);
  oMapa.TCallLabel('_root', 'ActivarCapa');
  
  if (aCapasEntidades[iEntidad]['selec'])
	{
		document.getElementById(sIdCapaActivar).src="../img/iconos/icon_NOVISIBLE.gif";
		aCapasEntidades[iEntidad]['selec']=false;
	}
	else
	{
		document.getElementById(sIdCapaActivar).src="../img/iconos/icon_VISIBLE.gif";
		aCapasEntidades[iEntidad]['selec']=true;
	} 
}

function InicializarGuiaUrbana()
{
		//Anadimos el elemento 'Todas' al combo
		var oOption;
		var oCboCapa=document.getElementById('cboCapaEn');
		oOption=document.createElement("OPTION");
		oCboCapa.options.add(oOption);
		oOption.innerText=sLitTodasCapas;
		oOption.value="*";
	
		//Cargamos combo de capas
		for (i=0;i<aCapasEntidades.length;i++)
		{
			oOption=document.createElement("OPTION");
			oCboCapa.options.add(oOption);
			oOption.innerText=aCapasEntidades[i]['nombre'];
			oOption.value=aCapasEntidades[i]['id'];
		}
}

function verEntidades()
{
	cadena="";
	if (typeof(aCapasEntidades)!="undefined")
	{
		for (i=0;i<aCapasEntidades.length;i++)
		{
			cadena=cadena + '<div class="entidad">';
			if (aCapasEntidades[i]['selec'])
				cadena=cadena + '<img id="' + aCapasEntidades[i]['id'] + '" src="../img/iconos/icon_VISIBLE.gif"'
			else
				cadena=cadena + '<img id="' + aCapasEntidades[i]['id'] + '" src="../img/iconos/icon_NOVISIBLE.gif"';
			cadena=cadena + 'onClick=javascript:ActivarDesactivarCapa("' + aCapasEntidades[i]['id'] + '",' + i + '); ></img> ';
			cadena=cadena + '<img src="' + aCapasEntidades[i]['imagen'] + '">';
			cadena=cadena + aCapasEntidades[i]['nombre'] + '</div>'
		}
		document.write(cadena);
	}
}


//////////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES PRIVADAS QUE NO SE PUEDEN LLAMAR DESDE LA PAGINA HTML
//////////////////////////////////////////////////////////////////////////////////////////

// Funcion para la comunicacion entre la Guia Urbana y la pagina HTML
function mapa_DoFSCommand(command, args) 
{
  if (command=="abrirVentana")
	{
		var aParametros;
		
		aParametros=args.split("|");
		switch(aParametros[0])
		{
			case '0': //Nueva ventana normal
				GestionarEnlace(aParametros[4],aParametros[3],aParametros[2],1,1,'');
				break;
			
			case '1': //Nueva ventana simple
				GestionarEnlace(aParametros[4],aParametros[3],aParametros[2],0,1,'');
				break;

			case '2': //En un frame de la ventana actual
				GestionarEnlace(aParametros[4],0,0,0,0,aParametros[1]);
				break;

			case '3': //En la misma ventana
				GestionarEnlace(aParametros[4],0,0,0,0,'');
				break;
		}
	}
	else if (command=="ESCALA")
	{
		ZoomMapaModificado(args);
	}
	else if (command=="VISTA_AEREA")
	{
		//Obtenemos coordenadas actuales de la guia urbana
		var oMapa=ObtenerMapaGuiaUrbana();
		var dX=oMapa.GetVariable('_root.xcoord');
		var dY=oMapa.GetVariable('_root.ycoord');
		var dZ=oMapa.GetVariable('_root.zcoord');
		//Calculamos el tamano del cuadro de la vista aerea
		var ancho_vista_cuadro = (500 / 4800) * (100/dZ); // (30000/6.25)=4800
		var alto_vista_cuadro = (400 / 4800) * (100/dZ);
		var x_vista_cuadro = (dX / 4800);
		var y_vista_cuadro = (dY / 4800);
		//Actualizamos la vista aerea
		var oVistaAerea=ObtenerMapaVistaAerea();
		if (oVistaAerea)
		{
			oVistaAerea.SetVariable("_root.sAnchura",ancho_vista_cuadro.toString());
			oVistaAerea.SetVariable("_root.sAltura",alto_vista_cuadro.toString());
			oVistaAerea.SetVariable("_root.sX",x_vista_cuadro.toString());
			oVistaAerea.SetVariable("_root.sY",y_vista_cuadro.toString());
			oVistaAerea.TCallLabel('_root','MostrarCuadro');
		}
	}
	else if ((command=='estado_mapa') && (args=='true'))
	{
		IniBuscarElementoGuiaUrbana();
	}
}

function Buscar(oMapa,x,y,z,bPosicionarIndicador)
{
	if (oMapa)
	{
		//Posición del mapa		
		oMapa.SetVariable("xcoord",x);
	  oMapa.SetVariable("ycoord",y);
	  oMapa.SetVariable("zcoord",z);
	
	  //Posición del indicador de posición
	  if (bPosicionarIndicador)
	  {
			oMapa.SetVariable("xindicador",x);
			oMapa.SetVariable("yindicador",y);
		}

		//Buscamos
		oMapa.TCallLabel('_root', 'Buscar');
	}
}

// Funcion para obtener el mapa de la Guia Urbana
function ObtenerMapaGuiaUrbana()
{
	return window.document.mapa;	
}

// Funcion para obtener el mapa de la vista aerea
function ObtenerMapaVistaAerea()
{
	return window.document.vistaAerea;
}

function RealizarAccionMapa(sAccion)
{
	var oMapa=ObtenerMapaGuiaUrbana();
  oMapa.TCallLabel('_root', sAccion);
}

// Funcion para la comunicacion entre la Vista Aerea y la pagina HTML
function vistaAerea_DoFSCommand(command, args) 
{
	var aParametros=args.split("|");
	
	if (command=="VISTA_AEREA")
	{
		var dX=aParametros[0]*4800;
		var dY=aParametros[1]*4800;
		var oMapa=ObtenerMapaGuiaUrbana();
		var dZ=oMapa.GetVariable("_root.zcoord");
		Buscar(oMapa,dX,dY,dZ,false);
	}

}

function IniBuscarElementoGuiaUrbana()
{
	//Si han llamado a la pagina con parametros realizamos la busqueda
	if (m_bBuscarCalle)
	{
		var oTxtIdCalle=document.getElementById("txtIdCalle");
		var oTxtIdNumero=document.getElementById("txtIdNumero");
		var oFrmCalles=document.getElementById("frmCalles");
		
		oTxtIdCalle.value=m_sIdCalle;
		oTxtIdNumero.value=m_sNumCalle;
		oFrmCalles.submit();
		oTxtIdCalle.value='';
		oTxtIdNumero.value='';
	}
	else if (m_bBuscarEntidad)
	{
		var oTxtIdEntidad=document.getElementById("txtIdEntidad");
		var oTxtIdCapa=document.getElementById("txtIdCapa");
		var oFrmEntidades=document.getElementById("frmEntidades");
		
		oTxtIdEntidad.value=m_sIdEntidad;
		oTxtIdCapa.value=m_sIdCapa;
		oFrmEntidades.submit();
		oTxtIdEntidad.value='';
		oTxtIdCapa.value='';
	}	
}

function ZoomMapaModificado(sMetros)
{			
	var oTxtEscala=document.getElementById('txtEscala');
	if (oTxtEscala)	oTxtEscala.value=sMetros;
}

