function Wgs2Merc(x, y) {
	var dPI = 3.141592653589793;
	var dLongitudeInRad = x / 180.0 * dPI;
	var dLatitudeInRad = y / 180.0 * dPI;
	var dMercatorX = dLongitudeInRad;
	var dMercatorY;
	var dPretan = dPI / 4.0 + dLatitudeInRad / 2.0;

	if (dPretan != dPI / 2.0)
	{
		var dPrelog = Math.tan (dPretan);
		if (dPrelog != 0.0)
		{
			dMercatorY = -Math.log (dPrelog);
			var retVal = new CCoordinate(dMercatorX, dMercatorY);
			return retVal;
		}
	}
	
	var retVal = new CCoordinate(0, 0);
	return retVal;
}

function Merc2Wgs(x, y) {
	var dPI = 3.141592653589793;
	var dLongitudeInDeg = x / dPI * 180.0;
	var dLatitudeInRad = 2 * Math.atan(Math.exp(-y)) - dPI / 2.0;
	var dLatitudeInDeg = dLatitudeInRad / dPI * 180.0;
	var retVal = new CCoordinate(dLongitudeInDeg, dLatitudeInDeg);
	return retVal;
}

function MousePos2Wgs(x, y) {
	var c1 = Wgs2Merc(g_arrMapData[0].dViewMinX, g_arrMapData[0].dViewMinY);
	var c2 = Wgs2Merc(g_arrMapData[0].dViewMaxX, g_arrMapData[0].dViewMaxY);
	var pixWidth = g_arrMapData[0].iMapWidth;
	var pixHeight = g_arrMapData[0].iMapHeight;
	
	var dX = c1.dX + (x/pixWidth * (c2.dX-c1.dX));
	var dY = c1.dY + ((g_arrMapData[0].iMapHeight - 1 - y)/pixHeight * (c2.dY-c1.dY));
	var converted = Merc2Wgs(dX, dY)
	converted.dX = Math.round(converted.dX * 1000000) / 1000000;
	converted.dY = Math.round(converted.dY * 1000000) / 1000000;
	return converted;
}