/*
 *   Google Maps API functions.
 */

var zoom = 14;
var bilbo_map;
var markerHash;
var currentFocus;

function init() {
  if (GBrowserIsCompatible()) {
    zoom = 14;
    bilbo_map = new GMap2(document.getElementById("map"));
    bilbo_map.setCenter(new GLatLng(43.263706,-2.931461), zoom);

    bilbo_map.addControl(new GSmallMapControl());
    bilbo_map.addControl(new GMapTypeControl());

    markerHash = {};
    currentFocus = false;

    if ((typeof(window["track_points"]) != "undefined") && (track_points.size() > 0)) {
      drawTrack();
    }
    if ((typeof(window["markers"]) != "undefined") && (markers.size() > 0)) {
      showMarkers();
    }
  }
}

Event.observe(window, 'load', init);
Event.observe(window, 'unload', GUnload);

function drawTrack() {
	points = []
	for (var i = 0; i < track_points.length; i++) {
		points[i] = new GLatLng(track_points[i].lat, track_points[i].lng)
	}
	var polyline = new GPolyline(points,"#ff0000", 3);
	if (track_points.size() > 0) {
	 	bilbo_map.setCenter(new GLatLng(track_points[0].lat, track_points[0].lng), zoom);
		bilbo_map.addOverlay(polyline);
	}
}


function showMarkers() {
	for (var i = 0; i < markers.length; i++) {
		 var m = markers[i];
		 var lat=m.lat;
		 var lng=m.lng;
		 if (lat&lng) {
			 // create pin and put it on the map
             var latlng = new GLatLng(parseFloat(lat), parseFloat(lng));
             var marker = addMarkerToMap(latlng, m.title_txt, m.image, m.id, m.url, m.icon);
             markerHash[m.id] = {marker:marker, title:m.title_txt, image:m.image, url:m.url, visible:true}
		}
    }
}

function imageHTML(title, image, url) {
	return "<h2><a href='"+url+"'>"+title+"</a></h2>"+image;
}

function addMarkerToMap(latlng, title, image, id, url, icon_image) {
	var icon = new GIcon();
	if (icon_image == "") {
		icon_image = "otro"
	}
	icon.image="/images/"+icon_image+".png";
	icon.ionSize = new GSize(25, 25);
	icon.iconAnchor = new GPoint(14, 25);
	icon.infoWindowAnchor = new GPoint(14, 14);
	var marker = new GMarker(latlng, icon);
	// var marker = new GMarker(latlng);
	
	GEvent.addListener(marker, 'click', function(){
		var html = imageHTML(title, image, url);
		marker.openInfoWindowHtml(infoWindowContent(html));
    });

    bilbo_map.addOverlay(marker);
    return marker;
}

function showPhotoOnMap(photoId) {
	var id = photoId;
	if ((id != '') && (markerHash[id])  && (markerHash[id].marker)) {
    	if (currentFocus) {
        	Element.removeClassName("photo_"+currentFocus, "current")
        }
        Element.addClassName("photo_"+id, "current");
		var html = imageHTML(markerHash[id].title, markerHash[id].image, markerHash[id].url);
        markerHash[id].marker.openInfoWindowHtml(infoWindowContent(html));
        currentFocus = id;
    }
    $('map').scrollTo();
}

function infoWindowContent(html) {
	return "<div style='width:240px; height:200px'>"+html+"</div>";
}

