   var map = null;
   var pid=0;
    var geocoder = null;
	var maps=new Array();
	var op=0;
	var qs;
	var div="map";
// var div=null;
	var mapIsLoaded;
	var marker;
	var trackCounter=0;

	var points;
	var tracks;
	var bounds;
	var markers;
	
	
	
	function createPoints(){
		
			points=new Array();
		
			for (i in jsonPoints){
				jsonPoint=jsonPoints[i];
				points.push(Object.extend(new point(),jsonPoint));
			}
			
			
	}
	function createTracks(){

			tracks=new Array();
			
			for (i in jsonTracks)
			{	var a =tracks.push(Object.extend(new track(),jsonTracks[i]));}
			
			
		
	}
	function addpoint(x, y){
		var latlng=new GLatLng(y,x);
		
		if (bounds==undefined){
			bounds =new GLatLngBounds(latlng,latlng);}
		else
			bounds.extend(latlng);
		
		return latlng;
		//alert (bounds);	
			
		
	}
	function drawLine(track){
		trackCounter++ ;
		if (track.start.indexOf(",")!=-1 && track.end.indexOf(",")!=-1){
		
			var start=track.start.split(",");
			var end=track.end.split(","); 
			var linePoints = new Array();
			linePoints.push(addpoint(start[0],start[1]));

			if (track.points.indexOf(",0 ")){
				var smoothPoints=track.points.split(",0 ");
				smoothPoints.each(function(smoothPoint){
					if (smoothPoint!=""){
					 smoothPoint=smoothPoint.split(",");
					 linePoints.push(addpoint(smoothPoint[0],smoothPoint[1]));
					 }
				});
			}
			
			var icon = new GIcon(G_DEFAULT_ICON);
			icon.image = "typo3conf/ext/gtk_routes/icons/iconr"+trackCounter+".png";
		
        	var marker =new GMarker(addpoint(start[0],start[1]) ,{icon:icon});
			map.addOverlay(marker);
			

			linePoints.push(addpoint(end[0],end[1]));
			var line =new GPolyline(linePoints,"#000000",2,0.9);
			map.addOverlay(line);
			////alert("llega ?");
		
			}
			
	}
	function markerClick(marker){
					if (marker==undefined)
						marker=this;
					
					/*map.openInfoWindow(marker.getPoint(),"<strong>"+marker.name+"</strong>");
					map.setCenter(marker.getPoint());
					*/
					infoWindow(marker);
					var address=$("point-"+marker.uid);
					if (address!=undefined){
						//interactua con menu
						Element.addClassName(address,"destacado");
						var collapsed  = address.up(".collapsed");
						if (collapsed!=	undefined){
							blocks.each(blockCollapse);
							Element.removeClassName(collapsed,"collapsed");
							blocks.each(blockInitialize);
						}
					}
					
	}
	function infoWindow(marker){
					map.openInfoWindow(marker.getPoint(),foodTemplate.evaluate(marker));
					//map.setCenter(marker.getPoint());
	}
	function linkClick(e){
		var  a =Event.element(e);
		
		if (a.href==undefined){a=a.up("a");}
	
		var uid=a.href.split("#marker-")[1];
		point = points.find(function (point){			return point.uid==uid		});
		
		infoWindow(point.marker);
	}
	function createPoint(point){
			
		if (!isNaN(point.tx_rggooglemap_lng)  && !isNaN(point.tx_rggooglemap_lat) && point.tx_rggooglemap_lng!=0 && point.tx_rggooglemap_lat!=0){
			var pointPoint=addpoint(point.tx_rggooglemap_lat,point.tx_rggooglemap_lng);
			drawPoint(point,pointPoint)
		}else if ( point.address!=""){
				
				var geocoder = new GClientGeocoder();
				return geocoder.getLatLng(point.address, function ( pointPoint){
					if (pointPoint) 	drawPoint(point,pointPoint);
					
				});

		}
	}
	function drawPoint(point,pointPoint){// (isNaN(point.tx_rggooglemap_lng));
	//http://maps.google.com/mapfiles/ms/micons/lodging.png
	//http://maps.google.com/mapfiles/ms/micons/restaurant.png
		var icon=new GIcon(G_DEFAULT_ICON);
		
		if (point.category=="food") {
			icon.image="http://maps.google.com/mapfiles/ms/micons/restaurant.png";
			icon.shadow = "http://maps.google.com/mapfiles/ms/micons/restaurant.shadow.png";
			
		}else if (point.category=="sleep") {
			icon.image="http://maps.google.com/mapfiles/ms/micons/lodging.png";
			icon.shadow = "http://maps.google.com/mapfiles/ms/micons/lodging.shadow.png";
		
		}
		icon.opacity=0.5;
		icon.iconSize = new GSize(32, 32);
		icon.shadowSize = new GSize(59, 32);
		icon.infoWindowAnchor = new GPoint(32, 32);
		
			var marker =new GMarker(pointPoint,{icon:icon});
			
			point.marker= marker = Object.extend( point,marker);
			GEvent.addListener(marker, "click", markerClick);
			map.addOverlay(marker);
			
			var address=$$("#point-"+marker.uid+" a");
			if(address.length>0){
				address=address[0];
				address.setAttribute("href", address.href+"marker-"+marker.uid);
				Event.observe(address,"click", linkClick);
			}
		

	}
	

   
   function Initialize() {
	
	    if (GBrowserIsCompatible()) {
		
			map = new GMap2(document.getElementById(div));

	        var center = new GLatLng(37.176184, -3.594246 );
	        map.setCenter(center, 13);
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			createPoints();
			points.each(createPoint);
			
			
			createTracks();
	
			tracks.each(drawLine);
			
			
			map.setCenter(bounds.getCenter());
			map.setZoom(map.getBoundsZoomLevel(bounds));
	    }
		
	
		
		
    }
	Event.observe(window,"load", Initialize);