
var mediaModulePath ="media/";
var _mediaMarker = new Array();
var _mediaXMLElt = new Array();
var _mediaImageElt = new Array();

var mediaIcon = new GIcon();
mediaIcon.iconSize = new GSize(19, 19);
mediaIcon.iconAnchor = new GPoint(10, 10);
mediaIcon.infoWindowAnchor = new GPoint(10, 10);

function reloadMediaMarkers( mapElement)
{
	var debug = false;
	if (debug) {console.info("[MediaTools.js] [reloadMediaMarkers] Starting...");}

	
	if (getZoom(mapElement) > 3) {
		if (debug) { console.info("[MediaTools.js] [reloadMediaMarkers] Searching square []"); }
		
		latLngBounds = getMap(mapElement).getBounds();
		
	    getMediaListAjaxWithCoord(
			mapElement,
			latLngBounds.getNorthEast().lat(), 
			latLngBounds.getNorthEast().lng(),
			latLngBounds.getSouthWest().lat(), 
			latLngBounds.getSouthWest().lng());
	}
	
	if (debug) {console.info("[MediaTools.js] [reloadMediaMarkers] End");}
}

function getMediaInfoHTML(xmlEltMarker){
	
	var latitude = xmlEltMarker.latitude; 
	var longitude = xmlEltMarker.longitude; 
	var draggable = xmlEltMarker.draggable; 
	
	var url = contextPath+'/media/getbyplace/'+latitude+'/'+longitude+'/'+0;
	var accuracy_string ='';
	
	var myMediaContent = new Request.HTML( {async:false} ).get( url);
	
	if( draggable == true)
	{
		accuracy_string = '<div class="bulle_r_contenu" style="width:100%;float:left;text-align:center;"><br/>Vous pouvez d&eacute;placer ce marqueur si c&rsquo;est n&eacute;c&eacute;ssaire.</div>';
	}
	
	var html='<div id="mediaPlaceContainer0">'+myMediaContent.response.html+accuracy_string+'</div>';
	return html;
}

function showMediaMarker( mapElement, index)
{
	selectedMarkerId = -1;
	
	showResultMap();
	
	var content = getMediaInfoHTML( _mediaXMLElt[index]);
	var optionArray = { };
	
					
	_mediaMarker[index].openInfoWindowHtml( content, optionArray);
	
	
	SqueezeBox.parsers.swf = function(preset) {
			return (preset || this.url.test(/\.swf/)) ? this.url : false;
		};
		 
	SqueezeBox.handlers.swf = function( url) {
		var size = this.options.size; 
		var swiff = new Swiff('/medias/flash/player.swf', {
			id: 'sbox-swf',
			width: size.x,
			height: size.y,
			params: {
				allowfullscreen: 'true',
				allowscriptaccess: 'always',
				flashvars: 'file='+url,
				autostart: 'true'
			}
		});
		return swiff;
	};						
	
	SqueezeBox.assign($$('a.boxed'), {
		parse: 'rel'
	});
	
	new Tips('.Tips', {
        maxTitleChars: 80  
    });	
	
}

function createMediaMarker( mapElement, xmlEltMarker) {
	var debug = false;
	if (debug) {console.info("[MediaTools.js] [createMediaMarker] Starting...");}

	var latitude = xmlEltMarker.latitude;
	var longitude = xmlEltMarker.longitude;
	var draggable = xmlEltMarker.draggable;
	var media_ico = '/medias/images/flags/camera_icon.png'; 
	
	var gLatLng = new GLatLng(latitude,longitude);
	
	var letteredIcon;
	
	letteredIcon = new GIcon(mediaIcon);
	letteredIcon.image = media_ico;
	
	markerOptions = 
	{ 
		icon:letteredIcon, 
		draggable:false, 
		zIndexProcess:function(){ 
			return -9999999-_mediaMarker.length;
		}	
	};
	
	if( draggable == true)
	{
		markerOptions = 
		{ 
			icon:letteredIcon, 
			draggable:true, 
			zIndexProcess:function(){ 
				return -9999999-_mediaMarker.length;
			}
		};
	}
	
	var gMarker = new GMarker( gLatLng, markerOptions);
	if (debug) {console.info("[MediaTools.js] [createMediaMarker] Creating marker ["+latitude+","+longitude+"]...");}
	
	
	GEvent.addListener(gMarker, "dragstart", function() {
          getMap( mapElement).closeInfoWindow();
        });

     GEvent.addListener(gMarker, "dragend", function() {
			updateMediaLocation( gMarker, latitude, longitude);
        });
	
	
	if (debug) {console.info("[MediaTools.js] [createMediaMarker] End");}

	return gMarker;
}

function getMediaListAjaxWithCoord( mapElement, neLat, neLng, swLat, swLng){
	
	if( $('maploading'))
		$('maploading').setStyle('display', 'block');
	
	new Request.JSON(
	{
		url:contextPath+mediaModulePath+'listjson/'+neLat+'/'+neLng+'/'+swLat+'/'+swLng+'/',
		method: 'get',
		encoding:'ISO-8859-1',
		data:"",
		onFailure:manageMediaListErrors,
		onSuccess:function(jsonObj) {
				processMediaList(mapElement, jsonObj);
			}
	}).send();
}


function processMediaList(mapElement, data) {
	
	var debug = false;
	if (debug) {console.info("[MediaTools.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("[MediaTools.js] [processEventList] no result");}
				
		if( $('maploading'))
			$('maploading').setStyle('display', 'none');
		
  		return;
  	}
	
	_mediaMarker = new Array();
	_mediaXMLElt = new Array();
	_mediaImageElt = new Array();
	
	
	for (var i = num_result; i > 0 ; i--) {
		var marker = data[i];
		var latitude = marker.latitude;
		var longitude = marker.longitude;
		
		if (util_isStringZeroNum(latitude) || util_isStringZeroNum(longitude)) {
			console.error("[MediaTools.js] [processEventList] Marker " + i + " avec lat ou long = 0");
		} else {
			var gMarker = createMarker(mapElement, marker);
			_mediaMarker[i] = gMarker;
			_mediaXMLElt[i] = marker;
			
			getMap(mapElement).addOverlay( gMarker);
		
		}
	}
	
	if( $('maploading'))
		$('maploading').setStyle('display', 'none');
		
	if (debug) {console.info("[MediaTools.js] [processEventList] End ");}
}

function manageMediaListErrors() {

	console.error("[MediaTools.js] [manageMediaListErrors]");

}

