// Usar el timestamp de la carga de la pagina como valor de genauser.
//   	Con un valor de genauser unico por ventana de navegador, Genaserver 
// 	mantiene sessiones separadas.

var lengua="0"
var d = new Date();
var genauser=d.getTime()
var app='application=dfgweb&genauser='+genauser
var http='http://'+window.location.host+'/internet/GenaService'
var sav='save=on'

var genaworld

var sav='save=on'
var page_params=0
var actu='actu=0'
var vradio=0
var vnummax=9999
var tipoactivi=""
var tiporuta=""

var xmlDoc = null
var IRxmlDoc = null
var xmlhttp
var iwidth, iheight
var myWidth = 0, myHeight = 0
var a = new Array   		// Array de visualizacion
var cb_cambios = new Array	// Selecciones del usuario del checkbox
var arbol_Consulta = new Array  // arbol de consulta

var text_gray='color:gray;font-size: 8pt; font-family: Arial;'
var text_black='color:black;font-size: 8pt; font-family: Arial;'

var tag_edif
var func=''
var capa=''
var numCoords=0
var cursorX=''
var cursorY=''
var mouseX
var mouseY
var mouseX2
var mouseY2
var moveX
var moveY
var coords_win=''
var dragmode='nowt'
var xdrag
var ydrag
var xabs
var MapaLeft=200
var MapaTop=66
var ScrollX
var ScrollY
var StartX
var StartY
var deltaX
var deltaY
var TimeStamp
var nav
CrucesArray = new Array()

var query
var user_params
// sin var porque se usa fuera de este fichero.
param_id=false;
consulta_dfg=""
var version_dfg=""

// Tipo de navegador 

if (document.all) nav=3		// IE
else if (document.getElementById) nav=1 // FF
else if (document.layers) nav=2
else nav=4

var respuesta_corta=false
var event_actividad=false

// --------------------------- Funcion Trim -----------------------------------------

String.prototype.trim = function() {

 // skip leading and trailing whitespace
 // and return everything in between
  var x=this;
  x=x.replace(/^\s*(.*)/, "$1");
  x=x.replace(/(.*?)\s*$/, "$1");
  return x;
}

// --------------------------- Funciones Timeout -----------------------------------------

function get_xmlhttp()
{
	try { xmlhttp = new window.ActiveXObject("Msxml2.XMLHTTP") }
	catch (e)
	     { try { xmlhttp = new window.ActiveXObject("Microsoft.XMLHTTP") }
		catch (E) { xmlhttp = false; }
	     }

	if (!xmlhttp && typeof XMLHttpRequest!='undefined')
	{
		xmlhttp=new XMLHttpRequest();
	}
	return xmlhttp
}

xmlhttp=get_xmlhttp()


// TEMPORIZADOR a 150  segundos
var timeout = 150000;
setTimeout("go()", timeout);

function RSchange() 
{
 if (xmlhttp.readyState==4) 
 {
  //document.getElementById('content').innerHTML=xmlhttp.responseText
  //document.images.mapa.src=xmlhttp.responseText;
 // alert("comando de timeout terminado");
 }
}


function go() 
{
	var com
        if (xmlhttp) 
	{
		// Para evitar el cache del explorador, el request del timeout es distinto 
		// 	en cada peticion con el timestamp.
		d = new Date();
		TimeStamp=d.getTime()

                ser='service=RAWTEXTPROVIDER'
                com='command=timeout ' + TimeStamp
                dir=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat
                xmlhttp.open("GET",dir,true);
                xmlhttp.onreadystatechange=RSchange
                xmlhttp.send(null)
        	window.status='TIMEOUT :' +  dir
                setTimeout("go()", timeout);
         }
}

// --------------------------- Categorias -----------------------------------------

// Seleccionar una categoria diferente y vuelve a crear el arbol.

function CambiarFondo(cat_foto,cat_mapa)
{
	var cur_val=document.getElementById("buttonFoto").value

	var txtm
	var txtf
	switch (lengua)
	{
	    case "0":		// es
		txtm=text_mapa_es
		txtf=text_foto_es
	        break
	    case "1":		// eu
		txtm=text_mapa_eu
		txtf=text_foto_eu
	        break
	    case "2":		// en
		txtm=text_mapa_en
		txtf=text_foto_en
	    case "3":		// fr
		txtm=text_mapa_fr
		txtf=text_foto_fr
	        break
	}


	if (cur_val == txtf)
	{
		cat=cat_foto
		document.getElementById('buttonFoto').value=txtm
	}
	else 
	{
		cat=cat_mapa
		document.getElementById('buttonFoto').value=txtf
	}
	redibujar()

	// Limpiar el array del arbol de visualizacion.

	len=a.length
	for (i=0;i<len;i++)
		a.length--

	// Limpiar el array donde mantenemos los elementos seleccionados por el usuario.

	len=cb_cambios.length
	for (i=0;i<len;i++)
		cb_cambios.length--
 
	get_lista_mapas_inicial('false')
}

// --------------------------- Funciones de Rutas -----------------------------------------

function SelectRutas()
{
    var formRUTAS=document.getElementById('formRUTAS')


    SwitchOffForm1();
    SwitchOffUtilidades();
    SwitchOffConsultas();
    if (formRUTAS.rutas_radiobutton[0].checked) //GPS
    {
	ayuda('hacer_gps',1)
        func='GCCalcular'
        capa='calcularGPS'
    }
    else if (formRUTAS.rutas_radiobutton[1].checked) // Corta 
    {
	ayuda('hacer_rutasgmaps',1)
        func='GCCalcular'
        capa='calcularruta_gmaps'
    }
    else if (formRUTAS.rutas_radiobutton[2].checked) // Corta
    {
	ayuda('hacer_rutac',1)
	func='GCCalcular'
	capa='calcularruta_c'
    }
    else if (formRUTAS.rutas_radiobutton[3].checked) //Rapida
    {
	ayuda('hacer_rutar',1)
	func='GCCalcular'
	capa='calcularruta_r'
    }
    else if (formRUTAS.rutas_radiobutton[4].checked) //Publica
    {
	ayuda('hacer_tpub',1)
	func='GCCalcular'
	capa='calculatpub'
    }
    else
    {
        alert ('Hace falta seleccionar un option button')
    }

	text = '<input id="Calcular" class="km_style" type=submit value="OK" onClick="Calcular();return false" >'
        text = text+'<input class="km_style" type=submit value="Cancel" onClick="CalcularCancel();return false">'

        document.getElementById("text_output").innerHTML = document.getElementById("text_output").innerHTML + text
	draw_ad()

        numCoords=0
 	cursorX=''
        cursorY=''
}


function descargar_shp(){
        respuesta_corta=false
        document.getElementById("form_zoom").radiobutton[2].checked=1
        SwitchOffUtilidades();
        ser='service=RAWTEXTPROVIDER'
        func='GSHP'
        capa='2'
        imageSize(false)
	document.getElementById('pie').style.visibility="hidden"
        document.getElementById("text_output").innerHTML = 'Generando SHP ... '
        document.getElementById("text_output2").innerHTML = 'Generando SHP ... '
        leng='lengua='+lengua
        com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa
        url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng
        Calcular_texto(url)
        hide_ad();
}


function SelectUtilidades()
{
	var formUTIL=document.getElementById('formUTIL')

	SwitchOffForm1();
        SwitchOffRutas();
        SwitchOffConsultas();
	document.getElementById('marca0').style.visibility = 'hidden'
	document.getElementById("text_output2").innerHTML = ''

        if (formUTIL.util_radiobutton[0].checked)
        {
                func='GCCalcular'
                capa='calculardist'
        }
        else if (formUTIL.util_radiobutton[1].checked)
        {
                func='GCCalcular'
                capa='calcularsuperf'
        }
        else if (formUTIL.util_radiobutton[2].checked)
        {
                func='GCCalcular'
                capa='calcularperfil'
                document.getElementById("text_output2").innerHTML = ' '
                document.getElementById("text_output").innerHTML = ' '
        }
        else if (formUTIL.util_radiobutton[3].checked) 
        {
		ayuda('hacer_puntos_dxf',1)
        }
        else if (formUTIL.util_radiobutton[4].checked)
        {
		ayuda('hacer_puntos_fotos',1)
        }
        else if (formUTIL.util_radiobutton[5].checked)
        {
		ayuda('hacer_puntos_lidar',1)
        }
        else if (formUTIL.util_radiobutton[6].checked)
        {
		ayuda('hacer_incidencia',1)
        }
        else if (formUTIL.util_radiobutton[7].checked)
        {
            text = '<input id="Descarga" class="km_style" type=submit value="Descargar" onClick="descargar_shp()">     '
            text = text+'<input class="km_style" type=submit value="Cancelar" onClick="CalcularCancel(); return false">'
            document.getElementById("text_output").innerHTML = text
            ayuda('hacer_Descarga_SHP',0)
            draw_ad()
        }
        else
        {
                alert ('Hace falta seleccionar un option button')
        }

	numCoords=0
	cursorX=''
	cursorY=''
 	if ( (formUTIL.util_radiobutton[0].checked) || (formUTIL.util_radiobutton[1].checked) || (formUTIL.util_radiobutton[2].checked) )
	{
		text = '<input id="Calcular" class="km_style" type=submit value="OK" onClick="Calcular()">     '
		text = text+'<input class="km_style" type=submit value="Cancel" onClick="CalcularCancel();return false">'
 		document.getElementById("text_output").innerHTML =  text
		ayuda('hacer_puntos',0)
		draw_ad()
	}
 	else if ( (formUTIL.util_radiobutton[3].checked) || (formUTIL.util_radiobutton[4].checked) )
        {
		draw_ad()

		// Descargamos la parrilla
        	ser='service=RAWIMAGEPROVIDER'
        	func='GHacer'
		imageSize(false)
		leng='lengua='+lengua
        	com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
		load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+leng)
        }
//desa 	else if (formUTIL.util_radiobutton[6].checked)
 	else if (formUTIL.util_radiobutton[5].checked)
        {
		draw_ad()

		// Descargamos la parrilla
        	ser='service=RAWIMAGEPROVIDER'
        	func='GLIDAR'
		imageSize(false)
		leng='lengua='+lengua
        	com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
		load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+leng)
        }
}


function Calcular()
{
	if (!event) event=window.event

	SwitchOffUtilidades();
	SwitchOffRutas();
	
	hide_ad()
	draw_busy()
	if ( numCoords == 0 )
	{
		hide_busy()
		return
	}

	// En IE el event dispara sobre el imagemap al dar al boton de Calcular, 
	//   creando un punto que sobre.

//	if ((nav==3) && (srcElem=="imagemap"))
//	{
//		numCoords--
	//	alert("Quitando el ultimo click")
//	} 

	ncoord="ncoord="+numCoords
	coordsx="MainWindow_x="+cursorX
	coordsy="MainWindow_y="+cursorY

	ser='service=RAWIMAGEPROVIDER'
	imageSize(false)
	com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa
	
	// Sacamos el mapa

//	alert(func + ' ' + capa + ' : ' + numCoords + ':: ' + cursorX + ' ' + cursorY)

	leng='lengua='+lengua

	load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+coordsx+'&'+coordsy+'&'+ncoord+'&'+leng)

	// Miramos si estamos haciendo un calculo de pefil
	if ( capa == "calcularperfil")
	{
		setTimeout("CalcularPerfil()", 700)
	}
	else
	{
		// No es un calculo de perfil. Sacamos el texto

		// Mete un TimeStamp para no mandar la misma peticion.
		d = new Date();
		TimeStamp=d.getTime()
		times='timeout=' +  TimeStamp

        	ser='service=RAWTEXTPROVIDER'
        	func='GCCalcular_textos'
        	com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
		url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+times+'&'+leng
		setTimeout("Calcular_texto(url)", 600)	// Asegurar que la petciones de texto llegan despues de la imagen.
	}
}

function CalcularPerfil()
{
	draw_busy()
	capa='verperfil'

	// Mete un TimeStamp para no mandar la misma peticion.

	d = new Date();
	TimeStamp=d.getTime()
        times='timeout=' +  TimeStamp
//alert(com)
	com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa
	leng='lengua='+lengua
	load_grafico(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+times+'&'+leng)

    	// obtener link al fichero de perfiles
    	ser='service=RAWTEXTPROVIDER'
	func='GCCalcular_textos'
	com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa
	url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng

	get_text(url)
	showLimpiarConsulta()

}

function BorrarSeleccion()
{
	draw_busy()
	ser='service=RAWIMAGEPROVIDER'
	func='GBorrarSel'
        imageSize(false)
	leng='lengua='+lengua
	com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
	// Sacamos el mapa
	load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng)

	// Aqui habria que quitar la ventana transparente y el cursor
	hide_ad()
	document.getElementById("text_output2").innerHTML = ''
	esconder_cruces()
	hideLimpiarConsulta()
	ponerPieArriba()
}

function RutaParcialTrp(param)
{
        ser='service=RAWIMAGEPROVIDER'
        com='command=liz.trpParcial ' + param 
	d = new Date();
	TimeStamp=d.getTime()
        times='timeout=' +  TimeStamp
        url_ruta_parcial=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng+'&'+times

	// Si ya hemos abierto la ventana, cierrala

        if (typeof rutaparcial != 'undefined' )
		rutaparcial.close()

	if (nav==3) //IE
	{
		rutaparcial=window.open("","Ruta_Parcial","width=580,height=450,left=50,top=50,toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no")
	}
	else
	{
		rutaparcial=window.open("","Ruta Parcial","width=570px,height='450px',left=50,top=50,toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,modal=yes,dialog=yes")
	}

	// Meter la imagen
	rutaparcial.document.write('<img src="' + url_ruta_parcial + '">   ')

	// Segunda imagen de resumen.

        ser='service=RAWIMAGEPROVIDER'
        com='command=liz.trpParcial RESUMEN' 
	d = new Date();
	TimeStamp=d.getTime()
        times='timeout=' +  TimeStamp
        url_ruta_parcial=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng+'&'+times

	rutaparcial.document.write('<img src="' + url_ruta_parcial + '">')

	// Asegurar que la peticion por texto llega despues de la imagen.
	setTimeout("RutaParcialTexto()",500)
}

function Calcular_texto()
{
 	if (typeof window.ActiveXObject != 'undefined' )
        {
                xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
                xmlDoc.onreadystatechange = peticion_text ;
        }
        else
        {
                xmlDoc = new XMLHttpRequest();
                xmlDoc.onload = peticion_text ;
        }
        xmlDoc.open( "GET", url , true );
        xmlDoc.send( null );
}


function peticion_text(){
	var mytext, aux
	
	if (xmlDoc.readyState != 4) 
		return;
	mytext = xmlDoc.responseText
	
	// Quitamos la etiqueta HTML
	aux = mytext.split("<HTML>")
	mytext = aux[1]
	aux = mytext.split("</HTML>")
	mytext = aux[0]
	
	hide_busy()
	if ((capa == 'calcularsuperf') || (capa == 'calculardist')) {
		document.getElementById("text_output").innerHTML = mytext.replace(/#/g, '<BR/>');
		draw_ad()
	}
	else
	{
		dibujar_atributos(mytext)
		document.getElementById('pie').style.visibility="hidden"
	}
		
    document.getElementById('form_zoom').radiobutton[2].checked='true';
	document.getElementById('mapa_image').style.cursor='hand'

	get_lista_mapas_inicial('false')
}


function dibujar_atributos(attr_text)
{
	// Si es IE, dibujar el boton para copiar los datos.

	if ((nav==3) && (func=='GCCalcular_textos'))
	{
		if  ((capa=="calcularGPS") || (capa=="calcularruta_c") || (capa=="calcularruta_r"))
		{
			var add_copy_button='<BR/> <input class="ButtonClass" style="width:130px" type=button value="Copiar al portapapeles" onClick="HighlightText()">'
			document.getElementById("text_output2").innerHTML = attr_text.replace(/#/g,"<BR/>") + add_copy_button ;
		}
		else
			document.getElementById("text_output2").innerHTML = attr_text.replace(/#/g,"<BR/>")
	}
	else
		var attr_text2 = attr_text.replace(/&lang/g,"&amp;lang")
		document.getElementById("text_output2").innerHTML = attr_text2.replace(/#/g,"<BR/>")
}


function CalcularCancel()
{
	document.getElementById("text_output").innerHTML = ''
        document.getElementById("text_output2").innerHTML = ''

	hide_ad()

	reset_to_scroll()

	// Reset el Pie de la pagina.
	document.getElementById('pie').style.visibility="visible"
//	ponerPieAbajo('GUAR')
}

// Abrir una ventana con los datos y mapa del segmento de la ruta.

function RutaParcial(param)
{
        ser='service=RAWIMAGEPROVIDER'
        com='command=liz.rutaparcial ' + param 
	d = new Date();
	TimeStamp=d.getTime()
        times='timeout=' +  TimeStamp
        url_ruta_parcial=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng+'&'+times

	// Si ya hemos abierto la ventana, cierrala

        if (typeof rutaparcial != 'undefined' )
		rutaparcial.close()

	if (nav==3) //IE
	{
		rutaparcial=window.open("","Ruta_Parcial","width=370,height=430,left=50,top=50,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,modal=yes")
	}
	else
	{
		rutaparcial=window.open("","Ruta Parcial","width=370px,height=430px,left=50,top=50,modal=yes,scrollbars=yes")
	}

	// Meter la imagen
	rutaparcial.document.write('<img src="' + url_ruta_parcial + '">')

	// Asegurar que la peticion por texto llega despues de la imagen.
	setTimeout("RutaParcialTexto()",500)
}

function RutaParcialTexto()
{
        if (typeof window.ActiveXObject != 'undefined' )
        {
                xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
                xmlDoc.onreadystatechange = recibir_ruta_parcial_txt;
        }
        else
        {
                xmlDoc = new XMLHttpRequest();
                xmlDoc.onload = recibir_ruta_parcial_txt;
        }
	ser='service=RAWTEXTPROVIDER'
        com='command=liz.rutaparcial.txt'
        url_ruta_parcial_txt=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng
        xmlDoc.open( "GET", url_ruta_parcial_txt , false );
        xmlDoc.send( null );
}


function recibir_ruta_parcial_txt()
{
	var mytext,data 

        if ( xmlDoc.readyState != 4 ) return ;
	mytext=xmlDoc.responseText
        aux=mytext.split("<HTML>")
        mytext=aux[1]
        aux=mytext.split("</HTML>")
        mytext=aux[0]
	if (nav==3)
		rutaparcial.document.body.innerHTML=rutaparcial.document.body.innerHTML+mytext
	else
	{
		rutaparcial.document.write(mytext)
	}
	rutaparcial.document.close()
}


function SelectImprimir()
{
	document.getElementById('pie').style.visibility="hidden"
	ayuda2('ayuda_imprimir')
}


function imprimir1() 
{
	var str1="";
	var str2="";
	var str3="";
	var str4="";
	
	for (var i=0; i<document.ImprimirForm.tama.length; i++) 
	{
		if (document.ImprimirForm.tama[i].checked==1) 
	            	str0 = document.ImprimirForm.tama[i].value
	}
	for (var i=0; i<document.ImprimirForm.esca.length; i++) 
	{
		if (document.ImprimirForm.esca[i].checked==1) 
			str1=document.ImprimirForm.esca[i].value 
	}
	for (var i=0; i<document.ImprimirForm.orien.length; i++) 
	{
		if (document.ImprimirForm.orien[i].checked==1) 
			str5=document.ImprimirForm.orien[i].value 
	}

	str3="PA"
	if (str3 == "MA") 
		str4 = str0 + " " + str1 + " " + str2 + " " + str3 + " " +document.ImprimirForm.dircor.value;
	else 
	{
	        // Incluir un timestamp para superar los problemas del cache del navegador.
                var nd = new Date();
                var TS=nd.getTime()
                var ts='&ts=' + TS

		if (str5 == "VE")
		{
			str4 = str0 + " " + str1 + " " + str2 + " " + str3 ; 
			imprimir=window.open('http://'+window.location.host+'/dfgweb/imprimir.htm?'+str4+"&genauser="+genauser+"&genaworld="+genaworld+ts,"imprimir","toolbar=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='680px',height='600px'")
		}
		else 
		{
			vare1=str0.substring(3,4)
			if ( vare1 == "x" ) 
			{
				uno=str0.substring(0,3)
				if (str0.length == 7) 
					dos=str0.substring(4,7)
				else
					dos=str0.substring(4,8)
			}
			else	
			{
				uno=str0.substring(0,4)
				dos=str0.substring(5,9)
			}
			str0=dos+"x"+uno
			str4 = str0 + " " + str1 + " " + str2 + " " + str3 ; 
			imprimir=window.open('http://'+window.location.host+'/dfgweb/imprimir.htm?'+str4+"&genauser="+genauser+"&genaworld="+genaworld+ts,"imprimir","toolbar=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width='790px',height='600px'")
		}
	}
	reset_to_scroll()
}


function reset_to_scroll()
{
	SwitchOffForm1()	
//	SwitchOffConsultas()
	SwitchOffUtilidades()
	SwitchOffRutas()
	
	// Accion por defecto
       	document.getElementById("form_zoom").radiobutton[2].checked='true';
}

function borrarGrafica()
{
	var img = document.getElementById("grafico_image");
	if ( img != null )
	{
		img.src=""
		document.getElementById("GraficoDiv").style.visibility = 'hidden'
	}
	var perfilbot = document.getElementById("PerfilBotDiv");
	if ( perfilbot != null )
	{
		document.getElementById("PerfilBotDiv").style.visibility = 'hidden'
	}

	var txt2 = document.getElementById("text_output2");
	if ( txt2 != null )
	{
    		document.getElementById("text_output2").innerHTML = ''
	}

	if ((document.getElementById("CONSULTAS").style.visibility != 'visible') &&
		(document.getElementById("VISUALIZACION").style.visibility != 'visible'))
		document.getElementById('pie').style.visibility='visible'
}

// --------------------------- Tree Functions -----------------------------------------


// Mantenemos un array de las selecciones del usuario.
// Solo mandamos los valores cambiados al servidor.

function VisChanged(treeElement)
{
	exists=false
	if ( cb_cambios.length > 0 )
	{
		for (i=0;i<cb_cambios.length;i++)
		{
			if ( cb_cambios[i][2] == treeElement.dataContainer) 
			{
				exists=true
				break
			}
		}
	}
	if ( exists == false ) 
	{
		i=cb_cambios.length
		cb_cambios[i] = new Array(3)
		cb_cambios[i][2]=treeElement.dataContainer

		// Si es un Grupo o Clase, metemos el dataContainer en lugar del caption
		//   porque lleva un prefijo "C*" o "G*" que necesita el servidor.

		if ( treeElement.dataContainer.substring(1,2) == '*' )
			cb_cambios[i][0]=treeElement.dataContainer
		else
			cb_cambios[i][0]=treeElement.caption

		// Add to array tanto para poner como quitar.

		if (( treeElement.isChecked == 2 ) || ( treeElement.isChecked == 1 ))  
			cb_cambios[i][1]='s'
		else
			cb_cambios[i][1]='n'
	}
	else
		cb_cambios[i][2]='deleted'
}

//
// Crear un string con la lista de capas que hay que encender o apagar.
//

function leer_vis_array()
{
	var ret

	if ( cb_cambios.length > 0 )
	{
		for (i=0;i<cb_cambios.length;i++)
		{
			if ( cb_cambios[i][2] != 'deleted' )
			{
				if ( typeof ret == 'undefined' )
					ret=cb_cambios[i][0] + '/' + cb_cambios[i][1]
				else
					ret=ret + '//' + cb_cambios[i][0] + '/' + cb_cambios[i][1]
			}
		}
		if ( typeof ret != 'undefined' )
			ret=convertir_caracteres(ret)
		else
			ret=""
	}
	else
		ret=""
	return(ret)
}


function convertir_caracteres(cadena_ini)
{
	// Da problemas con Firefox 1.03 pero funciona con 1.5

//	if ( lengua == "0" )
//	{
		cadena_ini=cadena_ini.replace(/&aacute;/g,'á')
		cadena_ini=cadena_ini.replace(/&eacute;/g,'é')
		cadena_ini=cadena_ini.replace(/&iacute;/g,'í')
		cadena_ini=cadena_ini.replace(/&oacute;/g,'ó')
		cadena_ini=cadena_ini.replace(/&uacute;/g,'ú')
		
		cadena_ini=cadena_ini.replace(/&Aacute;/g,'Á')
		cadena_ini=cadena_ini.replace(/&Eacute;/g,'É')
		cadena_ini=cadena_ini.replace(/&Iacute;/g,'Í')
		cadena_ini=cadena_ini.replace(/&Oacute;/g,'Ó')
		cadena_ini=cadena_ini.replace(/&Uacute;/g,'Ú')

		cadena_ini=cadena_ini.replace(/&ntilde;/g,'ñ')
		cadena_ini=cadena_ini.replace(/&Ntilde;/g,'Ñ')
//	}
	return(cadena_ini)
}

function unconvertir_caracteres(cadena_ini)
{
//	if ( lengua == "0" )
//	{
		cadena_ini=cadena_ini.replace(/á/g,'&aacute;')
		cadena_ini=cadena_ini.replace(/é/g,'&eacute;')
		cadena_ini=cadena_ini.replace(/í/g,'&iacute;')
		cadena_ini=cadena_ini.replace(/ó/g,'&oacute;')
		cadena_ini=cadena_ini.replace(/ú/g,'&uacute;')
		
		cadena_ini=cadena_ini.replace(/Á/g,'&Aacute;')
		cadena_ini=cadena_ini.replace(/É/g,'&Eacute;')
		cadena_ini=cadena_ini.replace(/Í/g,'&Iacute;')
		cadena_ini=cadena_ini.replace(/Ó/g,'&Oacute;')
		cadena_ini=cadena_ini.replace(/Ú/g,'&Uacute;')

		cadena_ini=cadena_ini.replace(/ñ/g,'&ntilde;')
		cadena_ini=cadena_ini.replace(/Ñ/g,'&Ntilde;')

		cadena_ini=cadena_ini.replace(/%20/g,' ')
//	}
	return(cadena_ini)
}

//  Recorrer todo el arbol para actualizar los estados de los colores de clases y grupos en 
//	funcion de los nodos inferiores.
// Si un nodo de clase o grupo es un mapa, no actualizmos el color porque no tiene hijos y su
// 	color ya esta puesto.

function gris_clase_grupo()
{
	var root
	var nclases
	var ngrupos
	var nmapas
	var vis_mapas


	root = tv._pseudoElement
	nclases=root._children.length

	for (c=0;c<nclases;c++)	 						// Bucle por las clases
	{
		ngrupos=root._children[c]._children.length

		// Si grupos = 0, no tiene hijos y es una mapa con la clase=Nada.

		if ( ngrupos > 0 )
		{
			clase_black=false

			for (g=0;g<ngrupos;g++) 					// Bucle por los grupos
			{
				nmapas=root._children[c]._children[g]._children.length

				// Si nmapas = 0, no tiene hijos y es una mapa con el grupo=Nada.

				if ( nmapas > 0 )
				{
					grupo_black=false

					for (m=0;m<nmapas;m++)					// Bucle por los mapas
						if ( root._children[c]._children[g]._children[m].divStyle == text_black )
							grupo_black=true

					if ( grupo_black == true )
						root._children[c]._children[g].divStyle=text_black
					else
						root._children[c]._children[g].divStyle=text_gray
	
				}
				if ( root._children[c]._children[g].divStyle == text_black )
					clase_black=true
			}

			if ( clase_black == true )
				root._children[c].divStyle=text_black
			else
				root._children[c].divStyle=text_gray
		}
	}
}


// --------------------------- Funciones Recibir -----------------------------------------

// Se llama a esta pagina desde otro, pasando parametros de busuqedas.

// Escaa los caracteres + de una cadena (para busquedas con coordenadas)
function rewriteURL(query)
{
        var queryString; // queryString reescrita

        // cortamos la cadena inicial por los simbolos +
        var aux=query.split("+");

        // Componemos la queryString
        queryString=aux[0];
        var part_num=1;

        while (part_num < aux.length)
        {
          queryString=queryString+"%2B"+aux[part_num]
          part_num+=1;
        }

        return queryString;

}

// Si han llegado parametros de mapas por el URL, hay que guardar los valores en el array donde
// van todas las selecciones del arbol. 

function actualizar_capas_array()
{
	var i,j
	// Limpiar el array donde mantenemos los elementos seleccionados por el usuario.
	var len=cb_cambios.length
	for (i=0;i<len;i++)
		cb_cambios.length--

	j=0
	var a_capas=vis_capas.split("//")
	if ( a_capas.length > 0 )
	{
		for (i=0;i<a_capas.length;i++)
		{
			a_mapa=a_capas[i].split("/")
			cb_cambios[j] = new Array(3)
			cb_cambios[j][0]=convertir_ascii(a_mapa[0])
			cb_cambios[j][1]=convertir_ascii(a_mapa[1])
			cb_cambios[j][2]=convertir_ascii(a_mapa[0])
//alert( cb_cambios[j][0] + ' ' +  cb_cambios[j][1] + ' ' +  cb_cambios[j][2])
			j++
		}
	}
}


function convertir_ascii(cadena_ini)
{
	cadena_ini=cadena_ini.replace(/%E0/g,'á')
	cadena_ini=cadena_ini.replace(/%E9/g,'é')
	cadena_ini=cadena_ini.replace(/%ED/g,'í')
	cadena_ini=cadena_ini.replace(/%F3/g,'ó')
	cadena_ini=cadena_ini.replace(/%FA/g,'ú')
		
	cadena_ini=cadena_ini.replace(/%C1/g,'Á')
	cadena_ini=cadena_ini.replace(/%C9/g,'É')
	cadena_ini=cadena_ini.replace(/%CD/g,'Í')
	cadena_ini=cadena_ini.replace(/%D3/g,'Ó')
	cadena_ini=cadena_ini.replace(/%DA/g,'Ú')

	cadena_ini=cadena_ini.replace(/%F1/g,'ñ')
	cadena_ini=cadena_ini.replace(/%D1/g,'Ñ')

	cadena_ini=cadena_ini.replace(/%20/g,' ')

	return(cadena_ini)
}


function ShowPop(lang)
{
	// Si es IE, sale el texto del enlace que estï¿½ debajo de los botones.
	if (nav!=3) 
	{
		var span_0 = '<a> Versiï¿½n en castellano </a>'
		var span_1 = '<a> Euskerazko bertsioa </a>'
		var span_2 = '<a> English version </a>'
		
		document.getElementById('CabeLengPop').innerHTML = eval('span_' + lang);
		document.getElementById('CabeLengPop').style.visibility = "visible";
	}
}

function HidePop(lang)
{
	document.getElementById('CabeLengPop').style.visibility = "hidden";
}

// Se llama a esta pagina desde otro, pasando parametros de busuqedas.

function CheckInputParams()
{
	if (document.all) nav=3		// IE
	else if (document.getElementById) nav=1 // FF
	else if (document.layers) nav=2
	else nav=4

	CheckServer();

	// Comprobar el formato del URL.
	var url = window.location.href;
        var url_parts= url.split("/");

	// Si es un URL amigable, cambiar el url por el nuevo, generado por el programa php de URLs amigables.
	var checkurl=url_parts[4].substring(0,2)

	if ((checkurl == "es") ||  (checkurl == "eu") || (checkurl == "en") || (checkurl == "fr"))
        	url=new_url

	// If there's an ampersand at the end, chop it off!
	if (url.substring(url.length-1) == "#")
		url=url.substring(0,(url.length-1))
    // Next, split the url by the ?
    var qparts = url.split("?");

    // Si no hay params, no hace nada.
    if (qparts.length <= 1)
    {
		page_params=0	
    }
    else
    {
	    imageSize(false)
	    posicionar_ad_window()
	    draw_busy()
	    ponerPieArriba()
	    // Accion por defecto
	    document.getElementById("form_zoom").radiobutton[2].checked='true';
            page_params=1
		
            var array_params = qparts[1].split("&");

            // First part of the params is the query ejem. id=M_002

		// Si la llamada tiene parametros pero no tiene ninigun comando, start_index=0
		// 	Es decir, empieza buscar parametros desde cero en lugar de uno.

            	query = array_params[0];
		var texto_id=query.split("=")
		var start_index
		if ( texto_id[0] != "id" )
			start_index=0
		else
			start_index=1

		// El resto son parametros que pasamos al servidor sin tocar.

		//alert(array_params.length)

		if ( array_params.length > start_index ) 
		{
			user_params=array_params[start_index]

			vis_capas=""

			// Si la categoria esta puesta, pon el variable del JS.
			// Con el variable genauser, puedes forzar el uso de la misma session de Genamap.

			var un_param=array_params[start_index].split("=")
			if ( un_param[0] == "categoria" ) cat=array_params[start_index]
			if ( un_param[0] == "lengua" ) lengua=un_param[1]
			if ( un_param[0] == "actu" ) actu=array_params[start_index]
			if ( un_param[0] == "vis_capas" ) 
			{
				vis_capas=array_params[start_index]
				actualizar_capas_array()
			}
			if ( un_param[0] == "vradio" ) vradio=un_param[1]
			if ( un_param[0] == "vnummax" ) vnummax=un_param[1]
			if ( un_param[0] == "tipoactivi" ) tipoactivi=un_param[1]
			if ( un_param[0] == "tiporuta" ) tiporuta=un_param[1]
			if ( un_param[0] == "genauser" ) app='application=dfgweb&genauser='+un_param[1]
			if ( un_param[0] == "consulta" ) consulta_dfg=un_param[1]
			if ( un_param[0] == "version" ) version_dfg=un_param[1]

			for (i=start_index+1;i<array_params.length;i++)
			{
				user_params=user_params+'&'+array_params[i]

				// Si la categoria esta puesta, pon el variable del JS.

				un_param=array_params[i].split("=")
				if ( un_param[0] == "categoria" ) cat=array_params[i]
				if ( un_param[0] == "lengua" ) lengua=un_param[1]
				if ( un_param[0] == "actu" ) actu=array_params[i]
				if ( un_param[0] == "vis_capas" ) 
				{
					vis_capas=un_param[1]
					actualizar_capas_array()
				}
				if ( un_param[0] == "vradio" ) vradio=un_param[1]
				if ( un_param[0] == "vnummax" ) vnummax=un_param[1]
				if ( un_param[0] == "tipoactivi" ) tipoactivi=un_param[1]
				if ( un_param[0] == "tiporuta" ) tiporuta=un_param[1]
				if ( un_param[0] == "genauser" ) app='application=dfgweb&genauser='+un_param[1]
				if ( un_param[0] == "consulta" ) consulta_dfg=un_param[1]
				if ( un_param[0] == "version" ) version_dfg=un_param[1]
			}
		}

		if ( lengua == "" ) lengua="0"
		lengua=(lengua+"").substring(0,1) // asegurar que solo hay un digito

          	// Comprobamos si estamos en el caso especial de busqueda por coordenada de edificio
            var qparts2= query.split("_");
            var query2 = qparts2[0];

            // Escapamos los + de las busquedas por coordenadas
            query = rewriteURL( query )

		// Si no hay ningun comando tipo id=xxxx, se inicia el mapa.
		if ( start_index == 0 )
		{
			posicionar_ad_window()
	            	reset_to_scroll()
	            	imageSize(false)
                	draw_busy()
	            	get_lista_mapas_inicial('true')

			if ( vis_capas == "" )
	               		com='command=liz.main GCInicioLimpiar ' + iwidth + ' ' + iheight
			else
	               	com='command=liz.main GCInicio ' + iwidth + ' ' + iheight

	       	    	ser='service=RAWIMAGEPROVIDER'
			load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+user_params)
// alert(user_params)
                	hide_ad()
		}
		else if ( query2 == "id=LE")
            	{
                  // estamos en el caso especial de busqueda por coordenada de edificio. Buscar y devuelve el texto
                  //  document.images.mapa.src="images/transparente.gif"
			pause(1000)

                	while (eval(mapa).complete != true) 
			{
                              pause(1000)
                	}
			respuesta_corta=true
			ser='service=RAWTEXTPROVIDER'
                	com='command=liz.URLSearch ' + query + ' ' + iwidth + ' ' + iheight
                	url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+user_params
                	get_text(url)
			// recordar que luego hay que dibujar el boton de limpiar consulta
			param_id=true;
		}
            	else
            	{
   			// Limpiar el array del arbol de visualizacion.
			len=a.length
			for (i=0;i<len;i++)
				a.length--

                	// Seleccionamos donde se mostraran los resultados
                	respuesta_corta=respuestaCorta(query2)

                	// Buscar y devuelve el mapa
                	ser='service=RAWIMAGEPROVIDER'
                	com='command=liz.URLSearch ' + query + ' ' + iwidth + ' ' + iheight + ' ' + vradio + ' ' + vnummax + ' ' + tipoactivi + ' ' + tiporuta
			load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+user_params)

			setTimeout("pedir_atributos()",1000)
			// recordar que luego hay que dibujar el boton de limpiar consulta con "showLimpiarConsulta()"
			param_id=true;
		}

		reset_to_scroll()
    	}

}

// Codigo adicional de la Dipu que se ha puesto en una funciona que se llama despues de generar dinamicamente 
// el arbol de consulta.

function param_consulta()
{
	// parametro consulta, para seleccionar los radiobuttons
	//correspondientes a las operaciones de descarga de cartografia vectorial,
	//series 1:5000 o fotos aereas, segun el parametro "consulta" en la URL
	if ( consulta_dfg != "" ) 
    	{
       	document.getElementById("form_zoom").radiobutton[2].checked=0;

		if ( consulta_dfg == "CINCOMILES" )
		{
			fOb = findObj("12");
			fOb.setState(true) //open<->close
			getElById('CINCOMILES').checked = true
			getElById('CINCOMILES').click();
			getElById('CONSULTAS').style.visibility="visible"
		}
		if ( consulta_dfg == "HAZDXF" ){
			fOb = findObj("12");
			fOb.setState(true) //open<->close
			getElById('HAZDXF').checked = true
			getElById('HAZDXF').click();
			getElById('CONSULTAS').style.visibility="visible"
		}
		if ( consulta_dfg == "HAZLIDAR" ){
			fOb = findObj("12");
			fOb.setState(true) //open<->close
			getElById('HAZLIDAR').checked = true
			getElById('HAZLIDAR').click();
			getElById('CONSULTAS').style.visibility="visible"
		}
		if ( consulta_dfg == "FOTOSAEREAS" ){
			fOb = findObj("9");
			fOb.setState(true) //open<->close
			getElById('FOTOSAEREAS').checked = true
			getElById('FOTOSAEREAS').click();
			getElById('CONSULTAS').style.visibility="visible"
		}
		if ( consulta_dfg == "ORTOFOTO" ){
			fOb = findObj("9");
			fOb.setState(true) //open<->close
			getElById('hacerdxf').checked = true
			getElById('hacerdxf').click();
			getElById('CONSULTAS').style.visibility="visible"
		}
	}
}

// Elegir un Genaworld y comprobar que esta activo. Si no funciona, prueba los otros GWs.
// Cambia el numero de Genaworlds en funcion de cuantos estan arrancados.

function CheckServer()
{
	var numGenaworlds = 2		// Cambia este valor en funcion del numero de GW.

        if (typeof window.ActiveXObject != 'undefined' )
                xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
        else
                xmlDoc = new XMLHttpRequest();

	// Pasar un Timestamp en el URL para evitar problemas con el cache del navegador.
	d = new Date();
	TimeStamp=d.getTime()

        ser='service=RAWTEXTPROVIDER'
	leng='lengua='+lengua

	// Crear lista de Genaworlds.
	var myGw= new Array(numGenaworlds)
	for (var i=0;i<numGenaworlds;i++)
	{
		if (i == 0)
			myGw[i]='dfgweb'
		else
			myGw[i]='dfgweb'+i
	}

	// Random number generator.
	var ran_number=Math.floor(Math.random()*numGenaworlds);

	// Probar los Genworlds hasta encontrar uno que funciona.
	for (var i=0;i<numGenaworlds;i++)
	{
		com='command=checkServer ' + TimeStamp + ' NOIP ' + myGw[ran_number]
		app='application='+myGw[ran_number]+'&genauser='+genauser
		genaworld=myGw[ran_number]
		url=http+'?'+app+'&'+com+'&'+sav+'&'+ser
		xmlDoc.open( "GET", url , false );
		xmlDoc.send( null );
		reply=xmlDoc.responseText
		if (reply.trim() == 'OK')
			return
//		else
//			alert(reply)

		ran_number++
		if (ran_number == numGenaworlds)
			ran_number=0
	}
	alert('No encuentra conexion con el server de mapas : Error de acceso a los Genaworlds.')
}


function respuestaCorta(tipo_respuesta)
{
	var resultado=false
	
	switch (tipo_respuesta)
	{
	    case "id=S":
	       resultado=true
	       break
	    case "id=M":
	       resultado=true
	       break
	    case "id=N":
	       resultado=true
	       break
	    case "id=K":
	       resultado=true
	       break
	    case "id=V":
	       resultado=true
	       break
	    case "id=T":
	       resultado=true
	       break
	    case "id=I":
	       resultado=true
	       break
            case "id=D":
               resultado=true
               break
            case "id=F":
               resultado=true
               break
            case "id=E":
               resultado=true
               break
	    default:
	       resultado=false
	}
	
	return (resultado)
	
}


/*
* This function will not return until (at least)
* the specified number of milliseconds have passed.
* It uses a modal dialog.
*/


function pause(numberMillis) 
{
        var dialogScript = 
           'window.setTimeout(' +
           ' function () { window.close(); }, ' + numberMillis + ');';
        var result = ''

	// For IE5.

	if ( nav == 3 )
	{
         window.showModalDialog(
           'javascript:document.writeln(' +
            '"<script>' + dialogScript + '<' + '/script>")');
	}
	else
	{
//         openDialog(
//           'javascript:document.writeln(' +
//            '"<script>' + dialogScript + '<' + '/script>"',
//           'pauseDialog', 'modal=1,width=10,height=10');
 	}
}


//
// Pide la parte textual de la busqueda
//

function pedir_atributos()
{
        if (typeof window.ActiveXObject != 'undefined' )
        {
                xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
                xmlDoc.onreadystatechange = recibir_atributos;
        }
        else
        {
                xmlDoc = new XMLHttpRequest();
                xmlDoc.onload = recibir_atributos;
        }
        com='command=liz.URLSearch.txt ' + query 
        ser='service=RAWTEXTPROVIDER'
	leng='lengua='+lengua
        url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+user_params+'&'+actu+'&'+leng
        xmlDoc.open( "GET", url , true );
        xmlDoc.send( null );
}


// 
// Procesar los atributos de texto de un calculo de tipo ruta.

function recibir_atributos()
{
	var mytext,data 

        if ( xmlDoc.readyState != 4 ) return ;
	mytext=xmlDoc.responseText

	// Quitamos la etiqueta HTML
        aux=mytext.split("<HTML>")
        mytext=aux[1]
        aux=mytext.split("</HTML>")
        mytext=aux[0]

	// Sacamos las coordenadas 
 	var coord=mytext.split("%%%")
        mytext=coord[0];
        var ar_cor=coord[1];

	if (nav==1)  // FF
		document.getElementById("lizmap").innerHTML = ar_cor
	else
        	document.getElementById("area_coord").innerHTML = ar_cor;
	
	data=mytext.split("!") 

  	if ( respuesta_corta==true )
        {
                document.getElementById("text_output2").innerHTML = ''
		// Reset posicion del Pie
//		document.getElementById('myPie').style.top=(MapaTop+iheight+5) + 'px'
		document.getElementById("text_output").style.visibility="hidden";
                document.getElementById("text_output").innerHTML = data[0].replace(/#/g,'<BR/>') ;
                draw_ad()
                respuesta_corta=false
        }
        else
        {
            	hide_ad()
		dibujar_atributos(data[0])
		document.getElementById('pie').style.visibility="hidden"
        }

	get_lista_mapas_inicial('false')
}

function get_lista_mapas_inicial_false()
{
	draw_busy()
	get_lista_mapas_inicial('false')
}

// --------------------------- Funciones Genamap -----------------------------------------

//
// Pide una lista de mapas del servidor.
//

function get_lista_mapas_inicial(reset_window)
{
        if (typeof window.ActiveXObject != 'undefined' )
        {
                xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
       //         xmlDoc.onreadystatechange = load_lista_mapas;
        }
        else
        {
                xmlDoc = new XMLHttpRequest();
        //        xmlDoc.onload = load_lista_mapas;
        }
	coma='command=liz.preplot GCInicio '+iwidth+' '+iheight+' '+reset_window
        serv='service=RAWTEXTPROVIDER'
	leng='lengua='+lengua
	var ver='version='+version_dfg
        url=http+'?'+app+'&'+coma+'&'+sav+'&'+serv+'&'+cat+'&'+leng+'&'+ver
        xmlDoc.open( "GET", url , false );
        xmlDoc.send( null );
	load_lista_mapas();
	if ( typeof console != 'undefined' ) console.log("load_lista_mapas done")
}


//
// Construir un array de capas con los valores que vienen del servidor.
// Entra aqui cuando llega la respuesta de Genamap.
//

function load_lista_mapas()
{
	var mytext 
	var lines
	var data
	var clase
	var grupo
	var mapa
	var zoom_min,zoom_max
	var desc
	var icon = null
	
    if ( xmlDoc.readyState != 4 ) return 
	mytext=xmlDoc.responseText
    luismi=mytext.split("%%%")	   // Separar el image map del resto.
    lines=luismi[0].split("#");
    var ar_cor=luismi[1];
	if (nav==1) 	// FF
	{
		if ( moz_brow_nu_sub != "2.0.0.8" )
		{
			document.getElementById("lizmap").innerHTML = ar_cor.substring(0,ar_cor.length-9)
		}
	}
	else
		document.getElementById("area_coord").innerHTML = ar_cor.substring(0,ar_cor.length-9)


	line0=lines[0].split(",")	   // Del resto, saca la escala, distancia y extents.
	escala_dist=line0[0].split(" ")	   // Separa la escala y distancia 
	escala=escala_dist[0].substring(7)
	dist=escala_dist[1]
	coords_win=line0[1]		  // La segunda parte de la primera linea lleva los extents del window.
 	document.getElementById("textfield2").value = escala
	document.getElementById("textfield22").value = dist

	c=0		// contar las clases
	g=0		// contar los grupos de la clase
	m=0		// contar los mapas del grupo
	first_time=true

	for (var i=1;i<(lines.length-1);i++)
	{
		data=lines[i].split(",")
		clase=data[1].trim()
		grupo=data[2].trim()
		mapa=data[3]
		cb_dibujar=data[4]
		desc=data[5]
		cb_state=data[6].trim()
		c_state=data[7].trim()
		g_state=data[8].trim()
		if(typeof data[9] != "undefined") {
			icon='http://'+window.location.host+'/dfgweb/icons/'+data[9].trim()
		}
		
		if ( first_time == true )
		{
			a[0]=new Array
	        a[0]['onChangeCheckbox']=VisChanged

			if ( clase == 'Nada' )
			{
				a[0]['caption']=desc
				a[0]['dataContainer']=mapa
				a[0]['icon']=icon
				setMapStates(a[0], cb_state, cb_dibujar)
			}
			else
			{
				a[0]['caption']=clase
				a[0]['icon']=null
				a[0]['dataContainer']='C*'+clase
				setClassState(a[0],c_state)

				a[0]['children']=new Array
				a[0]['children'][0]=new Array
	                	a[0]['children'][0]['onChangeCheckbox']=VisChanged

				if ( grupo == 'Nada' )
	            {
                    a[0]['children'][0]['caption']=desc
                    a[0]['children'][0]['dataContainer']=mapa
					a[0]['children'][0]['icon']=icon
					setMapStates(a[0]['children'][0], cb_state, cb_dibujar)
				}
				else
				{
                    a[0]['children'][0]['caption']=grupo
					a[0]['children'][0]['icon']=null
                    a[0]['children'][0]['dataContainer']='G*'+grupo
					setGroupState(a[0]['children'][0],g_state)

					a[0]['children'][0]['children']=new Array
                    a[0]['children'][0]['children'][0]=new Array
                    a[0]['children'][0]['children'][0]['caption']=desc
                    a[0]['children'][0]['children'][0]['dataContainer']=mapa	
					a[0]['children'][0]['children'][0]['icon']=icon
	                a[0]['children'][0]['children'][0]['onChangeCheckbox']=VisChanged
					setMapStates(a[0]['children'][0]['children'][0], cb_state, cb_dibujar)
				}
			}

            clase_o=clase
            grupo_o=grupo
			first_time = false
		}
		else
		{
			if ( clase != clase_o )
			{
				c++

				a[c]=new Array
                a[c]['onChangeCheckbox']=VisChanged
				if ( clase == 'Nada' )
				{
                    a[c]['caption']=desc
                    a[c]['dataContainer']=mapa
					a[c]['icon']=icon
					setMapStates(a[c], cb_state, cb_dibujar)
				}
				else
				{
		            a[c]['caption']=clase
					a[c]['icon']=null
		            a[c]['dataContainer']='C*'+clase
					setClassState(a[c],c_state)

					a[c]['children']=new Array
					a[c]['children'][0]=new Array
                    a[c]['children'][0]['onChangeCheckbox']=VisChanged
					if ( grupo == 'Nada' )
					{
       	                a[c]['children'][0]['caption']=desc
                        a[c]['children'][0]['dataContainer']=mapa
						a[c]['children'][0]['icon']=icon
						setMapStates(a[c]['children'][0], cb_state, cb_dibujar)
					}
					else
					{
       	                a[c]['children'][0]['caption']=grupo
						a[c]['children'][0]['icon']=null
                        a[c]['children'][0]['dataContainer']='G*'+grupo
						setGroupState(a[c]['children'][0],g_state)

						a[c]['children'][0]['children']=new Array
       	                a[c]['children'][0]['children'][0]=new Array
       		            a[c]['children'][0]['children'][0]['caption']=desc
	                    a[c]['children'][0]['children'][0]['dataContainer']=mapa	
						a[c]['children'][0]['children'][0]['icon']=icon
	                    a[c]['children'][0]['children'][0]['onChangeCheckbox']=VisChanged

						setMapStates(a[c]['children'][0]['children'][0], cb_state, cb_dibujar)
					}
				}

                clase_o=clase
                grupo_o=grupo
				g=0
				m=0
			}
			else if ( grupo != grupo_o )
			{
				g++						
				a[c]['children'][g]=new Array
      	        a[c]['children'][g]['onChangeCheckbox']=VisChanged

				if ( grupo == 'Nada' )
				{
      	            a[c]['children'][g]['caption']=desc
      	            a[c]['children'][g]['dataContainer']=mapa
					a[c]['children'][g]['icon']=icon
					setMapStates(a[c]['children'][g], cb_state, cb_dibujar)
				}
				else
				{
      	            a[c]['children'][g]['caption']=grupo
					a[c]['children'][g]['icon']=null
      	            a[c]['children'][g]['dataContainer']='G*'+grupo
					setGroupState(a[c]['children'][g],g_state)

					a[c]['children'][g]['children']=new Array
	      	        a[c]['children'][g]['children'][0]=new Array
      			    a[c]['children'][g]['children'][0]['caption']=desc
	                a[c]['children'][g]['children'][0]['dataContainer']=mapa	
					a[c]['children'][g]['children'][0]['icon']=icon
	                a[c]['children'][g]['children'][0]['onChangeCheckbox']=VisChanged

					setMapStates(a[c]['children'][g]['children'][0], cb_state, cb_dibujar)
					
				}

                grupo_o=grupo
				m=0
			}
			else
			{

				if ( clase == 'Nada' )
				{
					c++
					a[c]=new Array
                    a[c]['onChangeCheckbox']=VisChanged
                    a[c]['caption']=desc
                    a[c]['dataContainer']=mapa
					a[c]['icon']=icon
					setMapStates(a[c], cb_state, cb_dibujar)
				}
				else if ( grupo == 'Nada' )
				{
					g++
					a[c]['children'][g]=new Array
      	            a[c]['children'][g]['onChangeCheckbox']=VisChanged
      	            a[c]['children'][g]['caption']=desc
      	            a[c]['children'][g]['dataContainer']=mapa
					a[c]['children'][g]['icon']=icon
					setMapStates(a[c]['children'][g], cb_state, cb_dibujar)
				}
				else
                {
					m++
					a[c]['children'][g]['children'][m]=new Array
					a[c]['children'][g]['children'][m]['caption']=desc
					a[c]['children'][g]['children'][m]['dataContainer']=mapa
					a[c]['children'][g]['children'][m]['icon']=icon	
					a[c]['children'][g]['children'][m]['onChangeCheckbox']=VisChanged
					setMapStates(a[c]['children'][g]['children'][m], cb_state, cb_dibujar)
					
				//	if ( desc == 'Farmacias' )
				//		a[c]['children'][g]['children'][m]['icon']='http://arqfotos/dfgweb/icons/icon_farmacia.png'
				}
			}
		}
	}
	initVisTree()

	gris_clase_grupo()

	hide_busy()
}


//
// Poner los checkboxes a true/false
//

function setGroupState(nodo, state)
{
	if ( state == 'S' )

		nodo['isChecked']=2
	else
		nodo['isChecked']=0

	// Ver si tenemos que encender o apagar la capa.

	if ( cb_cambios.length > 0 )
	{
		for (var i=0;i<cb_cambios.length;i++)
		{
			var grupo=unconvertir_caracteres(cb_cambios[i][0])
			grupo=grupo.substring(2,grupo.length)
			if ( nodo.caption == grupo )
			{
				if (  cb_cambios[i][1] == 's' )
					nodo.isChecked=2
				else
					nodo.isChecked=0
			}
		}
	}
}


//
// Poner los checkboxes a true/false
//

function setClassState(nodo, state)
{
	if ( state == 'S' )

		nodo['isChecked']=2
	else
		nodo['isChecked']=0

	// Ver si tenemos que encender o apagar la capa.

	if ( cb_cambios.length > 0 )
	{
		for (var i=0;i<cb_cambios.length;i++)
		{
			var clase=unconvertir_caracteres(cb_cambios[i][0])
			clase=clase.substring(2,clase.length)
			if ( nodo.caption == clase )
			{
				if (  cb_cambios[i][1] == 's' )
					nodo.isChecked=2
				else
					nodo.isChecked=0
			}
		}
	}
}


//
// Poner los checkboxes a true/false y el texto gris/negro.
//    y tener en cuenta el estado del array del checkbox.
//

function setMapStates(nodo, state, dibujar)
{
	if ( state == 'true' )

		nodo['isChecked']=2
	else
		nodo['isChecked']=0

	if ( dibujar == 'true' )

		nodo['divStyle']=text_black
	else
		nodo['divStyle']=text_gray

	// Ver si tenemos que encender o apagar la capa.


	if ( cb_cambios.length > 0 )
	{
		for (var i=0;i<cb_cambios.length;i++)
		{
//alert(nodo.caption + " " + unconvertir_caracteres(cb_cambios[i][0]) + " " + state + " " + dibujar)
			if ( nodo.caption == unconvertir_caracteres(cb_cambios[i][0]) )
			{
				if (  cb_cambios[i][1] == 's' )
					nodo.isChecked=2
				else
					nodo.isChecked=0
			}
		}
	}
}

//
// Inicialicar el arbol de capas con los valores del array ya construido. 
//

function initVisTree()
{

  tv = new Bs_Tree()
  tv.imageDir = 'img/win98/'
  tv.useCheckboxSystem = true
  tv.useFolderIcon = true
  tv.checkboxSystemWalkTree = 5

//  tv.imageHeight = 32;
//  tv.divStyle  = 'font-size:20px; color:green;';
//  tv.divStyle  = 'color:green;'

  tv.initByArray(a)
  tv.drawInto('treeVis')


//  tv._pseudoElement.expandAll()
}

//
// Lanza una consulta a Genamap y espera una respuesta de texto (sin imagen)
// No solo se usa para la funcion de escala.
//

function get_escala()
{
	var comm

	if (( func == 'GCEscala' ) || ( func == 'GCAncho' ))

		comm='command=liz.preplot '+ func+' '+iwidth+' '+iheight+' '+escala_dist
	else
		comm='command=liz.preplot '+ func+' '+iwidth+' '+iheight+' '+mouseX+' '+mouseY+' '+mouseX2+' '+mouseY2

        serv='service=RAWTEXTPROVIDER'
        vis_capas='vis_capas=' + leer_vis_array()
	leng='lengua='+lengua
       	url=http+'?'+app+'&'+comm+'&'+sav+'&'+serv+'&'+cat+'&'+vis_capas+'&'+leng
        if (typeof window.ActiveXObject != 'undefined' )
        {
                xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
                xmlDoc.onreadystatechange = load_escala;
        }
        else
        {
                xmlDoc = new XMLHttpRequest();
                xmlDoc.onload = load_escala;
        }

        xmlDoc.open( "GET", url , true);
        xmlDoc.send( null );
}


//
// Proceso la respuesta de Genamap.
// Recibe la escala, dist, y los estados de los checkboxes del vis tree.
//

function load_escala()
{
	var mytext 
	var lines
	var data
	var clase
	var grupo
	var mapa
	var zoom_min,zoom_max
	var desc
	var root
	var nclases
	var ngrupos
	var nmapas

        if ( xmlDoc.readyState != 4 ) return 
	mytext=xmlDoc.responseText
	
	//alert ("DEBUG"+mytext)
  	//lines = mytext.split("#")
	luismi=mytext.split("%%%")
	lines=luismi[0].split("#");
	var ar_cor=luismi[1];

	if (nav==1)	// FF
	{
		if ( moz_brow_nu_sub != "2.0.0.8" ){
			document.getElementById("lizmap").innerHTML = ar_cor.substring(0,ar_cor.length-9)
		}
	}
	else
		document.getElementById("area_coord").innerHTML = ar_cor.substring(0,ar_cor.length-9)

	// La primera linea lleva la escala y distancia.

	line0=lines[0].split(",")	   // De la primera linea, saca la escala, distancia y extents.
	escala_dist=line0[0].split(" ")	   // Separa la escala y distancia 
	escala=escala_dist[0].substring(7)
	dist=escala_dist[1]
	coords_win=line0[1]		  // La segunda parte de la primera linea lleva los extents del window.

        if ( func == 'GCScroll' )       // Para un Scroll, no hace falta actualizar la escala ni las capas.
        {
                return
        }

	//document.formescala.textfield2.value=escala
	//document.formescala.textfield22.value=dist
        document.getElementById("textfield2").value = escala
        document.getElementById("textfield22").value = dist

	// El resto de los datos son las capas actuales.

	root = tv._pseudoElement
	nclases=root._children.length

	// Encender los checkboxes del tree en funcion de la lista de capas del gestor de capas.
	// Si la capa ya estaba seleccionado por el usuario, no lo tocamos.

	for (c=0;c<nclases;c++)	 					// Bucle por las clases
	{
		node=root._children[c]

		// Si es un mapa, comprueba su estado.

		if ( node.dataContainer.substring(1,2) != '*' )
		{
			// ver si el mapa esta en la nueva lista de mapas del servidor.

			found=false
			for (i=1;i<(lines.length-1);i++)
			{
				data=lines[i].split(",") 
				mapa=data[3]
				cb_dibujar=data[4]
				desc=data[5]
				cb_state=data[6].trim()

				if ( node.dataContainer == mapa )
				{		
					found=true
					ChangeTreeNodeState(node,cb_dibujar,cb_state,desc)
				}
			}
			if ( found == false )
			{
				alert ('Clases : Mapa no esta bien definido en la BD:' +  node.caption)
			}
		}

		ngrupos=node._children.length

		for (g=0;g<ngrupos;g++) 				// Bucle por los grupos
		{
			node=root._children[c]._children[g]

			if ( node.dataContainer.substring(1,2) != '*' )
			{
				// ver si el mapa esta en la nueva lista de mapas del servidor.

				found=false
				for (i=1;i<(lines.length-1);i++)
				{
					data=lines[i].split(",") 
					mapa=data[3]
					cb_dibujar=data[4]
					desc=data[5]
					cb_state=data[6].trim()

					if ( node.dataContainer == mapa )
					{		
						found=true
						ChangeTreeNodeState(node,cb_dibujar,cb_state,desc)
					}
				}
				if ( found == false )
				{
//					alert ('Grupos : Mapa no esta bien definido en la BD:' +  node.caption)
				}
			}

			nmapas=node._children.length

			for (m=0;m<nmapas;m++)				// Bucle por los mapas
			{
				node=root._children[c]._children[g]._children[m]

				// ver si el mapa esta en la nueva lista de mapas del servidor.

				found=false
				for (i=1;i<(lines.length-1);i++)
				{
					data=lines[i].split(",") 
					mapa=data[3]
					cb_dibujar=data[4]
					desc=data[5]
					cb_state=data[6].trim()

					if ( node.dataContainer == mapa )
					{		
						found=true
						ChangeTreeNodeState(node,cb_dibujar,cb_state,desc)
					}
				}
				if ( found == false )
				{
					alert ('Mapa no esta bien definido en la BD:' +  node.caption)
				}
			}
		}
	}

	gris_clase_grupo()
	tv._pseudoElement.render(false,true,3)
}


// Cambia el estado del nodo con el nuevo estado del checkbox y color de textos.
// cb_dibujar es para el color de texto.
// cb_state es para el checkbox.

function ChangeTreeNodeState(node,cb_dibujar,cb_state,desc)
{

	if ( cb_dibujar == 'true' )    // Texto en gris si no se dibuja por la escala.

		node.divStyle=text_black
	else 
		node.divStyle=text_gray

	// alert('Encontrado ' + mapa )

	// Ver si el mapa ya estaba seleccionado por el usuario (on o off)
	exists=false

	if ( cb_cambios.length != 0 )	// Si es 0, no se ha seleccionado nada.
	{
		for (j=0;j<cb_cambios.length;j++)
		{
			if ( cb_cambios[j][0] == desc )
			{
				exists=true
				break
			}
		}
	}

	if ( exists == true )
	{
	//	alert('Ya seleccionado' + mapa)
	}
	else
	{
		if ( cb_state == 'true' )

			node.setCheckboxValue(2, false, false)
		else    
			node.setCheckboxValue(0, false, false)
	}
}

//
// Lanza una consulta a Genamap y espera una respuesta de texto (sin imagen)
//

function get_text(url)
{
        if (typeof window.ActiveXObject != 'undefined' )
        {
                xmlDoc = new ActiveXObject("Microsoft.XMLHTTP")
                xmlDoc.onreadystatechange = load_text ;
        }
        else
        {
                xmlDoc = new XMLHttpRequest();
                xmlDoc.onload = load_text ;
        }
        xmlDoc.open( "GET", url , true );
        xmlDoc.send( null );
}

//
// Proceso la respuesta de Genamap.
//

function load_text()
{
	var mytext, aux 

        if ( xmlDoc.readyState != 4 ) return ;
	mytext=xmlDoc.responseText

	// Quitamos la etiqueta HTML
	aux=mytext.split("<HTML>")
	mytext=aux[1]
        aux=mytext.split("</HTML>")
	mytext=aux[0]
	data=mytext.split("!") 

  	// miramos si tiene enlace
	var tutext=data[0];
        //alert("tio"+tutext);
	data2=tutext.split(">>");

        if (typeof data2[1] != "undefined")
	{
		data2[1]=crearEnlace(data2[1]);
		data[0]=data2[0]+data2[1]+data2[2];
        }

	if ( respuesta_corta==true )
	{
		document.getElementById("text_output2").innerHTML = ''
		// Reset posicion del Pie
        	document.getElementById("text_output").style.visibility="hidden";
        	document.getElementById("text_output").innerHTML = data[0].replace(/#/g,'<BR/>') ;
		draw_ad(true)
		respuesta_corta=false
	}
	else
	{
		hide_ad()
		dibujar_atributos(data[0])
		document.getElementById('pie').style.visibility="hidden"
	}
	hide_busy()
	event_actividad=false
}

//
// Crea enlaces
//

function crearEnlace(enlace)
{
	var res,res2;
        res2=enlace.split(":");
        if (res2[0] == "enlace")
        {
        	res="<a href="+res2[1]+">"+res2[2]+"</a>"
 	}
        else
        {
                res="<a href=javascript:"+res2[1]+">"+res2[2]+"</a>"
        }
	return(res);
}

function SwitchOffForm1()
{
	for(var i=0; i<3; i++)
	{
		document.getElementById("form_zoom").radiobutton[i].checked=0
	}
	document.getElementById("formMapa").radiobutton.checked=0
	document.getElementById("formEntorno").radiobutton.checked=0

	esconder_cruces()
}

function SwitchOffUtilidades()
{
        for(var i=0; i<7; i++)
        {
                document.getElementById("formUTIL").util_radiobutton[i].checked=0
        }
}

function SwitchOffRutas()
{
        for(var i=0; i<document.getElementById("formRUTAS").rutas_radiobutton.length; i++)
        {
                document.getElementById("formRUTAS").rutas_radiobutton[i].checked=0
        }
	esconder_cruces()
}


function SwitchOffConsultas()
{
	var id_gena1
	for ( var i = 0 ; i < arbol_Consulta.length ; i++)
	{
		id_gena1=arbol_Consulta[i][0]	
		if ( id_gena1 != "" )
			getElById(''+id_gena1).checked=false
	}

	if (page_params == 0)
        {
		hide_ad()
		hide_busy()
		document.getElementById("text_output2").innerHTML = ""
		// Reset el Pie de la pagina.
//		if ( typeof iheight != 'undefined' ) 	
//			document.getElementById('myPie').style.top=(MapaTop+iheight+5) + 'px'
	}
}

//
// Entra aqui al cargar la pagina.
//

function LoadInicial() 
{
	if (document.all) nav=3		// IE
	else if (document.getElementById) nav=1 // FF
	else if (document.layers) nav=2
	else nav=4
	// Si no hay parametros de entrada, se carga la lista de mapas en el gestor de capas.
	// Si hay parametros, se los trata en CheckInputParams()

	if (nav == 1) // Si es FF, ajustar las buttones.
	{
		document.getElementById("buttonBorrarCons").style.bottom=1+"px"
		document.getElementById("buttonRedib").style.bottom=1+"px"
		document.getElementById("buttonFoto").style.bottom=1+"px"
	}
	else
		document.getElementById("buttonBorrarCons").style.bottom=0+"px"
	if (page_params == 0)
	{ 
		posicionar_ad_window()
		reset_to_scroll()
		imageSize(false) 
		ponerPieArriba()
		draw_busy()
		get_lista_mapas_inicial('true')
		setTimeout("draw_inicial_limpiar()", 50)
	}

	if ((nav==1) || (nav==3))
	{
		var MapOutDiv = document.getElementById("MapOutDiv")		
		MapOutDiv.onmousedown=ac_down;
		MapOutDiv.onmousemove=mouse_move;
		MapOutDiv.onmouseup=ac_up;

		document.getElementById("zoom_box").onmouseup=ac_up

		if (nav==1) 	//FF
			document.getElementById("zoom_box").onmousemove=mouse_move
	}
	if (nav==2) 
	{
		document.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP | Event.MOUSEDOWN)
		document.onmouseup=ac_up 
		document.onmousedown=ac_down 
	}
}


function draw_inicial_limpiar()
{
    ser='service=RAWIMAGEPROVIDER'
    com='command=liz.main GCInicioLimpiar ' + iwidth + ' ' + iheight
	leng='lengua='+lengua
	load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng)
}


// used to control moving the map div
var dragtop;
var dragleft;
var dragStartTop;
var dragStartLeft;

function ac_down(event) 
{
	if (func=='SaveAs')
        {
                hide_ad()
                return
        }

	if (!event) event=window.event
	
	if ( nav==3 )
		srcElem=event.srcElement.id
	else
		srcElem=event.target.id
		
//alert(srcElem)

	// Como los image_maps tambien tienen los events, hay que para el evento o se lanza dos veces en IE.
	event.cancelBubble=true;

	if ( document.getElementById("form_zoom").radiobutton[2].checked )
	{
		dragmode = 'scroll';
		hide_ad()
		imageSize(true)

		dragStartLeft = event.clientX;
		dragStartTop = event.clientY;
		var MapInDiv= document.getElementById("MapInDiv");
//		MapInDiv.style.cursor = "-moz-grab";

		dragtop = stripPx(MapInDiv.style.top);
        	dragleft = stripPx(MapInDiv.style.left);
// alert(dragStartLeft + ' ' + dragStartTop  + ' ' + top  + ' ' +  left)
	}
	else if ( document.getElementById("form_zoom").radiobutton[0].checked )
	{
		dragmode = 'zoom';
		hide_ad()
		imageSize(false)
		xdrag = event.clientX;
		ydrag = event.clientY;
		xabs=xdrag	
		yabs=ydrag
	}
	else
	{
		if (( srcElem == 'imagemap' ) || ( srcElem == 'mapa_image' ))
			ClickMap()
//		else
//			alert(srcElem)
	}

	return(false)
}


function mouse_move(event) 
{
	var srcElem

	if (!event) event=window.event

	xabs = event.clientX
	yabs = event.clientY

	if ( nav == 3 )
		srcElem=event.srcElement.id
	else
		srcElem=event.target.id

	if ((nav==3) || (nav==1))
	{
		if (dragmode == 'scroll' ) 
		{
			if ( srcElem == 'MapOutDiv' )
			{
				// Si sale del Div con Scroll puesto, forzar el scroll.

				deltaX=event.clientX-dragStartLeft
				deltaY=event.clientY-dragStartTop
				mouseX=Math.round((iwidth/2)-deltaX)
				mouseY=Math.round((iheight/2)-deltaY)
				draw_busy()
        			func='GCScroll'
				dragmode = 'nowt';
        			ser='service=RAWIMAGEPROVIDER'
				imageSize(false) 
        			get_escala() 				// Lanza primero la peticion por texto.
				setTimeout("draw_map()", 500)		// Si no hay espera, a veces 
			}
			else
			{
				var MapInDiv = document.getElementById("MapInDiv");
				MapInDiv.style.top = (parseFloat(dragtop) + (event.clientY - dragStartTop)) + "px";
				MapInDiv.style.left = (parseFloat(dragleft) + (event.clientX - dragStartLeft)) + "px";
			}
			return(false);
		}
		else if (dragmode == 'zoom' )
		{
			dragbox()
			return(false);
		}
	}

	limi1=new Array
	limi1=coords_win.split(' ')

	// Dibujar las coords.
	if (( srcElem == 'mapa_image' ) || ( srcElem == 'imagemap' ) || ( srcElem == 'zoom_box' )) 
	{

	// Note: In Firefox, set  "Tools ? Options ? Web Features ? Enable JavaScript / Advanced ? 
	// 	Allow scripts to change status bar text" 

		xcalc=xabs-MapaLeft-2
		ycalc=yabs-MapaTop-2

		if (limi1[0] == '') 
		{
			mapVX=(-1)*((-1)*limi1[1]-(limi1[2]-limi1[1])*xcalc/(iwidth-1)); 
			mapVY=limi1[4]-(limi1[4]-limi1[3])*ycalc/(iheight-1); 
		}
		else 
		{
			mapVX=(-1)*((-1)*limi1[0]-(limi1[1]-limi1[0])*xcalc/(iwidth-1)); 
			mapVY=limi1[3]-(limi1[3]-limi1[2])*ycalc/(iheight-1); 
		}
		window.status='X: '+Math.floor(mapVX)+', Y: '+Math.floor(mapVY)
	}
	else
		window.status='SIT/LIZ '

	// window.status=dragmode + " " + srcElem
	return(true)
}


function ac_up(event)
{
	if ( event_actividad == true )    // Si ya se ha seleccionado una actividad, tiramos el evento.
		return

 	if (func=='SaveAs')
        {
                hide_ad()
		func=''
                return
        }
	if (!event) event=window.event

	// Como los image_maps tambien tienen los events, hay que parar el evento o se lanza dos veces en IE.
	event.cancelBubble=true;

	document.getElementById("MapInDiv").style.cursor = "";

	if ( dragmode == 'zoom' )
	{
		if (( ydrag == event.clientY ) && ( event.clientX == xdrag))
		{
                	func='GCZoomin'
			mouseX=event.clientX-MapaLeft
			mouseY=event.clientY-MapaTop
		}
		else
		{
                	func='GCZoomVent'

			mouseX=xdrag-MapaLeft
			mouseY=ydrag-MapaTop
			mouseX2=xabs-MapaLeft
			mouseY2=yabs-MapaTop
		}
		draw_busy()
		dragmode = 'nowt';
	}
	else if ( dragmode == 'scroll' )
	{

		if (( dragStartTop == event.clientY ) && ( event.clientX == dragStartLeft ))
		{
			mouseX=dragStartLeft-MapaLeft
			mouseY=dragStartTop-MapaTop
		}
		else
		{
			deltaX=event.clientX-dragStartLeft
			deltaY=event.clientY-dragStartTop
			mouseX=Math.round((iwidth/2)-deltaX)
			mouseY=Math.round((iheight/2)-deltaY)
		}
		draw_busy()
        	func='GCScroll'
		dragmode = 'nowt';
	}
	else
	{
		return
	}

    ser='service=RAWIMAGEPROVIDER'
	imageSize(false) 

    get_escala() 					// Lanza primero la peticion por texto.

	setTimeout("draw_map()", 700)	// Si no hay espera, a veces 
									//     llega primero la segunda peticion.
}


function draw_map()
{
	vis_capas='vis_capas=' + leer_vis_array()
        com='command=liz.main '+func+' '+iwidth+' '+iheight+' '+mouseX+' '+mouseY+' '+mouseX2+' '+mouseY2
	load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+vis_capas)

	document.getElementById('zoom_box').style.visibility = 'hidden'
	dragmode = 'nowt';
}

function stripPx(value) 
{
	if (value == "") return 0;
	return parseFloat(value.substring(0, value.length - 2));
}

function setInnerDivSize(width, height) 
{
	var MapInDiv = document.getElementById("MapInDiv")
	MapInDiv.style.width = width
	MapInDiv.style.height = height
}

function load_mapa(url)
{
	var img = document.getElementById("mapa_image");

        if (!img) 
	{
		img = document.createElement("img");

		var MapInDiv = document.getElementById("MapInDiv")
		MapInDiv.appendChild(img);
		img.onmouseover=MM_showHideLayers
		img.useMap='#lizmap'
	}

	// Inlcuir un timestamp para superar los problemas del cache del navegador.

	var nd = new Date();
	var TS=nd.getTime()
        var ts='&ts=' + TS
	url=url+ts

	img.src = url
	img.style.position = "absolute";
	img.style.left = 0
	img.style.top = 0
	img.style.borderWidth=0
	img.style.zIndex = 0;
	img.setAttribute("id", "mapa_image");
	document.getElementById('mapa_image').onload=image_load
}


function load_grafico(url)
{
	var img = document.getElementById("grafico_image");

        if (!img) 
	{
		img = document.createElement("img");
		document.getElementById("GraficoDiv").appendChild(img);
	}

	img.src = url
	img.style.position = "absolute";
	img.style.left = 0
	img.style.top = 0
	img.style.borderWidth=0
	img.style.zIndex = 0;
	img.setAttribute("id", "grafico_image");

	document.getElementById('grafico_image').onload=grafico_image_load
	document.getElementById('pie').style.visibility="hidden"
}

function testlew(paramlew)
{
	alert(paramlew)
}


function image_load()
{
	if (func == 'GCScroll')
	{
		var MapInDiv=document.getElementById('MapInDiv')
		MapInDiv.style.top = 0
		MapInDiv.style.left = 0
	}
	else if (func == 'GCZoomout')
	{
		document.getElementById('mapa_image').style.cursor='crosshair'
	}
	else if ((func == 'GCInicio') || (func == 'GCInicioLimpiar'))
	{
		document.getElementById('formMapa').radiobutton.checked=0
		document.getElementById('formEntorno').radiobutton.checked=0
		document.getElementById('mapa_image').style.cursor='default'
	}
	hide_busy()
}

function grafico_image_load()
{
	var txt

	switch (lengua)
	{
	    case "0":		// es
		txt="Perfil generado<br><br>Consulte la grafica debajo del mapa "
	        break
	    case "1":		// eu
		txt="Profila egina dago<br><br>Ikus maparen azpiko grafikoa"
	        break
	    case "2":		// eu
		txt="Profile Calculated<br><br> Scroll down to view the results"
	        break
	    case "3":		// eu
		txt="XXXX XXXX <br><br> XXXXXX"
	        break
	}

	document.getElementById("text_output").innerHTML = txt
	draw_ad()

	document.getElementById("GraficoDiv").style.visibility = 'visible'

	document.getElementById('form_zoom').radiobutton[2].checked='true'
	document.getElementById('mapa_image').style.cursor='hand'
	hide_busy()
}

// A lo mejor se puede eliminar la llamada de awk de creacion del image map.
function ac_down_s(e)
{
}


function ads(myvar)
{
        event_actividad=true
        ser='service=RAWTEXTPROVIDER'
        func='GCQuery'
        capa='CAPAS_SIMBOLOS'
        respuesta_corta=true

        dibujar_cruz('marca0')

        if (is_chrome > -1)             // Chrome
        {
                mouseX = event.clientX-MapaLeft
                mouseY = event.clientY-MapaTop
        }
	else
	{
        	mouseX=event.offsetX
        	mouseY=event.offsetY
	}

        // Devuelve texto en lugar de imagen
        com='command=liz.main '+func+' '+iwidth+' '+iheight+' '+mouseX+' '+mouseY+' '+capa+' '+myvar
	leng='lengua='+lengua
        url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng
        get_text(url)
	event.cancelBubble=true;
}



function dragbox() 
{
//	 window.status=xabs + " " + yabs + " " + xdrag + " " + ydrag

	var margin_left
	var margin_right

	// Hacer clipping

	if (nav==1) 		//FF
	{
		margin_left=4 	// same for top
		margin_right=3	// same fo bottom
	}			
	else  
	{
		margin_left=5
		margin_right=1
	}
		
	if ((xabs > (MapaLeft+iwidth-margin_right)) || (xabs < (MapaLeft+margin_left)))
		return

	if ((yabs > (MapaTop+iheight-margin_right)) || (yabs < (MapaTop+margin_left)))
		return

	// Usar variable locales

	var x1=xabs-MapaLeft-4
	var x2=xdrag-MapaLeft-4
	var y1=yabs-MapaTop-4
	var y2=ydrag-MapaTop-4

	if (nav==3)
	{
		var delta=Math.abs(x1-x2)
		if ( delta <= 2)
			return(true)

		var delta=Math.abs(y1-y2)
		if ( delta <= 2)
			return(true)
	}

	if ((x1 == x2) || (y1 == y2 ))
	{
		return
	}


	var zoom_box=document.getElementById('zoom_box')

	if (x1 > x2) 
	{
		zoom_box.style.left   = x2 + 'px'

		if (nav==1)
			zoom_box.style.width = (x1 - x2) + 'px'
		else
		{
			zoom_box.style.width = (x1 - x2 -2) + 'px'
		}

		if (y1 > y2) 
		{
			zoom_box.style.top = y2 + 'px'

			if (nav==1)
				zoom_box.style.height = (y1 - y2) + 'px'
			else
				zoom_box.style.height = (y1 - y2 -2) + 'px'
		}
		else
		{
			zoom_box.style.top = y1 + 'px'

			if (nav==1)
				zoom_box.style.height = (y2 - y1) + 'px'
			else
				zoom_box.style.height = (y2 - y1 +2) + 'px'
		}
	}
	else if (x1 < x2)
	{
		zoom_box.style.left = x1 + 'px'

		if (nav==1)
			zoom_box.style.width = (x2 - x1) + 'px'
		else
			zoom_box.style.width = (x2 - x1 +2) + 'px'

		if (y1 > y2) 
		{
			zoom_box.style.top = y2 + 'px'

			if (nav==1)
				zoom_box.style.height = (y1 - y2) + 'px'
			else
				zoom_box.style.height = (y1 - y2 -2) + 'px'
		}
		else
		{
			zoom_box.style.top = y1 + 'px'
			if (nav==1)
				zoom_box.style.height = (y2 - y1) + 'px'
			else
				zoom_box.style.height = (y2 - y1 +2) + 'px'
		}
	}
	zoom_box.style.visibility = 'visible'
}  


function imageSize(leave_footer) 
{
  	if( nav == 1 )  				// Firefox
  	{
    	myWidth = window.innerWidth-15
    	myHeight = window.innerHeight;
  	} 
  	else 						// IE 
  	{
		if (document.documentElement.clientWidth == 0) 
		{
			myWidth = document.documentElement.offsetWidth
			myHeight = document.documentElement.offsetHeight - 0;
		}
		else 
		{
			myWidth = document.documentElement.clientWidth;
			myHeight = document.documentElement.clientHeight - 0;
	  	}	
  } 

  iwidth=myWidth-213		// Modificar aqui para cambiar el tamaï¿½o de la imagen.
  iheight=myHeight-130		// Modificar aqui para cambiar el tamaï¿½o de la imagen.

//  window.alert( 'Width = ' + myWidth + 'Height = ' + myHeight );

	// si la llamada viene de la pagina html de impresion, no hace nada.

	if ( typeof cat != 'undefined' ) 	
	{
		document.getElementById('MapOutDiv').style.left=MapaLeft + 'px' 
		document.getElementById('MapOutDiv').style.top=MapaTop + 'px' 
		document.getElementById('MapOutDiv').style.width=(iwidth-3) + 'px' 
		document.getElementById('MapOutDiv').style.height=(iheight-3) + 'px' 
// alert(MapaLeft + " " + MapaTop + " " + iwidth + " " + iheight)
		document.getElementById('MapOutDiv').style.visibility='visible'

		document.getElementById('MapInDiv').style.width=(iwidth-3) + 'px' 
		document.getElementById('MapInDiv').style.height=(iheight-3) + 'px' 

		document.getElementById('text_output2').style.top=(MapaTop+iheight+5) + 'px'
		document.getElementById('text_output2').style.left=MapaLeft + 'px'
		document.getElementById('text_output2').style.width=(iwidth-3) + 'px'

		document.getElementById('GraficoDiv').style.top=(MapaTop+iheight+5) + 'px'
		document.getElementById('GraficoDiv').style.left=MapaLeft + 'px'
		document.getElementById('GraficoDiv').style.width=(iwidth-3) + 'px'


		// A veces hay que dejar el pie de pagina en su sitio.
	//	if ( leave_footer == false )
	//		document.getElementById('myPie').style.top=(MapaTop+iheight+5) + 'px'
	}
}

function FuncClick(e)
{
	var formMapa = document.getElementById('formMapa')
	var formEntorno = document.getElementById('formEntorno')
	var form1 = document.getElementById('form_zoom')

	if ((!formMapa.radiobutton.checked) && (!formEntorno.radiobutton.checked))
	{
		SwitchOffRutas();
		SwitchOffUtilidades();
		SwitchOffConsultas();
	}
	if (formMapa.radiobutton.checked)
	{
		ClickMap()
	}
	else if (formEntorno.radiobutton.checked)
	{
		var coords=coords_win.split(' ')
		var exmin=Math.floor(coords[1])
		var exmax=Math.floor(coords[2])
		var eymin=Math.floor(coords[3])
		var eymax=Math.floor(coords[4])
		var params='&exmin='+exmin+'&exmax='+exmax+'&eymin='+eymin+'&eymax='+eymax
		window.open('http://'+window.location.host+'/dfgweb/mapa_entorno.html?genauser='+genauser+params,"entorno","toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no,width=170px,height=170px")
		formEntorno.radiobutton.checked=0
	}
	else if (form1.radiobutton[0].checked) 
	{
		document.getElementById('mapa_image').style.cursor="crosshair"
		ayuda('pincharvent',1)
	}
	else if (form1.radiobutton[1].checked)
	{
		document.getElementById('mapa_image').style.cursor="crosshair"
		ayuda('pinchar',1)
	}
	else if (form1.radiobutton[2].checked) 
	{
		document.getElementById('mapa_image').style.cursor='pointer'
		ayuda('pinchar',1)
	}
	else
		document.getElementById('mapa_image').style.cursor='default'

	document.getElementById('marca0').style.visibility = 'hidden'
}

function ayuda(file,borrar_wind)
{
	if ( lengua == 1 )
		file=file+'_eu.htm'
	else if ( lengua == 2 )
		file=file+'_in.htm'
	else if ( lengua == 3 )
		file=file+'_fr.htm'
	else
		 file=file+'.htm'

	if (borrar_wind == 1) 
		document.getElementById('text_output').innerHTML=''

	// Para cargar un HTML en un div, hace falta pasarlo por un iframe (invisible)
	window.frames['bufferHTML'].location = 'http://'+window.location.host+'/dfgweb/ayuda/'+file

	// Si dibujamos la ventana directamente, aa veces aparece vacio.
	setTimeout("ayuda_textout()",300)
}

function ayuda_textout()
{
	var current_text=document.getElementById("text_output").innerHTML
	document.getElementById('text_output').innerHTML=window.frames['bufferHTML'].document.body.innerHTML + current_text
	draw_ad()
}

function ayuda2(file)
{
	if ( lengua == 1 ) {
		file=file+'_eu.htm'
		}
	else if ( lengua == 2 ) {
		file=file+'_in.htm'
		}
	else if ( lengua == 3 ) {
		file=file+'_fr.htm'
		}
	else {
		 file=file+'.htm'
		}

	// Para cargar un HTML en un div, hace falta pasarlo por un iframe (invisible)

	window.frames['bufferHTML'].location = 'http://'+window.location.host+'/dfgweb/ayuda/'+file
	//setTimeout(ayuda2_textout(),1000)
	ayuda2_textout()
}

function ayuda2_textout()
{
	var txt_message
	var txt_size
	var txt_small
	var txt_scale

// 'o ó
// nye ñ 
// 'a  á
	switch (lengua)
	{
	    case "0":		// es
		txt_title="Impresión"
		txt_message="permite generar una imagen con el tamaño y la escala aproximada que elija en las opciones. Esta imagen apareceráa en una nueva ventana del navegador desde donde podrá imprimirla o salvarla."
		txt_size="Tamaño"
		txt_small="pequeño"
		txt_scale="Escala"
		txt_scale1="ambito&nbsp;visualizado"
		txt_scale2="aproximadamente"
		txt_orient="Orientación"
		txt_vert="vertical"
		txt_horiz="horizontal"
	        break
	    case "1":		// eu
		txt_title="Inprimaketa"
		txt_message="zeuk aukeratutako tamainan eta eskala, gutxi gorabehera, sortzeko aukera ematen du. Irudi hori nabigatzailearen leiho berri batean agertuko zaizu eta handik inprimatu edo beste nonbait gorde ahal izango duzu."
		txt_size="Tamaina"
		txt_small="txikia"
		txt_scale="Eskala"
		txt_scale1="ikusitako eremua"
		txt_scale2="gutxi gora-behera"
		txt_orient="Orientazioa"
		txt_vert="zutik"
		txt_horiz="etzanda"
	        break
	    case "2"||"3":	// en
		txt_title="Print"
		txt_message="Opens a new window containing a printable image based on the selected options of paper size, scale and page layout."
		txt_size="Size"
		txt_small="small"
		txt_scale="Scale"
		txt_scale1="current window"
		txt_scale2="approximately"
		txt_orient="Page Layout"
		txt_vert="vertical"
		txt_horiz="horizontal"
	        break
	}

	text='<div class="text_class"><u>'+txt_title + ':</u> '+ txt_message+'</div>'
        text=text + '<div id="Printer" ><FONT FACE="Arial" size=1>'
        text=text + '<FORM name="ImprimirForm"  class="text_class">'
        text=text + '<table border=0 CELLSPACING=0 CELLPADDING=10 style="width:100%">'
        text=text + '<tr>'

        text=text + '<td valign="top" width="20%">'
        text=text + '<table border=0 CELLSPACING=0 CELLPADDING=0 width="100%">'
        text=text + '<tr><td><b><small>'+txt_size+':</small></b></td>'
        text=text + '<td><small>'+txt_small+'</small></td><td><input class="myRadioBut" type=radio value="000x000" name="tama"></td></tr>'
        text=text + '<tr><td></td><td><small>A4</small></td><td><input class="myRadioBut" type=radio value="636x850" name="tama" checked></td></tr>'
        text=text + '<tr><td></td><td><small>A3</small></td><td><input class="myRadioBut" type=radio value="950x1180" name="tama"></td></tr>' 
        text=text + '<tr><td></td><td><small>A2</small></td><td><input class="myRadioBut" type=radio value="1300x1850" name="tama"></td></tr>'
        text=text + '<tr><td></td><td><small>A1</small></td><td><input class="myRadioBut" type=radio value="1937x2715" name="tama"></td></tr>'
        text=text + '</table>' 
        text=text + '</td>'
	text=text + '<td width=1><img src="images/vertical_line.gif"></td>'

        text=text + '<td valign="top" width="50%">'
        text=text + '<table border=0 CELLSPACING=0 CELLPADDING=0 width="100%">'
        text=text + '<tr><td><b><small>'+txt_scale+':</small></b></td>'
        text=text + '<td><small>'+txt_scale1+'</small></td><td><input class="myRadioBut" type=radio value="0" name="esca" checked></td></tr>'
        text=text + '<tr><td></td><td><small>'+txt_scale2+' 1:5000</small></td><td><input class="myRadioBut" type=radio value="5000" name="esca"></td></tr>'
        text=text + '<tr><td></td><td><small>'+txt_scale2+' 1:10000</small></td><td><input class="myRadioBut" type=radio value="10000" name="esca"></td></tr>'
        text=text + '<tr><td></td><td><small>'+txt_scale2+' 1:25000</small></td><td><input class="myRadioBut" type=radio value="25000" name="esca"></td></tr>' 
        text=text + '</table>' 
        text=text + '</td>'
	text=text + '<td width=1><img src="images/vertical_line.gif"></td>'

        text=text + '<td valign="top" width="30%">'
        text=text + '<table border=0 CELLSPACING=0 CELLPADDING=0 >'
        text=text + '<tr><td><b><small>'+txt_orient+':&nbsp&nbsp</small></b></td>'
        text=text + '<td><small>'+txt_vert+'</small></td><td><input  class="myRadioBut" type=radio value="VE" name="orien" checked></td></tr>' 
        text=text + '<tr><td></td><td><small>'+txt_horiz+'</small></td><td><input  class="myRadioBut" type=radio value="OR" name="orien"></td></tr>'
        text=text + '<input  type=hidden value="PA" name="recib" chec class="myRadioBut"ed>' 
        text=text + '<input  type=hidden value="MA" name="recib">'
        text=text + '<input type=hidden name="dircor" value="">' 
        text=text + '</table>' 
        text=text + '</td>'
        text=text + '</tr>'
        text=text + '</table>' 

        text=text + '<table border=0 CELLSPACING=0 CELLPADDING=3 width="100%">'
	text=text + '<td width="35%">'
	text=text + '</td>'
	text=text + '<td width="30%">'
        text=text + '<input class="ButtonClass" style="left:10%" type=button name="OK" value="OK" onClick="imprimir1()">'
        text=text + '<input class="ButtonClass" style="left:30%" type=button name="CANCEL" value="CANCEL" onClick="CalcularCancel()">' 
	text=text + '</td>'
	text=text + '<td width="35%">'
        text=text + '<input type=hidden name="AccionBoton" value="">' 
        text=text + '<input type=hidden name="AccionSiguienteBoton" value="">'
	text=text + '</td>'

        text=text + '</table>' 
        text=text + '</FORM>' 
        text=text + '</FONT></div>'

	dibujar_atributos(text)
}


function ConsultaClick(e)
{
	document.getElementById('mapa_image').style.cursor='default'
	document.getElementById('marca0').style.visibility = 'hidden'

	var formUTIL=document.getElementById('formUTIL')
	var formRUTAS=document.getElementById('formRUTAS')

	if ((formUTIL.util_radiobutton[0].checked) || (formUTIL.util_radiobutton[1].checked)   ||
            (formUTIL.util_radiobutton[2].checked) || (formRUTAS.rutas_radiobutton[0].checked) ||
            (formRUTAS.rutas_radiobutton[1].checked))
	{

        }
	else if ((formRUTAS.rutas_radiobutton.length > 2) && ((formRUTAS.rutas_radiobutton[2].checked) ||
            (formRUTAS.rutas_radiobutton[3].checked) || (formRUTAS.rutas_radiobutton[4].checked)))
	{

	}
	else if ( formUTIL.util_radiobutton[3].checked == true )
        {
		ayuda('hacer_puntos_dxf',1)
		draw_ad()
        }
        else if ( formUTIL.util_radiobutton[4].checked == true )
        {
		ayuda('hacer_puntos_fotos',1)
		draw_ad()
        }
	else if ( formUTIL.util_radiobutton[5].checked == true )
        {
		ayuda('hacer_puntos_lidar',1)
		draw_ad()
        }
	else
	{
		// verificar si hay algun boton activo del arbol de consulta
		var id_gena1
		var fAyuda
		var accionPrevia=''
		var servGenaPrevio=''
		var funcPrevia=''
		if ( nav == 3 )
			srcElem=event.srcElement.id
		else
			srcElem=event.target.id
		for ( var i = 0 ; i < arbol_Consulta.length ; i++)
		{
			id_gena1=arbol_Consulta[i][0]
			if ( id_gena1 != "" )
			{
				if ( getElById(''+id_gena1).checked == true )
				{
					// boton activo, ver si el click es sobre el mismo
					if ( id_gena1 != srcElem )
						// no son iguales, salir del bucle
						break

					//click real sobre boton activo, obtener la ayuda
					fAyuda = arbol_Consulta[i][7]
					accionPrevia = arbol_Consulta[i][12]
					servGenaPrevio = arbol_Consulta[i][13]
					funcPrevia = arbol_Consulta[i][14]
					ayuda(''+fAyuda,1)
					draw_ad()
					break
				}
			}

		}
	}

	if ( accionPrevia == 'true' )
 	{
		// es boton de accion previa, ejecutarla	

		// Descargamos la parrilla
		ser='service='+servGenaPrevio
		func=''+funcPrevia

		imageSize(false)
       		com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
		load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser)
	}
}


//function fire_event()
//{
//	var fireOnThis=document.getElementById('formescala')
//	var fireOnThis=document.getElementById('ad_window')

//	if ( nav == 3 ) //IE
//	{
//		fireOnThis.fireEvent("onclick")
//	}
//	else
//	{
//		var evObj = document.createEvent('MouseEvents');
//		evObj.initEvent( 'click', true, true );
//		fireOnThis.dispatchEvent(evObj);
//	}
//}


//function dummy_event()
//{
//	if (getElById('HAZDXF').checked == true)
//	{
//		getElById('CARTOGRAFIA').checked = true
//		setTimeout("dummy_event2()",2300)
//	}
//	else if  (getElById('hacerdxf').checked == true)
//	{

//	} 
//}

//function dummy_event2()
//{
//	getElById('MUNICIPIO').checked = true
//}

function ClickMap() {

	var vis_capas
	var capa=''

        if (is_chrome > -1)             // Chrome
        {
                mouseX = event.clientX-MapaLeft
                mouseY = event.clientY-MapaTop
        }
        else
        {
                mouseX=event.offsetX
		mouseY=event.offsetY+5
        }

	var formMapa=document.getElementById('formMapa')
	var formRUTAS=document.getElementById('formRUTAS')
	var formUTIL=document.getElementById('formUTIL')
	var form1=document.getElementById('form_zoom')
	 
 	if (formMapa.radiobutton.checked) // Mapa resumen.
        {
                ser='service=RAWIMAGEPROVIDER'
                func='GCInicio'
		draw_busy()
        }
 	else if (form1.radiobutton[0].checked) // Zoom. nothing here, see ac_up
        {

        }
        else if (form1.radiobutton[1].checked)
        {
		hide_ad()
                ser='service=RAWIMAGEPROVIDER'
                func='GCZoomout'
		document.getElementById('mapa_image').style.cursor='progress'
		draw_busy()
        }
        else if (form1.radiobutton[2].checked)
        {

        }
        else if ((formUTIL.util_radiobutton[0].checked) || (formUTIL.util_radiobutton[1].checked)      ||
                (formUTIL.util_radiobutton[2].checked) || (formRUTAS.rutas_radiobutton[0].checked)     ||
                (formRUTAS.rutas_radiobutton[1].checked) ||
		((formRUTAS.rutas_radiobutton.length > 2) && ((formRUTAS.rutas_radiobutton[2].checked) ||
            	 (formRUTAS.rutas_radiobutton[3].checked) || (formRUTAS.rutas_radiobutton[4].checked))))
	{

		numCoords++;
		// window.status=numCoords

		if ( numCoords >= 30 )
		{
			alert('Max de 30 coordenadas')
		}
		else
		{
			cursorX=cursorX+"|"+(mouseX-2);
			cursorY=cursorY+"|"+(mouseY-5);
			dibujar_cruz('marca' + numCoords)
			showLimpiarConsulta()
		}
		return
        }
	else if ( formUTIL.util_radiobutton[3].checked == true )
        {
                ser='service=RAWTEXTPROVIDER'
                func='GCQuery'
                capa='hazdxf'
        }
        else if ( formUTIL.util_radiobutton[4].checked == true )
        {
                ser='service=RAWTEXTPROVIDER'
                func='GCQuery'
                 capa='hazdxf'
        }
        else if ( formUTIL.util_radiobutton[5].checked == true )
        {
                ser='service=RAWTEXTPROVIDER'
                func='GCQuery'
                capa='hazlidar'
        }
        else if ( formUTIL.util_radiobutton[6].checked == true )
        {
                ser='service=RAWTEXTPROVIDER'
                func='GCQuery'
                capa='hazincidencias'
		respuesta_corta=true
        }
	else
	{
		// comprobar si el click en mapa es sobre el arbol de consulta
		var id_gena1
		for ( var i = 0 ; i < arbol_Consulta.length ; i++)
		{
			id_gena1=arbol_Consulta[i][0]
			if ( id_gena1 != "" )
			{
				// es boton, no es nodo padre, comprobar si esta activo
				if ( getElById(''+id_gena1).checked == true )
				{
					//boton activo, obtener servicio, funcion, capa y respuesta
					ser='service='+arbol_Consulta[i][8]
					func=''+arbol_Consulta[i][9]
					capa=''+arbol_Consulta[i][10]
					if ( arbol_Consulta[i][11] == 'true' )
						respuesta_corta=true
					break
				}
			}
		}
	}

        if ( func != "")
        {
                if (  capa != "" )   // La consultas normales entran aqui.
                {
			dibujar_cruz('marca0')

			// Devuelve texto en lugar de imagen
                    	com='command=liz.main '+func+' '+iwidth+' '+iheight+' '+mouseX+' '+mouseY+' '+capa

			// Solo se usa la escala_fija desde un URL
			ef="escala_fija="
			leng='lengua='+lengua
                	url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+ef+'&'+leng
			get_text(url)

			// document.write (http+'?'+app+'&'+com+'&'+sav+'&'+ser)
			showLimpiarConsulta()
                }
                else
                {
			imageSize(false) 
                    	get_escala() 				// Lanza primero la peticion por texto.

			vis_capas='vis_capas=' + leer_vis_array()
                    	com='command=liz.main '+func+' '+iwidth+' '+iheight+' '+mouseX+' '+mouseY+' '+mouseX2+' '+mouseY2

			setTimeout("draw_image()",300)		
                }
        }
	else
                alert ('Hace falta seleccionar un option button')
}

function showLimpiarConsulta()
{
	document.getElementById("buttonBorrarCons").style.height = "20px"
	document.getElementById("buttonBorrarCons").style.visibility = "visible"

	var div_height = "233px"
	document.getElementById("CONSULTAS").style.top = div_height
	document.getElementById("VISUALIZACION").style.top = div_height
	document.getElementById("GIS_UTILIDADES").style.top = div_height
	document.getElementById("GIS_RUTAS").style.top = div_height
	document.getElementById("guardarImprimir").style.top = div_height
}

function hideLimpiarConsulta()
{
	document.getElementById("buttonBorrarCons").style.visibility="hidden"
	document.getElementById("buttonBorrarCons").style.height="0px"
	
	var div_height="215px"
	document.getElementById("CONSULTAS").style.top=div_height
	document.getElementById("VISUALIZACION").style.top=div_height
	document.getElementById("GIS_UTILIDADES").style.top=div_height
	document.getElementById("GIS_RUTAS").style.top=div_height
	document.getElementById("guardarImprimir").style.top=div_height
	
	document.getElementById('marca0').style.visibility = 'hidden'
}

function draw_image()
{
	load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+vis_capas)
}

function CambiarEscala()
{
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    if (keyCode == 13) 
    {
	hide_ad()
	draw_busy()
	imageSize(false)
	func='GCEscala'
	escala_dist=document.getElementById("textfield2").value 
	get_escala() 
	setTimeout("CambiarEscala_image()",800)		// Si no hay espera, a veces 
    }
}


function CambiarEscala2()
{
    var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    if (keyCode == 13) 
    {	
	hide_ad()
	draw_busy()
	imageSize(false)
	func='GCAncho'
	escala_dist=document.getElementById("textfield22").value
	get_escala()     

	setTimeout(" CambiarEscala_image()",800)		// Si no hay espera, a veces 
						//     llega primero la segunda peticion.
    }
}


function CambiarEscala_image()
{
	func='GCAncho'
	ser='service=RAWIMAGEPROVIDER'
	//alert ("document.getElementById(textfield22)"+ document.getElementById("textfield22").value)
	leng='lengua='+lengua
	com='command=liz.main '+func+' '+iwidth+' '+iheight+' '+mouseX+' '+mouseY+' '+capa +' '+lengua
	load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+leng)
}


function dibujar_cruz(nombre)
{
	if (is_chrome > -1)		// Chrome
	{
		document.getElementById(nombre).style.pixelLeft = (event.clientX-5)
                document.getElementById(nombre).style.pixelTop = (event.clientY-5)
	}
	else if (nav == 3) 		// IE
	{
		document.getElementById(nombre).style.pixelLeft = (event.offsetX+MapaLeft) 
		document.getElementById(nombre).style.pixelTop = (event.offsetY+MapaTop-5) 
	}
	else
	{
		document.getElementById(nombre).style.left = (event.offsetX+MapaLeft) + "px"
		document.getElementById(nombre).style.top = (event.offsetY+MapaTop) + "px"
	}

	document.getElementById(nombre).style.visibility = 'visible'
}

function esconder_cruces()
{
	i=1
	while (document.getElementById('marca'+i).style.visibility == 'visible' )
	{
		document.getElementById('marca'+i).style.visibility = 'hidden'
		if ( i > 30 )
		{
			alert ('Mas de 30 cruces')
			return
		}
		i++
	}
}

function vent_link(str) {
	fotoswi2=window.open(str,"fotosnombre2","toolbar=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=750px,height=450px")
}
function vent(str,nombre) {
pepe=window.open(str,nombre,"toolbar=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=850px,height=750px")
}
function vent_foto(str) {
fotoswi1=window.open(str,"fotosnombre1","toolbar=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=425px,height=450px")
}
function vent_foto2(str) {
fotoswi1=window.open(str,"fotosnombre1","toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=525px,height=675px")
}



function redibujar()
{
	draw_busy()

	vis_capas='vis_capas=' + leer_vis_array()
	ser='service=RAWIMAGEPROVIDER'
    func='GCredibujar'
	imageSize(true)
    com='command=liz.main '+func+' '+iwidth+' '+iheight 
	leng='lengua='+lengua
	load_mapa(http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+cat+'&'+vis_capas+'&'+leng)
}


// *****************************************************
//  Funcciones para la ventana de atributos flotante.

function posicionar_ad_window()
{
//	document.getElementById('ad_window').style.left=(MapaLeft + 5) + "px"
//	document.getElementById('ad_window').style.top=(MapaTop + 5) + "px"
}


function displayNewWindow()
{
	var l, t;
	l = (MapaLeft + 5);
	t = (MapaTop + 5)
	displayFloatingDiv(l, t);
}


function draw_ad()
{
	setTimeout("draw_render()", 500)
}

function draw_render()
{
	displayNewWindow()
}

function hide_ad()
{
	hiddenFloatingDiv()
}

function draw_busy()
{
	document.getElementById('busy_window').style.left=(MapaLeft+iwidth/2-70) + "px"
	document.getElementById('busy_window').style.top=(MapaTop+iheight/2-30) + "px"

        document.getElementById('busy_window').style.display="block"
	document.getElementById('busy_window').style.visibility="visible"
}

function hide_busy()
{
        document.getElementById('busy_window').style.display="none"
}


// *****************************************************
// Funciones de impresion

function LoadMap2()
{
        document.getElementById("text_output").innerHTML = ''
  // First, we load the URL into a variable
        var url = window.location.href;

        // Next, split the url by the ?
        var qparts = url.split("?");


        // Si no hay params, no hace nada.

        if (qparts.length <= 1)
        {
                page_params=0
        }
        else
        {
                AccionSiguiente="AccionSiguiente="+qparts[1];
                ser='service=RAWIMAGEPROVIDER'
                func='GCRutaparcial'
                capa='1'
                imageSize(false)
                com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
                // Sacamos el mapa
				leng='lengua='+lengua
                document.images.mapa.src=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+AccionSiguiente+'&'+leng

                //Sacamos el texto
                ser='service=RAWTEXTPROVIDER'
                capa='2'
                com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
                url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+leng
                Calcular_texto2(url)

                //Sacamos segunda Imagen
                ser='service=RAWIMAGEPROVIDER'
                capa='3'
                imageSize(false)
                com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
                document.images.mapa2.src=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+AccionSiguiente+'&'+leng

        }


}

function LoadMap3()
{
        document.getElementById("text_output_imp").innerHTML = '';
	document.images.mapa.src="blank.gif";

  	// First, we load the URL into a variable
        var url = window.location.href;

        // Next, split the url by the ?
        var qparts = url.split("?");

        // Si no hay params, no hace nada.

        if (qparts.length <= 1)
        {
                page_params=0
        }
        else
        {
		// Sacar el valor de genauser para usar la misma session.
                var array_params = qparts[1].split("&")
		var param2=array_params[1].split("=")
		var param3=array_params[2].split("=")
		app='application='+param3[1]+'&genauser='+param2[1]

                AccionSiguiente="AccionSiguiente="+array_params[0];
                ser='service=RAWIMAGEPROVIDER'
                func='GImprimir'
                capa='1'
                imageSize(false)
				leng='lengua='+lengua
                com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa+'&'+leng
                // Sacamos el mapa
                url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+AccionSiguiente
		// Inlcuir un timestamp para superar los problemas del cache del navegador.
		var nd = new Date();
		var TS=nd.getTime()
        	var ts='&ts=' + TS
		url=url+ts
        	document.images.mapa.src=url

                //Sacamos escala
                ser='service=RAWTEXTPROVIDER'
                capa='2'
                com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
                url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+leng
                destino = 'escala'
                Calcular_texto3(url)

                //Sacamos ancho ventana
                ser='service=RAWTEXTPROVIDER'
                capa='3'
                com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
                url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+leng
                destino = 'ancho_ventana'
                Calcular_texto3(url)
                // Sacamos coordenadas
                ser='service=RAWTEXTPROVIDER'
                capa='4'
                com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa 
                url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+leng
                destino = 'coord_esquinas'
                Calcular_texto3(url)

                //Sacamos datos queru
                ser='service=RAWTEXTPROVIDER'
                capa='5'
                com='command=liz.main '+func+' '+iwidth+' '+iheight+' 0 0 '+capa
                url=http+'?'+app+'&'+com+'&'+sav+'&'+ser+'&'+leng
                destino = 'text_output_imp'
                Calcular_texto3(url)
        }
}

function Calcular_texto3(url)
{
        if (typeof window.ActiveXObject != 'undefined' )
        {
                xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
                xmlDoc.onreadystatechange = peticion_text3 ;
        }
        else
        {
                xmlDoc = new XMLHttpRequest();
                xmlDoc.onload = peticion_text3 ;
        }
        xmlDoc.open( "GET", url , false );
        xmlDoc.send( null );
}


function peticion_text3()
{
        var mytext, aux
        if ( xmlDoc.readyState != 4 ) return ;
        mytext=xmlDoc.responseText

        // Quitamos la etiqueta HTML
        aux=mytext.split("<HTML>")
        mytext=aux[1]
        aux=mytext.split("</HTML>")
        mytext=aux[0]
        if (destino != 'escala')
                document.getElementById(""+destino).innerHTML = mytext.replace(/#/g,'<BR/>') ;
        else
                document.images.escala.src="images/"+mytext
}


function Calcular_texto2(url)
{
        if (typeof window.ActiveXObject != 'undefined' )
        {
                xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
                xmlDoc.onreadystatechange = peticion_text_imp;
        }
        else
        {
                xmlDoc = new XMLHttpRequest();
                xmlDoc.onload = peticion_text_imp ;
        }
        xmlDoc.open( "GET", url , true );
        xmlDoc.send( null );
}


function peticion_text_imp()
{
        var mytext, aux

        if ( xmlDoc.readyState != 4 ) return ;
        mytext=xmlDoc.responseText

        // Quitamos la etiqueta HTML
        aux=mytext.split("<HTML>")
        mytext=aux[1]
        aux=mytext.split("</HTML>")
        mytext=aux[0]

        document.getElementById("text_output_imp").innerHTML = mytext.replace(/#/g,'<BR/>') ;

}

function receive_image_imp()
{
        var mytext

        if ( IRxmlDoc.readyState != 4 ) return ;
        mytext=IRxmlDoc.responseText
        document.images.mapa.src=mytext
}

// *****************************************************
// ** Funcion Save As 

function SaveImageAs()
{
	if (nav==1) // FF
	{
		ayuda('guardar_imagen',1)
		func="SaveAs"
		// Delete the image map as its stops the right click from working.
		document.getElementById("lizmap").innerHTML="";
		img.useMap='#lizmap'
	}
	else
	{
		ayuda('guardar_imagen',1)
                func="SaveAs"
	}
}

function Permalink()
{
	var coords=coords_win.split(' ')
	var xmin=Math.floor(coords[1])
	var xmax=Math.floor(coords[2])
	var ymin=Math.floor(coords[3])
	var ymax=Math.floor(coords[4])
	var xcen=Math.floor(xmin+(xmax-xmin)/2)
	var ycen=Math.floor(ymin+(ymax-ymin)/2)
	var scale=document.getElementById("textfield2").value;

// Permalink non-friendly
//
//        var leng='lengua='+lengua
//	var url_array=new_url.split('?')
//	var url = url_array[0] + '?id=PL_'+xcen+'_'+ycen + '&escala_fija=' + scale + '&' + cat + '&' + leng

	var leng
	if ( lengua == 1 )
		leng='eu'
	else if ( lengua == 2 )
		leng='en'
	else if ( lengua == 3 )
		leng='fr'
	else
		leng='es'

	// Permalink semi-friendly

	var categ=cat.split('=')
	var url='http://'+window.location.host+'/url5000/'+leng+'/PL_'+xcen+'_'+ycen + '/'+categ[1] + '&escala_fija=' + scale 

	document.location.href=url
}

function receive_image_ref()
{
        var mytext

        if ( IRxmlDoc.readyState != 4 ) return ;
        mytext=IRxmlDoc.responseText

	var img = document.getElementById("mapa_image");
	img.src = mytext

	ayuda('guardar_imagen',1)
	func="SaveAs"
}

// *****************************************************

function ponerPieArriba()
{
	hide_ad()
    	document.getElementById("text_output2").innerHTML = ''

	if (nav==1) 	//FF
	    document.getElementById('pie').style.top=(MapaTop+iheight+5) + 'px'
	else
		document.getElementById('pie').style.top=(MapaTop+iheight+5) + 'px'
		
	document.getElementById('GraficoDiv').style.visibility="hidden"

//	if ((document.getElementById("CONSULTAS").style.visibility != 'visible') &&
	//	(document.getElementById("VISUALIZACION").style.visibility != 'visible'))
	//	document.getElementById('pie').style.visibility='visible'
}


// *****************************************************

function HighlightText1() 
{
	var tempval=document.getElementById("my_text_area")
alert(tempval.innerHTML)	
	tempval.focus()
	tempval.select()
	if (nav==3)		// IE
	{
		therange=tempval.createTextRange()
		therange.execCommand("Copy")
		window.status="Contents highlighted and copied to clipboard!"
		setTimeout("window.status=''",1800)
	}
}


// *****************************************************
// Rutina para copiar text al clipboard - IE Only

function HighlightText() 
{
	if (nav==3) //IE
	{
		var holdtext = document.all['holdtext'];
		holdtext.innerText = document.getElementById("text_output2").innerText
		Copied = holdtext.createTextRange();
		Copied.execCommand("Copy");
	}
}

// *****************************************************
// Rutinas para gestionar los divs principales. 

function showCONSULTAS()
{
	if (document.getElementById("CONSULTAS").style.visibility == 'visible')
	{
		document.getElementById("CONSULTAS").style.visibility = 'hidden'
                ponerPieArriba();
        	borrarGrafica()
	}
	else
	{
   		document.getElementById("CONSULTAS").style.visibility = 'visible'
		document.getElementById("VISUALIZACION").style.visibility = 'hidden'
		document.getElementById("GIS_UTILIDADES").style.visibility = 'hidden'
		document.getElementById("GIS_RUTAS").style.visibility = 'hidden'
		document.getElementById("guardarImprimir").style.visibility = 'hidden'
		document.getElementById('pie').style.visibility="hidden"
		hide_ad()
	}
}

function showVISUALIZACION()
{
	if (document.getElementById("VISUALIZACION").style.visibility == 'visible')
	{
		document.getElementById("VISUALIZACION").style.visibility = 'hidden'
		ponerPieArriba();
		borrarGrafica()
	}
	else
	{
   		document.getElementById("CONSULTAS").style.visibility = 'hidden'
		document.getElementById("VISUALIZACION").style.visibility = 'visible'
		document.getElementById("GIS_UTILIDADES").style.visibility = 'hidden'
		document.getElementById("GIS_RUTAS").style.visibility = 'hidden'
		document.getElementById("guardarImprimir").style.visibility = 'hidden'
		SwitchOffRutas();
		SwitchOffUtilidades();
		SwitchOffForm1()
		document.getElementById('pie').style.visibility="hidden"
		hide_ad()
	}
}

function showUTILIDADES()
{
	if (document.getElementById("GIS_UTILIDADES").style.visibility == 'visible')
		document.getElementById("GIS_UTILIDADES").style.visibility = 'hidden'
	else
	{
	   	document.getElementById("CONSULTAS").style.visibility = 'hidden'
		document.getElementById("VISUALIZACION").style.visibility = 'hidden'
		document.getElementById("GIS_UTILIDADES").style.visibility = 'visible'
		document.getElementById("GIS_RUTAS").style.visibility = 'hidden'
		document.getElementById("guardarImprimir").style.visibility = 'hidden'
	}
	ponerPieArriba();
	borrarGrafica()
}

function showRUTA()
{
	if (document.getElementById("GIS_RUTAS").style.visibility == 'visible')
	{
		document.getElementById("GIS_RUTAS").style.visibility = 'hidden'
	}
	else
	{
   		document.getElementById("CONSULTAS").style.visibility = 'hidden'
		document.getElementById("VISUALIZACION").style.visibility = 'hidden'
		document.getElementById("GIS_UTILIDADES").style.visibility = 'hidden'
		document.getElementById("GIS_RUTAS").style.visibility = 'visible'
		document.getElementById("guardarImprimir").style.visibility = 'hidden'
	}
	ponerPieArriba();
	borrarGrafica()
}


function showGUARDAR()
{
	if (document.getElementById("guardarImprimir").style.visibility == 'visible')
		document.getElementById("guardarImprimir").style.visibility = 'hidden'
	else
	{
	   	document.getElementById("CONSULTAS").style.visibility = 'hidden'
		document.getElementById("VISUALIZACION").style.visibility = 'hidden'
		document.getElementById("GIS_UTILIDADES").style.visibility = 'hidden'
		document.getElementById("GIS_RUTAS").style.visibility = 'hidden'
		document.getElementById("guardarImprimir").style.visibility = 'visible'
	}
	ponerPieArriba();
	borrarGrafica()
}


// *****************************************************

function ClienteOpenLayers()
{
	var coords=coords_win.split(' ')
	var xmin=Math.floor(coords[1])
	var xmax=Math.floor(coords[2])
	var ymin=Math.floor(coords[3])
	var ymax=Math.floor(coords[4])
	var leng
	if ( lengua == 1 )
		leng='eu'
	else if ( lengua == 2 )
		leng='en'
	else if ( lengua == 3 )
		leng='fr'
	else
		leng='es'
	var cliente_openlayers='http://b5m.gipuzkoa.net/b5map/'
	var url = cliente_openlayers + leng+'/mbr/xmin/'+xmin+'/ymin/'+ymin+'/xmax/'+xmax+'/ymax/'+ymax+'/srs/EPSG:23030'
        window.open(url,"Light_Client")

}

function SaveGeoImageAs()
{
//	var geofile='http://'+window.location.host+'/dfgweb/imagen_georref/'+genauser+'_imag.zip'
	var geofile='http://'+window.location.host+'/img_georref/'+genauser+'_imag.zip'
	window.location.href = geofile;
}

function abreventana(vurl){
	window.open(vurl,"_blank","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,width=800,height=600");
	hide_ad();
        if(formUTIL.util_radiobutton[6].checked){
		ayuda('hacer_incidencia',1);
        }
}


// *****************************************************


