﻿var map = null;
var markers = [];
var infoWindow;

/* Инициализация объектов для работы с Google Maps */
function initialize()
{
	if( $( '#mapCanvas' ).length == 1 )
	{
		var latlng = new google.maps.LatLng( 39.368279, -93.42773 );
		var myOptions = {
			zoom: 3,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		map = new google.maps.Map( $( '#mapCanvas' )[0], myOptions );
		infoWindow = new google.maps.InfoWindow();
		showFoundLocation();
	}
}


function showFoundLocation()
{
	if( map && $( 'ul#boats' ).length > 0 )
	{
		// крайние координаты, изначально максимально далёкие, например север - на южном полюсе, для последующего позиционирования карты
		var south = 90, north = -90, east = -180, west = 180;

		var boats = $( 'ul#boats li' );
		// получение информации о лодках из списка с их описанием
		for ( var i = 0; i < boats.length; i++ )
		{
			var lat = Number( $( boats[i].childNodes[1] ).text() );
			var lng = Number( $( boats[i].childNodes[2] ).text() );
			description = $( boats[i].childNodes[0] ).html();

			createMarker( new google.maps.LatLng( lat, lng ), description );

			// сдвиг крайних координат, например, если текущая точка севернее, чем запомненная, запоминаем её
			if( north < lat ) north = lat;
			if( south > lat ) south = lat;
			if( east < lng ) east = lng;
			if( west > lng ) west = lng;
		}

		// позиционирование карты, чтоб все точки были видны
		// эмпирическое увеличение координат, т.к. иногда не всё влезает
		//if( ( north += 5 ) > 89 ) north = 89;
		//if( ( south -= 5 ) < -89 ) south = -89;
		//if( ( east += 5 ) > 179 ) east = 179;
		//if( ( west -= 5 ) < -179 ) west = -179;
		// чтобы карта не оказалась в очень мелком масштабе, делаем эмпирические проверки
		// ( просто проверить и увеличить масштаб после fitBounds не получается, т.к. он уменьшается не сразу )
		if( north - south > 70 )
		{
			north = 55;
			south = 15;
		}
		if( east - west > 140 )
		{
			east = 25;
			west = -115
		}
		var sw = new google.maps.LatLng( south, west );
		var ne = new google.maps.LatLng( north, east );
		var bounds = new google.maps.LatLngBounds( sw, ne );
		map.fitBounds( bounds );
	}
}


function createMarker( latlng, content )
{
	var marker = new google.maps.Marker({
		map: map,
		position: latlng
	});
	google.maps.event.addListener(marker, 'mouseover', function() {
		//$.get( 'google-map-statistics.aspx?type=view' );
		infoWindow.setContent(content);
		infoWindow.open(map, marker);
	});
	markers.push(marker);
}

