﻿var map; // an instance of GMap2
var markerArray = []; // an array of objects with: latitude, longitude, description
var latlng = []; //an array of instances of GLatLng

function initialize() {

	if (GBrowserIsCompatible()) {

		map = new GMap2(document.getElementById("googlemap"));
		map.setCenter(new GLatLng(49.458744, -2.534395), 13);
		map.setUIToDefault();
		map.disableScrollWheelZoom();
		createIcons();

		initializeMarkers();

	}
}

function initializeMarkers() {
		
	    map.clearOverlays();
		latlng = [];
		map.setCenter(new GLatLng(49.458744, -2.534395), 13);
		
	    createArray();

		for (id in markerArray) {
			createMarker(markerArray[id].latitude, markerArray[id].longitude, markerArray[id].description, markerArray[id].colour)
		}

		centerZoomMarkers() 
		
}

function centerZoomMarkers() {

		// map: an instance of GMap2
		// latlng: an array of instances of GLatLng
		var latlngbounds = new GLatLngBounds();
		for (var i = 0; i < latlng.length; i++) {
			latlngbounds.extend(latlng[i]);
		}
		
		var southWest = latlngbounds.getSouthWest();
		var northEast = latlngbounds.getNorthEast();
		
		var lngSpan = (northEast.lng() - southWest.lng());
		var latSpan = (northEast.lat() - southWest.lat());
		
		
		var padding = (lngSpan + latSpan)/8 +0.001;
		/*var expandLng = 0;
		
		if (lngSpan < latSpan*940/470){
			expandLng = (latSpan*940/470 - lngSpan)/2;
		}*/
		
		southWest = new GLatLng(southWest.lat()-padding, southWest.lng()-padding);
		northEast = new GLatLng(northEast.lat()+padding, northEast.lng()+padding);
		
		latlngbounds.extend(southWest);
		latlngbounds.extend(northEast);
		
		
		map.setZoom(map.getBoundsZoomLevel(latlngbounds)) ;
		map.panTo(latlngbounds.getCenter());
		//map.setCenter(latlngbounds.getCenter(), map.getBoundsZoomLevel(latlngbounds));
		
		//alert("NEA"+latlngbounds.getNorthEast().lat() +" NEN"+ latlngbounds.getNorthEast().lng() +" SWA"+ latlngbounds.getSouthWest().lat() +" SWN"+ latlngbounds.getSouthWest().lng())
		
}

function createRandomArray() {
	// makes 10 sites at random locations
	markerArray = [];
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	var lngSpan = (northEast.lng() - southWest.lng()) / 2;
	var latSpan = (northEast.lat() - southWest.lat()) / 2;

	for (var i = 0; i < 100; i++) {
		markerArray.push(
				{
					'latitude': southWest.lat() + latSpan * Math.random(),
					'longitude': southWest.lng() + lngSpan * Math.random(),
					'description': "marker " + i,
					'colour': 'white'
				}
			);
	}
}

function createIcons() {
    whiteIcon1 = new GIcon(G_DEFAULT_ICON);
    whiteIcon1.image = "/Content/images/gmaps/mapmarker-white-1.png";
    whiteIcon1.iconSize = new GSize(24, 29);
    whiteIcon1.iconAnchor = new GPoint(12, 29);
    whiteIcon1.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon1.shadowSize = new GSize(43, 29);

    whiteIcon2 = new GIcon(G_DEFAULT_ICON);
    whiteIcon2.image = "/Content/images/gmaps/mapmarker-white-2.png";
    whiteIcon2.iconSize = new GSize(24, 29);
    whiteIcon2.iconAnchor = new GPoint(12, 29);
    whiteIcon2.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon2.shadowSize = new GSize(43, 29);

    whiteIcon3 = new GIcon(G_DEFAULT_ICON);
    whiteIcon3.image = "/Content/images/gmaps/mapmarker-white-3.png";
    whiteIcon3.iconSize = new GSize(24, 29);
    whiteIcon3.iconAnchor = new GPoint(12, 29);
    whiteIcon3.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon3.shadowSize = new GSize(43, 29);

    whiteIcon4 = new GIcon(G_DEFAULT_ICON);
    whiteIcon4.image = "/Content/images/gmaps/mapmarker-white-4.png";
    whiteIcon4.iconSize = new GSize(24, 29);
    whiteIcon4.iconAnchor = new GPoint(12, 29);
    whiteIcon4.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon4.shadowSize = new GSize(43, 29);

    whiteIcon5 = new GIcon(G_DEFAULT_ICON);
    whiteIcon5.image = "/Content/images/gmaps/mapmarker-white-5.png";
    whiteIcon5.iconSize = new GSize(24, 29);
    whiteIcon5.iconAnchor = new GPoint(12, 29);
    whiteIcon5.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon5.shadowSize = new GSize(43, 29);

    whiteIcon6 = new GIcon(G_DEFAULT_ICON);
    whiteIcon6.image = "/Content/images/gmaps/mapmarker-white-6.png";
    whiteIcon6.iconSize = new GSize(24, 29);
    whiteIcon6.iconAnchor = new GPoint(12, 29);
    whiteIcon6.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon6.shadowSize = new GSize(43, 29);

    whiteIcon7 = new GIcon(G_DEFAULT_ICON);
    whiteIcon7.image = "/Content/images/gmaps/mapmarker-white-7.png";
    whiteIcon7.iconSize = new GSize(24, 29);
    whiteIcon7.iconAnchor = new GPoint(12, 29);
    whiteIcon7.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon7.shadowSize = new GSize(43, 29);

    whiteIcon8 = new GIcon(G_DEFAULT_ICON);
    whiteIcon8.image = "/Content/images/gmaps/mapmarker-white-8.png";
    whiteIcon8.iconSize = new GSize(24, 29);
    whiteIcon8.iconAnchor = new GPoint(12, 29);
    whiteIcon8.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon8.shadowSize = new GSize(43, 29);

    whiteIcon9 = new GIcon(G_DEFAULT_ICON);
    whiteIcon9.image = "/Content/images/gmaps/mapmarker-white-9.png";
    whiteIcon9.iconSize = new GSize(24, 29);
    whiteIcon9.iconAnchor = new GPoint(12, 29);
    whiteIcon9.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon9.shadowSize = new GSize(43, 29);

    whiteIcon10 = new GIcon(G_DEFAULT_ICON);
    whiteIcon10.image = "/Content/images/gmaps/mapmarker-white-10.png";
    whiteIcon10.iconSize = new GSize(24, 29);
    whiteIcon10.iconAnchor = new GPoint(12, 29);
    whiteIcon10.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    whiteIcon10.shadowSize = new GSize(43, 29);

    yellowIcon1 = new GIcon(G_DEFAULT_ICON);
    yellowIcon1.image = "/Content/images/gmaps/mapmarker-yellow-1.png";
    yellowIcon1.iconSize = new GSize(24, 29);
    yellowIcon1.iconAnchor = new GPoint(12, 29);
    yellowIcon1.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon1.shadowSize = new GSize(43, 29);

    yellowIcon2 = new GIcon(G_DEFAULT_ICON);
    yellowIcon2.image = "/Content/images/gmaps/mapmarker-yellow-2.png";
    yellowIcon2.iconSize = new GSize(24, 29);
    yellowIcon2.iconAnchor = new GPoint(12, 29);
    yellowIcon2.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon2.shadowSize = new GSize(43, 29);

    yellowIcon3 = new GIcon(G_DEFAULT_ICON);
    yellowIcon3.image = "/Content/images/gmaps/mapmarker-yellow-3.png";
    yellowIcon3.iconSize = new GSize(24, 29);
    yellowIcon3.iconAnchor = new GPoint(12, 29);
    yellowIcon3.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon3.shadowSize = new GSize(43, 29);

    yellowIcon4 = new GIcon(G_DEFAULT_ICON);
    yellowIcon4.image = "/Content/images/gmaps/mapmarker-yellow-4.png";
    yellowIcon4.iconSize = new GSize(24, 29);
    yellowIcon4.iconAnchor = new GPoint(12, 29);
    yellowIcon4.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon4.shadowSize = new GSize(43, 29);

    yellowIcon5 = new GIcon(G_DEFAULT_ICON);
    yellowIcon5.image = "/Content/images/gmaps/mapmarker-yellow-5.png";
    yellowIcon5.iconSize = new GSize(24, 29);
    yellowIcon5.iconAnchor = new GPoint(12, 29);
    yellowIcon5.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon5.shadowSize = new GSize(43, 29);

    yellowIcon6 = new GIcon(G_DEFAULT_ICON);
    yellowIcon6.image = "/Content/images/gmaps/mapmarker-yellow-6.png";
    yellowIcon6.iconSize = new GSize(24, 29);
    yellowIcon6.iconAnchor = new GPoint(12, 29);
    yellowIcon6.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon6.shadowSize = new GSize(43, 29);

    yellowIcon7 = new GIcon(G_DEFAULT_ICON);
    yellowIcon7.image = "/Content/images/gmaps/mapmarker-yellow-7.png";
    yellowIcon7.iconSize = new GSize(24, 29);
    yellowIcon7.iconAnchor = new GPoint(12, 29);
    yellowIcon7.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon7.shadowSize = new GSize(43, 29);

    yellowIcon8 = new GIcon(G_DEFAULT_ICON);
    yellowIcon8.image = "/Content/images/gmaps/mapmarker-yellow-8.png";
    yellowIcon8.iconSize = new GSize(24, 29);
    yellowIcon8.iconAnchor = new GPoint(12, 29);
    yellowIcon8.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon8.shadowSize = new GSize(43, 29);

    yellowIcon9 = new GIcon(G_DEFAULT_ICON);
    yellowIcon9.image = "/Content/images/gmaps/mapmarker-yellow-9.png";
    yellowIcon9.iconSize = new GSize(24, 29);
    yellowIcon9.iconAnchor = new GPoint(12, 29);
    yellowIcon9.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon9.shadowSize = new GSize(43, 29);

    yellowIcon10 = new GIcon(G_DEFAULT_ICON);
    yellowIcon10.image = "/Content/images/gmaps/mapmarker-yellow-10.png";
    yellowIcon10.iconSize = new GSize(24, 29);
    yellowIcon10.iconAnchor = new GPoint(12, 29);
    yellowIcon10.shadow = "/Content/images/gmaps/mapmarker-shadow.png";
    yellowIcon10.shadowSize = new GSize(43, 29);
}

function createMarker(latitude, longitude, description, colour) {

	var center = new GLatLng(latitude, longitude);
	latlng.push(center);

	var icon;

	switch (colour) {
	    case "white1":
	        icon = whiteIcon1;
	        break;
	    case "white2":
	        icon = whiteIcon2;
	        break;
	    case "white3":
	        icon = whiteIcon3;
	        break;
	    case "white4":
	        icon = whiteIcon4;
	        break;
	    case "white5":
	        icon = whiteIcon5;
	        break;
	    case "white6":
	        icon = whiteIcon6;
	        break;
	    case "white7":
	        icon = whiteIcon7;
	        break;
	    case "white8":
	        icon = whiteIcon8;
	        break;
	    case "white9":
	        icon = whiteIcon9;
	        break;
	    case "white10":
	        icon = whiteIcon10;
	        break;
	    case "yellow1":
	        icon = yellowIcon1;
	        break;
	    case "yellow2":
	        icon = yellowIcon2;
	        break;
	    case "yellow3":
	        icon = yellowIcon3;
	        break;
	    case "yellow4":
	        icon = yellowIcon4;
	        break;
	    case "yellow5":
	        icon = yellowIcon5;
	        break;
	    case "yellow6":
	        icon = yellowIcon6;
	        break;
	    case "yellow7":
	        icon = yellowIcon7;
	        break;
	    case "yellow8":
	        icon = yellowIcon8;
	        break;
	    case "yellow9":
	        icon = yellowIcon9;
	        break;
	    case "yellow10":
	        icon = yellowIcon10;
	        break;
	}
	
	var marker = new GMarker(center, { icon: icon });
	//map.panTo(center);
	marker.infoOpen = 0;

	GEvent.addListener(marker, "click", function() {
		if (marker.infoOpen == 0) {
			marker.openInfoWindowHtml(description);
			marker.infoOpen = 1;
		} else {
			marker.closeInfoWindow();
			marker.infoOpen = 0;
		}
	});
	map.addOverlay(marker);
}
