var wishingSuggest = {
init: function(){
this.input_element = $('#wishing_suggest');
if(!this.input_element.length) return;
var t = this;
this.input_element.attr('autocomplete', 'off');
var params = this.input_element[0].onclick();
this.suggest_href = params.suggest;
this.suggest_element = $('
').insertAfter(this.input_element.parent());
t.over = false;
this.suggest_element.hide();
$(document).on("mouseover", ".vwWidget_suggest .suggest", function() { t.over = true; });
$(document).on("mouseout", ".vwWidget_suggest .suggest", function() { t.over = false; });
this.input_element.bind('keyup mouseup', function() {
var value = $(this).val();
if(value != $(this).attr('defaulttext') && value != '')
t.show();
else
t.hide();
});
this.input_element.blur(function(){
if(!t.over){
t.hide();
}
});
},
loadingState : function() {
this.suggest_element.html('');
this.suggest_element.show();
},
show: function(){
var value = this.input_element.val();
if(!value){
this.hide();
return;
}
if(value.length >= 3) {
t = this;
this.loadingState();
clearTimeout(this.loading);
this.loading = setTimeout(function(){
$.getJSON(
t.suggest_href + escape(value),
function(data){
t.make({data: data});
t.suggest_element.show();
}
).error(function(){
t.make({});
t.suggest_element.show();
});
}, 500);
} else {
this.hide();
}
},
hide: function(){
this.suggest_element.hide();
},
hideChecked: function(ids) {
this.input_element.removeAttr('disabled');
if(ids.length > 0) {
for(i in ids) {
var id = ids[i];
$('#suggestEl_' + id).removeClass('loader').addClass('click');
$('#suggestEl_' + id).slideUp(600, function(){
$('#suggestEl_' + id).remove();
});
}
}
this.input_element.focus();
},
checkElement: function(id) {
$('#suggestEl_' + id).addClass('loader');
this.input_element.attr('disabled','disabled');
selectElement(id);
},
uncheckElement: function(id) {
$('#suggestEl_' + id).removeClass('click').removeClass('loader');
this.input_element.removeAttr('disabled');
},
make: function(d){
var html = 'Извините, ничего не найдено
';
if(d.data && d.data.items && d.data.items.length > 0) {
html = '';
for(var i = 0; i < d.data.items.length; i ++ ) {
var item = d.data.items[i];
html += '
';
if(item.icon){
html += '
';
}
html += item.title;
if(item.extra){
html += '
' + item.extra + '';
}
html += '
';
}
html + '
';
}
this.suggest_element.html(html);
}
};
var loading = false;
function selectElement(element_id) {
if($('#click_layer').length == 0)
$('#vwWidgetElement_'+ element_id).append('');
if(loading) return false;
var data = {element_id: element_id};
$.ajax({
url: '/ajax/vwWidgetCheck',
type: 'POST',
data: $.param(data),
success: function(data, textStatus, jqXHR) {
if(data.saveResult.status == 'success') {
var country_add = 0, region_add = 0, city_add = 0;
if($('#smallMapImg').size() > 0){
var src = $('#smallMapImg').attr('src');
var tmp = src.split('?');
src = tmp[0];
$('#smallMapImg').attr('src', src +'?reload='+ Math.random());
}
var element_ids = [];
if (data.saveResult.destinationCountry) {
$.each(data.saveResult.destinationCountry, function () {
$('#countryTpl').tmpl(this).appendTo('#adviceAsList');
country_add++;
element_ids.push(this._id);
});
}
if (data.saveResult.destinationRegion) {
$.each(data.saveResult.destinationRegion, function () {
addCityRegion(this);
region_add++;
element_ids.push(this._id);
});
}
if (data.saveResult.destinationCity) {
$.each(data.saveResult.destinationCity, function () {
addCityRegion(this);
city_add++;
element_ids.push(this._id);
});
}
// hiding and element from suggest list
if(wishingSuggest != undefined) {
wishingSuggest.hideChecked(element_ids);
}
/*
if($("#continent_navigation #" + data.saveResult.element.continent.path).size() == 0) {
$('#continent_navigation').append($('#continentTpl').tmpl(data.saveResult.element.continent));
$('#continent_navigation').show();
}
*/
update_info(country_add, city_add, region_add);
setTimeout(function(){
gotopage(curr_page);
}, 500);
} else {
if(wishingSuggest != undefined) {
wishingSuggest.uncheckElement(element_id);
}
$('#vwWidgetElement_'+ element_id + ' #click_layer').remove();
}
}
});
return false;
}
function addCityRegion(data)
{
var html = $('#cityRegionTpl').tmpl(data);
var cities_founded = $('#adviceAsList .' + data.countryPath + ' .countryGroup_cities');
var add_poi_link = $('div.addPoiLink', cities_founded);
if (add_poi_link.length) {
html.insertBefore(add_poi_link);
} else {
cities_founded.append(html);
}
}
function addCityToMap(el){
adviceMap.addCity({
id: el.type + '_' + el.path,
lat: el.latitude,
lng: el.longitude,
link: el.link,
title: el.title,
countryPath: el.countryPath,
continent: el.continent.path,
showBubble: el.showBubble,
bubbleContent: el.bubbleContent
});
$('#all').click();
}
function addRegionToMap(el){
adviceMap.addRegion({
id: el.type + '_' + el.path,
lat: el.latitude,
lng: el.longitude,
link: el.link,
title: el.title,
countryPath: el.countryPath,
continent: el.continent.path,
showBubble: el.showBubble,
bubbleContent: el.bubbleContent
});
$('#all').click();
}
function update_info(country, city, region){
var country_res = '', city_res = '', region_res = '';
country_num += country;
city_num += city;
region_num += region;
if(country_num > 0)
country_res = country_num + ' ' + words(country_num, 'страна','страны','стран');
if(city_num > 0)
city_res = ((country_res != '') ? ', ' : '') + city_num + ' ' + words(city_num, 'город', 'города', 'городов');
if(region_num > 0)
region_res = ((city_res != '') ? ' и ' : ', ') + region_num + ' ' + words(region_num, 'регион', 'региона', 'регионов');
$('#userTopInfo em').html(country_res + city_res + region_res);
}
function gotopage(pageNumber) {
var data = {page: pageNumber};
$.ajax({
url: '/ajax/vwWidgetLoadElements',
type: 'POST',
data: $.param(data),
success: function(data, textStatus, jqXHR) {
if(data.vwElements.pager.nextPage) {
$('#nextPage').attr('onclick', '').unbind('click').bind('click', function() { gotopage(data.vwElements.pager.nextPage); });
curr_page = data.vwElements.pager.curr_page;
}
if(data.vwElements.elements){
$("#vwItemTpl").template("vwItem");
$("#vw_items").html($.tmpl("vwItem",data.vwElements.elements));
}
}
});
}
$(function(){
$('#circleOpenCloseWidget, #vwClose').click(function(){
if($('#vw_cnt').is(':hidden')) {
$('#vw_cnt').slideDown();
$('#vwClose').html('скрыть ▲');
if($.cookie(vw_cookie) !== undefined)
$.removeCookie(vw_cookie);
} else {
$('#vw_cnt').slideUp();
$('#vwClose').html('показать ▼');
if(!$.cookie(vw_cookie))
$.cookie(vw_cookie);
}
})
})