var showMeLastTime = 0;
var showMeTimerOn = false;
var intervalId = null;

/**
 * Пытается более точно определить координаты пользователя на карте и, при необходимости, обновляет положение точки "im"
 * @returns {undefined}
 */
function showMeOnTheMap() {
	if (navigator.geolocation) {
		navigator.geolocation.getCurrentPosition(
				geolocationSuccess,
				geolocationFailure,
				{
					enableHighAccuracy: true,
					timeout: 20000,
					maximumAge: 60000
				}
		);
		$('#showMeOnTheMap').addClass('inProgress');
	} else {
		alert('Error');
	}
}

function geolocationSuccess(pos) {
	$('#showMeOnTheMap').removeClass('inProgress');

	if (typeof (points.circle) != "undefined") {
		myMap.removeLayer(points.circle);
	}

	coords = [pos.coords.latitude, pos.coords.longitude];

	points.circle = L.circle(coords, pos.coords.accuracy);
	points.circle.addTo(myMap);

	setTimeout(function () {
		if (typeof (points.circle) != "undefined") {
			myMap.removeLayer(points.circle);
		}
	}, 3000);

	$.cookie('userLat', pos.coords.latitude);
	$.cookie('userLng', pos.coords.longitude);
	myMap.removeLayer(points.im);
	points.im.setLatLng(coords).addTo(myMap);
	myMap.setView(coords, myMap.getZoom());
}

function geolocationFailure(positionError) {
	$('#showMeOnTheMap').removeClass('inProgress');

	if (typeof (points.circle) != "undefined") {
		myMap.removeLayer(points.circle);
	}

	if (positionError.code == 1) {
		text = "К сожалению Вы решили не разрешили предоставлять данные о своем местоположении. Проверьте настройки ГЕО-приватности для браузера и сайта.";
	} else if (positionError.code == 2) {
		text = "Не удалось связаться со службой определения местоположения. Возможно проблемы с сетью.";
	} else if (positionError.code == 3) {
		text = "He удалось определить местоположение в течение длительного времени. Попробуйте ещё раз.";

	} else {
		text = 'Ошибка при определении координат. #' + positionError.code;
	}

	alert(text);
}
