/* * Приложение */ // ------------ Система статусов приложения ------------------------------------ var statusReady = 0; // Обычный режим. Просмотр точек, навигация по карте и прочее. var statusHunting = 1; // Курсор-прицел. Поиск места для добавления точки. var statusReHunting = 2; // КУрсор прицел. Переопределение координат точки. var statusAdd = 3; // Открыто окно добавления точки - форма. var statusEdit = 4; // Открыто окно редактирования точки. В нём информация о существующей точке, включая ID. var statusSendingToServer = 5; // Отправлен запрос на сервер - ждём, не даём жать кнопку повторно, отвлекаем пользователя. var statusMovingInHistory = 6; var status = statusReady; var statusPrev = statusReady; /** * Устанавливает новое значение статуса. * @returns {undefined} */ function setStatus(value) { statusPrev = status; status = value; } /** * Меняет значение статуса на предыдущее. * @returns {undefined} */ function resetStatus() { tmp = status; status = statusPrev; statusPrev = tmp; } // -------------------------------- Libs --------------------------------------- /** * Возвращает GET параметр * @param string name * @returns string */ function getURLParameter(name) { return decodeURI((RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, null])[1]); } // ----------------- Работа с правым блоком (BOX) ------------------------------ function openBox(type, keepOpen) { newTab = $('#box'+type).css('display') == 'none'; keepOpen = keepOpen == true; if (!newTab && !keepOpen) { return closeBox(); } $('div','#control').removeClass('active'); $('#box').children('div').css('display', 'none'); $('.boxButton'+type).addClass('active'); $('#box'+type).css('display', 'block'); $('body').addClass('openBox'); } function closeBox() { $('body').removeClass('openBox'); $('div','#control').removeClass('active'); $('#box').children('div').css('display', 'none'); return true; } function showImage(id) { point = pointsSources[id]; $('#imageModalLabel').text(point.name); if (typeof(point.images) == 'object') { if( typeof($('.fotorama').data('fotorama')) != 'undefined' ) { $('.fotorama').data('fotorama').destroy(); } $('#imageModalImg').hide(); $('.fotorama').show(); photos = []; point.images.forEach(function(entry) { photos.push({img: '/photos/middle/'+entry, thumb: '/photos/small/'+entry}); }); $('.fotorama').fotorama({data: photos}); } else { $('#imageModalImg').show(); $('.fotorama').hide(); $('#imageModalImg').attr('src', point.img); } $('#imageModal').modal('show'); } function addRemoveFavorite(id) { if (user != '0') { $.ajax({ url: "/json/addRemoveFavorites/id/" + id, success: function(data) { if (data){ // Тут переключалку классов звёздочки $('#myFavoritesButton').toggleClass('glyphicon glyphicon-star-empty').toggleClass('glyphicon glyphicon-star'); } }}); } else { $('#loginModal').modal('show'); } } window.addEventListener('popstate', function(e) { if (typeof(e.state) == 'object' && e.state != null) { setStatus(statusMovingInHistory); if (e.state.hasOwnProperty('pointId')) { points[e.state.pointId].openPopup(); } else if (e.state.hasOwnProperty('zoom')) { lat = e.state.lat; lng = e.state.lng; zoom = e.state.zoom; myMap.setView([lat, lng], zoom); } else if (e.state.hasOwnProperty('route')) { loadRouteJSON(e.state.route); } } }, false);