/*** PATH ***/

var map = null;
var geocoder = null;
var page = 1;
var dontUpdate = false;

/*** FUNCTION CALLED IN BODY ONLOAD="" ***/

function initialize() {
	  var windowOpened = false;

	  if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("carte_interactive"));

		map.setCenter(new GLatLng(46.8, 2), 5);

		map.addMapType(G_PHYSICAL_MAP);		
		map.setMapType(G_PHYSICAL_MAP);

		map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());

		// React if the map is moved
		GEvent.addListener(map, "moveend", ListenGenerateMap);

		// Initialisation
		//ajax('searchShop.php',makeData(""),generateMap);

		geocoder = new GClientGeocoder();
	  }
  
} 

/*** GOOGLE MAPS MANAGEMENT ***/

function makeData(param) {
var Center = map.getCenter();
  var Limit = map.getBounds();

  var data = 
	param
	+'&Mapzoom='+map.getZoom()
	+'&ctrLat='+Center.lat()
	+'&ctrLon='+Center.lng()
	+'&minLat='+(parseFloat(Limit.getSouthWest().lat())+0)
	+'&maxLat='+(parseFloat(Limit.getNorthEast().lat())-0)
	+'&maxLon='+(parseFloat(Limit.getNorthEast().lng())-0)
	+'&minLon='+(parseFloat(Limit.getSouthWest().lng())+0)
	+'&mapType='+map.getCurrentMapType().getName(true);

 return data;
}

function ListenGenerateMap() {
	   ajax('index.php?portlet=jdb_shop&template=noborder',makeData(),generateMap);
	}

 function generateMap(result) {
		var pepiteInfo;

		// remove overlib popups
		//nd(); 

		var icon_fan = new GIcon();
/*		icon_fan.image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
		icon_fan.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";*/

		icon_fan.image = "/presentation/images/repere.png";
		icon_fan.shadow = "/presentation/images/ombre_repere.png";

		icon_fan.iconSize = new GSize(29, 37);
		icon_fan.shadowSize = new GSize(40, 37);
		icon_fan.iconAnchor = new GPoint(6, 20);
		icon_fan.infoWindowAnchor = new GPoint(5, 1);

		xmlResult=loadXMLString(result);

		map.clearOverlays();
		var marker = new Array();
		var content = new Array();
		var url = new Array();
		var pepLat = null;
		var pepLon = null;
		var pepId = null;
		var pepTopic = null;
		var pepTitle = null;
		var pepPicture = null;
		var pepUrl = null;
		var pepUrl2 = null;
		
		var tableau = xmlResult.getElementsByTagName("pepite");

		for (var i=tableau.length-1; i>=0; i--) {
			 pepId = tableau[i].getElementsByTagName("id")[0].childNodes[0].nodeValue;
			 pepLon = tableau[i].getElementsByTagName("lon")[0].childNodes[0].nodeValue;
			 pepLat = tableau[i].getElementsByTagName("lat")[0].childNodes[0].nodeValue;
			 pepTitle = tableau[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
			 pepUrl = tableau[i].getElementsByTagName("url")[0].childNodes[0].nodeValue;
			 pepUrl2 = tableau[i].getElementsByTagName("url2")[0].childNodes[0].nodeValue;
			 
				  var latlng = new GLatLng(pepLat, pepLon);

				  //url[pepId] = pepUrl;
				  content[pepId] = '<div class="myoverlib"><div class="close"><a href="#" onclick="return cClick();">Fermer</a></div>'+pepTitle+'<br/><a href="'+pepUrl2+'" style="color:white;" onclick="displayShopDetailsFromMap('+pepId+'); return cClick(); ">INFORMATION SUR LA BOUTIQUE</a></div>';

				   marker[i] = new GMarker(latlng, icon_fan);

				   marker[i].pepId = pepId;
			
				  map.addOverlay(marker[i]);
					
					/*GEvent.addListener(marker[i], "click", function() {	
						displayShopDetailsFromMap(pepId);
					});*/
				  GEvent.addListener(marker[i], "mouseover", function() {
					   overlib(content[this.pepId],OFFSETX,0,OFFSETY,0,CENTER,STICKY);
					 });

				  GEvent.addListener(marker[i], "mouseout", function() {
					  nd();
					 });
				}
		
		var pageManagement = '';
		
	}

function showAddress(address) {
      //if (geocoder) {
        geocoder.getLocations(address, goToAddress); 
      //}
    }

 function goToAddress(response) {
	if (!response || response.Status.code != 200) {
		alert('Destination introuvable');
	  } else {
		place = response.Placemark[0];
		accuracy = place.AddressDetails.Accuracy;
		if(accuracy >= 6 ) {
			zoom = 15;
		}
		else if(accuracy >= 4 ) {
			zoom = 13;
		}
		else if(accuracy >= 2 ){
			zoom = 9; 
		}
		else{
			zoom = 5;
		}
		point = new GLatLng(place.Point.coordinates[1],	place.Point.coordinates[0]);
		map.setCenter(point, zoom);
		document.getElementById("carte_interactive").style.visibility = 'visible';
	  }
 }

/***** AJAX MANAGEMENT ********/

function ajax(url, data, CallbackFunction)
{

  var request = window.XMLHttpRequest ?
	  new XMLHttpRequest() :
	  new ActiveXObject("MSXML2.XMLHTTP.3.0");

  request.open("POST", url, true);
  request.setRequestHeader("Content-Type",
						   "application/x-www-form-urlencoded");
  
  request.onreadystatechange = function()  {
	if (request.readyState == 4 && request.status == 200)
	{
	  if (request.responseText && CallbackFunction)
	  {
		  CallbackFunction(request.responseText);
	  }
	}
  };

  request.send(data);

  return false;
}

function ajaxForm(url, formId, id)
{

  var request = window.XMLHttpRequest ?
	  new XMLHttpRequest() :
	  new ActiveXObject("MSXML2.XMLHTTP.3.0");

   var data = '';
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type",
						   "application/x-www-form-urlencoded");

   var form = document.getElementById(formId).elements;


  for(i=0; i<form.length ; i++) {
	data += '&'+form[i].name+'='+form[i].value;
  }
  
  document.getElementById(id).innerHTML = '<img src="images/loading.gif" style="padding:20px;">';
 
  request.onreadystatechange = function()  {
	if (request.readyState == 4 && request.status == 200)
	{
	  if (request.responseText)
	  {
		  document.getElementById(id).innerHTML = request.responseText;
	  }
	}
  };


  request.send(data);

  return false;
}

function loadXMLString(txt) 
{
try //Internet Explorer
  {
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async="false";
  xmlDoc.loadXML(txt);
  return(xmlDoc); 
  }
catch(e)
  {
  try //Firefox, Mozilla, Opera, etc.
    {
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(txt,"text/xml");
    return(xmlDoc);
    }
  catch(e) {alert(e.message)}
  }
return(null);
}

