function noEnter(e){
var characterCode
	 if(e && e.which){
	 e = e
	 characterCode = e.which
	 }
	 else{
	 e = event
	 characterCode = e.keyCode
	 }	 
	 if(characterCode == 13){
 	 buscargeocoder();
	 }
	 else{
	 return true
	 }
}
var map = null;
var geocoder = null;
var side_bar_html = "";
var gmarkers = [];
var htmls = [];
var i = 0;
var bounds = null
var southWest = null
var northEast = null
var reasons=[];
reasons[G_GEO_SUCCESS]            = "Perfecto";
reasons[G_GEO_MISSING_ADDRESS]    = "Direccion Perdida: La direccion se ha perdido, o no tiene valor.";
reasons[G_GEO_UNKNOWN_ADDRESS]    = "Direccion Desconocida:  No encontramos su direccion en ningun lugar geografico.";
reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Direccion no disponible:  El servicio de geocoder para la direccion entregada no se puede mostrar por razones legales o por una razon contractual";
reasons[G_GEO_BAD_KEY]            = "Key incorrecta: La API key es incorrecta o no corresponde a este dominio";
reasons[G_GEO_TOO_MANY_QUERIES]   = "Demasiadas consultas: El numero de consultas diarias para este sitio ha sido excedido.";
reasons[G_GEO_SERVER_ERROR]       = "Error de servidor: La peticion de geoocding no ha podido ser procesada.";
var lat=-33.4371;
var lng=-70.633421;
var altura=14;
var lugar="asdf";
$

Event.observe( window, 'load', initialize );
Event.observe( window, 'unload', GUnload );
document.observe("dom:loaded", function() {
  $('textobuscar').observe('click', function(event){
	  if($('textobuscar').value=='\u00bfD\u00f3nde?')$('textobuscar').value="";
 });
  $('textobuscar').observe('blur', function(event){
   if($('textobuscar').value=='')$('textobuscar').value="\u00bfD\u00f3nde?";
 });
 $('textobuscar').observe('keypress', function(event){
noEnter(event);
 });
  $('submit').observe('click', function(event){
	 buscargeocoder(); 
 });
});


function limpiamapa()
{
	 var jsonData="";
var side_bar_html = "";
	var gmarkers = [];
	var htmls = [];
	map.clearOverlays();
	document.getElementById('mensajegeo').innerHTML = '';
	document.getElementById('sidebar').innerHTML = '';
	document.getElementById('mensajegeo').style.display = 'none';

	
}
function DibujaCajeros(campos) {
	elicono=iconos[campos.icono];

    var marker = new GMarker(campos.point,elicono);
    GEvent.addListener(marker, "click", function() {
    	marker.openInfoWindowHtml(campos.farmacia+"<br>"+campos.direccion+"<br><a href='http://farmacias.deturno.net/turnos' target='_blank'>ver turnos para hoy</a>");
     });
     // save the info we need to use later for the side_bar
      gmarkers[i] = marker;
      htmls[i] = campos.farmacia+"<br>"+campos.direccion+"<br><a href='http://farmacias.deturno.net/turnos' target='_blank'>ver turnos para hoy</a>";
      // add a line to the side_bar html
	 
	
	
	 var celdas='<div class="listadocajero">'
    		+'<a href="javascript:myclick(' + i + ')"><img src="http://'+location.hostname+'/images/'+campos.icono+'.png" class="iconlistado"></a>'
            +'<h2>'+campos.farmacia+'</h2>'
            +'  <div class="p">'+campos.direccion+'</div>'
    	+'</div>';
		
      side_bar_html += celdas;
      i++;
      return marker;
}
function myclick(i) {
	gmarkers[i].openInfoWindowHtml(htmls[i]);
}
function procesajson(doc) {
	side_bar_html="";
// === Parsea el documento JSON === 
	var jsonData = eval('(' + doc + ')');

// === Dibuja los marcadores ===
	if(jsonData.markers.length>0){
		for (var i=0; i<jsonData.markers.length; i++) {
		
			var marker = DibujaCajeros(jsonData.markers[i]);
   			map.addOverlay(marker);
			//var actual=i+1;
			//var incrementabar=Math.ceil((actual*100) / jsonData.markers.length);
			//emptyProgress ('barramarker1');
			//plus ('barramarker1',incrementabar);
	}

        // put the assembled side_bar_html contents into the side_bar div
       document.getElementById("sidebar").innerHTML = side_bar_html;
	}
}

function dibujagdown(){
		
	//emptyProgress ('barramarker1')
	bounds = map.getBounds();
	southWest = bounds.getSouthWest();
	northEast = bounds.getNorthEast();
	var cat = $('textobuscar').value;
    // ================================================================
    // === Fetch the JSON data file ====   
     GDownloadUrl("ajax/farmaciasbounds/"+southWest.lat()+"/"+southWest.lng() +"/"+northEast.lat()+"/"+northEast.lng(), function(data) {
procesajson(data);}
);

}
//funcion principal, carga el mapa el inicio
function initialize() {
	if (GBrowserIsCompatible()) {
    	map = new GMap2(document.getElementById("mapa"));
		
        map.setCenter(new GLatLng(lat, lng), altura);

		 map.setUIToDefault();
		map.disableScrollWheelZoom();
		
		var mapTypes = map.getMapTypes();
// overwrite the getMinimumResolution() and getMaximumResolution() methods for each map type
for (var i=0; i<mapTypes.length; i++) {
mapTypes[i].getMinimumResolution = function() {return 14;}
mapTypes[i].getMaximumResolution = function() {return 19;}
}


		geocoder = new GClientGeocoder();
		dibujagdown();
  		var point = new GLatLng(lat,lng);
		
 		var marker = new GMarker(point,icongeocoder);
        	GEvent.addListener(marker, "click", function() {
          	marker.openInfoWindowHtml(lugar);
        });
		map.addOverlay(marker);
		GEvent.addListener(map, "dragend", function() {
			limpiamapa();
  			dibujagdown();
		});
		GEvent.addListener(map, "zoomend", function() {
			limpiamapa();
  			dibujagdown();
		});
	}
}
 // ====== Geocoding ======
function buscargeocoder() {
	
	limpiamapa();
   	var search = $('textobuscar').value;
    // ====== Perform the Geocoding ======        
	geocoder.getLocations(search, function (result)
    { 
    // If that was successful
		if (result.Status.code == G_GEO_SUCCESS) {
        // How many resuts were found
			//document.getElementById('mensajegeo').style.display = 'block';
            //document.getElementById("mensajegeo").innerHTML = "Encontrados " +result.Placemark.length +" lugares";
            // Loop through the results, placing markers
            for (var i=0; i<result.Placemark.length; i++) {
            	var p = result.Placemark[i].Point.coordinates;
                var marker = new GMarker(new GLatLng(p[1],p[0]));
                document.getElementById("mensajegeo").innerHTML += "<br>"+(i+1)+": "+ result.Placemark[i].address + marker.getPoint();
                map.addOverlay(marker);
            }
            // centre the map on the first result
            var p = result.Placemark[0].Point.coordinates;
            map.setCenter(new GLatLng(p[1],p[0]),16);
			dibujagdown();
			
      // ================================================================
		}// ====== Decode the error status ======
        	else 
		{
              var reason="Codigo "+result.Status.code;
              if (reasons[result.Status.code]) {
                reason = reasons[result.Status.code]
              } 
              alert('No se pudo Encontrar "'+search+ '" ' + reason);
         }
	});
}
// JavaScript Document



