﻿function ACCTopoliszMap(iServerID, idDiv, idViewState, idLastPicked, idLinkJumpOver, bIsMobile, dMinX, dMinY, dMaxX, dMaxY)
{
	this.idDiv = idDiv;
	this.pTopoliszMap = null;
	this.iServerID = iServerID;
	this.idLastPicked = idLastPicked;
	this.idLinkJumpOver = idLinkJumpOver;
	this.bIsMobile = bIsMobile;
	this.divMap = null;

	var me = this;

	this.Init = function()
	{		
		me.divMap = GetBlock(me.idDiv);
		
		RemoveCssClassPostfix(me.divMap, "_noscript");
		me.pTopoliszMap = new CTopoliszMap(g_strSessionID, me.divMap, false);
		me.pTopoliszMap.bLabelHasPanoramaButton = false;
		me.pTopoliszMap.DisableMouseWheelZoom();
		me.pTopoliszMap.Init();
		me.pTopoliszMap.SetScrollMagicNumber(1);
		//if (me.bIsMobile == "True")
		//	me.DisplayOff();
		new CACCMapPalette(me.pTopoliszMap, false);
		//g_TopoliszMap.CreateMiniMap ();
		me.pTopoliszMap.InitGrid();
		//g_TopoliszMap.ShowMiniMap();		

		me.pTopoliszMap.OnReadyStateChange = g_MyStatusAnimator.ShowState;
		me.pTopoliszMap.OnCommandError = g_MyStatusAnimator.ShowError;
		me.pTopoliszMap.OnAddStartAddress = me.OnAddStartAddress;
		me.pTopoliszMap.OnAddStopAddress = me.OnAddStopAddress;
		me.pTopoliszMap.OnNewPickedAddress = me.OnPickAddress;

		me.pTopoliszMap.bLabelHasThroughButton = false;
		
		if(dMinX && dMinY && dMaxX && dMaxY)
		{
			if(dMinX != dMaxX && dMinY != dMaxY)
				me.pTopoliszMap.ZoomToRect(dMinX, dMinY, dMaxX, dMaxY);
			else
				me.pTopoliszMap.ZoomToPoint(dMinX, dMinY, 250);
		}
		else
		{
			me.pTopoliszMap.ZoomToDefault();
		}
		me.pTopoliszMap.OnMapStateChanged = me.OnMapStateChanged;
		
		//if (me.bIsMobile == "True")
		//{
		//	var btOnOffMap = document.createElement('input');
		//	btOnOffMap.type = "button";
		//	btOnOffMap.value = "Mutasd a térképet!";
		//	btOnOffMap.onclick = me.DisplayOn;
		//	me.divMap.parentNode.parentNode.appendChild(btOnOffMap);		
		//}
	}
	
	this.DisplayOff = function ()
	{
		me.divMap.parentNode.style.display = "none";
		
		var jumplink = GetBlock(me.idLinkJumpOver);
		if (jumplink != null)
		{
			jumplink.style.display = "none";
		}
	}
	
	this.DisplayOn = function ()
	{
		me.divMap.parentNode.style.display = "";
		
		var jumplink = GetBlock(me.idLinkJumpOver);
		if (jumplink != null)
		{
			jumplink.style.display = "";
			location.href='#ctl00_body_MainMap';
		}
	}
	
	this.SwitchDisplay = function()
	{
		var jumplink = GetBlock(me.idLinkJumpOver);

		if (jumplink != null)
		{
			if (me.divMap.parentNode.style.display == "")
			{
				jumplink.style.display = "none";
				me.divMap.parentNode.style.display = "none";
			}
			else
			{
				jumplink.style.display = "";
				me.divMap.parentNode.style.display = "";
				location.href='#ctl00_body_MainMap';
			}
		}
	}

	this.OnMapStateChanged = function()
	{
		var mapdata = me.pTopoliszMap.GetMapData();
		if(mapdata)
		{
			var str = mapdata.dMinX +'|'+ mapdata.dMinY + '|' + mapdata.dMaxX + '|' + mapdata.dMaxY;
			var input = GetBlock(idViewState);
			if(input)
				input.value = str;
		}
	}
		
	this.OnAddStartAddress = function (pMarker) 
	{
		var address = pMarker.ToAddress();
		var strSerializedCommand = "AddStartAddress|";
		strSerializedCommand +=  address.strAddress + "|";
		strSerializedCommand +=  address.dX + "|";
		strSerializedCommand +=  address.dY + "|";
		strSerializedCommand +=  pMarker.mainType + "|";
		strSerializedCommand +=  pMarker.ArrNamesAsString() + "|";
		strSerializedCommand +=  pMarker.ArrValuesAsString() + "|";
		if (pMarker.divDetails != null)
			strSerializedCommand +=  pMarker.divDetails.innerHTML;

		__doPostBack(me.iServerID, strSerializedCommand);
	}

	this.OnAddStopAddress = function (pMarker) 
	{
		var address = pMarker.ToAddress();
		var strSerializedCommand = "AddStopAddress|";
		strSerializedCommand +=  address.strAddress + "|";
		strSerializedCommand +=  address.dX + "|";
		strSerializedCommand +=  address.dY + "|";  
		strSerializedCommand +=  pMarker.mainType + "|"; 
		strSerializedCommand +=  pMarker.ArrNamesAsString() + "|";
		strSerializedCommand +=  pMarker.ArrValuesAsString() + "|";

		if (pMarker.divDetails != null)
			strSerializedCommand +=  pMarker.divDetails.innerHTML;


		__doPostBack(me.iServerID, strSerializedCommand);
	}

	this.OnPickAddress = function (sAddress, iPickPointX, iPickPointY, strMarkerClass)
	{
			me.pTopoliszMap.pMarkers.DeleteAllWithType(strMarkerClass);
			var marker = me.pTopoliszMap.AddMarker (sAddress, strMarkerClass, iPickPointX, iPickPointY);
			if (GetBlock("idMsgCoordValue")) {
				marker.SetProperty ("start_button", false);
				marker.SetProperty ("through_button", false);
				marker.SetProperty ("stop_button", false);
				marker.SetProperty ("panorama_button", false);
			}

			marker.pLabel.DrawBox();
			me.pTopoliszMap.OnLabelSignClick (marker); //as if clicked on it
			
			GetBlock(me.idLastPicked).value = sAddress.dX + "|" + sAddress.dY + "|" + sAddress.strAddress;
			if (GetBlock("idMsgCoordValue")) {
				GetBlock("idMsgCoordValue").innerHTML = "N" + parseInt(sAddress.dY * 1000000) / 1000000 + "; E" + parseInt(sAddress.dX * 1000000) / 1000000;
			}

	}

	me.Init();
}