var Map = {
	_map: null,
	_latLngBounds: null,
	_infoWindow: null,

	init: function()
	{
		var canvas = document.getElementById('map-canvas');
		var myOptions = {
			zoom: 13,
			center: new google.maps.LatLng(45.374893, -84.958404),
			mapTypeControl: true,
			mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
			navigationControl: true,
			navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
			mapTypeId: google.maps.MapTypeId.ROADMAP
		}

		Map._map = new google.maps.Map(canvas, myOptions);
		Map._latLngBounds = new google.maps.LatLngBounds();
		Map._infoWindow = new google.maps.InfoWindow;

		$.get("member-db-google-map/"+location.search, Map._loadData, 'xml');
	},

	_loadData: function(data)
	{
		var markers = data.documentElement.getElementsByTagName("marker");
		for (i = 0; i < markers.length; i++) {
			var name = markers[i].getAttribute('member_name');
			var street = markers[i].getAttribute('street');
			var city = markers[i].getAttribute('city_name');
			var state = markers[i].getAttribute('state_abb');
			var zip = markers[i].getAttribute('zip');
			var lat = markers[i].getAttribute('lat');
			var lng = markers[i].getAttribute('lng');
			var phone = markers[i].getAttribute('phone');
			var clickThru = markers[i].getAttribute('url');
			var website = markers[i].getAttribute('website');
			var logoPath = markers[i].getAttribute('logoPath');
			var logo = markers[i].getAttribute('logo');
			var logoWidth = markers[i].getAttribute('logoWidth');
			var logoHeight = markers[i].getAttribute('logoHeight');
			var addToPlannerUrl = markers[i].getAttribute('addToPlannerUrl');
			var viewPlannerUrl = markers[i].getAttribute('viewPlannerUrl');
			var plannerText = markers[i].getAttribute('plannerText');
			var moreInfoUrl = markers[i].getAttribute('moreInfoUrl');

			var point = new google.maps.LatLng(
				parseFloat(lat),
				parseFloat(lng)
			);
			Map._latLngBounds.extend(point);

			var html = '<table><tbody><tr>';
			html += '<td><b>' + name + '</b><br>' +
						street + '<br>' + city + ', ' + state + ' ' + zip;

			if (phone != '') {
				html += '<br>' + phone;
			}
			if (website != '') {
				html += '<br>' + '<a target="_blank" href="'+clickThru+'">'+website+'</a>';
			}

			html += '</td>';

/*
Commented out b/c the image server will take to long
to generate the image dimensions for many members.

this causes the page load to slow down to much
if you uncomment this be sure to uncomment the command
to get the image dimensions in /member-db-google-map/
			if (logo != '') {
				var img = '<img src="'+logoPath+logo+'" width="'+logoWidth+'" height="'+logoHeight+'">';
				html += '<td>'+img+'</td>';
			}
*/
			html += '</tr></tbody></table>';

			html += '<span class="infoWindow moreInfo"><a href="'+moreInfoUrl+'">More Info</a></span>';
			html += '<span class="infoWindow divider"> - </span>';
/*
Commented out from task 18499 on 6.9.10 from ove - remove "Add to Trip Planner" link
			if (addToPlannerUrl != '') {
				html += '<span class="infoWindow addToPlanner">' +
							'<a href="'+addToPlannerUrl+'">'+plannerText+'</a>' +
							'<a style="display: none;" href="'+viewPlannerUrl+'">View Planner</a>' +
						'</span>';
				html += '<span class="infoWindow divider"> - </span>';
			}
*/

			html += '<span class="infoWindow directions"><a target="_blank" href="http://maps.google.com/maps?daddr='+name+'@'+lat+','+lng+'">Get Directions</a></span>';
			var marker = new google.maps.Marker({
				map: Map._map,
				position: point
			});
			Map._bindInfoWindow(marker, Map._map, Map._infoWindow, html);
		}

		Map._map.setCenter(
			Map._latLngBounds.getCenter()
		);
		Map._map.fitBounds(Map._latLngBounds);
	},

	_bindInfoWindow: function(marker, map, infoWindow, html)
	{
		google.maps.event.addListener(marker, 'click', function() {
			infoWindow.setContent(html);
			infoWindow.open(map, marker);

			$('.addToPlanner a:first').click(function(event) {
				if ($(this).text() == 'Add To Planner') {
					event.preventDefault();

					$.get($(this).attr('href'), function(data, textstatus) {
						$(".trip-list-count").html(data);
						$('.addToPlanner a').toggle();
					});
					return false;
				}
			});
		});
	}
};

$(document).ready(Map.init);

