/**
 * @author al
 */
function SearchMapInitialize(lat, lng, zoom){
	var myLatLng = new google.maps.LatLng(lat, lng);
	var myOptions = {
		zoom: zoom,
		center: myLatLng,
		mapTypeId: google.maps.MapTypeId.TERRAIN
	}
	var map = new google.maps.Map(document.getElementById('large_map'), myOptions);
	
	function overlayAdd(){
    	var sw = new google.maps.LatLng(56.70, -4.53) ;
    	var ne = new google.maps.LatLng(57.46, -2.66) ;
 		var bounds = new google.maps.LatLngBounds(sw, ne) ;
    	myOverlay = new ProjectedOverlay(map,'/images/cnp_overlay2.png', bounds, {percentOpacity:50}) ;	
   }
   overlayAdd();
   google.maps.event.addListener(map, 'tilesloaded', function() {
    	$("#map-loading").hide();
  	});
   return map;
}
var startLat = 57.08;
var startLng =  -3.595;
var startZoom = 9;
var resetMap = function(map){
	var LatLng = new google.maps.LatLng(startLat, startLng);
	map.setZoom(startZoom);
	map.setCenter(LatLng);
}
var markers = [];
function setMarkers(map, locations, type){
	var marker =[];
	for (var i = 0; i < locations.length; i++) {
		var property = locations[i];
		var latlng = property[1].split(",")
		var myLatLng = new google.maps.LatLng(latlng[0], latlng[1]);
		if(type==0){
			var image = new google.maps.MarkerImage(property[5], new google.maps.Size(20, 30), new google.maps.Point(0, 0), new google.maps.Point(10, 30));
			var shadow = new google.maps.MarkerImage(property[6], new google.maps.Size(30, 20), new google.maps.Point(0, 0), new google.maps.Point(0, 20));
		}else if(type==3){
			var image = new google.maps.MarkerImage(property[5], new google.maps.Size(18, 30), new google.maps.Point(0, 0), new google.maps.Point(9, 30));
			var shadow = new google.maps.MarkerImage(property[6], new google.maps.Size(30, 20), new google.maps.Point(0, 0), new google.maps.Point(0, 20));
		}else if(type==1){
			var image = new google.maps.MarkerImage(property[5], new google.maps.Size(18, 30), new google.maps.Point(0, 0), new google.maps.Point(9, 30));
			var shadow = new google.maps.MarkerImage(property[6], new google.maps.Size(30, 20), new google.maps.Point(0, 0), new google.maps.Point(0, 20));
		}else if(type==2){
			var image = new google.maps.MarkerImage(property[5], new google.maps.Size(18, 30), new google.maps.Point(0, 0), new google.maps.Point(9, 30));
			var shadow = new google.maps.MarkerImage(property[6], new google.maps.Size(30, 20), new google.maps.Point(0, 0), new google.maps.Point(0, 20));
		}else if(type==4){
			var image = new google.maps.MarkerImage(property[5], new google.maps.Size(18, 30), new google.maps.Point(0, 0), new google.maps.Point(9, 30));
			var shadow = new google.maps.MarkerImage(property[6], new google.maps.Size(30, 20), new google.maps.Point(0, 0), new google.maps.Point(0, 20));
		}else if(type==5){
			var image = new google.maps.MarkerImage(property[5], new google.maps.Size(18, 30), new google.maps.Point(0, 0), new google.maps.Point(9, 30));
			var shadow = new google.maps.MarkerImage(property[6], new google.maps.Size(30, 20), new google.maps.Point(0, 0), new google.maps.Point(0, 20));
		}
		
		
		var shape = {
			coord: [1, 1, 1, 20, 18, 20, 18, 1],
			type: 'poly'
		};
		
		marker[i] = new google.maps.Marker({
			position: myLatLng,
			map: map,
			shadow: shadow,
			icon: image,
			shape: shape,
			title: property[0],
			zIndex: parseInt(property[2]),
			content: property[3] + '<br />' + property[4],//custom marker property to store content for Infowindow
			type: type //custom marker property
		});
		markers.push(marker[i])
		google.maps.event.addListener(marker[i], 'dblclick', function() {
			infowindow.close();
			var center = new google.maps.LatLng(this.position.lat() , this.position.lng());
			var zoom = this.map.getZoom() + 2;
			this.map.setCenter(center);
			this.map.setZoom(zoom);

		});
		var contentString = '<div id="content-win">' + property[4] +'</div>';
		var infowindow = new google.maps.InfoWindow({
			maxWidth:200
		});
		google.maps.event.addListener(marker[i], 'click', function(e) {
			infowindow.setContent(this.content);
			 infowindow.open(map, this);
		});
	}
	$("#map-loading").hide();
}
function clearMarkers(map, type){
	var todelete = [];
	for (var i = 0; i < markers.length; i++) {
		//type no longer used (see code below for removing specific marker group)
		markers[i].setMap(null);
		todelete.push(i);
		/*if(markers[i].type == type){
			markers[i].setMap(null);
			todelete.push(i);
		}*/
	}
	markers.remove(todelete); //uses my custom Array.remove() function - see app.js
}
 
jQuery(document).ready(function($){
	var locations =[]
	//locations[5] = getLocations(5);
	//locations[4] = getLocations(4);
	//locations[3] = getLocations(3);
	//locations[2] = getLocations(2);
	//locations[1] = getLocations(1);
	//locations[0] = getTowns();
	
	$("#map-loading").show();
	myMap = SearchMapInitialize(startLat, startLng, startZoom);
	if(typeof(currType)!='undefined' &&  currType!=null){
		
		if(!locations[currType]){
			locations[currType] =  getLocations(currType)
		}
		setMarkers(myMap,locations[currType], currType);
	}
	$("#mapLegend ul li a").click(function(){
		$("#map-loading").show();
		var i = $(this).attr('rel');
		
		if(!locations[i]){
			if(i==0){
				locations[i] =  getTowns()
			}else{
				locations[i] =  getLocations(i)
			}
		}
		clearMarkers(myMap, null);
		setMarkers(myMap, locations[i], i);
	})
});

