﻿var mapKeys=[]; // ......
var mapKeysCount=0; // ......

function addKey(domain,key)
{
	mapKeys[mapKeysCount]=new mvgKey(domain,key);
	mapKeysCount++;
}

function mvgKey(domain,key) // ......
{
	this.domain=domain;
	this.key=key;
}


//CHR google.load("maps", '2.160');

var maps=[];
var spots=[];
var spotsCount=0;
var geocoder;
function mvgWriteMap(mId,lat,lng,zoom) 
{

//CHR	maps[mId]=new google.maps.Map2(document.getElementById(mId));
	maps[mId]=new GMap2(document.getElementById(mId));
	maps[mId].setCenter(new GLatLng(lat,lng),zoom);
	maps[mId].disableDoubleClickZoom();
	maps[mId].disableScrollWheelZoom();	
	maps[mId].addControl(new GMenuMapTypeControl(false,false));
	//maps[mId].addMapType(G_SATELLITE_3D_MAP);
	maps[mId].addControl(new GLargeMapControl3D());
	geocoder = new GClientGeocoder();
}


var aktivemarker;
var ev;


function getAddrLatLng(addr,marker,action)
{
	aktivemarker=marker;
	ev=action;
	if (addr!="") {
			geocoder.getLocations(addr, addAddressToMap);
	}
}

function addAddressToMap(response) {
		if (!response || response.Status.code != 200) {
			alert("Nem találom a címet!");
		} else {
			place = response.Placemark[0];
			var point=new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
			aktivemarker.setLatLng(point);
			eval(ev);
		}
	}
	
function mvgRplaceListener(lst,marker,info,actionCL)
{
	GEvent.addListener(marker,lst,
		function (latLng) 
		{
			if (info!="") {
				marker.openInfoWindowHtml(info);
			}
			eval(actionCL);
		}
	);
}

function mvgMoveSpot(lat,lng,ind)
{
	spots[ind].lat=lat;
	spots[ind].lat=lng;
}

function mvgChangeSpotIcon(icon,iconsize,ind)
{
	spots[ind].icon=vgIcon(icon,iconsize);
}

function mvgAddSpotM(mId,lat,lng,mtitle,info,max,actionCL,actionDS,actionDE,icon,iconsize,drag,actionOS)
{
	
	var micon=vgIcon(icon,iconsize);
	spots[spotsCount]=new GMarker(new GLatLng(lat,lng),{title:mtitle, draggable:drag,icon:micon});//
	spots[spotsCount].id="m"+spotsCount;
	
	maps[mId].addOverlay(spots[spotsCount]);
	
	maps[mId].closeInfoWindow();
	GEvent.addListener(spots[spotsCount],"click",
		function (latLng) 
		{
			if (info!="") {
				this.openInfoWindowHtml(info,{maxContent:max,onOpenFn:new function (){eval(actionOS);}});
			}
			if (actionCL!="") eval(actionCL);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragstart",
		function (latLng) 
		{
			if (info!="") {
				maps[mId].closeInfoWindow();
			}
			
			if (actionDS!="") eval(actionDS);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragend",
		function (latLng) 
		{
			if (actionDE!="") eval(actionDE);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragend",
		function (latLng) 
		{
			if (actionDE!="") eval(actionDE);
		}
	);
	
	spotsCount++;
	return spotsCount-1;
}

function mvgAddSpotMRes(mId,lat,lng,mtitle,info,max,actionCL,actionDS,actionDE,icon,iconsize,drag,actionOS)
{
	
	var micon=vgIcon(icon,iconsize);
	spots[spotsCount]=new GMarker(new GLatLng(lat,lng),{title:mtitle, draggable:drag,icon:micon});//
	spots[spotsCount].id="m"+spotsCount;
	
	//maps[mId].addOverlay(spots[spotsCount]);
	
	maps[mId].closeInfoWindow();
	GEvent.addListener(spots[spotsCount],"click",
		function (latLng) 
		{
			if (info!="") {
				this.openInfoWindowHtml(info,{maxContent:max,onOpenFn:new function (){eval(actionOS);}});
			}
			if (actionCL!="") eval(actionCL);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragstart",
		function (latLng) 
		{
			if (info!="") {
				maps[mId].closeInfoWindow();
			}
			
			if (actionDS!="") eval(actionDS);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragend",
		function (latLng) 
		{
			if (actionDE!="") eval(actionDE);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragend",
		function (latLng) 
		{
			if (actionDE!="") eval(actionDE);
		}
	);
	
	spotsCount++;
	return spotsCount-1;
}

function mvgAddSpot(mId,lat,lng,mtitle,info,actionCL,actionDS,actionDE,icon,iconsize,drag)
{
	var micon=vgIcon(icon,iconsize);
	spots[spotsCount]=new GMarker(new GLatLng(lat,lng),{title:mtitle, draggable:drag,icon:micon});//
	spots[spotsCount].id="m"+spotsCount;
	
	maps[mId].addOverlay(spots[spotsCount]);
	
	maps[mId].closeInfoWindow();
	GEvent.addListener(spots[spotsCount],"click",
		function (latLng) 
		{
			if (info!="") {
				this.openInfoWindowHtml(info);
			}

			if (actionCL!="") eval(actionCL);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragstart",
		function (latLng) 
		{
			if (info!="") {
				maps[mId].closeInfoWindow();
			}
			
			if (actionDS!="") eval(actionDS);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragend",
		function (latLng) 
		{
			if (actionDE!="") eval(actionDE);
		}
	);
	
	spotsCount++;
	return spotsCount-1;
}

function mvgAddSpotRes(mId,lat,lng,mtitle,info,actionCL,actionDS,actionDE,icon,iconsize,drag)
{
	
	var micon=vgIcon(icon,iconsize);
	spots[spotsCount]=new GMarker(new GLatLng(lat,lng),{title:mtitle, draggable:drag,icon:micon});//
	spots[spotsCount].id="m"+spotsCount;
	
	//maps[mId].addOverlay(spots[spotsCount]);
	
	maps[mId].closeInfoWindow();
	GEvent.addListener(spots[spotsCount],"click",
		function (latLng) 
		{
			if (info!="") {
				this.openInfoWindowHtml(info);
			}
			if (actionCL!="") eval(actionCL);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragstart",
		function (latLng) 
		{
			if (info!="") {
				maps[mId].closeInfoWindow();
			}
			
			if (actionDS!="") eval(actionDS);
		}
	);
	
	GEvent.addListener(spots[spotsCount],"dragend",
		function (latLng) 
		{
			if (actionDE!="") eval(actionDE);
		}
	);
	
	spotsCount++;
	return spotsCount-1;
}

function mvgAddSpot2(mId,ind,lat,lng,mtitle,info,actionCL,actionDS,actionDE,icon,iconsize,drag)
{
	var micon=vgIcon(icon,iconsize);
	spots[ind]=new GMarker(new GLatLng(lat,lng),{title:mtitle, draggable:drag,icon:micon});
	spots[ind].id="m"+ind;
	maps[mId].addOverlay(spots[ind]);
	GEvent.addListener(spots[ind],"click",
		function (latLng) 
		{
			if (info!="") {
				this.openInfoWindowHtml(info);
			}
			eval(actionCL);
		}
	);
	GEvent.addListener(spots[ind],"dragstart",
		function (latLng) 
		{
			if (info!="") {
				maps[mId].closeInfoWindow();
			}
			eval(actionDS);
		}
	);
	
	GEvent.addListener(spots[ind],"dragend",
		function (latLng) 
		{
			eval(actionDE);
		}
	);
	return ind;
}

function mvgSetTitle(id,text) 
{ 
	var ele=document.getElementById("mtgt_m"+id); 
	if (ele) ele.title=text; 
}

function mvgDelSpot(mId,ind)
{
	maps[mId].removeOverlay(spots[ind]);
}

function vgIcon(fileName,iconsize)
		{
			var baseIcon = new GIcon();
			baseIcon.image=fileName;
			baseIcon.iconSize=new GSize(iconsize,iconsize);
			baseIcon.iconAnchor=new GPoint(iconsize/2,iconsize);
			baseIcon.infoWindowAnchor=new GPoint(iconsize/2,0);
			
			return baseIcon;
		}
