point_radius = 8;
// x_mapsize && y_mapsize neni nikde definovano!!!!!! OMG!
x_mapsize = 560;	// krusnohori = 560
y_mapsize = 405;	// krusnohori = 349

charset = '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';

x_offset = 8;			//krusnohori = 5
y_offset = 18;			//krusnohori = 2
dg2px_x_const = 475;	//krusnohori = 760;
dg2px_y_const = 700;	//krusnohori = 1170;

function transferLatLng(GPS)
{
	var lat = GPS.split(/[(; )|(, )|( )]+/g)[0];
	var lng = GPS.split(/[(; )|(, )|( )]+/g)[1];
	
	var lat = lat.split(/[°mv]+/g);
	var lng = lng.split(/[°mv]+/g);
	
	var lat_dg = parseInt(lat[0]) + parseInt(lat[1]) / 60 + parseFloat(lat[2]) / 3600;
	var lng_dg = parseInt(lng[0]) + parseInt(lng[1]) / 60 + parseFloat(lng[2]) / 3600;
	
	return {
		Latitude: Math.round(lat_dg * 10E3) / 10E3,
		Longitude: Math.round(lng_dg * 10E3) / 10E3,
		list: function()
		{
			alert((GPS) + "\n" + (Math.round(lat_dg * 10E3) / 10E3) + "\n" + (Math.round(lng_dg * 10E3) / 10E3));
		}
	}
}

function loadGMaps()
{
	var GPS = document.getElementById("map").getAttributeNode('value').value;
	
	var editGPS = GPS.replace(/[m]+/g, "'");
	editGPS = editGPS.replace(/[v]+/g, '"');
	
	if (GBrowserIsCompatible() && document.getElementById("map"))
	{
		var map = new GMap2(document.getElementById("map"));
		var result = transferLatLng(GPS);
		
		map.setCenter(new GLatLng(result.Latitude, result.Longitude), 13);
        map.addControl(new GSmallMapControl());
        //map.addControl(new GMapTypeControl());
		
		var point = new GLatLng(result.Latitude, result.Longitude);
		map.addOverlay(new GMarker(point));
		
		//map.openInfoWindow(map.getCenter(), document.createTextNode(editGPS));
	}
}

function getGPSDistance(GPS1, GPS2)
{
	dg2px_z_const = Math.sqrt(dg2px_x_const * dg2px_x_const + dg2px_y_const * dg2px_y_const);
	
	var dGPS1 = transferLatLng(GPS1);
	var dGPS2 = transferLatLng(GPS2);
	
	var x = Math.abs(dGPS1.Longitude - dGPS2.Longitude);
	var y = Math.abs(dGPS1.Latitude - dGPS2.Latitude);
	
	var dist = Math.sqrt(x * x + y * y);
	
	return {
		x: Math.round(x * dg2px_x_const),
		y: Math.round(y * dg2px_y_const),
		z: Math.round(dist * dg2px_z_const)
	}
}

function generateRand(diff)
{
	return parseInt(diff - Math.random() * 2 * diff);
}

function placePoint(n, myGPS, tempname)
{
	var l, t;

	// (krusnohori start = 50°30m35.38vN; 13°1m2.86vE)
	// (krusnohori end = 50°14m31.79vN; 13°44m26.81vE)

	var startGPS = "50°41m42.776vN; 12°45m19.253vE";
	var endGPS = "50°9m50.264vN, 13°55m51.522vE";
	
	dStartGPS = transferLatLng(startGPS);
	dEndGPS = transferLatLng(endGPS);
	dMyGPS = transferLatLng(myGPS);
	
	var valid = (
		(dMyGPS.Longitude > dStartGPS.Longitude) &&
		(dMyGPS.Longitude < dEndGPS.Longitude) &&
		(dMyGPS.Latitude < dStartGPS.Latitude) &&
		(dMyGPS.Latitude > dEndGPS.Latitude)
	);
	
	if (valid)
	{
		var points = document.getElementById('kmap').getElementsByTagName('div');
		var point = points[n - 1];
		if (point)
		{
			var dist = getGPSDistance(startGPS, myGPS);
			
			with (point.style)
			{
				l = x_offset - point_radius + dist.x;
				t = y_offset - point_radius + dist.y
				
				// random position if on same place
				for (var i = 0; i < points.length; i++)
					if (parseInt(l) == parseInt(points[i].style.left) && parseInt(t) == parseInt(points[i].style.top))
					{
						l = l + generateRand(7);
						t = t + generateRand(2);
					}
				
				left = parseInt(l) + 'px';
				top = parseInt(t) + 'px';
				
				display = 'block';
			}
			
			if (document.all)
				point.firstChild.innerText = 'O'
			else
				point.getElementsByTagName('a')[0].textContent = 'O';
			
			/*
			if (document.all)
				point.firstChild.innerText = charset.charAt(n - 1);
			else
				point.getElementsByTagName('a')[0].textContent = charset.charAt(n - 1);
			*/
		}
	}
}




