
var placeModulePath ="place/";
var _placeMarker = new Array();
var _placeXMLElt = new Array();
var _placeImageElt = new Array();

var placeIcon = new GIcon();
placeIcon.iconSize = new GSize(22, 22);
placeIcon.iconAnchor = new GPoint(0, 0);
placeIcon.infoWindowAnchor = new GPoint(11, 11);

function reloadPlaceMarkers( mapElement)
{
	var debug = false;
	if (debug) {console.info("[PlaceTools.js] [reloadPlaceMarkers] Starting...");}

	
	if (getZoom(mapElement) > 15) {
		if (debug) { console.info("[PlaceTools.js] [reloadPlaceMarkers] Searching square []"); }
		
		latLngBounds = getMap(mapElement).getBounds();
		
	    getPlaceListAjaxWithCoord(
			mapElement,
			latLngBounds.getNorthEast().lat(), 
			latLngBounds.getNorthEast().lng(),
			latLngBounds.getSouthWest().lat(), 
			latLngBounds.getSouthWest().lng());
	}
	
	if (debug) {console.info("[PlaceTools.js] [reloadPlaceMarkers] End");}
}

function getPlaceInfoHTML(xmlEltMarker){
	
	var place_name = xmlEltMarker.place_name; 
	var place_address = xmlEltMarker.place_address; 
	var place_zip = xmlEltMarker.place_zip; 
	var place_city = xmlEltMarker.place_city; 
	var accuracy = xmlEltMarker.accuracy;
	var place_url = xmlEltMarker.place_url;
	
	var moreinfo_string ='';
	var	accuracy_string ='';
	
	
	/*	moreinfo_string = '<div class="bulle_r_contenu">'
					+'<br />'
					+'<a href="javascript:getMap( \'map\').getInfoWindow().maximize();">plus d\'infos &raquo;</a>'
					+'</div>';
		*/			
	if( accuracy <= default_accuracy)
		accuracy_string = '<div class="bulle_r_contenu"><br/>La position est approximative.<br/><div/>';
		
	if( place_address !='')	
		place_address+='<br />';
		
	if( place_name!= '')
		place_name='<strong>'+place_name+'</strong><br />';
	
	var html='<div class="bulle_r" style="float:left;padding-left:10px;padding-top:10px;">'
					+'<div class="bulle_r_titre">'+place_name+'</div>'					
					+'<div class="bulle_r_contenu">'
					+place_address
					+place_zip+' '+place_city
					+'</div>'
					+accuracy_string
					+moreinfo_string
					+'</div>';
	
	return	html;
}

function getPlaceInfoURL(xmlEltMarker){
	var infoUrl = xmlEltMarker.place_url; 
	return	infoUrl;
}

function showPlaceMarker( index)
{
	var optionArray = {};
	selectedMarkerId = _placeXMLElt[index].id;
	
	//optionArray = {maxUrl:getInfoURL( _placeXMLElt[index])};
	
	showResultMap();
	
	_placeMarker[index].openInfoWindowHtml( getPlaceInfoHTML( _placeXMLElt[index]), optionArray);

}

function createPlaceMarker( mapElement, xmlEltMarker) {
	var debug = false;
	if (debug) {console.info("[PlaceTools.js] [createPlaceMarker] Starting...");}

	var latitude = xmlEltMarker.latitude;
	var longitude = xmlEltMarker.longitude;
	var activity = xmlEltMarker.activity;
	var accuracy = xmlEltMarker.accuracy;
	var place_ico = xmlEltMarker.place_ico; 
	
	var gLatLng = new GLatLng(latitude,longitude);
	
	var img_accuracy;
	var letteredIcon;
	
	letteredIcon = new GIcon(placeIcon);
	
	letteredIcon.image = place_ico;
	markerOptions = { icon:letteredIcon };	
	
	var gMarker = new GMarker( gLatLng, markerOptions);
	if (debug) {console.info("[PlaceTools.js] [createPlaceMarker] Creating marker ["+latitude+","+longitude+"]...");}
	
	if (debug) {console.info("[PlaceTools.js] [createPlaceMarker] End");}

	return gMarker;
}

function getPlaceListAjaxWithCoord( mapElement, neLat, neLng, swLat, swLng){
	
	if( $('maploading'))
		$('maploading').setStyle('display', 'block');
	
	new Request.JSON(
	{
		url:contextPath+placeModulePath+'listjson/'+neLat+'/'+neLng+'/'+swLat+'/'+swLng+'/',
		method: 'get',
		encoding:'ISO-8859-1',
		data:"",
		onFailure:managePlaceListErrors,
		onComplete:function(jsonObj) {
				processPlaceList(mapElement, jsonObj);
			}
	}).send();
}


function processPlaceList(mapElement, data) {
	
	var debug = false;
	if (debug) {console.info("[PlaceTools.js] [processEventList] Starting... ");}
	
	var document_root = data[0];
	var num_result = document_root.count;
	var search_value = document_root.search;
	
  	if (num_result == 0) {
		if (debug) {console.debug("[PlaceTools.js] [processEventList] no result");}
				
		if( $('maploading'))
			$('maploading').setStyle('display', 'none');
		
  		return;
  	}
	
	_placeMarker = new Array();
	_placeXMLElt = new Array();
	_placeImageElt = new Array();
	
	
	for (var i = num_result; i > 0 ; i--) {
		var marker = data[i];
		var latitude = marker.latitude;
		var longitude = marker.longitude;
		var typeid = marker.typeid;
		var place_name = marker.place_name;
		
		if (util_isStringZeroNum(latitude) || util_isStringZeroNum(longitude)) {
			console.error("[PlaceTools.js] [processEventList] Marker " + i + " avec lat ou long = 0");
		} else {
			var gMarker = createMarker(mapElement, marker);
			_placeMarker[i] = gMarker;
			_placeXMLElt[i] = marker;
			
			getMap(mapElement).addOverlay( gMarker);
		
		}
	}
	
	if( $('maploading'))
		$('maploading').setStyle('display', 'none');
		
	if (debug) {console.info("[PlaceTools.js] [processEventList] End ");}
}

function managePlaceListErrors() {

	console.error("[PlaceTools.js] [managePlaceListErrors]");

}

