HOST_CORE = 'https://cc.planeta.turtella.ru'; $(document).ready(function() { $('body') .on('click', '[qId] [aId]', question.sendAnswer) .on('click', '#feedbacks .thanx_bnt', comment.like) .on('change', '.userPlaceVotes input[name=userVote]', vote.changed) .on('click', '.commentForm input[type=button]', comment.add) .on('focus', '#feedbacks .is-invalid', comment.clearValidation) .on('click', 'a[m]', weather.changeMonth) .on('click', 'a[action=loadMoreComments]', comment.load) if (typeof ymaps !== 'undefined') ymaps.ready(map.init); /*--- TYPEAHEAD - JUST SIMPLY STUPID EMULATION --- */ var links = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace('n'), queryTokenizer: Bloodhound.tokenizers.whitespace, remote: { url: '/ajax/typeahead', prepare: function (query, settings) { settings.type = "POST"; settings.contentType = "application/json; charset=UTF-8"; settings.data = query; return settings; }, } }); $('.typeahead').typeahead( { minLength: 3, highlight: true }, { display: function(d){return d.n}, source: links, limit: 7, templates: { suggestion: Handlebars.compile ( '
' ), footer: Handlebars.compile ( ' ' ), empty: Handlebars.compile ( ' ' ) } }).bind('typeahead:select', function(evt, item) { location.href=item.u; }) $('body').on('click', '.taLink', function() { var href = this.href; $('.typeahead').blur().val(''); location.href = href; return false; }); $('body') .on('click', '.searchSubmit', function() { $("form[action='/search']").submit(); }) .on('submit', "form[action='/search']", function(evt) { if ($(this).serialize().length<=2) { $(this).find('.typeahead').focus(); evt.preventDefault(); } else { var q=$(this).serialize().substring(2); $(this).find('.typeahead').blur().val(''); window.location='/search?q='+q; evt.preventDefault(); } }) /*--- EOD: TYPEAHEAD EMULATION --- */ }); weather = { changeMonth: function() { $('a[m]').removeClass('active'); $(this).addClass('active'); var m = $(this).attr('m'); var el = $(this).closest('.weather'); var lat = el.attr('lat'); var lng = el.attr('lng'); var z = el.attr('z'); $('.weatherMap').attr('src','https://pogoda.turtella.ru/i/planet/map/?m='+m+'#avg,m'+m+','+lat+','+lng+','+z); } } comment = { load: function() { var lastComment = $('[userComment]:last'); var lastCommentId = lastComment.attr('userComment'); var placeId = $('#feedbacks').attr('pId'); $.ajax({ url: '/ajax/loadUserComments', data: {placeId: placeId, lastCommentId: lastCommentId}, type: 'POST', async: true, success: function (obj) { $('#feedbacks .newCommentsWrp').replaceWith(obj); } }); }, add: function() { var valid = true; var pointsEl = $('.commentForm [name=points]'); var userNameEl = $('.commentForm [name=userName]'); var userLocationEl = $('.commentForm [name=userLocation]'); var commentTitleEl = $('.commentForm [name=commentTitle]'); var commentTextEl = $('.commentForm [name=commentText]'); var pointsVal = 1*pointsEl.val(); var userNameVal = userNameEl.val(); var userLocationVal = userLocationEl.val(); var commentTitleVal = commentTitleEl.val(); var commentTextVal = commentTextEl.val(); if (pointsVal<1 || pointsVal>5) { pointsEl.addClass('is-invalid'); valid = false; } if (userNameVal.length<3) { userNameEl.addClass('is-invalid'); valid = false; } if (commentTitleVal.length<3) { commentTitleEl.addClass('is-invalid'); valid = false; } if (commentTextVal.length<3) { commentTextEl.addClass('is-invalid'); valid = false; } // submit var placeId = $('#feedbacks').attr('pId'); if (valid) { $.ajax({ url: '/ajax/savePlaceComment', data: {placeId: placeId, points: pointsVal, userName: userNameVal, userLocation: userLocationVal, commentTitle: commentTitleVal, commentText: commentTextVal}, type: 'POST', async: true, success: function (obj) { $('#feedbacks .feedback_form_wrp').replaceWith(obj); } }); } }, clearValidation: function() { $(this).removeClass('is-invalid'); }, like: function() { var commentId = $(this).closest('[userComment]').attr('userComment'); $.ajax({ url: '/ajax/likeComment', data: {commentId: commentId}, type: 'POST', async: true, success: function (obj) { var o = JSON.parse(obj); $('[userComment='+o.commentId+'] .commentFooter').html('