var geocoder = null;
var map = null;

function gmap_merc_transf( lng, lat )
{
	if( lng >= 180 ) lng = 180;
	if( lng <= -180 ) lng = -180;
	x = 0.5 + lng / 360;

	if( lat >= 85 ) lat = 85;
	if( lat <= -85 ) lat = -85;
	y = Math.log( Math.tan( ( Math.PI / 4 ) + ( Math.PI * lat / 360 ) ) );
	y = 0.5 - y / 6.2;

	return new Array( x, y );
}

function gmap_load( div, lng, lat, marked, zoom, bZoom, bMore, f_lng, f_lat, f_post, txt ) 
{
	if (GBrowserIsCompatible()) 
	{
		map = new GMap2( document.getElementById( div ) );

		GEvent.addListener( map, "click", function( marker, point ) {
			if( point ) {
				clk_lng = point.lng();
				clk_lat = point.lat();
			} else if( marker ) {
				point = marker.getPoint();
				clk_lng = point.lng();
				clk_lat = point.lat();
			}
			pst = document.getElementById(f_post);
			if( pst ) pst.value = clk_lng+";"+clk_lat;
			lng = document.getElementById(f_lng);
			if( lng ) lng.value = clk_lng;
			lat = document.getElementById(f_lat);
			if( lat ) lat.value = clk_lat;
		});

		if( bZoom == 'true' ) map.addControl( new GSmallMapControl() );
 		if( bMore == 'true' ) map.addControl( new GMapTypeControl() );

		coord = new GLatLng( lat, lng )
 		map.setCenter( coord, zoom );
 		map.clearOverlays();
		if (marked == true) {
	 		add_marker(lng, lat, txt);
 		}
	}
}

function add_marker(lng, lat, txt) {
	coord = new GLatLng(lat,lng);
	var icon = new GIcon();
	/* icon.image = "http://81.93.2.86/~ftk_nomadsphere/images/common/bon_plan/marker.png"; */
	icon.image = "./images/common/bon_plan/marker.png";
	icon.iconSize = new GSize(34 ,38);
	/* icon.shadow = "http://81.93.2.86/~ftk_nomadsphere/images/common/bon_plan/marker_shadow.png"; */
	icon.shadow = "./images/common/bon_plan/marker_shadow.png";
	icon.shadowSize = new GSize(65 ,49);
	icon.iconAnchor = new GPoint(0,38);
	icon.infoWindowAnchor = new GPoint(17,40);
	var marker = new GMarker(coord, icon);
	if (txt=="") {
	} else {
	GEvent.addListener(marker, "mouseover", function() {
		marker.openInfoWindowHtml(txt);
	});
	if(map) map.addOverlay(marker);
}
}

function gmap_show_address( mapdiv, field, address, bZoom, bMore ) 
{
	if( ! geocoder ) {
		geocoder = new GClientGeocoder();
	}
	if( geocoder ) {
		geocoder.getLatLng( address, function( point ) {
			if( address == "" ) {
			} else if( ! point ) {
				alert( address +' : '+js_msg_02 );
			} else {
				gmap_load( mapdiv, point.lng(), point.lat(), true, map.getZoom(), bZoom, bMore, field );
				var myM = new GMarker(point);
				map.addOverlay(myM);
				myM.openInfoWindowHtml(address);
				GEvent.addListener(myM, "click", function() {
					myP = myM.getPoint();
					document.getElementById( field ).value = myP.lng()+";"+myP.lat();
					document.getElementById( field+"_lng" ).value = myP.lng();
					document.getElementById( field+"_lat" ).value = myP.lat();
				});
			}
		});
	}
}
function getAddress(mapdiv, field, address) {
	if( ! geocoder ) {
		geocoder = new GClientGeocoder();
	}
	if( geocoder ) {
		geocoder.getLatLng(address, function(point) {
			if( address == "" ) {
		} else if (!point) {
				alert( address +' : '+js_msg_02 );
			} else {
				gmap_load( mapdiv, point.lng(), point.lat(), true, map.getZoom(), bZoom, bMore, field );
				map.setCenter(point, 13);
				var myM = new GMarker(point);
				map.addOverlay(myM);
				myM.openInfoWindowHtml(address);
				GEvent.addListener(myM, "click", function() {
					myP = marker.getPoint();
					document.getElementById("adm_Coords").value = myP.lng()+";"+myP.lat();
					document.getElementById("adm_Coords_lng").value = myP.lng();
					document.getElementById("adm_Coords_lat").value = myP.lat();
				});
				
			}
		});
	}
}

function gmap_init( mapdiv, field, X, Y, marked, zoom, bZoom, bMore, txt ) 
{
	gmap_load( mapdiv, parseFloat(X), parseFloat(Y), marked, zoom, bZoom, bMore, field+"_lng", field+"_lat", field, txt );
}

function gmap_update( field )
{
	lng = document.getElementById( field+"_lng" ).value;
	lat = document.getElementById( field+"_lat" ).value;
	zoom = map.getZoom();

	document.getElementById( field ).value = lng+";"+lat;

	coord = new GLatLng( lat, lng )
	map.setCenter( coord, zoom );
}

function loadGoogleMap( div, lat, lng, zoom, bZoom, bMove ) 
{      
	if( GBrowserIsCompatible() ) 
	{
		var map = new GMap2( document.getElementById( div ) );

		if( bZoom ) map.addControl( new GSmallMapControl() );
		if( bMove ) map.addControl( new GMapTypeControl() );
		coord = new GLatLng( lat, lng )
		map.setCenter( coord, zoom );
		map.openInfoWindow( map.getCenter(), document.createTextNode("Hello, world") );
	 }
}

