//<![CDATA[
    var map;
    var geocoder;
    /* BCN
    var defaultLat = 41.4;
    var defaultLng = 2.15;
    var defaultRad = 11;
    var detailRad = defaultRad+4;
    */
    // Madrid, Spain
    var defaultLat = 40.4168878;
    var defaultLng = -3.702347;
    var defaultRad = 5;
    var detailRad = defaultRad+9;
    
    var listLat = new Array();
    var listLng = new Array();
    var listName = new Array();
    var listAddress = new Array();
	
	function loadCustomer() {
			
		loadSearch();
		var ai = document.getElementById('addressInput');
		if ( ai != null )
			ai.focus();
	}
	
	function loadSearch() {
		load(defaultLat,defaultLng,defaultRad);
        	map.setCenter(new GLatLng(defaultLat, defaultLng), defaultRad);
	}
	
	function loadEditor(aLat,aLng,aRad) {
		load(aLat,aLng,aRad);
         var latlng = new GLatLng(aLat,aLng);
         situaLloc(latlng);
	}
	
    function load(aLat,aLng,aRad) {
      if (GBrowserIsCompatible()) {
        geocoder = new GClientGeocoder();
        map = new GMap2(document.getElementById('map'));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());
        //map.setCenter(new GLatLng(aLat, aLng), aRad);
        GEvent.addListener(map, "click", function(oly,latlng,oll) {
         if ( document.getElementById('lat')==null && document.getElementById('lng') == null )
         	return;
         document.getElementById('lat').value= latlng.lat();
         document.getElementById('lng').value= latlng.lng();
         situaCoords();
		});
      }
    }

   function searchLocations() {
     var address = document.getElementById('addressInput').value+', spain';
     geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {
         alert('No podemos encontrar "'+address+ '"\nPrueba una direccion similar a este ejemplo:\nPlaza mayor 1, Madrid' );
       } else {
         var d= document.getElementById('txtMarketing');
         if ( d!=null )
         	d.style.visibility= "hidden";
         d= document.getElementById('mapContainer');
         if ( d!=null )
         	d.style.visibility= "visible";
         searchLocationsNear(latlng);
       }
     });
   }

   function searchLocationsNear(center) {
     var radius = document.getElementById('radiusSelect').value;
     var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
     GDownloadUrl(searchUrl, function(data) {
       var xml = GXml.parse(data);
       var markers = xml.documentElement.getElementsByTagName('marker');
       map.clearOverlays();

       var sidebar = document.getElementById('sidebar');
       sidebar.innerHTML = '';
       if (markers.length == 0) {

         var si=document.getElementById('radiusSelect').selectedIndex;
         var rs = document.getElementById('radiusSelect').options[si].value;
         z = detailRad;
         if ( rs>=25 ) z= detailRad-2;
         if ( rs>=50 ) z= detailRad-5;
         if ( rs>=100 ) z= detailRad-7;


         sidebar.innerHTML = 'No pudimos encontrar tiendas en esta zona.';
         //map.setCenter(new GLatLng(defaultLat, defaultLng), defaultRad);
         map.setCenter(center, z);
         return;
       }

       var bounds = new GLatLngBounds();
       for (var i = 0; i < markers.length; i++) {
         var name = markers[i].getAttribute('name');
         var address = markers[i].getAttribute('address');
         var distance = parseFloat(markers[i].getAttribute('distance'));
         var point = new GLatLng(parseFloat(markers[i].getAttribute('lat')),
                                 parseFloat(markers[i].getAttribute('lng')));

         var marker = createMarker(point, name, address);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, distance);
         sidebar.appendChild(sidebarEntry);
         bounds.extend(point);
       }
       map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
     });
   }

    function createMarker(point, name, address) {
      var marker = new GMarker(point);
      var html = '<b>' + name + '</b> <br/>' + address ;
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
    }

    function createSidebarEntry(marker, name, address, distance) {
      var div = document.createElement('div');
      var txtDistancia= ''; // (distance.toFixed(1)>0? '(distancia=' + distance.toFixed(1) + ')':'');
      var html = '<b>' + name + '</b>'+txtDistancia+'<br/><font color="blue">' + address+"</font>";
      div.innerHTML = html;
      div.style.cursor = 'pointer';
      div.style.marginBottom = '5px';
      GEvent.addDomListener(div, 'click', function() {
        GEvent.trigger(marker, 'click');
      });
      GEvent.addDomListener(div, 'mouseover', function() {
        div.style.backgroundColor = '#3CF';
      });
      GEvent.addDomListener(div, 'mouseout', function() {
        div.style.backgroundColor = 'white';
      });
      return div;
    }
    
    function geoLocalitza() {
    	var address= document.getElementById('address').value+', spain';
     geocoder.getLatLng(address, function(latlng) {
       if (!latlng) {
         alert(address + ' not found');
		 map.clearOverlays();
		 var sidebar = document.getElementById('sidebar');
		 sidebar.innerHTML = '';
       } else {
         situaLloc(latlng);
       }
     });
    }
    
    function situaLloc(latlng) {
		map.clearOverlays();
		map.setCenter(latlng,detailRad);
		var sidebar = document.getElementById('sidebar');
		sidebar.innerHTML = '';

         var name = document.getElementById('name').value;
         var address = document.getElementById('address').value;
         var distance = 0;

         var marker = createMarker(latlng, name, address);
         map.addOverlay(marker);
         var sidebarEntry = createSidebarEntry(marker, name, address, distance);
         sidebar.appendChild(sidebarEntry);
         
         document.getElementById('lat').value= latlng.lat();
         document.getElementById('lng').value= latlng.lng();
    }
    
    function situaCoords() {
         var lat = document.getElementById('lat').value;
         var lng = document.getElementById('lng').value;
         var latlng = new GLatLng(lat,lng);
         situaLloc(latlng);
    }

	function checksSet(checked) {

    	var numChecks = 1*document.getElementById('numchecks').value;

    	for ( i=0; i<numChecks; i++ ) {
    		document.getElementById('chk'+i).checked = checked;
    	}
    	
    	checksClicked();
	}
	
    function checksClicked() {

		var sel=0;
		
		map.clearOverlays();
		var sidebar = document.getElementById('sidebar');
// sidebar.innerHTML = '';
		var bounds = new GLatLngBounds();
    	var numChecks = 1*document.getElementById('numchecks').value;

    	for ( i=0; i<numChecks; i++ ) {
    	
    		if ( document.getElementById('chk'+i).checked ) {
				 var name = listName[i];
				 var address = listAddress[i];
				 var distance = 0;
				 var point = new GLatLng(listLat[i],listLng[i]);

				 var marker = createMarker(point, name, address);
				 map.addOverlay(marker);
				 var sidebarEntry = createSidebarEntry(marker, name, address, distance);
// sidebar.appendChild(sidebarEntry);
				 bounds.extend(point);
				 sel++;
    		}
    	}
    	
		if (sel != 0) {
			map.setCenter(bounds.getCenter(), (sel==1? detailRad: map.getBoundsZoomLevel(bounds)) );
		} else {
			map.setCenter(new GLatLng(defaultLat, defaultLng), defaultRad);
		}
    }

//]]>

