//<![CDATA[
var bounds = null;
var extrabounds = null;
var geocoder = null;
var map = null;	
var zoominicial = 2;
var zoomactual = zoominicial;

function miiZoom()
{
	var zum = map.getZoom();
	if (zum <= 3) nextzoom = 6;
	else if (zum <= 4) nextzoom = 7;
	else if (zum <= 5) nextzoom = 8;
	else if (zum <= 6) nextzoom = 9;
	else if (zum <= 7) nextzoom = 10;
	else if (zum <= 8) nextzoom = 11;
	else if (zum <= 9) nextzoom = 12;	
	else nextzoom = zum + 1;
	map.setZoom(nextzoom);
}

function addMiiFriend(friend)
{
	
}

function outOfExtraBounds(bounds2)
{
	if ( extrabounds.containsBounds( bounds2 ) )
		return false;
	return true;
}

function setExtraBounds(bounds) 
{
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	var lngDelta = (northEast.lng() - southWest.lng()) / 4;
	var latDelta = (northEast.lat() - southWest.lat()) / 2;
	extrabounds = new GLatLngBounds(
		new GLatLng(southWest.lat() - latDelta, southWest.lng() - lngDelta),
		new GLatLng(northEast.lat() + latDelta, northEast.lng() + lngDelta));
}	

function alMoureMap() {
	var bounds2 = map.getBounds();
	var nouzoom = map.getZoom();
	var surOeste = bounds2.getSouthWest();
	var norEste = bounds2.getNorthEast();	
	var lat2 = norEste.lat();
	var lat1 = surOeste.lat();
	var lng2 = norEste.lng();
	var lng1 = surOeste.lng();
	var dlat = lat2-lat1;
	var dlng = lng2-lng1;
	
	var log_dlat = Math.round(Math.log(dlat) * Math.LOG10E);
	var log_dlng = Math.round(Math.log(dlng) * Math.LOG10E);
	
	var info = " SW lat: " + lat1.toString();
	 info += " SW lng: " + lng1.toString();
	 info += " NE lat: " + lat2.toString();
	 info += " NE lng: " + lng2.toString();
	 info += " &Delta;lat: " + dlat.toString();
	 info += " &Delta;lng: " + dlng.toString();
	
	 info += " log_lat: " + log_dlat.toString();
	 info += " log_dlng: " + log_dlng.toString(); 
	
	//alert (info);
	//$("info").innerHTML = info;
	
	if ( nouzoom != zoomactual )
	{
		dibuixaMii();
		zoomactual = nouzoom;
	}
	else if ( outOfExtraBounds(bounds2) )
		dibuixaMii();	
}


function load()
{
	if (GBrowserIsCompatible()) 
	{
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		map.enableDoubleClickZoom();
		map.enableContinuousZoom();
		geocoder = new GClientGeocoder();
		//map.setCenter(new GLatLng(40.010787,-3.647461), zoominicial);
		map.setCenter(new GLatLng(25,0), zoominicial);
		dibuixaMii();
		GEvent.addListener(map, "moveend", alMoureMap);	
	}

}


function dibuixaMii() {
		//Buscamos en la BD los usuarios que estan entre las coordenadas del mapa inicial
		bounds = map.getBounds();
		setExtraBounds(bounds);
		map.clearOverlays();
		
		var nivellZoom = map.getZoom();
		var surOeste = extrabounds.getSouthWest();
		var norEste = extrabounds.getNorthEast();	
		var lat2 = norEste.lat();
		var lat1 = surOeste.lat();
		var lng2 = norEste.lng();
		var lng1 = surOeste.lng();
		//alert("lat1:" + lat1 + "lat2:" + lat2 +"lng1:" + lng1 +"lng2:" + lng2);
		GDownloadUrl("xml/placeMii.xml.php?lat1=" + lat1 + "&lat2=" + lat2 +"&lng1=" + lng1 +"&lng2=" + lng2 + "&zoom=" + nivellZoom, function(data, responseCode) {
		  var xml = GXml.parse(data);
		  var result = xml.documentElement.getElementsByTagName("result");
		  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 text2 = markers[i].getAttribute("text");
			//			var text = unescape(text2);
						var idUsuario = markers[i].getAttribute("id");
						var iconA = markers[i].getAttribute("perfilA");
						var iconB = markers[i].getAttribute("perfilB");
						var iconC = markers[i].getAttribute("perfilC");	
						var contador = markers[i].getAttribute("c");
						if (contador == 1)
						{
							var icon = new GIcon();
							icon.image = "/icon.php?a=" + iconA +"&b=" + iconB + "&c=" + iconC;
							icon.shadow = "/images/miiShadow.png";
							icon.iconSize = new GSize(16, 40);
							icon.shadowSize = new GSize(33, 40);
							icon.iconAnchor = new GPoint(10, 40);
							icon.infoWindowAnchor = new GPoint(10, 2);
							var text = "";
						}
						else 
						{
							var point = new GLatLng(parseFloat(markers[i].getAttribute("avglat")),
									parseFloat(markers[i].getAttribute("avglng"))
									);
							var icon = new GIcon();
							icon.image = "/images/miiGroup.png";
							icon.shadow = "/images/miiGroupShadow.png";
							icon.iconSize = new GSize(32, 32);
							icon.shadowSize = new GSize(59, 32);
							icon.iconAnchor = new GPoint(16, 28);
							icon.infoWindowAnchor = new GPoint(10, 2);
							idUsuario = 0;
							text = "<br><span class='info1'>Hay " + contador + " miis en esta zona</span>";
							text = text + "<br><span class='info2'><a href='javascript:miiZoom();'><img src='/images/icons/zoom_in.png' border='0' alt='Zoom' width='16' height='16' /></a> <a href='javascript:miiZoom();'>Zoom</a></span>";				
							
							
}
						//map.addOverlay(createMarker(point, text + "<br>lat:" + point.lat() + " lng:" + point.lng() + "<br>latR:" + point.latRadians() + " lngR:" + point.lngRadians(), icon));	
						map.addOverlay(createMarker(point, text , icon, idUsuario));
					}
		});

}

function createMarker(point, text, icon, id) 
{
	var text = text;
	var id = id;
	var marker = new GMarker(point, icon);
		GEvent.addListener(marker, "click", function() {
			miiInfo(this, id, text);
		});		

  return marker;
}

function miiInfo(marker, id, text)
{
if (id != 0)
			{	
				var url = "xml/placeMiiPerfil.xml.php?id=" + id;
				var request = GXmlHttp.create();
				request.open('GET', url, true);

				var urlGames = "xml/placeMiiPerfil.xml.php?id=" + id +"&type=games";
				var requestGames = GXmlHttp.create();
				
				requestGames.open('GET', urlGames, true);
				var txtDatos;
				
				request.onreadystatechange = function() 
				{
					if (request.readyState == 4) 
					{
						var txtDatos = request.responseText;
						requestGames.onreadystatechange = function() 
							{
								if (requestGames.readyState == 4) 
								{
									var txtDatosGames = requestGames.responseText;
									var tabs = new Array ( new GInfoWindowTab("Info",  txtDatos), new GInfoWindowTab("Juegos",  txtDatosGames));
									marker.openInfoWindowTabsHtml(tabs);
								}
							}
							requestGames.send(null);
					}
				}
				request.send(null);
				



			}
			else marker.openInfoWindowHtml(text);
}
//]]>