var _map = null;
var _mgr = null;
var _xmlParser = null;
var divMapSideBar = null;
var siteIdSelected = null;
var siteSelectedId = 0;
var urlReserve = '<br /><a href="#" onclick="return goSiteSelected();"><img src="images/bt/reserver_02.gif" alt="Réserver un box" /></a>';
var txt_no_site_find = '<em>Aucun site trouvé dans cette zone</em>';

var services_images = [];
services_images[1] = 'acces-illimite-24-24-7-7.html';
services_images[2] = 'box-acces-direct.html';
services_images[3] = 'box-interieur2.html';
services_images[4] = 'cave-a-vin.html';
services_images[5] = 'location-utilitaire.html';
services_images[6] = 'parking.html';
services_images[7] = 'temperature-controlee.html';
services_images[8] = 'vente-de-cartons.html';
services_images[9] = 'video-surveillance.html';
services_images[10] = 'wifi-gratuit.html';

if( !lat )var lat = '';
if( !lng )var lng = '';

function setupMap(){
	if(GBrowserIsCompatible()){
		
		_map = new GMap2(document.getElementById('map'));
		// _map.addControl(new GLargeMapControl());
		_map.addControl(new GSmallMapControl());
		
		if(lng != '' && lat != ''){
			// coordonnée du code postal recherché
			var point = new GLatLng(lat, lng);
			_map.setCenter(point, 10);
		}
		else {
			// cordonnées par défaut : Paris
			// _map.setCenter(new GLatLng(48.8566, 2.3442), 6);
			//	cordonnées par défaut : Cntrer sur la France
			_map.setCenter(new GLatLng(46.407564, 2.570801), 5);
		}
		_map.enableContinuousZoom();
		_map.enableScrollWheelZoom();
		
		GEvent.addListener(_map, 'moveend', getMarkers);	
		
		window.setTimeout(setupMarkers, 0);
		
	}
}

function setupMarkers(){
	
	_mgr = new MarkerManager(_map);		
	getMarkers();
	
	GEvent.addListener( _map.getInfoWindow(),"closeclick", function(){
		
		$$('div .divMapSideBarSelected').each(function( el ){
			el.className = 'divMapSideBarOut';
			siteIdSelected = null;
		});
		getMarkers();
	});
	
}

function getMarkers(){
	
	var bounds = _map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	
	_mgr.clearMarkers();
	GDownloadUrl('js/mapgetmarkers.xmldde8.html?co='+ Math.round(southWest.lng()*100000)/100000 +','+ Math.round(southWest.lat()*100000)/100000 +';'+ Math.round(northEast.lng()*100000)/100000 +','+ Math.round(northEast.lat()*100000)/100000 +'&zoom=' + _map.getZoom(), function(data){
		
		var _xmlParser = GXml.parse(data);
//		var markersData = _xmlParser.documentElement.getElementsByTagName('marker');
		var markersData = _xmlParser.getElementsByTagName('marker');
		
		var markers = [];
		
		if( divMapSideBar ){
			
			divMapSideBar.innerHTML = '';
			
		}else{
			
			divMapSideBar = document.createElement('div');
			divMapSideBar.className = 'divMapSideBar';
			// divMapSideBar.style.marginTop = '0px';
			// divMapSideBar.style.marginLeft = document.getElementById('map').style.width;
			// divMapSideBar.style.height = document.getElementById('map').style.height;
			$( 'map' ).appendChild( divMapSideBar );
			
			divMapSideBar.a
		}
		
		if( !markersData.length )
			divMapSideBar.innerHTML = txt_no_site_find;
		
		for(var i = 0; i < markersData.length; i++){
			
			var id = markersData[i].getAttribute('id');
			var name = markersData[i].getAttribute('name');
			var address = markersData[i].getAttribute('address');
			var email = markersData[i].getAttribute('email');
			var phone = markersData[i].getAttribute('phone');
			var horaires = markersData[i].getAttribute('horaires');
			var lat = parseFloat( markersData[i].getAttribute( 'lat' ) );
			var lng = parseFloat( markersData[i].getAttribute( 'lng' ) );
			var services = markersData[i].getAttribute( 'services' );
			var arr_services = services.split( '#' );
			
			var service_name = '';
			var service_url_img = '';
			var arr_service = '';
			
			if( services.indexOf( '#' ) != -1 ){
				services = '';
				for( var i_service = 0 ; i_service < arr_services.length ; i_service++ ){
					
					arr_service = arr_services[i_service].split( '|' );
					service_name = arr_service[1];
					service_url_img = services_images[arr_service[0]];
					
					services += '<img title="' + service_name + '" src="images/services/' + service_url_img + '" class="tips-services" />';
					
				}
			}
			
			//	Affichage des infos bulles et liste des sites
			var html = 
			'<div class="map_info_titre">' +
			'<img src="showimage.php?id=' + id + '" /><br />' +
			name +
			'</div>' +
			'<div class="map_info_address">' +
			address +
			'<br />'+
			'Téléphone : ' + phone +
			'<br />'+
			'Horaires : ' + horaires +
			'<br />'+
			'Services :'+ services +
			'</div>';
			
			
			var div = document.createElement( 'div' );
			var latlng = new GLatLng( lat, lng );
			var marker1 = new GMarker( latlng );
			div.id = 'divMapSideBar_' + id;
			
			
			if( !$('isConnect') ){
//				urlReserve = '';
			}else if( $('isConnect').value != id ){
				urlReserve = '';
			}
			
			if( siteIdSelected == div.id )
				div.className = 'divMapSideBarSelected';
			else
				div.className = 'divMapSideBarOut';
			
//			if( siteIdSelected == div.id ) div.setHTML(html + urlReserve);
//			else div.innerHTML = html;
			if( siteIdSelected == div.id ) div.innerHTML = html + urlReserve;
			else div.innerHTML = html;
			
//			_map.addOverlay(marker1);
			
			divMapSideBar.appendChild(div);
			
			$('divMapSideBar_' + id).onclick = new Function(
				'siteIdSelected = this.id;' +
				'var latlng = new GLatLng( '+ lat +', '+ lng +' );' +
				'var marker1 = new GMarker( latlng );' +
				'_map.addOverlay(marker1);' +
				'marker1.openInfoWindow( \'' + html.replace("'","\\'") + urlReserve + '\' );' +
				'getMarkers();'
			);
//			$('divMapSideBar_' + id).removeEvent('click').addEvent('click', function(){
//				siteIdSelected = this.id;
//				var latlng = new GLatLng( lat , lng );
//				var marker1 = new GMarker( latlng );
//				_map.addOverlay(marker1);
//				marker1.openInfoWindow( html.replace("'","\\'") + urlReserve );
//				getMarkers();
//			});
			
//			$('divMapSideBar_' + id).onmouseover = new Function( 'if( this.className != \'divMapSideBarSelected\' )this.className=\'divMapSideBarOver\'' );
//			$('divMapSideBar_' + id).onmouseout = new Function( 'if( this.className != \'divMapSideBarSelected\' )this.className=\'divMapSideBarOut\'' );
			$('divMapSideBar_' + id).addEvent('mouseover', function(){
				if( this.className != 'divMapSideBarSelected' )this.className='divMapSideBarOver';
			});
			$('divMapSideBar_' + id).addEvent('mouseout', function(){
				if( this.className != 'divMapSideBarSelected' )this.className='divMapSideBarOut';
			});
			
			markers.push( setMarker( markersData[i], html ) );
			
		}
		_mgr.addMarkers(markers, 3);
		_mgr.refresh();
		
		new Tips($$('.tips-services'), {'className' : 'services'});
		
	});
}


function setMarker( markerData, html ){
	
	var latlng = new GLatLng(parseFloat(markerData.getAttribute('lat')), parseFloat(markerData.getAttribute('lng')));
	var marker = new GMarker(latlng);
	
	if(markerData.getAttribute('name') != ""){
		GEvent.addListener(marker, 'click', function(){
			
			var id = markerData.getAttribute( 'id' );
			$$('div .divMapSideBarSelected').each(function( el ){
				el.className = 'divMapSideBarOut';
			});
			
			siteIdSelected = 'divMapSideBar_' + id;
			
			$('divMapSideBar_' + id ).className = 'divMapSideBarSelected';
			
			if( $('isConnect') && $('isConnect').value != id ){
				urlReserve = '';
			}
			
			html = html + urlReserve;
			
			marker.openInfoWindowHtml( html  );
			
		});
		
	}
	
	return marker;
	
}

window.addEvent('load', function(){
	
	setupMap();
	window.onunload = GUnload;
	//window.onload = setupMap;
	
});
