/**********************************************************************
 *
 * $Id: startUp.js,v 1.8 2006/12/14 17:24:41 lbecchi Exp $
 *
 * purpose: start up code to bootstrap initialization of kaMap within
 *          the sample interface.  Examples of using many parts of
 *          the kaMap core api.
 *
 * purpose: This is the sample ka-Map interface.  Feel free to use it
 *          as the basis for your own applications or just to find out
 *          how ka-Map works.
 *
 * author: Lorenzo Becchi and Andrea Cappugi (www.ominiverdi.org)
 *
 * ka-Explorer interface has been developer for Food and Agriculture
 * Organization of the United Nations (FAO-UN)
 *
 *
 **********************************************************************
 *
 * Copyright (c) 2006 Food and Agriculture Organization of the United Nations (FAO-UN)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *
 **********************************************************************/

/******************************************************************************
 *
 * To customize startUp:
 *
 * 1) modify toolbar Layout
 *  act on screen.css file and modify the funcion myMapInitialized().
 *  If you change pan and identifyer images edit switchMode() function too.
 *
 *****************************************************************************/

var myKaMap = myKaNavigator = myKaQuery = myScalebar = null;
var queryParams = null;
var zoomerActivo = 0;
var refCat = "";
var codigoAYTO = "";

/**
 * parse the query string sent to this window into a global array of key = value pairs
 * this function should only be called once
 */
function parseQueryString() {
    queryParams = {};
    var s=window.location.search;
    if (s!='') {
        s=s.substring( 1 );
        var p=s.split('&');
        for (var i=0;i<p.length;i++) {
            var q=p[i].split('=');
            queryParams[q[0]]=q[1];
        }
    }
}

/**
 * get a query value by key.  If the query string hasn't been parsed yet, parse it first.
 * Return an empty string if not found
 */
function getQueryParam(p) {
    if (!queryParams) {
        parseQueryString();
    }
    if (queryParams[p]) {
        return queryParams[p];
    } else {
        return '';
    }
}

function myOnLoad() {
    initDHTMLAPI();

	window.onresize=drawPage;

	myKaMap = new kaMap( 'viewport' );

	// Activamos el Slider-Zoom
	//myKaZoomer = new kaZoomer(myKaMap);

	var szMap = getQueryParam('map');
    var szExtents = getQueryParam('extents');
    var szCPS = getQueryParam('cps');

    var myKaLegend = new kaLegend( myKaMap, 'legend');
    var myKaKeymap = new kaKeymap( myKaMap, 'keymap' );
    myKaNavigator = new kaNavigator( myKaMap );
    myKaNavigator.activate();
    myKaQuery = new kaQuery( myKaMap, KAMAP_RECT_QUERY );
    myKaRubberZoom = new kaRubberZoom( myKaMap );

    myKaTracker = new kaMouseTracker(myKaMap);
    myKaTracker.activate();

    myKaMap.registerForEvent( KAMAP_INITIALIZED, null, myInitialized );
    myKaMap.registerForEvent( KAMAP_MAP_INITIALIZED, null, myMapInitialized );
    myKaMap.registerForEvent( KAMAP_SCALE_CHANGED, null, myScaleChanged );
    myKaMap.registerForEvent( KAMAP_EXTENTS_CHANGED, null, myExtentChanged );
    myKaMap.registerForEvent( KAMAP_LAYERS_CHANGED, null, myLayersChanged );
    myKaMap.registerForEvent( KAMAP_LAYER_STATUS_CHANGED, null, myLayersChanged );
    myKaMap.registerForEvent( KAMAP_QUERY, null, myQuery );
    myKaMap.registerForEvent( KAMAP_MAP_CLICKED, null, myMapClicked );
    myKaMap.registerForEvent( KAMAP_MOUSE_TRACKER, null, myMouseMoved );

    myScalebar = new ScaleBar(1);
    myScalebar.divisions = 2;
    myScalebar.subdivisions = 2;
    myScalebar.minWidth = 130;
    myScalebar.maxWidth = 170;
	myScalebar.abbreviateLabel = false;
	myScalebar.singleLine = false;
    myScalebar.place('scalebar');

	//toolTip = new kaToolTip( myKaMap );

	myKaSearch = new kaSearch( myKaMap );

	drawPage();
    myKaMap.initialize( szMap, szExtents, szCPS );
}

/**
 * event handler for KAMAP_INITIALIZED.
 *
 * at this point, ka-Map! knows what map files are available and we have
 * access to them.
 */
function myInitialized() {
    //myMapInitialized( null, myKaMap.getCurrentMap().name );
	//alert (myKaMap.getCurrentMap().title);

	// Comentado, porque lo hacemos con PHP

	//	var mapTitle = getRawObject('mapTitle');
	//	if(mapTitle){
	//		mapTitle.innerHTML = myKaMap.getCurrentMap().title;
	//	}

	// Si recibe como parámetro que está activo Catastro, lo activamos
	var layers = getQueryParam('layers');
	if (layers.match("Catastro")){
		var checkCatastro = getRawObject('checkCatastro');
		checkCatastro.checked = true;
		ver_ocultaCatastro();
	}
	if (layers.match("SigPAC")){
		var checkSigPac = getRawObject('checkSigPac');
		checkSigPac.checked = true;
		ver_ocultaSigPac();
	}	
	if (layers.match("CartoCiudad")){
		var checkCartoCiudad = getRawObject('checkCartoCiudad');
		checkCartoCiudad.checked = true;
		ver_ocultaCartoCiudad();
	}	
	if (layers.match("CartografiaUrbana")){
		var checkCartografiaUrbana = getRawObject('checkCartografiaUrbana');
		checkCartografiaUrbana.checked = true;
		ver_ocultaCartografiaUrbana(checkCartografiaUrbana.value);
	}		
	// FUNCIONES COMBO ORTOS
	
	// Hacemos que el combo corresponda con el año que estamos mostrando
	var map = myKaMap.currentMap;  //Cargamos el nombre del MAP
	fecha_orto = map.substring(map.length - 4, map.length); //Sacamos el año de la orto que corresponde
	$('ortos_disponibles').value = fecha_orto; //Cambiamos el valor del Combo
	
	// Añadimos  un evento para cuando se cambie en año de la ortofoto	
	$('ortos_disponibles').addEvent('change', function(e) {
		
		var link = document.getElementById('linkToView').href; // De aquí sacamos la URL actual construida

		var vuelo = $('ortos_disponibles').value;  //Valor del combo
		var nuevo_link;
		
		var map = myKaMap.currentMap; // Nombre del Mapa actual

		map_nuevo = map.substring(0, map.length - 5);  //Nos quedamos solo con el nombre, quitándo los últimos 5 caracteres (_2006)
		
		nuevo_link = link.replace(map, map_nuevo + '_' + vuelo);  //Contruimos el nuevo enlace
		location.href = nuevo_link; //Cambiamos la url de la página
	});				
	
}

/**
 * event handler for KAMAP_MAP_INITIALIZED
 *
 * the scales are put into a select ... this will be used for zooming
 */
function myMapInitialized( eventID, mapName ) {
	//update the scales select
    var currentMap = myKaMap.getCurrentMap();
    var scales = currentMap.getScales();
    var currentScale=myKaMap.getCurrentScale();

    //Activate query button
//    switchMode('toolPan');

    //Activate service box
//    switchService('toolMapinfo');

	/* handle request for layer visibility */
	var layers = getQueryParam('layers');
	if (layers != '') {
		var map = myKaMap.getCurrentMap();
		//turn off all layers
		var allLayers = map.getAllLayers();
		for (var i=0; i<allLayers.length; i++) {
			allLayers[i].setVisibility(false);
		}
		aLayers = layers.split(',');
		for (var i=0;i<aLayers.length; i++) {
			map.setLayerVisibility (unescape(aLayers[i]), true);
		}
	}
	//set current scale in the interface
	myKaMap.triggerEvent( KAMAP_SCALE_CHANGED, myKaMap.getCurrentScale() );
}

/**
 * handle the extents changing by updating a link in the interface that links
 * to the current view
 */
function myExtentChanged( eventID, extents ) {

	updateLinkToView();

	//si se mueve el mapa hay que recargar el DIV de Catastro
	//antes, esperamos 2000 milisegundos
	setTimeout("recargaCatastro()",2000);
	setTimeout("recargaSigPac()",2000);
	setTimeout("recargaCartoCiudad()", 2000);
	setTimeout("recargaCartografiaUrbana()", 2000);
	//recargaCatastro();
}

function myMouseMoved( eventID, position) {
	// Comentado porque no queremos ver la coordenada donde está el cursor
    //var geopos = document.getElementById('geoPosition');
    //if(geopos) geopos.innerHTML = 'Coordenadas UTM30-ED50: x: ' + roundIt(position.x,2) + ' y: ' + roundIt(position.y,2);
}

function myLayersChanged(eventID, map) {
	updateLinkToView();
}

function updateLinkToView()  {
	var port = (window.location.port)? window.location.port : 80;
	var url = window.location.protocol+'/'+'/'+window.location.host +':'+ port +''+window.location.pathname+'?';
	var extents = myKaMap.getGeoExtents();
	var cx = (extents[2] + extents[0])/2;
	var cy = (extents[3] + extents[1])/2;
	var cpsURL = 'cps='+cx+','+cy+','+myKaMap.getCurrentScale();
	var mapURL = 'map=' + myKaMap.currentMap;
    var theMap = myKaMap.getCurrentMap();
	var aLayers = theMap.getLayers();
	var layersURL = 'layers=';
	var sep = '';
	for (var i=0;i<aLayers.length;i++) {
		layersURL += sep + aLayers[i].name;
		sep = ',';
	}

	// Si está activada la capa de catastro, también la pasamos en la url
	var checkCatastro = getRawObject('checkCatastro');
	if(checkCatastro.checked){
		layersURL += sep + 'Catastro';
	}
	
	// Si está activada la capa de SIGPAC, también la pasamos en la url
	var checkSigPac = getRawObject('checkSigPac');
	if(checkSigPac.checked){
		layersURL += sep + 'SigPAC';
	}	
	
	// Si está activada la capa de CARTOCIUDAD, también la pasamos en la url
	var checkCartoCiudad = getRawObject('checkCartoCiudad');
	if(checkCartoCiudad.checked){
		layersURL += sep + 'CartoCiudad';
	}		

	// Si está activada la capa de CARTOGRAFIA URBANA, también la pasamos en la url
	var checkCartografiaUrbana = getRawObject('checkCartografiaUrbana');
	if(checkCartografiaUrbana.checked){
		layersURL += sep + 'CartografiaUrbana';
	}	

	var link = getRawObject('linkToView');
	if(link) link.href = url + mapURL + '&' + cpsURL + '&' + layersURL;
}

function generarPDF(urlPDF){
	var extents = myKaMap.getGeoExtents();
	var port = (window.location.port)? window.location.port : 80;
	var mapURL = 'map=' + myKaMap.currentMap;
	var theMap = myKaMap.getCurrentMap();
	var urlPrint = window.location.protocol+'/'+'/'+window.location.host +':'+ port +'/municipios/imprimir/generar_pdf.php'+'?';
	var ex1 = roundIt(extents[0],3);
	var ex2 = roundIt(extents[1],3);
	var ex3 = roundIt(extents[2],3);
	var ex4 = roundIt(extents[3],3);
	var extURL = 'ext='+ex1+','+ex2+','+ex3+','+ex4;
	var escala = 'esc='+myKaMap.getCurrentScale();
	var aLayers = theMap.getLayers();
	var layersURL = 'layers=';
	var sep = '';
	for (var i=0;i<aLayers.length;i++) {
		layersURL += sep + aLayers[i].name;
		sep = ',';
	}

	var checkCatastro = getRawObject('checkCatastro');
	var checkSigPac = getRawObject('checkSigPac');
	var checkCartoCiudad = getRawObject('checkCartoCiudad');
	var checkCartografiaUrbana = getRawObject('checkCartografiaUrbana');
	// Si está activada la capa de catastro, también la pasamos en la url
	
	if(checkCatastro.checked){
		layersURL += sep + 'Catastro';
	}

	// Si está activada la capa de SIGPAC, también la pasamos en la url
	if(checkSigPac.checked){
		if (checkCatastro.checked) { //Para que ponga la coma de separador de capas
			sep = ',';
		}
		layersURL += sep + 'SigPAC';
	}		

	// Si está activada la capa de CARTOCIUDAD, también la pasamos en la url
	if(checkCartoCiudad.checked){
		if (checkCatastro.checked || checkSigPac.checked) { //Para que ponga la coma de separador de capas
			sep = ',';
		}
		layersURL += sep + 'CartoCiudad';
	}			

	// Si está activada la capa de CARTOGRAFIA URBANA, también la pasamos en la url
	if(checkCartografiaUrbana.checked){
		if (checkCatastro.checked || checkSigPac.checked || checkCartoCiudad.checked) { //Para que ponga la coma de separador de capas
			sep = ',';
		}
		layersURL += sep + 'CartografiaUrbana';
	}			
	
	var urlPDF = urlPrint + mapURL + '&' + escala + '&' + extURL + '&' + layersURL;

	$('img_carga_catastro_pdf').style.visibility = 'visible';	

	var iframe = document.createElement("iframe");
	iframe.src = urlPDF;

	if (iframe.attachEvent){
	    iframe.attachEvent("onload", function(){
	    	$('img_carga_catastro_pdf').style.visibility = 'hidden';
	    });
	} else {
	    iframe.onload = function(){
	    	$('img_carga_catastro_pdf').style.visibility = 'hidden';
	    };
	}

	document.body.appendChild(iframe);	
}

function generarPDF_A3(urlPDF){
	var extents = myKaMap.getGeoExtents();
	var port = (window.location.port)? window.location.port : 80;
	var mapURL = 'map=' + myKaMap.currentMap;
	var theMap = myKaMap.getCurrentMap();
	var urlPrint = window.location.protocol+'/'+'/'+window.location.host +':'+ port +'/municipios/imprimir/generar_pdf_A3.php'+'?';
	var ex1 = roundIt(extents[0],3);
	var ex2 = roundIt(extents[1],3);
	var ex3 = roundIt(extents[2],3);
	var ex4 = roundIt(extents[3],3);
	var extURL = 'ext='+ex1+','+ex2+','+ex3+','+ex4;
	var escala = 'esc='+myKaMap.getCurrentScale();
	var aLayers = theMap.getLayers();
	var layersURL = 'layers=';
	var sep = '';
	for (var i=0;i<aLayers.length;i++) {
		layersURL += sep + aLayers[i].name;
		sep = ',';
	}

	var checkCatastro = getRawObject('checkCatastro');
	var checkSigPac = getRawObject('checkSigPac');	
	var checkCartoCiudad = getRawObject('checkCartoCiudad');
	var checkCartografiaUrbana = getRawObject('checkCartografiaUrbana');	
	// Si está activada la capa de catastro, también la pasamos en la url
	if(checkCatastro.checked){
		layersURL += sep + 'Catastro';
	}
	
	// Si está activada la capa de SIGPAC, también la pasamos en la url
	if(checkSigPac.checked){
		if (checkCatastro.checked) { //Para que ponga la coma de separador de capas
			sep = ',';
		}		
		layersURL += sep + 'SigPAC';
	}		

	// Si está activada la capa de CARTOCIUDAD, también la pasamos en la url
	if(checkCartoCiudad.checked){
		if (checkCatastro.checked || checkSigPac.checked) { //Para que ponga la coma de separador de capas
			sep = ',';
		}		
		layersURL += sep + 'CartoCiudad';
	}		

	// Si está activada la capa de CARTOGRAFIA URBANA, también la pasamos en la url
	if(checkCartografiaUrbana.checked){
		if (checkCatastro.checked || checkSigPac.checked || checkCartoCiudad.checked) { //Para que ponga la coma de separador de capas
			sep = ',';
		}
		layersURL += sep + 'CartografiaUrbana';
	}			

	var urlPDF = urlPrint + mapURL + '&' + escala + '&' + extURL + '&' + layersURL;

	$('img_carga_catastro_pdf_a3').style.visibility = 'visible';	

	var iframe = document.createElement("iframe");
	iframe.src = urlPDF;

	if (iframe.attachEvent){
	    iframe.attachEvent("onload", function(){
	    	$('img_carga_catastro_pdf_a3').style.visibility = 'hidden';
	    });
	} else {
	    iframe.onload = function(){
	    	$('img_carga_catastro_pdf_a3').style.visibility = 'hidden';
	    };
	}

	document.body.appendChild(iframe);	
}
	
function sendLinkToView(email,body) {

	var mySubject = myUrlEncode('Authomatic ka-Map mail');
	var myBody = myUrlEncode(body);

	location.replace( 'mailto:' + email + '?subject=' + mySubject + '&body=' + body);
}

/**
 * called when kaMap tells us the scale has changed
 */
function myScaleChanged( eventID, scale ) {
    myScalebar.update(scale);

	var mapa_actual = myKaMap.getCurrentMap();
	var escalas_mapa = mapa_actual.getScales();

	switch(scale){
		case escalas_mapa[0]:
			sliders.set(4);
			break;
		case escalas_mapa[1]:
			sliders.set(3);
			break;
		case escalas_mapa[2]:
			sliders.set(2);
			break;
		case escalas_mapa[3]:
			sliders.set(1);
			break;
		case escalas_mapa[4]:
			sliders.set(0);
			break;
	}

    /*
    if (scale >= 1000000) {
        scale = scale / 1000000;
        scale = scale + " Million";
    }
    var outString = 'current scale 1:'+ scale;
    getRawObject('scale').innerHTML = outString;
    */
}

/**
 * called when the user changes scales.  This will cause the map to zoom to
 * the new scale and trigger a bunch of events, including:
 * KAMAP_SCALE_CHANGED
 * KAMAP_EXTENTS_CHANGED
 */
function mySetScale( scale ) {
    myKaMap.zoomToScale( scale );
}

/**
 * called when the map selection changes due to the user selecting a new map.
 * By calling myKaMap.selectMap, this triggers the KAMAP_MAP_INITIALIZED event
 * after the new map is initialized which, in turn, causes myMapInitialized
 * to be called
 */
function mySetMap( name ) {
    myKaMap.selectMap( name );
}


function myQuery( eventID, queryType, coords ) {
    var szLayers = '';
    var layers = myKaMap.getCurrentMap().getQueryableLayers();
    if(layers.length==0) {
     alert("No queryable layers at this scale and extent");
     return;
    }
    for (var i=0;i<layers.length;i++) {
        szLayers = szLayers + "," + layers[i].name;
    }

    var extent = myKaMap.getGeoExtents();
    var scale = myKaMap.getCurrentScale();
    var cMap = myKaMap.getCurrentMap().name;
	var params='map='+cMap+'&q_type='+queryType+'&scale='+scale+'&groups='+szLayers+'&coords='+coords+'&extent='+extent[0]+'|'+extent[1]+'|'+extent[2]+'|'+extent[3];

	getRawObject('queryOut').innerHTML = '<h3>Processing query. <br> please wait...</h3><hr>';

	call('map_query_float.php?'+params,this, myQueryOutput);

//    alert( "Map: " + cMap + " | Scale: " + scale + " | Extent: " + extent + " | QUERY: " + queryType + " " + coords + " on layers " + szLayers );
}

function myQueryOutput (szText){
	getRawObject('queryOut').innerHTML=szText;
}

function myZoomIn() {
    myKaMap.zoomIn(); // Comentado porque el zoom lo lanza el slider
}

function myZoomOut() {
    myKaMap.zoomOut(); // Comentado porque el zoom lo lanza el slider
}

function myZoomToScale(pos){
	//alert (pos);
	//alert (escalas_inv[pos]);

	var mapa_actual = myKaMap.getCurrentMap();
	var escalas_mapa = mapa_actual.getScales();

	switch(pos){
		case '0':
			var escala = escalas_mapa[4];
			break;
		case '1':
			var escala = escalas_mapa[3];
			break;
		case '2':
			var escala = escalas_mapa[2];
			break;
		case '3':
			var escala = escalas_mapa[1];
			break;
		case '4':
			var escala = escalas_mapa[0];
			break;
	}

	//alert (escala);
	myKaMap.zoomToScale(escala);

}

function myMoverNorte(){
	myKaMap.slideBy(0, myKaMap.viewportHeight/2);
}

function myMoverSur(){
	myKaMap.slideBy(0, -myKaMap.viewportHeight/2);
}

function myMoverEste(){
	myKaMap.slideBy(-myKaMap.viewportWidth/2,0);
}

function myMoverOeste(){
	myKaMap.slideBy(myKaMap.viewportWidth/2,0);
}

function activaZoom(){
	var div_nav_centro = getRawObject('nav_centro');

	if (zoomerActivo == 0){
		// Cambiamos el icono
		div_nav_centro.innerHTML = "<img src='images/slider_button_zmano.gif' id='img_zzona' alt='Zoom de Zona' title='Deslizador manual :: Pulse para activar el Deslizador Manual' />";

		myKaRubberZoom.activate();
		zoomerActivo = 1;
	}else{
		// Cambiamos el icono
		div_nav_centro.innerHTML = "<img src='images/slider_button_zzona.gif' id='img_zzona' alt='Zoom de Zona' title='Zoom de Zona :: Pulse para activar el Zoom de Zona' />";

		myKaNavigator.activate();
		zoomerActivo = 0;
	}
}

function myPrint(output_type) {
    var szLayers = '';
    var szOpacitys = '';

    var layers = myKaMap.getCurrentMap().getLayers();
    for (var i=0;i<layers.length;i++) {
        szLayers = szLayers + "," + layers[i].name;
        szOpacitys = szOpacitys + "," + layers[i].opacity;
    }

    var extent = myKaMap.getGeoExtents();
    var scale = myKaMap.getCurrentScale();
    var cMap = myKaMap.getCurrentMap().name;

    var img_width = '600';// pixel dimension. max_img_width set inside print_map.php

    //output_type
	var params='output_type='+output_type+'&map='+cMap+"&opacitys="+szOpacitys+'&scale='+scale+'&img_width='+img_width+'&groups='+szLayers+'&extent='+extent[0]+'|'+extent[1]+'|'+extent[2]+'|'+extent[3];

 	//create and download the output file
 	location.href='tools/print/print_map.php?'+params;

 	//or open it in a new window
    //WOOpenWin( 'Print', '../tools/print/print_map.php?'+params, 'resizable=yes,scrollbars=yes,width=600,height=400' );

}



/**
 * drawPage - calculate sizes of the various divs to make the app full screen.
 */
function drawPage() {
    var browserWidth = getInsideWindowWidth();
    var browserHeight = getInsideWindowHeight();

    var viewport = getRawObject('viewport');

    viewport.style.width = browserWidth + "px";
    viewport.style.height = browserHeight + "px";

    myKaMap.resize();
}

function showContent(url) {
	var content = getRawObject('content');
	var viewport = getRawObject('viewport');
	content.style.top = parseInt(viewport.style.top) + 10 + "px";
	content.style.display = "block";
	call(url,this, setContent);
}

function setContent(szContent){
	var contentText = getRawObject('contentText');
	contentText.innerHTML = szContent;
}
function hideContent() {
	var content = getRawObject('content');
	var viewport = getRawObject('viewport');
	content.style.display = "none";
	//content.style.top = parseInt(viewport.style.top) + parseInt(viewport.style.height) + "px";
}

/**
 * getFullExtent
 * ...
 */
function getFullExtent() {
    var exStr = myKaMap.getCurrentMap().defaultExtents.toString();
    var ex = myKaMap.getCurrentMap().defaultExtents;
    myKaMap.zoomToExtents(ex[0],ex[1],ex[2],ex[3]);
}

/*
 *  applyPNGFilter(o)
 *
 *  Applies the PNG Filter Hack for IE browsers when showing 24bit PNG's
 *
 *  var o = object (this png element in the page)
 *
 * The filter is applied using a nifty feature of IE that allows javascript to
 * be executed as part of a CSS style rule - this ensures that the hack only
 * gets applied on IE browsers :)
 */
function applyPNGFilter(o) {
    var t="images/a_pixel.gif";
    if( o.src != t ) {
        var s=o.src;
        o.src = t;
        o.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+s+"',sizingMethod='scale')";
    }
}

//functions to open popup

function WOFocusWin( nn ) {
	eval( "if( this."+name+") this."+name+".moveTo(50,50); this."+name+".focus();" );
}

function WOOpenWin( name, url, ctrl ) {
    eval( "this."+name+"=window.open('"+url+"','"+name+"','"+ctrl+"');" );

    /*IE needs a delay to move forward the popup*/
    // window.setTimeout( "WOFocusWin(nome);", 300 );
}

function WinOpener() {
    this.openWin=WOOpenWin;
	this.focusWin=WOFocusWin;
}


//URL SYNTAX ENCODING
function myUrlEncode(string) {
  encodedHtml = escape(string);
  encodedHtml = encodedHtml.replace("/","%2F");
  encodedHtml = encodedHtml.replace(/\?/g,"%3F");
  encodedHtml = encodedHtml.replace(/=/g,"%3D");
  encodedHtml = encodedHtml.replace(/&/g,"%26");
  encodedHtml = encodedHtml.replace(/@/g,"%40");
  return encodedHtml;
};

function myUrlDecode(sz){
	return unescape(sz).replace(/\+/g," ");
};

//MATH FUNCTIONs
function roundIt(number,decimals){
	var base10 = 10;
	for(var i=0;i<decimals-1;i++)
		base10 = base10 *10;

	return Math.round(number * base10)/base10;
}

//FUNCIÓN QUE SE EJECUTA CUANDO SE HACE CLICK EN EL MAPA
function myMapClicked( eventID, coords ) {
	//alert (eventID);
	//alert (coords);

	var checkCatastro = getRawObject('checkCatastro');
	var checkSIGPAC = getRawObject('checkSigPac');	

	if(checkCatastro.checked || checkSIGPAC.checked){
		// Conectamos con Catastro o SigPac...
		if (checkCatastro.checked) {
			var log = $('log_res').empty().addClass('ajax-loading');
			log.innerHTML = "<div><br/><br/><br/>Conectando con Catastro...</div>";
		}

		if (checkSIGPAC.checked) {
			var log2 = $('log_res2').empty().addClass('ajax-loading');
			log2.innerHTML = "<div><br/><br/><br/>Conectando con SIGPAC...</div>";
		}
		
		if (ac0.previous != 3){
			ac0.display(3); // Desplegamos el apartado CATASTRO del acordeón
		}
		
		var nuevo_alto = $('log').getStyle('height').toInt();
		nuevo_alto = nuevo_alto + 30 + 'px';
		$('acc_CAT').setStyle('height', nuevo_alto);
		mySlide.slideIn();				

		// Llamamos a PHP-SOAP para que busque los datos de Catastro
		if (checkCatastro.checked) {
			var url = 'catastro/s_buscaREF.php?x=' + coords[0] + "&y=" + coords[1];
			call(url, this, clickCatastro);
		}
		// Fin CATASTRO
		
		// Conectamos con SIGPAC
		if (checkSIGPAC.checked) {
			var url = 'sigpac/buscaRECINTO.php?x=' + coords[0] + "&y=" + coords[1];
			call(url, this, clickSIGPAC);
		}
		// Fin SIGPAC
		
	}else{
		myKaMap.zoomTo(coords[0],coords[1]);
	}

	// Actualizamos las coordenadas
	var geopos = document.getElementById('geoPosition');
    if(geopos){
		//geopos.style.visibility = 'visible';
		geopos.innerHTML = '<p><strong>Coordenadas UTM30-ED50:</strong><br/>x: ' + roundIt(coords[0],2) + ' y: ' + roundIt(coords[1],2) + '</p>';
	}
}

// ************************************************************
// FUNCIONES DE PABLO
// ************************************************************
function clickCatastro(valor){

	var div_catastro = getRawObject('Catastro');
	var log = $('log_res').empty().removeClass('ajax-loading');

//	alert (valor[0]); // Si valor empieza por '<' entonces ha dado un error de conexión
	if (valor[0] == '<'){
		if (div_catastro.style.visibility == 'visible'){
			log.innerHTML = "Hubo un <strong>error</strong> al intentar conectar con la <strong>OV de Catastro</strong>. Revise su conexión a Internet o inténtelo más tarde.";
		}
		return;
	}

	//var provincia_consulta = valor[0] + valor[1];
	if ((valor[0] + valor[1]) == '||'){ // Si no devuelve datos.
		if (div_catastro.style.visibility == 'visible'){
			log.innerHTML = "No hay datos catastrales en la parcela seleccionada.";
		}
		return;
	}
	var valor = valor.split("|");
	if (div_catastro.style.visibility == 'visible'){
		log.innerHTML =  "<a href='https://www1.sedecatastro.gob.es/CYCBienInmueble/OVCListaBienes.aspx?rc1=" + valor[0] +"&rc2=" + valor[1] + "' onclick='abreVentana(this.href, 640, 480); return false;'><img src='images/icn_ovc.gif' class='imgCAT'></img>&nbsp;<span class='txt_RefCat'>" + valor[0] + valor[1] + "</span></a><br/>" + valor[2] ;
	}

	// Ajustamos el tamaño del TAB con la nueva información de catastro
	var nuevo_alto = $('log').getStyle('height').toInt();
	nuevo_alto = nuevo_alto + 30 + 'px';
	$('acc_CAT').setStyle('height', nuevo_alto);
	mySlide.slideIn();
	// Fin ajuste
}

function borraResultadosCatastro(){
	$('log_res').innerHTML = "Con la <strong>Capa de Catastro activada</strong>, haga click en el mapa para obtener los datos catastrales.";
}
function borraResultadosSIGPAC(){
	$('log_res2').innerHTML = "Con la <strong>Capa de SIGPAC activada</strong>, haga click en el mapa para obtener los datos de Parcela y Recinto.";
}

/* CLICK SIGPAC */
function clickSIGPAC(valor){

	var div_sigpac = getRawObject('SIGPAC');
	var log = $('log_res2').empty().removeClass('ajax-loading');

	//alert (valor[0]); // Si valor empieza por '<' entonces ha dado un error de conexión
	if (valor[0] == '<'){
		if (div_sigpac.style.visibility == 'visible'){
		log.innerHTML = "Hubo un <strong>error</strong> al intentar conectar con <strong>SIGPAC</strong>. Revise su conexión a Internet o inténtelo más tarde.";
		}
		return;
	}

	//var provincia_consulta = valor[0] + valor[1];
	if (valor[0] == ""){ // Si no devuelve datos.
		if (div_sigpac.style.visibility == 'visible'){
			log.innerHTML = "No hay datos de SIGPAC en el punto seleccionado.";
		}
		return;
	}
	
	var valor = valor.split("|");	
	if (div_sigpac.style.visibility == 'visible'){
		log.innerHTML =  "<img src='images/icn_sigpac.gif' align='left'></img>&nbsp;<span class='txt_SIGPAC'>Parcela: </span><a href='http://sigpac.mapa.es/fega/visor/LayerInfo.aspx?layer=PARCELA&id=" + valor[0] + "' onclick='abreVentana(this.href, 640, 480); return false;'><span class='txt_SIGPAC'>" + valor[0] + "</span></a><br/><br/>";
		log.innerHTML+=  "<img src='images/icn_sigpac.gif' align='left'></img>&nbsp;<span class='txt_SIGPAC'>Recinto: </span><a href='http://sigpac.mapa.es/fega/visor/LayerInfo.aspx?layer=RECINTO&id=" + valor[1] + "' onclick='abreVentana(this.href, 640, 480); return false;'><span class='txt_SIGPAC'>" + valor[1] + "</span></a><br/>";		
	}

	// Ajustamos el tamaño del TAB con la nueva información de catastro
	var nuevo_alto = $('log').getStyle('height').toInt();
	nuevo_alto = nuevo_alto + 30 + 'px';
	$('acc_CAT').setStyle('height', nuevo_alto);
	mySlide.slideIn();
	// Fin ajuste
}

// ****************************************************************
// CARGA DE CAPA WMS DE CATASTRO
// ****************************************************************
function creaDivCatastro(refCat){

	var imgCargando = getRawObject("img_carga_catastro");
	imgCargando.style.visibility = "visible";

	var viewport = getRawObject('viewport');
	var extents = myKaMap.getGeoExtents();

	//Parametros WMS
    var layers = "&layers=Catastro";
	var service = "service=WMS";
	var request = "&request=GetMap";
    var imageformat = "&format=image/png";
    var version = "&version=1.1.1";
	var width = "&width=" + (getObjectWidth(viewport) -0);
	var height = "&height=" + (getObjectHeight(viewport) -0);
    var srs = "&srs=EPSG:23030";
	var styles = "&styles=";
	var transparent = "&transparent=true";
	var exception = "&exceptions=application/vnd.ogc.se_xml";
	var referenciaCatastral = "&refcat=" + refCat;

	//Contruimos la url de llamada
	var url = "http://www.sedecatastro.gob.es/Cartografia/WMS/ServidorWMS.aspx?";
	url = url + service + request + imageformat + version + width + height + layers + srs + styles + transparent + referenciaCatastral + exception;
	url = url + "&BBOX=" + extents[0] + "," + extents[1] + "," + extents[2] + "," + extents[3];

	//Creamos DIV de Catastro
	var div_insideLayer = getRawObject('theInsideLayer');
	var div_clon = document.createElement('div');
	//var div_catastro = viewport.insertBefore(div_clon, div_insideLayer);
	var div_catastro = div_insideLayer.appendChild(div_clon);
	div_catastro.id = "Catastro";

	//Ponemos estilos al DIV de Catastro
	div_catastro.style.position = 'absolute';
	div_catastro.style.top = (div_insideLayer.offsetTop * -1) + 'px';
	div_catastro.style.left = (div_insideLayer.offsetLeft * -1) + 'px';
	div_catastro.style.width = getObjectWidth(viewport) + 'px';
	div_catastro.style.height = getObjectHeight(viewport) + 'px';
	div_catastro.style.visibility = 'visible';
	div_catastro.style.zIndex = 5;

	$('img_carga_catastro').setStyle('visibility', 'visible');
	div_catastro.appendChild(
		new Asset.image(url, {
			id: 'img_catastro',
			onload: function(){
				$('img_carga_catastro').setStyle('visibility', 'hidden');
			},
			onerror: function(){
				alert ('Hubo un error al descargar la imágen de Catastro. Verifique su conexión a Internet o inténtelo más tarde.');
				$('img_carga_catastro').setStyle('visibility', 'hidden');
				$('checkCatastro').removeProperty('checked', 'checked');
				borraDivCatastro();
			},
			onabort: function(){
				alert ('Hubo un error al descargar la imágen de OV Catastro. Verifique su conexión a Internet o inténtelo más tarde.');
				$('img_carga_catastro').setStyle('visibility', 'hidden');
				$('checkCatastro').removeProperty('checked', 'checked');
				borraDivCatastro();
			}
		})
	);
}

function checkImgCatastro(){

	var imgCatastro = getRawObject("img_catastro");
	var imgCargando = getRawObject("img_carga_catastro");

	if (!imgCatastro){
		return;
	}

	if (!imgCatastro.complete){
		return;
	}

	imgCargando.style.visibility = "hidden";
	clearInterval(timer);
	return;
}

function ver_ocultaCatastro(){
	var div_catastro = getRawObject('Catastro');
	if(div_catastro){
		//alert('hay catastro');
		switch(div_catastro.style.visibility){
			case 'hidden':
//				alert (ac0.previous); // ac0.previous nos da el valor del acordeón activo
				if (ac0.previous != 3){
					ac0.display(3); // Desplegamos el apartado INFORMACION PARCELARIA del acordeón
				}
				div_catastro.style.visibility = 'visible';
				break;
			case 'visible':
				var div_refCAT = getRawObject('refCAT');
				var div_dirCAT = getRawObject('dirCAT');

				$('img_carga_catastro').style.visibility = 'hidden';
				div_catastro.style.visibility = 'hidden';
				refCat = "";
				
				borraResultadosCatastro();
				
				break;
		}
	}
	else{
		//alert('no hay catastro');
		if (ac0.previous != 3){
			ac0.display(3); // Desplegamos el apartado CATASTRO del acordeón
		}
		creaDivCatastro(refCat);
	}
	myKaMap.triggerEvent( KAMAP_LAYER_STATUS_CHANGED, myKaMap );
}

function ver_Catastro(refCat){
	var div_catastro = getRawObject('Catastro');
	if(div_catastro){
		//alert('hay catastro');
		div_catastro.style.visibility = 'visible';
	}
	else{
		creaDivCatastro(refCat);
	}
	myKaMap.triggerEvent( KAMAP_LAYER_STATUS_CHANGED, myKaMap );
}

function recargaCatastro(){

	//RECARGAMOS EL DIV DE CATASTRO
	var div_catastro = getRawObject('Catastro');
	if(div_catastro){
		var estado_catastro = div_catastro.style.visibility;
		if(estado_catastro == 'visible'){
			borraDivCatastro();
			creaDivCatastro(refCat);
		}else{
			borraDivCatastro();
		}
	}
	return;
}

function borraDivCatastro(){

	var div_viewport = getRawObject('theInsideLayer');
	var div_catastro = getRawObject('Catastro');

	if(div_catastro){
		div_viewport.removeChild(div_catastro);
		return;
	}
	return;
}

function borra_formulario(){
	$('myForm').reset();
}

// *****************************************
// FIN CATASTRO
// *****************************************

// ****************************************************************
// CARGA DE CAPA WMS DEL SIGPAC
// ****************************************************************
function creaDivSigPac(){

	var imgCargando = getRawObject("img_carga_sigpac");
	imgCargando.style.visibility = "visible";

	var viewport = getRawObject('viewport');
	var extents = myKaMap.getGeoExtents();

	//Parametros WMS
    var layers = "&layers=PARCELA,OLIVOS,RECINTO,ARBOLES_FS";
	var service = "service=WMS";
	var request = "&request=GetMap";
    var imageformat = "&format=image/png";
    var version = "&version=1.1.1";
	var width = "&width=" + (getObjectWidth(viewport) -0);
	var height = "&height=" + (getObjectHeight(viewport) -0);
    var srs = "&srs=EPSG:23030";
	var styles = "&styles=";
	var transparent = "&transparent=true";
	var exception = "&exceptions=application/vnd.ogc.se_xml";

	//Contruimos la url de llamada
	var url = "http://wms.mapa.es/wms/wms.aspx?";
	url = url + service + request + imageformat + version + width + height + layers + srs + styles + transparent + exception;
	url = url + "&BBOX=" + extents[0] + "," + extents[1] + "," + extents[2] + "," + extents[3];

	//Creamos DIV de SIGPAC
	var div_insideLayer = getRawObject('theInsideLayer');
	var div_clon = document.createElement('div');
	//var div_catastro = viewport.insertBefore(div_clon, div_insideLayer);
	var div_sigpac = div_insideLayer.appendChild(div_clon);
	div_sigpac.id = "SIGPAC";

	//Ponemos estilos al DIV de Catastro
	div_sigpac.style.position = 'absolute';
	div_sigpac.style.top = (div_insideLayer.offsetTop * -1) + 'px';
	div_sigpac.style.left = (div_insideLayer.offsetLeft * -1) + 'px';
	div_sigpac.style.width = getObjectWidth(viewport) + 'px';
	div_sigpac.style.height = getObjectHeight(viewport) + 'px';
	div_sigpac.style.visibility = 'visible';
	div_sigpac.style.zIndex = 4;

	$('img_carga_sigpac').setStyle('visibility', 'visible');
	div_sigpac.appendChild(
		new Asset.image(url, {
			id: 'img_sigpac',
			onload: function(){
				$('img_carga_sigpac').setStyle('visibility', 'hidden');
			},
			onerror: function(){
				alert ('Hubo un error al descargar la imágen del SIGPAC. Verifique su conexión a Internet o inténtelo más tarde.');
				$('img_carga_sigpac').setStyle('visibility', 'hidden');
				$('checkSigPac').removeProperty('checked', 'checked');
				borraDivSigPac();
			},
			onabort: function(){
				alert ('Hubo un error al descargar la imágen del SIGPAC. Verifique su conexión a Internet o inténtelo más tarde.');
				$('img_carga_sigpac').setStyle('visibility', 'hidden');
				$('checkSigPac').removeProperty('checked', 'checked');
				borraDivSigPac();
			}
		})
	);
}

function checkImgCatastro(){

	var imgSigPac = getRawObject("img_sigpac");
	var imgCargando = getRawObject("img_carga_sigpac");

	if (!imgSigPac){
		return;
	}

	if (!imgSigPac.complete){
		return;
	}

	imgCargando.style.visibility = "hidden";
	clearInterval(timer);
	return;
}

function ver_ocultaSigPac(){
	var div_sigpac = getRawObject('SIGPAC');
	if(div_sigpac){
		//alert('hay sigpac');
		switch(div_sigpac.style.visibility){
			case 'hidden':
				if (ac0.previous != 3){
					ac0.display(3); // Desplegamos el apartado INFORMACION PARCELARIA del acordeón
				}			
				div_sigpac.style.visibility = 'visible';
				break;
			case 'visible':
				$('img_carga_sigpac').style.visibility = 'hidden';
				div_sigpac.style.visibility = 'hidden';
				
				borraResultadosSIGPAC();				
				
				break;
		}
	}
	else{
		//alert('no hay sigpac');
		if (ac0.previous != 3){
			ac0.display(3); // Desplegamos el apartado INFORMACION PARCELARIA del acordeón
		}		
		creaDivSigPac();
	}
	myKaMap.triggerEvent( KAMAP_LAYER_STATUS_CHANGED, myKaMap );
}

function ver_SigPac(){
	var div_sigpac = getRawObject('SIGPAC');
	if(div_sigpac){
		//alert('hay sigpac');
		div_sigpac.style.visibility = 'visible';
	}
	else{
		creaDivSigPac();
	}
	myKaMap.triggerEvent( KAMAP_LAYER_STATUS_CHANGED, myKaMap );
}

function recargaSigPac(){

	//RECARGAMOS EL DIV DE SIGPAC
	var div_sigpac = getRawObject('SIGPAC');
	if(div_sigpac){
		var estado_sigpac = div_sigpac.style.visibility;
		if(estado_sigpac == 'visible'){
			borraDivSigPac();
			creaDivSigPac();
		}else{
			borraDivSigPac();
		}
	}
	return;
}

function borraDivSigPac(){

	var div_viewport = getRawObject('theInsideLayer');
	var div_sigpac = getRawObject('SIGPAC');

	if(div_sigpac){
		div_viewport.removeChild(div_sigpac);
		return;
	}
	return;
}
// *****************************************
// FIN SIGPAC
// *****************************************


// ****************************************************************
// CARGA DE CAPA WMS DE CARTOCIUDAD
// ****************************************************************
function creaDivCartoCiudad(){

	var imgCargando = getRawObject("img_carga_cartociudad");
	imgCargando.style.visibility = "visible";

	var viewport = getRawObject('viewport');
	var extents = myKaMap.getGeoExtents();

	//Parametros WMS
    var layers = "&layers=FondoUrbano,Vial,Portal,Toponimo,SeccionCensal,CodigoPostal,";
	var service = "service=WMS";
	var request = "&request=GetMap";
    var imageformat = "&format=image/png";
    var version = "&version=1.1.0";
	var width = "&width=" + (getObjectWidth(viewport) -0);
	var height = "&height=" + (getObjectHeight(viewport) -0);
    var srs = "&srs=EPSG:23030";
	var styles = "&styles=";
	var transparent = "&transparent=true";
	var exception = "&exceptions=application/vnd.ogc.se_xml";

	//Contruimos la url de llamada
	var url = "http://www.cartociudad.es/wms/CARTOCIUDAD/CARTOCIUDAD?";
	url = url + service + request + imageformat + version + width + height + layers + srs + styles + transparent + exception;
	url = url + "&BBOX=" + extents[0] + "," + extents[1] + "," + extents[2] + "," + extents[3];

	//Creamos DIV de CARTOCIUDAD
	var div_insideLayer = getRawObject('theInsideLayer');
	var div_clon = document.createElement('div');
	//var div_catastro = viewport.insertBefore(div_clon, div_insideLayer);
	var div_CartoCiudad = div_insideLayer.appendChild(div_clon);
	div_CartoCiudad.id = "CARTOCIUDAD";

	//Ponemos estilos al DIV de CartoCiudad
	div_CartoCiudad.style.position = 'absolute';
	div_CartoCiudad.style.top = (div_insideLayer.offsetTop * -1) + 'px';
	div_CartoCiudad.style.left = (div_insideLayer.offsetLeft * -1) + 'px';
	div_CartoCiudad.style.width = getObjectWidth(viewport) + 'px';
	div_CartoCiudad.style.height = getObjectHeight(viewport) + 'px';
	div_CartoCiudad.style.opacity = '0.70';
	div_CartoCiudad.style.filter = 'alpha(opacity=70)';	
	div_CartoCiudad.style.visibility = 'visible';
	div_CartoCiudad.style.zIndex = 3;

	$('img_carga_cartociudad').setStyle('visibility', 'visible');
	div_CartoCiudad.appendChild(
		new Asset.image(url, {
			id: 'img_cartociudad',
			onload: function(){
				$('img_carga_cartociudad').setStyle('visibility', 'hidden');
			},
			onerror: function(){
				alert ('Hubo un error al descargar la imágen de CARTOCIUDAD. Verifique su conexión a Internet o inténtelo más tarde.');
				$('img_carga_cartociudad').setStyle('visibility', 'hidden');
				$('checkCartoCiudad').removeProperty('checked', 'checked');
				borraDivCartoCiudad();
			},
			onabort: function(){
				alert ('Hubo un error al descargar la imágen de CARTOCIUDAD. Verifique su conexión a Internet o inténtelo más tarde.');
				$('img_carga_cartociudad').setStyle('visibility', 'hidden');
				$('checkCartoCiudad').removeProperty('checked', 'checked');
				borraDivCartoCiudad();
			}
		})
	);
}

function checkImgCartoCiudad(){

	var imgCartoCiudad = getRawObject("img_cartociudad");
	var imgCargando = getRawObject("img_carga_cartociudad");

	if (!imgCartoCiudad){
		return;
	}

	if (!imgCartoCiudad.complete){
		return;
	}

	imgCargando.style.visibility = "hidden";
	clearInterval(timer);
	return;
}

function ver_ocultaCartoCiudad(){
	var div_CartoCiudad = getRawObject('CARTOCIUDAD');
	if(div_CartoCiudad){
		//alert('hay CartoCiudad');
		switch(div_CartoCiudad.style.visibility){
			case 'hidden':
				div_CartoCiudad.style.visibility = 'visible';
				break;
			case 'visible':
				$('img_carga_cartociudad').style.visibility = 'hidden';
				div_CartoCiudad.style.visibility = 'hidden';
				break;
		}
	}
	else{
		//alert('no hay CartoCiudad');
		creaDivCartoCiudad();
	}
	myKaMap.triggerEvent( KAMAP_LAYER_STATUS_CHANGED, myKaMap );
}

function ver_CartoCiudad(){
	var div_CartoCiudad = getRawObject('CARTOCIUDAD');
	if(div_CartoCiudad){
		//alert('hay CartoCiudad');
		div_CartoCiudad.style.visibility = 'visible';
	}
	else{
		creaDivCartoCiudad();
	}
	myKaMap.triggerEvent( KAMAP_LAYER_STATUS_CHANGED, myKaMap );
}

function recargaCartoCiudad(){

	//RECARGAMOS EL DIV DE CARTOCIUDAD
	var div_CartoCiudad = getRawObject('CARTOCIUDAD');
	if(div_CartoCiudad){
		var estado_CartoCiudad = div_CartoCiudad.style.visibility;
		if(estado_CartoCiudad == 'visible'){
			borraDivCartoCiudad();
			creaDivCartoCiudad();
		}else{
			borraDivCartoCiudad();
		}
	}
	return;
}

function borraDivCartoCiudad(){

	var div_viewport = getRawObject('theInsideLayer');
	var div_CartoCiudad = getRawObject('CARTOCIUDAD');

	if(div_CartoCiudad){
		div_viewport.removeChild(div_CartoCiudad);
		return;
	}
	return;
}
// *****************************************
// FIN CARTOCIUDAD
// *****************************************

//****************************************************************
//CARGA DE CAPA WMS DE CARTOGRAFÍA URBANA
//****************************************************************
function creaDivCartografiaUrbana(aytoOGC){
	
	var imgCargando = getRawObject("img_carga_cartografiaurbana");
	imgCargando.style.visibility = "visible";

	var viewport = getRawObject('viewport');
	var extents = myKaMap.getGeoExtents();

	//Parametros WMS
	var layers = "&layers=Cartografia_Urbana";
	var service = "service=WMS";
	var request = "&request=GetMap";
	var imageformat = "&format=image/png";
	var version = "&version=1.1.1";
	var width = "&width=" + (getObjectWidth(viewport) -0);
	var height = "&height=" + (getObjectHeight(viewport) -0);
	var srs = "&srs=EPSG:23030";
	var styles = "&styles=";
	var transparent = "&transparent=true";
	var exception = "&exceptions=application/vnd.ogc.se_xml";

	//Contruimos la url de llamada
	//var url = "http://desa.iderioja.org/municipios/wms/request_" + codMunOGC + ".asp?";
	var url = aytoOGC;  // La url va en el config de cada municipio
	url = url + service + request + imageformat + version + width + height + layers + srs + styles + transparent + exception;
	url = url + "&BBOX=" + extents[0] + "," + extents[1] + "," + extents[2] + "," + extents[3];

	//alert (url);
	
	//Creamos DIV de CARTOGRAFÍA URBANA
	var div_insideLayer = getRawObject('theInsideLayer');
	var div_clon = document.createElement('div');
	var div_CartografiaUrbana = div_insideLayer.appendChild(div_clon);
	div_CartografiaUrbana.id = "CARTOGRAFIA_URBANA";

	//Ponemos estilos al DIV de CartografiaUrbana
	div_CartografiaUrbana.style.position = 'absolute';
	div_CartografiaUrbana.style.top = (div_insideLayer.offsetTop * -1) + 'px';
	div_CartografiaUrbana.style.left = (div_insideLayer.offsetLeft * -1) + 'px';
	div_CartografiaUrbana.style.width = getObjectWidth(viewport) + 'px';
	div_CartografiaUrbana.style.height = getObjectHeight(viewport) + 'px';
	div_CartografiaUrbana.style.visibility = 'visible';
	div_CartografiaUrbana.style.zIndex = 4;

	$('img_carga_cartografiaurbana').setStyle('visibility', 'visible');
	
	var img_precargada =
		new Asset.image(url, {
			id: aytoOGC,
			onload: function(){
				$('img_carga_cartografiaurbana').setStyle('visibility', 'hidden');
				div_CartografiaUrbana.appendChild( img_precargada );				
			},
			onerror: function(){
				if (aytoOGC != "no"){
					alert ('Error: Hubo un error al descargar la imágen de Cartografia Urbana. Verifique su conexión a Internet o inténtelo más tarde.');
				}
				$('img_carga_cartografiaurbana').setStyle('visibility', 'hidden');
				$('checkCartografiaUrbana').removeProperty('checked', 'checked');
				borraDivCartografiaUrbana();
			},
			onabort: function(){
				alert ('Abortado: Hubo un error al descargar la imágen de Cartografia Urbana. Verifique su conexión a Internet o inténtelo más tarde.');
				$('img_carga_cartografiaurbana').setStyle('visibility', 'hidden');
				$('checkCartografiaUrbana').removeProperty('checked', 'checked');
				borraDivCartografiaUrbana();
			}
		});
	div_CartografiaUrbana.appendChild( img_precargada );
}

function ver_ocultaCartografiaUrbana(codMunOGC){
	var div_CartografiaUrbana = getRawObject('CARTOGRAFIA_URBANA');
	if(div_CartografiaUrbana){
		//alert('hay CartografiaUrbana');
		switch(div_CartografiaUrbana.style.visibility){
			case 'hidden':
				div_CartografiaUrbana.style.visibility = 'visible';
				break;
			case 'visible':
				$('img_carga_cartografiaurbana').style.visibility = 'hidden';
				div_CartografiaUrbana.style.visibility = 'hidden';
				break;
		}
	}
	else{
		//alert('no hay CartografiaUrbana');
		creaDivCartografiaUrbana(codMunOGC);
	}
	myKaMap.triggerEvent( KAMAP_LAYER_STATUS_CHANGED, myKaMap );
}

function borraDivCartografiaUrbana(){
	var div_viewport = getRawObject('theInsideLayer');
	var div_CartografiaUrbana = getRawObject('CARTOGRAFIA_URBANA');

	if(div_CartografiaUrbana){
		div_viewport.removeChild(div_CartografiaUrbana);
		return;
	}
	return;
}

function recargaCartografiaUrbana(){
	//RECARGAMOS EL DIV DE CARTOGRAFIA URBANA
	var div_CartografiaUrbana = getRawObject('CARTOGRAFIA_URBANA');
	if(div_CartografiaUrbana){
		
		var nombre_ayto = div_CartografiaUrbana.firstChild.id;
		//alert (nombre_ayto);
		
		var estado_CartografiaUrbana = div_CartografiaUrbana.style.visibility;
		if(estado_CartografiaUrbana == 'visible'){
			borraDivCartografiaUrbana();
			creaDivCartografiaUrbana(nombre_ayto);
		}else{
			borraDivCartografiaUrbana();
		}
	}
	return;
}
//*****************************************
//FIN CARTOGRAFIA URBANA
//*****************************************

function addEvent(obj, evType, fn){
	if (obj.addEventListener){
   		obj.addEventListener(evType, fn, false);
   		return true;
 	} else if (obj.attachEvent){
   		var r = obj.attachEvent("on"+evType, fn);
   		return r;
 		} else {
   			return false;
 		}
}

function escribeContacto(lang){
	var usuario = "sig" ;
	var dominio = "larioja.org";
	
	if (lang == "en") {
		document.write("<a style='text-decoration:underline' href=\"mailto:" + usuario + "@" + dominio + "\">" + "Write mail" + "&nbsp;<img src='images/mail.png' alt='Contact' width='16' height='12' border='0' style='border: 0px' title='Contact'></a>");
	}
	else {
		document.write("<a style='text-decoration:underline' href=\"mailto:" + usuario + "@" + dominio + "\">" + "Escribir correo" + "&nbsp;<img src='images/mail.png' alt='Contacto' width='16' height='12' border='0' style='border: 0px' title='Contacto'></a>");
	}
}

function alerta(){
	alert ('ALERTA');
}
// ******************************************
// FUNCIONES ENLACES
// ******************************************
function abrirMapa(codMunINE)
{
 	fecha=new Date();
	hora=fecha.getYear()+":"+fecha.getMonth()+":"+fecha.getDate()+":"+fecha.getHours()+":"+fecha.getMinutes()+":"+fecha.getSeconds()+":"+fecha.getMilliseconds();

	url = 'http://visor2.iderioja.larioja.org/index.asp?cod_consulta=50001&listaCapasOGC=';
	url = url + codMunINE;
	url = url + '&paramsConsulta=40|';
	url = url + codMunINE;
	url = url + '&tiempo=';
	url = url + hora;
	url = url + '&res=';
	url = url + screen.width;
	
	window.open(url, 'Visor', 'toolbar=no,directories=no,menubar=no,status=no,scrollbars=auto,resizable=no,width='+ (screen.width - 12) +',height='+ (screen.height - 30) +',top=0,left=0');
}


function abrirSIU(codMunINE){

	var msg = "Esta aplicación requiere Internet Explorer";
	var msg2 = "Este Municipio no está disponible en el SIU";
	var ver = getInternetExplorerVersion();

	if (codMunINE == '004' || codMunINE == '129'){
		alert( msg2 );
		return;
	}
	
	if ( ver == -1 ){
		alert( msg );    
		return;
	}

	urlSIU = 'http://siu.larioja.org/frames.asp?codigo=';
	urlSIU = urlSIU + codMunINE;
	urlSIU = urlSIU + '&amp;res=';
	urlSIU = urlSIU + screen.width;
	
	window.open(urlSIU, 'SIU', 'toolbar=no,directories=no,menubar=no,status=no,scrollbars=auto,resizable=yes,width='+ (screen.width - 12) +',height='+ (screen.height - 30) +',top=0,left=0');
}

function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
  var rv = -1; // Return value assumes failure
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}


