var map;
var gmarkers = new Array();



var baseIcon = new GIcon();
baseIcon.shadow = "/icons12_png/shadow.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);



function mapInit() {
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.enableDoubleClickZoom();
	map.enableContinuousZoom();

	GEvent.addListener(map, "moveend", function() {
		var b = map.getBounds();
		var url = "/xml/stations.php?compact=1" 
			+ "&min_lat="  + b.getSouthWest().lat()
			+ "&min_long=" + b.getSouthWest().lng()
			+ "&max_lat="  + b.getNorthEast().lat()
			+ "&max_long=" + b.getNorthEast().lng();
		// alert(url);
		render(url);
	});
}



function stationMarker(point, index, company, rank) {
	// Create a lettered icon for this point using our icon class
	var icon = new GIcon(baseIcon);
	icon.image = "/icons12_png/marker_" + company + ".png";
	if (rank == 1)
		icon.image = "/icons12_png/cheap/marker_" + company + ".png";
	var marker = new GMarker(point, icon);
	marker.id = index;
	gmarkers[index] = marker;

	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml("<a hr"
			+ "ef=\"/distributore.php?&di_id="
			+ index
			+ "\">Visualizza scheda</a>"
			+ "<br>"
			+ "<a hr"
			+ "ef=\"/add_report.php?&di_id="
			+ index
			+ "\">Aggiorna prezzi</a>"
		);
	});
	return marker;
}


function render($url) {
GDownloadUrl($url, function(data) {
	var xml = GXml.parse(data);
	var stations = xml.documentElement.getElementsByTagName("station");
	var tmp = gmarkers.concat();
	for (var i = 0; i < stations.length; i++) {
		var st = stations[i];
		if (gmarkers[st.getAttribute("id")]) {
			tmp[st.getAttribute("id")] = null;
			continue;
		}
		var point = new GLatLng(parseFloat(st.getAttribute("lat")),
				parseFloat(st.getAttribute("lng")));
		
		map.addOverlay(new stationMarker(point, st.getAttribute("id"), st.getAttribute("co"), st.getAttribute("rank")));
	}
	while (tmp.length > 0) {
		var g = tmp.pop();
		if (g) {
			map.removeOverlay(g);
			gmarkers[g.id] = null;
		}
	}
});
}













function skipIt() {

function MyControls() { }
MyControls.prototype = new GControl();

MyControls.prototype.initialize = function(map) {
	var container = document.createElement("div");

	var loadDiv = document.createElement("div");
	this.setButtonStyle_(loadDiv);
	container.appendChild(loadDiv);
	loadDiv.appendChild(document.createTextNode("Carica..."));
	GEvent.addDomListener(loadDiv, "click", function() {
		var b = map.getBounds();
		var url = "/xml/stations.php?compact=1" 
			+ "&min_lat="  + b.getSouthWest().lat()
			+ "&min_long=" + b.getSouthWest().lng()
			+ "&max_lat="  + b.getNorthEast().lat()
			+ "&max_long=" + b.getNorthEast().lng();
		// alert(url);
		render(url);
	});


	// map.getContainer().appendChild(container);
	return container;
}



// By default, the control will appear in the top left corner of the
// map with 7 pixels of padding.
MyControls.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(7, 14));
}



// Sets the proper CSS for the given button element.
MyControls.prototype.setButtonStyle_ = function(button) {
	button.style.color = "#0000cc";
	button.style.backgroundColor = "white";
	button.style.font = "small Arial";
	button.style.border = "1px solid black";
	button.style.padding = "2px";
	button.style.marginBottom = "3px";
	button.style.textAlign = "center";
	button.style.width = "6em";
	button.style.cursor = "pointer";
}


}






