
var idlecount=0 ;
var markerArray = []; 
var infoWindow ;

function clearOverlays() {
  if (markerArray) {
    for (i in markerArray) {
      markerArray[i].setMap(null);
    }
  }
}

function bindInfoWindow(marker, map, infoWindow, html) {
	google.maps.event.addListener(marker, 'mouseover', function() {
		if (typeof(infoWindow) != "undefined"){
			infoWindow.close(); 
		}
		infoWindow.setContent(html);
		infoWindow.open(map, marker);
		idlecount=0;
	});

	google.maps.event.addListener(marker, 'mouseout', function() {
		if (typeof(infoWindow) != "undefined"){
			infoWindow.close(); 
		}
	});
}

function bindUrl( marker,url){
        google.maps.event.addListener(marker, 'click', function(e){
                window.open(url);
                return false;
        });
}

function gmapGetActiveLayers(){
	var layers=[] ;
	if ($('#map_layers').length > 0){
		if ($('input#checkbox_1:checked').val()){ layers.push(1) ;} ;
		if ($('input#checkbox_2:checked').val()){ layers.push(2) ;} ;
		if ($('input#checkbox_3:checked').val()){ layers.push(3) ;} ;
		if ($('input#checkbox_4:checked').val()){ layers.push(4) ;} ;
		if ($('input#checkbox_5:checked').val()){ layers.push(5) ;} ;
	}else{
		layers = [1,2,3,4,5] ;
	}

	return layers
}



function initialize(opt) {
	
	/*
	   var myLatlng = new google.maps.LatLng(44.1363149256374,4.80752738075171);
	      zoom: 26,
	      center: myLatlng,
	*/

	var layers = [] ;

	//infoWindow = new google.maps.InfoWindow();


	var ibOptions = {
		content: '' 
		,disableAutoPan: false
		,maxWidth: 0
		,pixelOffset: new google.maps.Size(-100, 0)
		,zIndex: null
		,boxStyle: { 
			background: "url('../../../gmap/tipbox.gif') no-repeat"
			,opacity: 1
			,width: "200px"
		}
		,closeBoxMargin: "10px 2px 2px 2px"
		,closeBoxURL: "../../../gmap/close.gif"
		,infoBoxClearance: new google.maps.Size(1, 1)
		,isHidden: false
		,pane: "floatPane"
		,enableEventPropagation: false
	};


	//infoWindow = new google.maps.InfoBox();
	infoWindow = new InfoBox(ibOptions);


	/*
	mapTypeControlOptions: {
		mapTypeIds: ['coordinate', google.maps.MapTypeId.ROADMAP],
		style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
	}
	*/
	var myOptions = {
		mapTypeId: google.maps.MapTypeId.ROADMAP,
		scrollwheel: false,
		scaleControl: true,
		navigationControlOptions: {
			style: google.maps.NavigationControlStyle.SMALL
		}
	}

	mybaseurl = 'http://www.provenceweb.fr/gmap/' ;

	myurl = mybaseurl + 'gmap.php?' ; 

	if (typeof(opt['city']) != "undefined" ){
		myurl = mybaseurl + 'gmap.php?city=' + opt['city']
	}

	if (typeof(opt['id_master']) != "undefined" ){
		myurl = mybaseurl + 'gmap.php?id_master=' + opt['id_master']
	}

	if (typeof(opt['locationid']) != "undefined"){
		myurl = mybaseurl + 'gmap.php?locationid=' + opt['locationid']
	}

	myurl = myurl + '&layers=' + gmapGetActiveLayers().join('-') ;

	if (typeof(opt['maxdistkm']) != "undefined"){
		myurl = myurl + '&maxdistkm=' + opt['maxdistkm']  ;
	}


	if (typeof(opt['maptype']) != "undefined" ){
		myOptions['mapTypeId'] = eval('google.maps.MapTypeId.' + opt['maptype'] ) ;
	}

	var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);


	var customIcons = {
		1: mybaseurl + 'ico/mapiconpoi1.png' ,
		2: mybaseurl + 'ico/mapiconpoi2.png' ,
		3: mybaseurl + 'ico/mapiconpoi3.png' ,
		4: mybaseurl + 'ico/mapiconpoi4.png' ,
		5: mybaseurl + 'ico/mapiconpoi5.png' 
	};



	if (typeof(opt['autoloadmarkers']) == "undefined" ) {
	google.maps.event.addListener(map, 'idle', function(){
		idlecount++;
		if (idlecount>1){
			clearOverlays();
			var currentcenter = map.getCenter();
			myurl = mybaseurl + 'gmap.php?lat=' + currentcenter.lat() +'&lon=' + currentcenter.lng() + '&layers=' + gmapGetActiveLayers().join('-')  ; 
			$.get(myurl, function(data) {
				//var markerArray = [];
				var LatLngList = [] ; 
				var markers = data.documentElement.getElementsByTagName("marker");
	
				//infoWindow = new google.maps.InfoWindow();
				var markerBounds = new google.maps.LatLngBounds();

				for (var i = 0; i < markers.length; i++) {
					var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
					var title = markers[i].getAttribute("title") ;
					var url = markers[i].getAttribute("url") ;
					var type = markers[i].getAttribute("type") ;
					var icon = customIcons[type] || '' ;
					var html = '<div class="locationdata" style="font-size:11px;width:200px;background-color:#FFFDEB;margin-top:6px;border: 1px solid #662D91; border-radius: 4px;"><div style="margin:4px"><a href="' +  url + '" class="title" target="_blank">' + title + '</a>' + '<div>' + $(markers[i]).text() + '</div></div></div>' ;

					var marker = new google.maps.Marker({
						position: latlng,
						map: map,
						url: url,
						icon: icon
					});

					markerArray.push(marker);

					bindUrl( marker,url);

					bindInfoWindow( marker, map, infoWindow, html );

					LatLngList.push(latlng) ;
				}
	
				/*
				var bounds = new google.maps.LatLngBounds();
				for (var j = 0 ; j < LatLngList.length ; j++) {
					//  And increase the bounds to take this point
					bounds.extend(LatLngList[j]);
				}
				*/

			});
		};

	});
	};

	$.get(myurl, function(data) {
		//var markerArray = [];
		var LatLngList = [] ; 
		var markers = data.documentElement.getElementsByTagName("marker");

		var markerBounds = new google.maps.LatLngBounds();

		for (var i = 0; i < markers.length; i++) {
			var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
			var title = markers[i].getAttribute("title") ;
			var url = markers[i].getAttribute("url") ;
			var type = markers[i].getAttribute("type") ;
			var icon = customIcons[type] || '' ;
			var html = '<div class="locationdata" style="font-size:11px;width:200px;background-color:#FFFDEB;margin-top:6px;border: 1px solid #662D91; border-radius: 4px;"><div style="margin:4px;"><a href="' +  url + '" class="title" target="_blank">' + title + '</a>' + '<div>' + $(markers[i]).text() + '</div></div></div>' ;

			var marker = new google.maps.Marker({
				position: latlng,
				map: map,
				url: url,
				icon: icon
			});

			markerArray.push(marker);

			bindUrl( marker,url);

			bindInfoWindow( marker, map, infoWindow, html );

			LatLngList.push(latlng) ;
		}
	
		var bounds = new google.maps.LatLngBounds();
		for (var j = 0 ; j < LatLngList.length ; j++) {
			//  And increase the bounds to take this point
			bounds.extend(LatLngList[j]);
		}

                if (typeof(opt['zoom']) != "undefined" ){
                        map.setCenter(new google.maps.LatLng(parseFloat(markers[0].getAttribute("lat")), parseFloat(markers[0].getAttribute("lng")))) ;
                        map.setZoom(opt['zoom']) ;
                }else{
                        map.fitBounds(bounds);
                }
	});

}

