$(document).ready(function() {

	$("#map").googleMap(38.29, -0.59, 9, {
		controls: ["GLargeMapControl", "GMapTypeControl"],
		markers: $(".geo")
	});


});

$.googleMap = {
	maps: {},
	marker: function(m) {
		if (!m) {
			return null;
		} else if (m.lat == null && m.lng == null) {
			return $.googleMap.marker($.googleMap.readFromGeo(m));
		} else {
			var marker = new GMarker(new GLatLng(m.lat, m.lng));
			if (m.txt) {
				GEvent.addListener(marker, "click", function() {
					marker.openInfoWindowHtml($('#prueba').html());
				});
			}
			return marker;
		}
	},

	readFromGeo: function(elem) {
		var latElem = $(".latitude", elem)[0];
		var lngElem = $(".longitude", elem)[0];
		if (latElem && lngElem) {
			return { lat:parseFloat($(latElem).attr("title")), lng:parseFloat($(lngElem).attr("title")), txt:$(elem).attr("title") }
		} else {
			return null;
		}
	},
	mapNum: 1
};

$.fn.googleMap = function(lat, lng, zoom, options) {

	// If we aren't supported, we're done
	if (!window.GBrowserIsCompatible || !GBrowserIsCompatible()) return this;

	// Default values make for easy debugging
	if (lat == null) lat = 38.4419;
	if (lng == null) lng = -8.1419;
	if (!zoom) zoom = 10;

	// Sanitize options
	if (!options || typeof options != 'object')	options = {};
	options.mapOptions = options.mapOptions || {};
	options.markers = options.markers || [];
	options.controls = options.controls || {};

	var myicon1 = new GIcon();
	myicon1.image = "images/icon_maps/ico1.png";
	myicon1.shadow = "images/icon_maps/sombrai.png";
	myicon1.iconSize = new GSize(29, 35);
	myicon1.shadowSize = new GSize(45, 35);
	myicon1.iconAnchor = new GPoint(15, 35);
	myicon1.infoWindowAnchor = new GPoint(15, 1);

	var myicon2 = new GIcon();
	myicon2.image = "images/icon_maps/ico2.png";
	myicon2.shadow = "images/icon_maps/sombrai.png";
	myicon2.iconSize = new GSize(29, 35);
	myicon2.shadowSize = new GSize(45, 35);
	myicon2.iconAnchor = new GPoint(0, 35);
	myicon2.infoWindowAnchor = new GPoint(15, 1);

	var myicon3 = new GIcon();
	myicon3.image = "images/icon_maps/ico2.png";
	myicon3.shadow = "images/icon_maps/sombrai.png";
	myicon3.iconSize = new GSize(29, 35);
	myicon3.shadowSize = new GSize(45, 35);
	myicon3.iconAnchor = new GPoint(0, 35);
	myicon3.infoWindowAnchor = new GPoint(15, 1);

	var myicon4 = new GIcon();
	myicon4.image = "images/icon_maps/ico4.png";
	myicon4.shadow = "images/icon_maps/sombrai.png";
	myicon4.iconSize = new GSize(29, 35);
	myicon4.shadowSize = new GSize(45, 35);
	myicon4.iconAnchor = new GPoint(0, 35);
	myicon4.infoWindowAnchor = new GPoint(15, 1);

	var myicon5 = new GIcon();
	myicon5.image = "images/icon_maps/ico5.png";
	myicon5.shadow = "images/icon_maps/sombrai.png";
	myicon5.iconSize = new GSize(29, 35);
	myicon5.shadowSize = new GSize(45, 35);
	myicon5.iconAnchor = new GPoint(0, 35);
	myicon5.infoWindowAnchor = new GPoint(15, 1);

	var myicon6 = new GIcon();
	myicon6.image = "images/icon_maps/ico6.png";
	myicon6.shadow = "images/icon_maps/sombrai.png";
	myicon6.iconSize = new GSize(29, 35);
	myicon6.shadowSize = new GSize(45, 35);
	myicon6.iconAnchor = new GPoint(0, 35);
	myicon6.infoWindowAnchor = new GPoint(15, 1);

	var myicon7 = new GIcon();
	myicon7.image = "images/icon_maps/ico7.png";
	myicon7.shadow = "images/icon_maps/sombrai.png";
	myicon7.iconSize = new GSize(29, 35);
	myicon7.shadowSize = new GSize(45, 35);
	myicon7.iconAnchor = new GPoint(0, 35);
	myicon7.infoWindowAnchor = new GPoint(15, 1);

	var DefIcon = new GIcon();
	DefIcon.image = "images/icon_maps/default.png";
	DefIcon.shadow = "images/icon_maps/shadow.png";
	DefIcon.iconSize = new GSize(20, 38);
	DefIcon.shadowSize = new GSize(29, 38);
	DefIcon.iconAnchor = new GPoint(0, 38);
	DefIcon.infoWindowAnchor = new GPoint(10, 5);
	DefIcon.infoShadowAnchor = new GPoint(4, 38);

	var icons = [];
	icons[0]=  DefIcon;
	icons[1] = myicon1;
	icons[2] = myicon2;
	icons[3] = myicon3;
	icons[4] = myicon4;
	icons[5] = myicon5;
	icons[6] = myicon6;
	icons[7] = myicon7;



	// Map all our elements
	return this.each(function() {
		// Make sure we have a valid id
		if (!this.id) this.id = "gMap" + $.googleMap.mapNum++;
		// Create a map and a shortcut to it at the same time
		var map = $.googleMap.maps[this.id] = new GMap2(this, options.mapOptions);
		// Center and zoom the map
		map.setCenter(new GLatLng(lat, lng), zoom);
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		// Add controls to our map
		for (var i = 0; i < options.controls.length; i++) {
			var c = options.controls[i];
			eval("map.addControl(new " + c + "());");
		}
		// If we have markers, put them on the map
		/*    	var marker = null;
		for (var i = 0; i < options.markers.length; i++) {
		if (marker = $.googleMap.marker(options.markers[i])) map.addOverlay(marker);
		}    */
		/*
		GEvent.addListener( map, "wheelup", function(p){
		if ( map.getZoomLevel() > 0 ) {
		map.centerAndZoom(
		p.scaleRelative( map.getCenterLatLng() ),
		map.getZoomLevel() - 1
		);
		}
		});

		GEvent.addListener( map, "wheeldown", function(p){
		if ( map.getZoomLevel() <= 16 )
		map.centerAndZoom(
		p.scaleRelative( map.getCenterLatLng(), -1 ),
		map.getZoomLevel() + 1
		);
		});
		*/

		var tabhtml = [];
		var tabmarker = [];
		// Creates a marker at the given point with the given number label
		function createMarker(point, display, icontype, ref) {

			//var i = 0;
			//i = returnRefIndex(Ref);
		//	 alert(icontype);
			var marker = new GMarker(point,icons[icontype]);
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml(display);
			});

			var IdAnnonce = 'Id'+ref;
			//	alert(display);
			tabhtml[IdAnnonce] = display;
			tabmarker[IdAnnonce] = marker;
			return marker;
		}

		var i = 0;
		GDownloadUrl('xml/data_localizacion.php', function(data,responseCode) {
			var xml = GXml.parse(data);
			//	var contenu_html = xml.documentElement.getElementsByTagName("contenu");
			var markers = xml.documentElement.getElementsByTagName("marker");

			for (var i = 0; i < markers.length; i++) {
				var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
				parseFloat(markers[i].getAttribute("lng")));
				// var icontype = parseInt(markers[i].getAttribute("icontype"));
				var ref = markers[i].getAttribute("label");
				//	var icontype = returnRefIndex(Ref);
				var icontype = markers[i].getAttribute("icontype");
				var html = decode(markers[i].getElementsByTagName("infowindow"));
				map.addOverlay(createMarker(point,html,icontype,ref));
			}
		});



	});


};

function decode(a) {
	var b = "";
	if (a.length > 0) {
		if (a[0]) {
			if (a[0].firstChild) {
				b = a[0].firstChild.nodeValue;
			}
		}
	}
	//	alert(b);
	return b;

}

