$(document).ready(function() {
	$(".scroll-pane input").click(function(){
		var moduleName = $(this).attr('name');
		var city = $(".linkInTitle a").attr('rel');
		var cityRusName = $("#curCityBigMap").text();

		if ($(this).attr('checked')) {
			$.ajax({
				url: '/map/get_address/' + moduleName,
				type: 'POST',
				data: {city: city},
				dataType: 'json',
				success: function(data) {
					$.each(data, function(i,item){
						var addresArray = item.address.split(' ');
						getCorner(cityRusName + '+' + addresArray.join('+'), moduleName, '<div><a href="/' + moduleName + '/' + city + '/' + item.prod_alias.substr(3) + '" class="linkOnMapPopUp">' + item.prod_name + '</a><div class="clear"></div><div style="float: left;"><img src="http://wedding.ua/' + item.image + '" align="left" width="100px" style="margin-top: 13px;" /></div><div style="font-size: 9px; padding-left: 108px;">' + item.prod_descr + '</div><div class="clear"></div></div>');
					});						
				},
				error: function() {alert('Ошибка при выполнении скрипта');}
			});
		} else {
			$(".popup_bg div." + moduleName).remove();
		}
		
	});
});

var mapBig, map;

function getBodyScrollTop() {
	return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}

function getCorner(from, comp, name) {
	var corner = '';
	$.ajax({
	  url: 'http://geocode-maps.yandex.ru/1.x/?format=json&geocode=' + from + '&results=1&key=AFSN5E4BAAAAQ5-CVAIA-SLJo1GwtC4IVcOqp98PLnvlVioAAAAAAAAAAADcHZao0AXBB4UjDSv2znWXZXnfsg==',
	  dataType: 'jsonp',
	  success: function(data) {
	  	corner = data.response.GeoObjectCollection.featureMember[0].GeoObject.Point.pos;

	  	setPoint(corner, comp, name);
	  }
	});

};
function getCornerMin(from, comp, name){
	var corner = '';
	$.ajax({
	  url: 'http://geocode-maps.yandex.ru/1.x/?format=json&geocode=' + from + '&results=1&key=AFSN5E4BAAAAQ5-CVAIA-SLJo1GwtC4IVcOqp98PLnvlVioAAAAAAAAAAADcHZao0AXBB4UjDSv2znWXZXnfsg==',
	  dataType: 'jsonp',
	  success: function(data) {
	  	corner = data.response.GeoObjectCollection.featureMember[0].GeoObject.Point.pos;
	  		
	  	setPointMin(corner, comp, name);
	  }
	});

};
function getCornerRight(from, comp, name){
	var corner = '';
	$.ajax({
	  url: 'http://geocode-maps.yandex.ru/1.x/?format=json&geocode=' + from + '&results=1&key=AFSN5E4BAAAAQ5-CVAIA-SLJo1GwtC4IVcOqp98PLnvlVioAAAAAAAAAAADcHZao0AXBB4UjDSv2znWXZXnfsg==',
	  dataType: 'jsonp',
	  success: function(data) {
	  	corner = data.response.GeoObjectCollection.featureMember[0].GeoObject.Point.pos;
	  		
	  	setPointRight(corner, comp, name);
	  }
	});

};
	
function setPoint(corner, comp, name) {
	  	cornerArray = corner.split(' ');

	  	mapBig.addOverlay(createOverlay({point: new YMaps.GeoPoint(cornerArray[0], cornerArray[1]), name: name}, comp));
}
function setPointMin(corner, comp, name) {
	  	cornerArray = corner.split(' ');

	  	map.addOverlay(createOverlay({point: new YMaps.GeoPoint(cornerArray[0], cornerArray[1]), name: name}, comp));
}
function setPointRight(corner, comp, name) {
	  	cornerArray = corner.split(' ');

	  	mapRight.addOverlay(createOverlay({point: new YMaps.GeoPoint(cornerArray[0], cornerArray[1]), name: name}, comp));
}

function showMap() {
	$(".popup_block").css('top', (getBodyScrollTop() + $(window).height()/2));

	$('.popup_bg').show();
	
	$('.scroll-pane').jScrollPane({showArrows:true, scrollbarWidth:19, dragMaxHeight:16});
	
	$("body").click (function(event) {
		var X = $(document).scrollLeft() + event.clientX;
		var Y = $(document).scrollTop() + event.clientY;
		
		if ($('.popup_block').css('display') == 'block') {
			var lang_offset = $('.popup_block').offset();
			var lang_left = lang_offset.left;
			var lang_right = lang_offset.left + $('.popup_block').width() + 40;
			var lang_top = lang_offset.top;
			var lang_bottom = lang_offset.top+$('.popup_block').height() + 40;
			
			if (!(X > lang_left && X < lang_right && Y > lang_top && Y < lang_bottom)) {
				$('.popup_bg').css('display', 'none');
				$("input:checked").attr('checked', '');
			}
		}
	});
	
	// Создает экземпляр карты и привязывает его к созданному контейнеру
    mapBig = new YMaps.Map(YMaps.jQuery("#YMapsBigID")[0]);
    // Устанавливает начальные параметры отображения карты: центр карты и коэффициент масштабирования
    mapBig.setCenter(new YMaps.GeoPoint(30.53269, 50.402398), 10);
    // Создает панель инструментов
	var toolBar = new YMaps.ToolBar();
	mapBig.addControl(toolBar);
	// Создает элемент масштабирования
	var zoomControl = new YMaps.Zoom();
	mapBig.addControl(zoomControl);	

	return false;
}
	
function changeCity(city, cityAlias, cordH, cordW) {
	$(".linkInTitle a span").text(city);
	$(".linkInTitle a").attr('rel', cityAlias);
	$(".privatMenu_in .subMenu_in").toggle();
	
	$(".scroll-pane input:checked").attr('checked', '');
	$(".popup_bg .overlayOnPopUp").remove();
	
	// Устанавливает центр карты в выбраный город
	mapBig.setCenter(new YMaps.GeoPoint(cordH, cordW), 10);
	
	return false;
}

// Создает обработчик события window.onLoad
YMaps.jQuery(function () {
/*On main page*/
    // Создает экземпляр карты и привязывает его к созданному контейнеру
    map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
    // Устанавливает начальные параметры отображения карты: центр карты и коэффициент масштабирования
    map.setCenter(new YMaps.GeoPoint(30.52857, 50.440563), 12);
    // Создает панель инструментов
	var toolBar = new YMaps.ToolBar();
	map.addControl(toolBar);
	// Создает элемент масштабирования
	var zoomControl = new YMaps.Zoom();
	map.addControl(zoomControl);

	
	var moduleName = 'salon';
	var city = 'Kiev';
	$.ajax({
		url: '/map/get_address/' + moduleName,
		type: 'POST',
		data: {city: city},
		dataType: 'json',
		success: function(data) {
			$.each(data, function(i,item){
				var addresArray = item.address.split(' ');
				getCornerMin('Киев+' + addresArray.join('+'), moduleName, '<div><a href="/' + moduleName + '/' + 'Kiev' + '/' + item.prod_alias.substr(3) + '" class="linkOnMapPopUp">' + item.prod_name + '</a><div class="clear"></div><div style="float: left;"><img src="http://wedding.ua/' + item.image + '" align="left" width="100px" style="margin-top: 13px;" /></div><div style="font-size: 9px; padding-left: 108px;">' + item.prod_descr + '</div><div class="clear"></div></div>');
			});						
		}
	});
/*On main page*/	
});
    
// Класс пользовательского оверлея-метки, реализующий класс YMaps.IOverlay
function SimpleOverlay (geoPoint, name, link, type) {
    var map, _this = this, offset = new YMaps.Point(-10, -29);

    // Вызывается при добавления метки на карту 
    this.onAddToMap = function (pMap, parentContainer) {
        map = pMap;
        getElement().appendTo(parentContainer);
        this.onMapUpdate();
    };

    // Вызывается при удаление метки с карты
    this.onRemoveFromMap = function () {
        if (getElement().parent()) {
            getElement().remove();
        }
    };

    // Вызывается при обновлении карты
    this.onMapUpdate = function () {
        // Смена позиции оверлея
        var position = map.converter.coordinatesToMapPixels(geoPoint).moveBy(offset);
        getElement().css({
            left : position.x,
            top :  position.y
        })
    };

    // Метод открывает балун
    this.openBalloon = function () {
        // Делает активной ссылку, связанную с меткой
        link.addClass("active");

        // Скрывает метку
        getElement().css("display", "none");

        // Открывает балун, при закрытии балуна возвращает первоначальный вид метки
        map.openBalloon(geoPoint, name, {onClose: function () {
            link.removeClass("active");
            getElement().css("display", "");
        }});
    };

    // Получает ссылку на DOM-узел метки
    function getElement () {
        var element = YMaps.jQuery("<div class=\"overlayOnPopUp " + type + "\"/>");

        // Устанавливает z-index (такой же, как у метки)
        element.css("z-index", YMaps.ZIndex.Overlay);

        // Открывает балун по щелчку кнопкой мыши по метке
        element.bind("click", function () {
            _this.openBalloon();
        });

        // Переопределяет метод после первого вызова,
        // чтобы не создавать DOM-узел дважды 
        return (getElement = function () {return element})();
    }
}

function createOverlay (station, type)  {
    var link = YMaps.jQuery("<a href=\"#\">" + station.name + "</a>"), // Создание ссылки
        newOverlay = new SimpleOverlay(station.point, station.name, link, type); // Создание оверлея

    // Прикрепляет обработчик щелка мыши по ссылке
    link
        .bind("click", function () {
            if (link.hasClass("active")) return;
            newOverlay.openBalloon();
            return false;
        })
        .appendTo(YMaps.jQuery("#links"))

    return newOverlay;
}
