﻿// Создание стиля для значка метки
var hotelStyle = new YMaps.Style();
hotelStyle.iconStyle = new YMaps.IconStyle();
hotelStyle.iconStyle.href = "/images/maps/hotels.gif";
hotelStyle.iconStyle.size = new YMaps.Point(40, 40);
hotelStyle.iconStyle.offset = new YMaps.Point(-20, -20);
hotelStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("$[name]<div>$[description]</div>"));


var miniStyle = new YMaps.Style();
miniStyle.iconStyle = new YMaps.IconStyle();
miniStyle.iconStyle.href = "/images/maps/mini.gif";
miniStyle.iconStyle.size = new YMaps.Point(40, 40);
miniStyle.iconStyle.offset = new YMaps.Point(-20, -20);
miniStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("$[name]<div>$[description]</div>"));

// Аэропорт
var airportStyle = new YMaps.Style();
airportStyle.iconStyle = new YMaps.IconStyle();
airportStyle.iconStyle.href = "/images/img/airport.png";
airportStyle.iconStyle.size = new YMaps.Point(36, 36);
airportStyle.iconStyle.offset = new YMaps.Point(-20, -20);
airportStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));

// Вкозал
var vokzalStyle = new YMaps.Style();
vokzalStyle.iconStyle = new YMaps.IconStyle();
vokzalStyle.iconStyle.href = "/images/img/vokzal.png";
vokzalStyle.iconStyle.size = new YMaps.Point(36, 36);
vokzalStyle.iconStyle.offset = new YMaps.Point(-20, -20);
vokzalStyle.hintContentStyle = new YMaps.HintContentStyle(new YMaps.Template("<b>$[name]</b><div>$[description]</div>"));

// список глобальных переменных
var hotels, cityCoords, isFasad;

var geoResult;
var placemarks = new Array();

// установка меток на карте
function setHotelOnMap(_map, id){
	// координаты - строка, переделаем в массив	
	var ycoord = hotels[id].ycoords.split(',');
	var style;
		
	if(hotels[id].category == 0)
	{
		style=miniStyle;
	}
	else
		style=hotelStyle;
	
	// Создание метки и добавление её на карту
    placemarks[id] = new YMaps.Placemark(new YMaps.GeoPoint(parseFloat(ycoord[0]), parseFloat(ycoord[1])), {hasHint: true, style: style});
    
	// создаем балун
	placemarks[id].name ="<div style=\"overflow: hidden; border: 1px solid gray; margin-right:3px;padding: 3px; width: 70px; -moz-border-radius: 3px 3px 3px 3px;border-radius: 3px 3px 3px 3px; float: left;\"><a target=_blank href=\""+hotels[id].link+"\"><img width=\"70px;\" src=\""+hotels[id].photo+"\"></a></div>";
	placemarks[id].name += "<b>"+hotels[id].name+"</b>";
	//добавил Алексей 23.01.2012 начало
	placemarks[id].description = hotels[id].address;  
	placemarks[id].description += "<br/>Цены от "+hotels[id].cost+" руб.";
	//добавил Алексей 23.01.2012 конец
	placemarks[id].description += '<br/><a target=_blank style="color:red;" href='+hotels[id].link+'>Подробнее...</a>';

    // Добавление метки на карту
    map.addOverlay(placemarks[id]);
}

// показ выбранной метки на карте
function getHotelOnMap(_map, id){
	// координаты - строка, переделаем в массив	
	var ycoord = hotels[id].ycoords.split(',');
	
	// делаем гостиницу в центре карты
	map.setCenter(new YMaps.GeoPoint(parseFloat(ycoord[0]), parseFloat(ycoord[1])), 14);
	
	// открываем балун
	placemarks[id].openBalloon();
}


// Показ Аэропорта на карте
function getAirportOnMap(){
	map.setCenter(placemarks["airport"].getCoordPoint(), 14);
	placemarks["airport"].openBalloon();
}


// Показ Вокзала на карте
function getVokzalOnMap(){
	map.setCenter(placemarks["vokzal"].getCoordPoint(), 14);
	placemarks["vokzal"].openBalloon();
}


// получение списка гостиниц и расстановка их на карте [ajax]
function getHotelList(_city){

	// Создание экземпляра карты и его привязка к созданному контейнеру
	map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
	var ycoordSpecial;
	
	$.ajax({
			data: { city: _city},
			dataType: "JSON",
			type:'POST',
			url:'/main/getHotelsInfo',
			success:function(data){
								
				// получили все гостиницы
				hotels = eval(data);
				
				
				// создание элементов уцправления
				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(map, a)
					
				var yccoord = cityCoords.split(',');
				map.setCenter(new YMaps.GeoPoint(parseFloat(yccoord[0]), parseFloat(yccoord[1])), 12,YMaps.MapType.PMAP);
			}
			});
			
			
			
	$.ajax({
			data: { city: _city},
			dataType: "JSON",
			type:'POST',
			url:'/main/getCityCoords',
			success:function(data){
					
				// Получили координаты вокзала и аэропорта (.coords_vokzal и .coords_airport)
				coords = eval( "(" + data + ")");
				
				// Поставим Аэропорт
				if( coords.coords_airport != "" ) {
					ycoordSpecial = coords.coords_airport.split(',');
					// Создание метки и добавление её на карту
					placemarks["airport"] = new YMaps.Placemark(new YMaps.GeoPoint(parseFloat(ycoordSpecial[0]), parseFloat(ycoordSpecial[1])), {hasHint: true, style: airportStyle});
					placemarks["airport"].name = 'Аэропорт';
					// Добавление метки на карту
					map.addOverlay(placemarks["airport"]);
				}
				
				// Поставим Вокзал
				if( coords.coords_vokzal != "" ) {
					ycoordSpecial = coords.coords_vokzal.split(',');
					// Создание метки и добавление её на карту
					placemarks["vokzal"] = new YMaps.Placemark(new YMaps.GeoPoint(parseFloat(ycoordSpecial[0]), parseFloat(ycoordSpecial[1])), {hasHint: true, style: vokzalStyle});
					placemarks["vokzal"].name = 'Вокзал';
					// Добавление метки на карту
					map.addOverlay(placemarks["vokzal"]);
				}

			}
			});
			

}

// Функция для отображения результата геокодирования на карте
// Параметр 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 setLinksAction(){
	$('.hotel-links').each(function(){
		$(this).click(function(){
			id = $(this).attr("rel");
			
			var index;
			for(a in hotels)
				if(hotels[a].id == id)
					index = a;
					
			getHotelOnMap(map, index);
		});
	});
}
