/**
 * @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_overlay1.png', bounds, {percentOpacity:80}) ;	
   }
   overlayAdd();
	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=='towns'){
			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{
			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);
		});
	}
}
function clearMarkers(map, locations, type){
	var todelete = [];
	for (var i = 0; i < markers.length; 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 properties = getProperties();
	var towns = getTowns();
	var townsOn = false;
	myMap = SearchMapInitialize(startLat, startLng, startZoom);
	setMarkers(myMap, properties, 'properties');
	var propertiesOn = true;
	$("#mapLegend ul li a.towns").click(function(){
		if(!townsOn){
			setMarkers(myMap, towns, 'towns');
			townsOn = true;
		}else{
			clearMarkers(myMap, towns, 'towns');
			townsOn = false;
		}
	})
	$("#mapLegend ul li a.properties").click(function(){
		if(!propertiesOn){
			setMarkers(myMap, properties, 'properties');
			propertiesOn = true;
		}else{
			clearMarkers(myMap, properties, 'properties');
			propertiesOn = false;
		}
	})
	
});

