﻿// Создание стиля для значка метки
var hotelStyle = new YMaps.Style();
hotelStyle.iconStyle = new YMaps.IconStyle();
hotelStyle.iconStyle.href = "/images/maps/hotel.png";
hotelStyle.iconStyle.size = new YMaps.Point(40, 40);
hotelStyle.iconStyle.offset = new YMaps.Point(-20, -20);
hotelStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));

var gostinicaStyle = new YMaps.Style();
gostinicaStyle.iconStyle = new YMaps.IconStyle();
gostinicaStyle.iconStyle.href = "/images/maps/gostinica.png";
gostinicaStyle.iconStyle.size = new YMaps.Point(40, 40);
gostinicaStyle.iconStyle.offset = new YMaps.Point(-20, -20);
gostinicaStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));

var ch_gostinicaStyle = new YMaps.Style();
ch_gostinicaStyle.iconStyle = new YMaps.IconStyle();
ch_gostinicaStyle.iconStyle.href = "/images/maps/ch_gostinica.png";
ch_gostinicaStyle.iconStyle.size = new YMaps.Point(40, 40);
ch_gostinicaStyle.iconStyle.offset = new YMaps.Point(-20, -20);
ch_gostinicaStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));


var sanatoriiStyle = new YMaps.Style();
sanatoriiStyle.iconStyle = new YMaps.IconStyle();
sanatoriiStyle.iconStyle.href = "/images/maps/sanatorii.png";
sanatoriiStyle.iconStyle.size = new YMaps.Point(40, 40);
sanatoriiStyle.iconStyle.offset = new YMaps.Point(-20, -20);
sanatoriiStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));

var pansionatStyle = new YMaps.Style();
pansionatStyle.iconStyle = new YMaps.IconStyle();
pansionatStyle.iconStyle.href = "/images/maps/pansionat.png";
pansionatStyle.iconStyle.size = new YMaps.Point(40, 40);
pansionatStyle.iconStyle.offset = new YMaps.Point(-20, -20);
pansionatStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));

var bazaStyle = new YMaps.Style();
bazaStyle.iconStyle = new YMaps.IconStyle();
bazaStyle.iconStyle.href = "/images/maps/baza.png";
bazaStyle.iconStyle.size = new YMaps.Point(40, 40);
bazaStyle.iconStyle.offset = new YMaps.Point(-20, -20);
bazaStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));

var avtovokzalStyle = new YMaps.Style();
avtovokzalStyle.iconStyle = new YMaps.IconStyle();
avtovokzalStyle.iconStyle.href = "/images/maps/avtovokzal.png";
avtovokzalStyle.iconStyle.size = new YMaps.Point(40, 40);
avtovokzalStyle.iconStyle.offset = new YMaps.Point(-20, -20);
avtovokzalStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));


var shopStyle = new YMaps.Style();
shopStyle.iconStyle = new YMaps.IconStyle();
shopStyle.iconStyle.href = "/images/maps/shop.png";
shopStyle.iconStyle.size = new YMaps.Point(34, 34);
shopStyle.iconStyle.offset = new YMaps.Point(-20, -20);
shopStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));


var entertStyle = new YMaps.Style();  // Развлечения на карте
entertStyle.iconStyle = new YMaps.IconStyle();
entertStyle.iconStyle.href = "/images/maps/entert.png";
entertStyle.iconStyle.size = new YMaps.Point(40, 40);
entertStyle.iconStyle.offset = new YMaps.Point(-20, -20);
entertStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));

var railwayStyle = new YMaps.Style();  // Развлечения на карте
railwayStyle.iconStyle = new YMaps.IconStyle();
railwayStyle.iconStyle.href = "/images/maps/railway.png";
railwayStyle.iconStyle.size = new YMaps.Point(40, 40);
railwayStyle.iconStyle.offset = new YMaps.Point(-20, -20);
railwayStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));



// список глобальных переменных
var hotels, cityCoords, isFasad, map;

var geoResult;
var placemarks = new Array();



// получение списка гостиниц [ajax]
function getHotelList( Coord ){
		$.ajax({
				data: { city: "lazarevskaya"},
				dataType: "JSON",
				type:'POST',
				url:'/hotels/getHotelsInfo',
				success:function(data){
									
					// получили все гостиницы
					hotels = eval(data);

					map = new YMaps.Map(document.getElementById("YMapsID"));
			
					// создание элементов управления
					map.addControl(new YMaps.TypeControl());
					map.addControl(new YMaps.ToolBar());
					map.addControl(new YMaps.Zoom());
					//map.addControl(new YMaps.MiniMap());
					map.addControl(new YMaps.ScaleLine());
					
					// поставим все метки
					for(a in hotels)
					{
						setHotelOnMap(a);
					}
					
					
					setObjectOnMap( 39.32853, 43.905913, entertStyle, "Аттракционы", "");
					
					setObjectOnMap( 39.324733,43.908107, shopStyle, "Магазин", "");
					setObjectOnMap( 39.329615,43.908665, shopStyle, "Магазин", "");
					setObjectOnMap( 39.326974,43.906539, shopStyle, "Магазин", "");
					
					setObjectOnMap( 39.320645,43.914825, railwayStyle, "Железнодорожный вокзал", "");
					setObjectOnMap( 39.320902,43.915329, avtovokzalStyle, "Автовокзал", "");
					
					
					var yccoord = Coord.split(',');
					map.setCenter(new YMaps.GeoPoint(parseFloat(yccoord[0]), parseFloat(yccoord[1])), 14);		
				}
		});
}
	
	
	
	
	
	
// установка меток на карте
function setHotelOnMap(id){
	// координаты - строка, переделаем в массив	
	var ycoord = hotels[id].YandexCoords.split(',');
	var style;
		
	
	if( hotels[id].Category == 0 )
	{
		style = hotelStyle;
	}
	else if( hotels[id].Category == 1 )
	{
		style = gostinicaStyle;
	}
	else if( hotels[id].Category == 2 )
	{
		style = ch_gostinicaStyle;
	}
	else if( hotels[id].Category == 3 )
	{
		style = sanatoriiStyle;
	}
	else if( hotels[id].Category == 4 )
	{
		style = pansionatStyle;
	}
	else
	{
		style = bazaStyle;
	}

	
	// Создание метки и добавление ее на карту
    placemarks[id] = new YMaps.Placemark(new YMaps.GeoPoint(parseFloat(ycoord[0]), parseFloat(ycoord[1])), {hasHint: true, style: style});
    
	// создаем балун
	placemarks[id].name = hotels[id].Name;
	placemarks[id].description = hotels[id].Comment;

    // Добавление метки на карту
    map.addOverlay(placemarks[id]);
	
}







// Установка произвольной метки на карте
function setObjectOnMap( ycoord0, ycoord1, _style, nameText, descrText)
{	
	// Создание метки и добавление ее на карту
    placeMark = new YMaps.Placemark(new YMaps.GeoPoint(parseFloat(ycoord0), parseFloat(ycoord1)), {hasHint: true, style: _style});
    
	// создаем балун
	placeMark.name = nameText;
	placeMark.description = descrText;

    // Добавление метки на карту
    map.addOverlay(placeMark);
	
}


// Функция для отображения результата геокодирования на карте
// Параметр value - адрес объекта для поиска
function showAddress (value) {
    // Удаляет результат предыдущего поиска
    map.removeOverlay(geoResult);

    // Запускает процесс геокодирования
    var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});

    // Создает обработчик успешного завершения геокодирования
    YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
        // Если объект найден, добавляет его на карту
        // и устанавливает центр карты в центр области показа объекта
        if (this.length()) {
            geoResult = this.get(0);
            map.addOverlay(geoResult);
            map.setBounds(geoResult.getBounds());
			//map.setCenter(geoResult);
        }else {
            alert("Ничего не найдено")
        }
    });

    // Процесс геокодирования завершен с ошибкой
    YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (gc, error) {
        alert("Произошла ошибка: " + error);
    })
}


$(function(){
	$('#search-form').submit(function(){
		showAddress( $('#search-text').val() );		
		return false;
	});
});









// функция для установки действия на ссылки
function setLinksAction(){
	$('.hotel-links').each(function(){
		$(this).click(function(){
			id = $(this).attr("rel");
			
			var index;
			for(a in hotels)
				if(hotels[a].HotelId == id)
				{
					index = a;
				}
					
			getHotelOnMap(map, index);
		});
	});
}

// показ выбранной метки на карте
function getHotelOnMap(_map, id){
		
	// координаты - строка, переделаем в массив	
	var ycoord = hotels[id].YandexCoords.split(',');
	
	
	
	// делаем гостиницу в центре карты
	map.setCenter(new YMaps.GeoPoint(parseFloat(ycoord[0]), parseFloat(ycoord[1])), 14);
	
	// открываем балун
	placemarks[id].openBalloon();
}
