// ******* ********* ********* ********* ********* ********* ********* *********

var map;
// var mgr;
var Icon;
// var marcador;

var latIni;
var lngIni;
var zoomIni;
var tipoIni;

/*
var rangoLat = 2.15;
var rangoLng = 2.15;
var limites;
*/

var lm; // lista de marcadores;

// 30km / 512px (aprox) zoom level 11
// 14.5km / 512px (aprox) zoom level 12

function load(latIni_, lngIni_, zoomIni_, tipoIni_) {
  if (GBrowserIsCompatible()) {
    latIni = latIni_;
    lngIni = lngIni_;
    zoomIni = zoomIni_;
    tipoIni = tipoIni_;
    map = new GMap2(document.getElementById("map"));

    // ====== Restricting the range of Zoom Levels =====
    // Get the list of map types      
    var mt = map.getMapTypes();
    // Overwrite the getMinimumResolution() and getMaximumResolution() methods
    for (var i=0; i<mt.length; i++) {
      mt[i].getMinimumResolution = function() {return 9;}
      // mt[i].getMaximumResolution = function() {return 17;}
    }

    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GScaleControl());
    // map.setMapType(_HYBRID_TYPE);
    centrarMapaInicial(latIni, lngIni, zoomIni, tipoIni);
 
    Icon = new GIcon();
    Icon.iconSize=new GSize(32,32);
    Icon.shadowSize=new GSize(56,32);
    Icon.iconAnchor=new GPoint(16,32);
    Icon.infoWindowAnchor=new GPoint(16,0);
    pathBaseIcon = "/mapas/geicons/Pal4/icon63";
    Icon.image = pathBaseIcon + ".png";
    Icon.shadow = pathBaseIcon + "s.png";

/*
    GEvent.addListener(map, "moveend", function() {
      cargarMarcadores();
    });


    GEvent.addListener(map, "zoomend", function(oldLevel, newLevel) {
      if (newLevel < oldLevel) {
        cargarMarcadores();
      }
    });
*/
    iniciar_();
  }
}


// ******* ********* ********* ********* ********* ********* ********* *********

function cargarMarcadores() {
  var bounds = map.getBounds();
  if (!lastBounds.containsBounds(bounds)) {
    actualizarLimites(bounds);
  }
  // document.getElementById("output").value = urlRequest;
}

// ******* ********* ********* ********* ********* ********* ********* *********

function colocarMarcador(lat, lng, textoInfo) {
    // alert("colocar marcador, lat: " + lat + ", lng: " + lng + "\n" + textoInfo);
    var iconoFoto = new GIcon(Icon);
    var marcador = new GMarker(new GLatLng(lat, lng), { draggable:false, icon: iconoFoto});
    GEvent.addListener(marcador, "click", function() {
      marcador.openInfoWindowHtml(textoInfo);
    });
    map.addOverlay(marcador);
    return marcador;
}

// ******* ********* ********* ********* ********* ********* ********* *********

// Posicion, zoom y tipo de mapa inicial
function centrarMapaInicial(geoLat, geoLong, zoomLev, mapType) {
  map.setCenter(new GLatLng(geoLat, geoLong), zoomLev, mapType);
}

function mostrarInfo(id) {
  // alert("Centro: " + id);
  makeHttpRequest('gmGateway.php?id=2&idCentro=' + id, 'colocarSalida', 'infoCentro', false);
}

function resetInfoCentro() {
  xGetElementById("infoCentro").innerHtml = '';
  centrarMapaInicial();
}

// ******* ********* ********* ********* ********* ********* ********* *********

var http_request = false;

   function makeRequest(url) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      http_request.onreadystatechange = alertContents;
      // alert(url + parameters);
      http_request.open('GET', url, true);
      http_request.send(null);
   }


  // Navegadores estandar (ECMA, DOM) + MSIE
  function alertContents() {
    if (http_request.readyState == 4) {
      if (http_request.status == 200) {

        var xmldoc = http_request.responseXML;
        // alert("responseText: " + http_request.responseText);
        // El elemento raiz es el primer (y unico) nodo 'casas'
        var root = xmldoc.getElementsByTagName('casas')[0];
        // alert("root (name): " + root.nodeName);
        var listaCasas = root.getElementsByTagName("casa");

        for (var numCasa = 0; numCasa < listaCasas.length; numCasa++) {
          var casa = listaCasas[numCasa];
          // alert("casa: " + casa);
          // alert ("longitud: " + casa.firstChild.nodeValue + ", lng: " +  casa.getAttribute("longitud"));
          var nombre_casa = casa.firstChild.nodeValue;
          var id_casa = casa.getAttribute("id_casa");
          var poblacion = casa.getAttribute("poblacion");
          var provincia = casa.getAttribute("provincia");
          var latitud = casa.getAttribute("latitud");
          var longitud = casa.getAttribute("longitud");
          var url_foto = casa.getAttribute("url_foto");
          // alert (nombre_casa + " [" + id_casa + "]\n" + poblacion + ", " + provincia + "\n(" + latitud + ", " + longitud + ")");
          var urlCasa = "http://www.casas-turismo-rural.com/alojamiento.phtml?alojamiento=" + id_casa;
          var spanCentrar = "<span onclick='javascript:panToLL(" + latitud + ", " + longitud + ");' style='text-decoration:underline; color:#00F;'>Centrar</span>";
          var textoCasa = "<table border='0' cellspacing='0' cellpadding='0'><tr><td><img src='" + url_foto + "' height='60' alt='' />&nbsp;</td><td style='font-family:arial,verdana; font-size:10px;'><b>" + nombre_casa + "</b><br />" + poblacion + " (" + provincia + ")<br/>" + "<a href='" + urlCasa + "'>Ver ficha</a> " + spanCentrar + "</td></tr></table>";
          //alert(textoCasa);
          var marcador = colocarMarcador(latitud, longitud, textoCasa);

          // Solo la primera vez!!!
          if (id_casa == idCasaIni && firstShow) {
            firstShow = false;
            lm.insertarMarcador(id_casa, marcador);
            // mgr.addMarker(marcador);
            map.addOverlay(marcador);
            marcador.openInfoWindowHtml(textoCasa);
          }
          if (!lm.contieneMarcador(id_casa)) {
            lm.insertarMarcador(id_casa, marcador);
            map.addOverlay(marcador);
            // alert("Nuevo marcador: " +  id_casa);
          }
        }
      } else {
        alert('ERROR al enviar datos.');
      }
    }
  }

  function panToLL(lat, lng) {
    // alert("lat: " + lat + ", lng: " + lng);
    var pos = new GLatLng(lat, lng);
    map.panTo(pos);
  }

// ******* ********* ********* ********* ********* ********* ********* *********

