		// Класс пользовательского оверлея, реализующего класс YMaps.IOverlay
		function TrialOverlay (geoPoint, name) {
			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 () {
				// Скрываем оверлей
				getElement().css("display", "none");

				// Открываем балун и по закрытию балуна возвраем в первоначальный вид
				var name1 = name.split(',').join(',<br>');
				map.openBalloon(geoPoint, name1, {onClose: function () {
					getElement().css("display", "");
				}});
			};
			
			this.getCoordPoint = function () {
				return geoPoint;
			}

			// Получить ссылку на DOM-ноду оверлея
			function getElement () {
				var element = YMaps.jQuery("<div class=\"trialoverlay\"/>");

				// Устанавливаем z-index как у метки
				element.css("z-index", YMaps.ZIndex.Overlay);

				// При щелчке на оверлеи открывается балун
				element.bind("click", function () {
					_this.openBalloon();
				});

				// После первого вызова метода, он переопределяется, 
				// чтобы дважды не создавать DOM-ноду
				return (getElement = function () {return element})();
			}
		}
