// © wat qrim.ru

document.write("<script src='http://api-maps.yandex.ru/1.0/?key=AOwLSEkBAAAAQw9bRgMAX_yTFy7dDIDnUpGY3sWJ_27qRbwAAAAAAAAAAACsgX6WqmB31Beu9GJVpo4h9zRPUQ==' type='text/javascript'></script>");
var ym_domain="http://www.qrim.ru/map/";
var ym_n = 45.29;
var ym_l = 34.51;
var ym_m = 8;
var ym_t = 0;

var ya_mark=0;
var ya_markListener;

var ym_isSetupPos = 0;
var ym_isSetupMark = 0;

var map;


var ya_marks = new Array();



function YM_SetValues(l, n, m, t)
{
	ym_l = l;
	ym_n = n;
	ym_m = m;
	ym_t = t;
}


function YM_SetupPos() {ym_isSetupPos = 1;}
function YM_SetupMark() {ym_isSetupMark = 1;}


function YM_GetParams()
{
	var cen = map.getCenter();
	ym_l = parseInt(cen.getLng()*1000000)/1000000;
	ym_n = parseInt(cen.getLat()*1000000)/1000000;
	ym_m = map.getZoom();
	ym_t = 0;

	if(YMaps.MapType.SATELLITE==map.getType())
		ym_t=1;
	else if(YMaps.MapType.HYBRID==map.getType())
  	ym_t=2;
}


function YM_FillLink()
{
	YM_GetParams();
	var ur = ym_domain+"?lat="+ym_n+"&lon="+ym_l+"&m="+ym_m;
	if(ym_t>0)
		ur=ur+"&t="+ym_t;

	if(ya_mark)
	{
		var lat = parseInt(ya_mark.getGeoPoint().getLat()*1000000)/1000000;
		var lon = parseInt(ya_mark.getGeoPoint().getLng()*1000000)/1000000;
		ur=ur+"&p="+lat+","+lon;
	}

	document.getElementById("ya_info").innerHTML='<a href="'+ur+'">Ссылка на текущее положение</a>: <input name="link" style="font-size: 10px;" value="'+ur+'" size="90" maxlength="255">';
	
	YM_FillCreatingForm();
}


function YM_FillCreatingForm()
{
	if(ym_isSetupPos)
	{
		document.postform.lat.value = ym_n;
		document.postform.lon.value = ym_l;
		document.postform.scale.value = ym_m;
		document.postform.type.value = ym_t;
	}
}

var ym_divheights = new Array();
var ym_divopened = new Array();

function YM_HideDiv(id, el)
{
	ym_divheights[id] = document.getElementById(el).style.height;
	document.getElementById(el).style.visibility="hidden";
	document.getElementById(el).style.height="2px";
	ym_divopened[id] = false;
}


function YM_ShowDiv(id, el)
{
	if(ym_divopened[id])
	{
		YM_HideDiv(id, el);
		ym_divopened[id] = false;
	}
	else
	{
		document.getElementById(el).style.visibility="visible";
		document.getElementById(el).style.height=ym_divheights[id];
		ym_divopened[id] = true;
	}
	return false;
}


function YM_ChangeMark()
{
	YM_FillLink();
	if(ym_isSetupMark)
	{
		if(ya_mark)
		{
			var lat = parseInt(ya_mark.getGeoPoint().getLat()*1000000)/1000000;
			var lon = parseInt(ya_mark.getGeoPoint().getLng()*1000000)/1000000;
			document.postform.lat.value = lat;
			document.postform.lon.value = lon;
		}
	}
}


function YM_HideMark()
{
	if(ya_mark)
	{
		map.removeOverlay(ya_mark);
		ya_markListener.cleanup();
	}
	ya_mark = 0;
}


function YM_ShowMark(lat, lon)
{
	YM_HideMark();
	ya_mark = new YMaps.Placemark(new YMaps.GeoPoint(lon, lat), {draggable: 1, hasBalloon: 0});
	ya_mark.setIconContent('Здесь');
	map.addOverlay(ya_mark);

	ya_markListener = YMaps.Events.observe(ya_mark,ya_mark.Events.DragEnd, function () {
		YM_ChangeMark();
	});
}


function YM_AddPosMark(lat, lon, shortText, text)
{
	var mark = new YMaps.Placemark(new YMaps.GeoPoint(lon, lat), {draggable: 0, hasBalloon: 0});
	mark.setIconContent(shortText);
	map.addOverlay(mark);
}


function YM_MarkFilledOff()
{
	YM_HideMark();
	YM_FillLink();
	document.getElementById("ya_mark").innerHTML='<a href="" onClick="return YM_MarkFilledOn()">Поставить метку</a>';
	return false;
}

function YM_MarkFilledOn()
{
	YM_ShowMark(ym_n, ym_l);
	YM_FillLink();
	document.getElementById("ya_mark").innerHTML='<a href="" onClick="return YM_MarkFilledOff()">Убрать метку</a>';
	return false;
}


function YM_Init()
{
	map = new YMaps.Map( document.getElementById("YMapsID") );
	var tp = YMaps.MapType.MAP;
	if(1 == ym_t)
		tp = YMaps.MapType.SATELLITE;
	else if(2 == ym_t)
		tp = YMaps.MapType.HYBRID;
	
	map.setCenter( new YMaps.GeoPoint( ym_l, ym_n ), ym_m, tp );
	map.enableScrollZoom();
	map.enableHotKeys();
	var typeControl = new YMaps.TypeControl();
	map.addControl(typeControl);
	map.addControl( new YMaps.Zoom() );
	map.addControl( new YMaps.ToolBar () );

	YMaps.Events.observe(map,map.Events.Update, function () {
		YM_FillLink();
	});
	YMaps.Events.observe(map,map.Events.MoveEnd, function () {
		YM_FillLink();
	});
	
	YM_MarkFilledOff(); // only in the end
};




function TextualZoomControl()
{
	this.element = document.createElement("DIV");
	this.element.style.position = 'absolute';
	this.element.style.zIndex = '1000';
}

TextualZoomControl.prototype = {
    onAddToMap: function (map, position) {
        this.map = map;
        this.position = position || new YMaps.ControlPosition(YMaps.ControlPosition.BOTTOM_RIGHT, new YMaps.Size(5, 80));
        this._init();
    },

    onRemoveFromMap: function () {
        if (this.element.parentNode) {
            this.map.getContainer().removeChild(this.element);
        }
        this.map = null;
    },

   _init: function (map) {
      var zoomInDiv = document.createElement("div"),
					leftInDiv = document.createElement("span"),
					rightInDiv = document.createElement("span"),
          zoomOutDiv = document.createElement("div"),
          _this = this;
      
      this._setButtonStyle(zoomInDiv);
      zoomInDiv.style.marginLeft="35px";
      this.element.appendChild(zoomInDiv);
      zoomInDiv.appendChild(document.createTextNode("UP"));
      zoomInDiv.onclick  = function () {
          _this.map.moveBy(new YMaps.Point(0,-60), false);
      };

      this._setButtonStyle(leftInDiv);
      this.element.appendChild(leftInDiv);
      leftInDiv.appendChild(document.createTextNode("LEFT "));
      leftInDiv.onclick  = function () {
          _this.map.moveBy(new YMaps.Point(-60,0), false);
      };

      this._setButtonStyle(rightInDiv);
      //rightInDiv.style.align="right";
      this.element.appendChild(rightInDiv);
      rightInDiv.appendChild(document.createTextNode("RIGHT"));
      rightInDiv.onclick  = function () {
          _this.map.moveBy(new YMaps.Point(60,0), false);
      };


      this._setButtonStyle(zoomOutDiv);
      zoomOutDiv.style.marginLeft="35px";
      this.element.appendChild(zoomOutDiv);
      zoomOutDiv.appendChild(document.createTextNode("DOWN"));
      zoomOutDiv.onclick  = function () {
          _this.map.moveBy(new YMaps.Point(0,60), false);
      };

      this.position.apply(this.element);
      this.map.getContainer().appendChild(this.element);
  },

  _setButtonStyle: function (button) {
      style = {textDecotation: 'underline', 
               color: '#0000cc', 
               backgroundColor: 'white', 
               font: 'small Arial',
               border: '1px solid black',
               padding: '2px',
               margin: '15px',
               textAlign: 'center',
               width: '60px',
               cursor: 'pointer'};
      for (var k in style) {
          button.style[k] = style[k];
      }
    }
}


function YM_InitPDA()
{
	map = new YMaps.Map( document.getElementById("YMapsID") );
	var tp = YMaps.MapType.MAP;
	if(1 == ym_t)
		tp = YMaps.MapType.SATELLITE;
	else if(2 == ym_t)
		tp = YMaps.MapType.HYBRID;
	map.setCenter( new YMaps.GeoPoint( ym_l, ym_n ), ym_m, tp );

	map.addControl( new YMaps.TypeControl());
	map.addControl( new YMaps.SmallZoom() );
	//map.addControl( new YMaps.ToolBar () );
	
	map.addControl(new TextualZoomControl());
};



  //hintOptions: {
      //showTimeout: 200
  //},
  //maxWidth: 100,
  //hintOffset: new YMaps.Size(5,5)
  //balloonOptions: {
  //    hasCloseButton: false,
  //    mapAutoPan: 0
  //}
  //maxWidth: 70,
