var markerTypes = new Object;
markerTypes.sights = "sights";
markerTypes.things = "things";
markerTypes.places = "places";

/*var mapInfo = new Object;
mapInfo.items = [];
mapInfo.areas = [];

var marker = new Object;
marker.latlng = new google.maps.LatLng(-23.5,134);
marker.type = markerTypes.sights; // "things", "places"
marker.title = "Uluru";
marker.content = "<h2>" +marker.title + "</h2><p>Not really here but meh works as a popup</p><p><a href='#' style='color: #d84f09;'>Read More</a></p>";
marker.address = "11 Leichhardt Terrace, Alice Springs";

mapInfo.items.push(marker);		

var marker2 = new Object;
marker2.latlng = new google.maps.LatLng(-23.5,134.060);
marker2.type = markerTypes.things; // "sights", "places"
marker2.title = "Test 2";
marker2.content = "<h2>" +marker2.title + "</h2><p>Not really here but meh works as a popup</p><p><a href='#' style='color: #d84f09;'>Read More</a></p>";
marker2.address = "65 Bath Street, Alice Springs";

mapInfo.items.push(marker2);

var marker3 = new Object;
marker3.latlng = new google.maps.LatLng(-23.5,134.120);
marker3.type = markerTypes.places; // "things", "places"
marker3.title = "Test 3";
marker3.content = "<h2>" +marker3.title + "</h2><p>Not really here but meh works as a popup</p><p><a href='#' style='color: #d84f09;'>Read More</a></p>";
marker3.address = "82 Barrett Drive, Alice Springs";

mapInfo.items.push(marker3);*/

var area = new Object;
area.center = new google.maps.LatLng(-23.70096499299549, 133.88089656829834); //Alice Springs
area.zoom = 14;

var area2 = new Object;
area2.center = new google.maps.LatLng(-23.75, 133.333333); //East MacDonnell Ranges
area2.zoom = 14;

var area3 = new Object;
area3.center = new google.maps.LatLng(-23.700807810161372, 132.49649047851562); //West MacDonnell Ranges
area3.zoom = 14;

var area4 = new Object;
area4.center = new google.maps.LatLng(-25.300683, 130.997233); //Uluru
area4.zoom = 14;




mapInfo.areas.push(area);
mapInfo.areas.push(area2);
mapInfo.areas.push(area3);
mapInfo.areas.push(area4);

function filterMarkers(type,isShown)
{
	for (var i = 0; i < mapInfo.items.length; i++) 
	{
		if (mapInfo.items[i].type == type)
		{
			mapInfo.items[i].marker.setVisible(isShown);	
			mapInfo.items[i].infoWindow.close(); //always hide on state change
		}
	}
}

function filterRegion(index) {
	mapInfo.map.setZoom(mapInfo.areas[index].zoom);
	mapInfo.map.setCenter(mapInfo.areas[index].center);
}

j(document).ready(function() {			   			   
	j('#mapFilterSights').click(function() {
		filterMarkers(markerTypes.sights,this.checked);
	});
	
	j('#mapFilterThings').click(function() {
		filterMarkers(markerTypes.things,this.checked);
	});
	
	j('#mapFilterPlaces').click(function() {
		filterMarkers(markerTypes.places,this.checked);
	});
	
	j('#mapFilterRegion').change(function() {
		filterRegion(this.value);
	});
	
	j('#mapFilterClick').click(function() {
		j('#mapFilterRegion').change();
		filterMarkers(markerTypes.sights,j('#mapFilterSights')[0].checked);
		filterMarkers(markerTypes.things,j('#mapFilterThings')[0].checked);
		filterMarkers(markerTypes.places,j('#mapFilterPlaces')[0].checked);
	});
	
	var latlng = new google.maps.LatLng(-23.70096499299549, 133.88089656829834); //alice springs is the center
	
	var myOptions = {
		zoom: 14,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.TERRAIN
	};
	
	var map = new google.maps.Map(document.getElementById("mapCanvas"), myOptions);
	
	mapInfo.map = map;
					
	google.maps.event.addListener(map, 'click', function(event) {
		//console.log(event.latLng);
	});

	for (var f = 0; f < mapInfo.items.length; f++)
	{
		//creating function to geocode address due to clojure function not understanding scope
		//geoCode(mapInfo.items[f].address,f,mapInfo.items.length);
		drawMarkers(f);
						
	}
});

function drawMarkers(index) {
	var markerImage = "/site_cms/assets/images/map-icon-" + mapInfo.items[index].type + ".jpg";
	var myLatlng = new google.maps.LatLng(mapInfo.items[index].lat,mapInfo.items[index].long);
	var marker = new google.maps.Marker({			
		map: mapInfo.map, 
		position: myLatlng,
		icon: markerImage,
		title: mapInfo.items[index].title
	});
	var infowindow = new google.maps.InfoWindow({
		content: mapInfo.items[index].details
	});
	
	google.maps.event.addListener(marker, 'click', function() {
		infowindow.open(mapInfo.map,marker);
	});		
	
	mapInfo.items[index].marker = marker;					
	mapInfo.items[index].infoWindow = infowindow;
	
	//dirty but works, thankyou, thankyou
	if(index == mapInfo.items.length - 1) {
		filterMarkers(markerTypes.sights,j('#mapFilterSights')[0].checked);
		filterMarkers(markerTypes.things,j('#mapFilterThings')[0].checked);
		filterMarkers(markerTypes.places,j('#mapFilterPlaces')[0].checked);	
	}		
}

/*function geoCode(address,index,length) {
	
	var geocoder = new google.maps.Geocoder();
	var position = "";
	
	//DIRTY
	if (geocoder) {
		geocoder.geocode( { 'address': address}, function(results, status) {																		   
			if (status == google.maps.GeocoderStatus.OK) {
				var markerImage = "/site_cms/assets/images/map-icon-" + mapInfo.items[index].type + ".jpg";
				var marker = new google.maps.Marker({
					map: mapInfo.map, 
					position: results[0].geometry.location,
					icon: markerImage,
					title: mapInfo.items[index].title
				});
				var infowindow = new google.maps.InfoWindow({
					content: mapInfo.items[index].details
				});
		
				google.maps.event.addListener(marker, 'click', function(event) {
					infowindow.open(mapInfo.map,marker);
				});		
				
				mapInfo.items[index].marker = marker;					
				mapInfo.items[index].infoWindow = infowindow;
				
				//dirty but works, thankyou, thankyou
				if(index == length - 1) {
					filterMarkers(markerTypes.sights,j('#mapFilterSights')[0].checked);
					filterMarkers(markerTypes.things,j('#mapFilterThings')[0].checked);
					filterMarkers(markerTypes.places,j('#mapFilterPlaces')[0].checked);	
				}
			} else {
				alert("Geocode was not successful for the following reason: " + status);
			}
		});
	}	
}*/
