function map() { }

map.preview = function(row) {
	map.ya = null;
	
	map.create(30.3159, 59.9389, 11);
	
	for (hotel_key in row) {
		map.ya.placemark_add(row[hotel_key].name, row[hotel_key].name, row[hotel_key].lat, row[hotel_key].lng, {style: map.style('hotel')});
	}
}

map.instance = function(row) {
	map.row = row;
	map.overlay_row = new Array;
	map.ya = null;

	var html = '<div class="overview-map__content-wrapper">';
		html += '<div class="overview-map__top">';
		html += '<div class="overview-map__top-reducer">';
		html += '<div class="hotels-title">';
		html += '<div class="hotels-title__l">';
		html += '<h1>' + map.row.hotels.name + '</h1>';
		html += '</div>';
		html += '<div class="hotels-title__r">';
		html += '<i class="stars"><em style="width:' + (map.row.hotels.stars * 2) + '0%"></em></i>';
		html += '</div>';
		html += '<div class="g-clear"></div>';
		html += '</div>';

	if (map.row.address != null) {
		html += '<p class="popup__address">' + map.row.hotels.address + '</p>';
	}

	// чекбоксы для достопримечательностей
	html += '<div id="location" class="overview-map__location">';
	html += '<div class="overview-map__location-hotels">Гостиницы</div>';

	for (lions_category_key in map.row.lions_category) {
		var lions_category_type = map.row.lions_category[lions_category_key].id;

		html += '<div class="not_checked overview-map__location-'
				+ lions_category_type + '" type="' + lions_category_type + '">'
				+ map.row.lions_category[lions_category_key].name + ' ('
				+ map.row.lions_category[lions_category_key].c + ')</div>';
	}

	html += '</div>';
	html += '<div class="g-clear"></div>';
	html += '</div>';
	html += '</div>';

	// карта. будет инициализирована после появления блока
	html += '<div id="map_content" class="overview-map__content"></div>';
	html += '</div>';
	html += '<div class="overview__btn-close2" onclick="$().overview_hide();"></div>';

	$('#overview_content').html(html);
	$('#map_content').height(($('#overview_content').height() - $('#overview_content .overview-map__top').height()) - 60);
	
	map.create(map.row.hotels.lat, map.row.hotels.lng, 14);

	map.ya.placemark_add(row.hotels.name, row.hotels.address, row.hotels.lat, map.row.hotels.lng, {style : map.style('hotel')});

	for (lions_category_key in map.row.lions_category) {
		var lions_category_type = map.row.lions_category[lions_category_key].id;

		map.overlay_row[lions_category_type] = map.ya.geo_collection();

		for (lions_key in row.lions[lions_category_type]) {
			var placemark = map.ya.placemark_add(
					row.lions[lions_category_type][lions_key].cat_name,
					row.lions[lions_category_type][lions_key].name,
					row.lions[lions_category_type][lions_key].lat,
					row.lions[lions_category_type][lions_key].lng, {
						style : map.style(lions_category_type)
					}, false);

			map.overlay_row[lions_category_type].add(placemark);
		}
	}

	$('#location > .not_checked').click(map.update);
}

map.create = function(lat, lng, zoom) {
	map.ya = new $.YMaps({
		div : '#map_content',
		lat : lat,
		lng : lng,
		zoom : zoom,
		controls_scaleline : true
	});
}

map.update = function() {
	var _this = $(this);
	var _type = _this.attr('type');

	if (_this.hasClass('checked') == true) {
		_this.addClass('not_checked');
		_this.removeClass('checked');

		map.ya.overlay_remove(map.overlay_row[_type]);
	} else {
		_this.removeClass('not_checked')
		_this.addClass('checked');

		map.ya.overlay_add(map.overlay_row[_type]);
	}
}

map.style = function(type) {
	return map.ya.style( {
		link : "/bem/blocks/map/ico_" + type + ".png",
		w : 17,
		h : 22
	}, {
		link : "/i/map_ico_shadow.png",
		w : 9,
		h : 6,
		offset_w : -3,
		offset_h : -9
	});
}

