
var MAPAS={};MAPAS.posicion_inicial={latitud:0,longitud:0,zoom:1};MAPAS.mapa=function(contenedor,posicion){var mapa=null;var geocoder=null;var posicion=(posicion==null)?{}:posicion;if(GBrowserIsCompatible()&&($(contenedor).length==1)){latitud=((posicion.latitud==null)||isNaN(posicion.latitud))?0:parseFloat(posicion.latitud);longitud=((posicion.longitud==null)||isNaN(posicion.longitud))?0:parseFloat(posicion.longitud);zoom=((posicion.zoom==null)||isNaN(posicion.zoom))?11:parseInt(posicion.zoom);mapa=new GMap2($(contenedor).get(0));center=new GLatLng(latitud,longitud);mapa.setCenter(center,zoom);mapa.setUIToDefault();mapa.disableScrollWheelZoom();}
this.buscar=function(direccion,funcion){if($.isFunction(funcion)){MAPAS.posicion(direccion,function(posicion){if(!posicion){alert(direccion+" no encontrada");}
else{latlng=new GLatLng(posicion.latitud,posicion.longitud);mapa.setCenter(latlng,13);funcion.call(null,posicion);}});}}
this.marcador=function(opciones){return new MAPAS.marcador(mapa,opciones);}
this.posicionar=function(posicion){if(posicion&&!isNaN(posicion.latitud)&&!isNaN(posicion.longitud)&&!isNaN(posicion.zoom)){mapa.setCenter(new GLatLng(posicion.latitud,posicion.longitud),posicion.zoom);}}};MAPAS.marcador=function(mapa,opciones){opciones=(opciones!=null)?opciones:{};marcador_opciones={}
if((opciones.arrastrable!=null)&&(opciones.arrastrable==true)){marcador_opciones.draggable=true;}
if((opciones.imagen!=null)&&(opciones.imagen!="")&&!isNaN(opciones.ancho)&&!isNaN(opciones.alto)){var icono=new GIcon();icono.image=opciones.imagen;icono.iconSize=new GSize(opciones.ancho,opciones.alto);icono.iconAnchor=new GPoint(parseInt(opciones.ancho/2),parseInt(opciones.alto/2));marcador_opciones.icon=icono;}
var latlng=((opciones.coordenadas!=null)&&(posicion=MAPAS.coordenadas(opciones.coordenadas)))?new GLatLng(posicion.latitud,posicion.longitud):mapa.getCenter();var marcador=new GMarker(latlng,marcador_opciones);if((opciones.info!=null)&&(opciones.info!="")){GEvent.addListener(marcador,"click",function(){mapa_latlng=mapa.getCenter();mapa.openInfoWindowHtml(latlng,opciones.info,{onCloseFn:function(){mapa.panTo(mapa_latlng);}});});}
mapa.addOverlay(marcador);this.posicionar=function(posicion){latlng=(posicion!=null)?new GLatLng(posicion.latitud,posicion.longitud):mapa.getCenter();marcador.setLatLng(latlng);}
this.posicion=function(funcion){if($.isFunction(funcion)){var latlng=marcador.getLatLng();MAPAS.direccion({latitud:latlng.lat(),longitud:latlng.lng()},function(direccion){posicion={latitud:latlng.lat(),longitud:latlng.lng(),direccion:direccion};funcion.call(null,posicion);});}}};MAPAS.coordenadas=function(coordenadas){var posicion={latitud:0,longitud:0,zoom:1};if(coordenadas!=""){posicion.zoom=11;coord_array=coordenadas.split(",");if((coord_array.length>0)&&!isNaN(coord_array[0])){posicion.latitud=parseFloat(coord_array[0]);}
if((coord_array.length>1)&&!isNaN(coord_array[1])){posicion.longitud=parseFloat(coord_array[1]);}
if((coord_array.length>2)&&!isNaN(coord_array[2])){posicion.zoom=parseInt(coord_array[2]);}}
return posicion;};MAPAS.direccion=function(posicion,funcion){if($.isFunction(funcion)){var latlng=new GLatLng(posicion.latitud,posicion.longitud);var geocoder=new GClientGeocoder();geocoder.getLocations(latlng,function(response){direccion=(response&&response.Status.code==200)?response.Placemark[0].address:"";funcion.call(null,direccion);geocoder.reset();geocoder=null;});}};MAPAS.posicion=function(direccion,funcion){if($.isFunction(funcion)){var geocoder=new GClientGeocoder();geocoder.getLatLng(direccion,function(point){posicion=!point?false:{latitud:point.lat(),longitud:point.lng()};funcion.call(null,posicion);geocoder.reset();geocoder=null;});}};MAPAS.unload=function(){GUnload();};
