/**
 *
 */
function addGMap(point){

	content = '<div id="maphelp" class="googlemaphelp">'+GMAP_HELP+'</div>'+
	'<div id="map" class="googlemap"></div>'+
	'<table class="buttons" cellpadding="4" cellspacing="0"><tr><td>'+
		'<a href="javascript://" onclick="saveGMap(); return false;" class="ok">'+GMAP_BT_DONE+'</a>'+
		'</td><td><a href="javascript://" onclick="clearGMap(); return false;" class="cancel">'+GMAP_BT_CLOSE+'</a>'+
		'</td><td><a href="javascript://" onclick="GUnload(); hideOverlay(); return false;" class="cancel">'+GMAP_BT_EXIT+'</a>'+
	'</td></tr></table>';
	$('messageContainer').update(getPopinContainer(GMAP_TITLE, content));
	showOverlay();

	GMaps.init();

	if(point){
		eval('GMaps.showByPoint(' + point + ', true);');
	} else {
		//GMaps.showByPoint( {lat:42.45209690919285,lng:25.257431640625}, 7, false, true );
		GMaps.showByPoint( {lat:42.70237055608708,lng:23.33942413330078}, 11, false, true );
	}

	Event.observe(window, 'unload', function(){
		GUnload();
	});

}

/**
 *
 */
function saveGMap(){
	
	latlng = GMaps.marker.getLatLng();
	
	$('artGoogleMap').value = '{lat:' + latlng.lat() + ',lng:' + latlng.lng() + '}, ' + GMaps.map.getZoom() +
		', \'' + GMaps.map.getCurrentMapType().getName(true) + '\'';
	
	$('artGoogleMapLink').innerHTML = GMAP_UPDATE;
	
	GUnload();
	hideOverlay();

}

/**
 *
 */
function clearGMap(){
	
	$('artGoogleMap').value = '';	
	$('artGoogleMapLink').innerHTML = GMAP_TITLE;
	
	GUnload();
	hideOverlay();

}

/**
 * 
 */
var GMaps = {
 
	map : null, 
	
	marker : null,
	
	zoom : 7, 
	
	latlng : {lat:42.45209690919285,lng:25.257431640625},
	
	init : function(target) {
		
		if (!GBrowserIsCompatible()) {
			return null;
		}
		
		target = target || 'map';
		GMaps.map = new GMap2(document.getElementById(target));
		
		// map.setUIToDefault();
		mapUI = GMaps.map.getDefaultUI();
		mapUI.maptypes.hybrid = false;
		// mapUI.maptypes.physical = false;
		GMaps.map.setUI(mapUI);
		
	}, 
	
	showByAddress : function(address, zoom, type, draggable){
		
		GMaps.zoom = zoom ? zoom : GMaps.zoom;
		
		geocoder = new GClientGeocoder();
		geocoder.getLatLng(address, function(point) { 
			
			if(point){
				
				GMaps.map.setCenter(point, GMaps.zoom);
				GMaps.map.disableScrollWheelZoom();
				
				if(type){
					GMaps.setMapType(type);
				}
				
				GMaps.marker = new GMarker(point, {draggable: draggable});	
				GMaps.map.addOverlay(GMaps.marker);
				
				GMaps.addEvents(draggable);
				
			}
			
		}); 
		
	},
	
	showByPoint : function(point, zoom, type, draggable){
		
		GMaps.zoom = zoom ? zoom : GMaps.zoom;
		
		point = new GLatLng(point.lat, point.lng);
		
		GMaps.map.setCenter(point, GMaps.zoom);
		GMaps.map.disableScrollWheelZoom();
		
		if(type){ 
			GMaps.setMapType(type);
		}
		
		GMaps.marker = new GMarker(point, {draggable: draggable});		
		GMaps.map.addOverlay(GMaps.marker);
		
		GMaps.addEvents(draggable);
		
	}, 
	
	setMapType : function(type){
		types = GMaps.map.getMapTypes();
		for(i=0; i<types.length; ++i){
			if(types[i].getName(true) == type){
				GMaps.map.setMapType(types[i]);
			}
		}
	},
	
	addEvents : function(draggable){
		
		if(draggable){
		
			/*GEvent.addListener(GMaps.marker, "dragstart", function() {
				GMaps.map.closeInfoWindow();
			});*/
	
			/*GEvent.addListener(GMaps.marker, "dragend", function() { 
				alert(GMaps.marker.getLatLng() + '/' + GMaps.map.getZoom());
			});*/
			
			GEvent.addListener(GMaps.map, "dragend", function() { 
				GMaps.marker.setLatLng(GMaps.map.getCenter());
			});
			
			GEvent.addListener(GMaps.map, "zoomend", function() { 
				GMaps.marker.setLatLng(GMaps.map.getCenter());
			});
			
			/*GEvent.addListener(GMaps.map, "click", function(overlay, latlng, overlaylatlng) { 
				if(!overlay){ GMaps.marker.setLatLng(latlng); }
			});*/
		
		} else {
			
			GEvent.addListener(GMaps.map, "zoomend", function() { 
				GMaps.marker.setLatLng(GMaps.marker.getLatLng());
			});
			
		}
			
	}
	
};
