function getURLVar (nomVariable)
{
	var infos = location.href.substring(location.href.indexOf("?")+1, location.href.length)+"&"
	if (infos.indexOf("#")!=-1)
		infos = infos.substring(0,infos.indexOf("#"))+"&"
	var variable=0
	{
		nomVariable = nomVariable + "="
		var taille = nomVariable.length
		if (infos.indexOf(nomVariable)!=-1)
			variable = infos.substring(infos.indexOf(nomVariable)+taille,infos.length).substring(0,infos.substring(infos.indexOf(nomVariable)+taille,infos.length).indexOf("&"))
	}
	return variable
}


function GPSPosIt( ObjChamp , num){
	 var tempoArray=ObjChamp.value.split(",")
	 if(tempoArray.length==2){ 
	 	ShowLatLong(tempoArray[0],tempoArray[1] ,num) 
	 }else{
	    
	      var vLat = map.getCenter().lat().toString()
	      var vLng = map.getCenter().lng().toString()
	      vLat = vLat.substr(0, vLat.indexOf(".") + 7)
	      vLng = vLng.substr(0, vLng.indexOf(".") + 7)
	      ShowLatLong(vLat,vLng ,num) 
	 }
}   
    
window.focus()    
var ChampsGPSArray //="ChampTC04#ChampTC03".split("#");
    
    

   
var mMarker=new Array();
var map;
var geocoder = null;
var zoom=16
var lastZoomNum=0

var baseIcon = new GIcon();
//baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.shadow = "/CommunsGen/Images/Markers/numbers_red/markershadow.png";
baseIcon.iconSize = new GSize(20, 34);
baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconAnchor = new GPoint(9, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);


function createMarker(point,num, name, MarkerID,markerorientation,html) {
	if ( markerorientation === undefined ) {
		markerorientation = '';
	}


		
	var letter = String.fromCharCode("A".charCodeAt(0) + num);  
	var icon = new GIcon(baseIcon);  
	//icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";  
	if (markerorientation=='droite') {
		icon.iconSize = new GSize(26, 30);
		icon.shadowSize = new GSize(0, 0);
		icon.iconAnchor = new GPoint(0, 30);
	} else {
		if (markerorientation=='gauche') {
			icon.iconSize = new GSize(26, 30);
			icon.shadowSize = new GSize(0, 0);
			icon.iconAnchor = new GPoint(26, 30);
		}
	}
	icon.image = "/CommunsThema/Images/Markers/numbers_red/marker" + markerorientation + MarkerID + ".png";
	var marker = new GMarker(point, {icon: icon} );
	
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	});
	
	map.setCenter(point);
	gmarkers[MarkerID] = marker;
	htmls[MarkerID] = html;
	return marker;
}


var gmarkers = [];
var htmls = [];

function load() {
	var	ChampsGPS=""
	var data=document.getElementById( "XMLMarkers" ).value
	
  if (GBrowserIsCompatible() && data!="" ) {
  	
    map = new GMap2(document.getElementById("map"));
	geocoder = new GClientGeocoder();
    
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());

	var point=null;
	//var data=window.opener.document.getElementById( getURLVar("XMLMarkers") ).value
	
	
	
	
	
	
	//alert(GoogleMapsXML)
	
	var xml = GXml.parse(data);
	 var markers = xml.documentElement.getElementsByTagName("marker");


	  for (var i = 0; i < markers.length; i++) {
	    var name = markers[i].getAttribute("name");
	    var ll = markers[i].getAttribute("ll");
	   
	    
		if (ll!=""){
			var tempoArray=ll.split(",")
			if(tempoArray.length==2){ 
					if (!(isNaN(tempoArray[0]) || isNaN(tempoArray[1]))) {
						point = new GLatLng(parseFloat(markers[i].getAttribute("ll").split(",")[0]),
	                            parseFloat(markers[i].getAttribute("ll").split(",")[1]));
					}else{
						point=null
					}
			}else{
				point=null
			}
		   
		}
	    if (point){
	    	 
		    var MarkerID = markers[i].getAttribute("MarkerID");
		    var markerorientation = markers[i].getAttribute("MarkerOrientation");
		    var MarkerOrdre = markers[i].getAttribute("MarkerOrdre");
		    
		   /* var point = new GLatLng(parseFloat(markers[i].getAttribute("ll").split(",")[0]),
		                            parseFloat(markers[i].getAttribute("ll").split(",")[1]));
			*/
			//var html=markers[i].nodeValue
			//alert("avbant")
			var html="<table width='"+ markers[i].getAttribute("HtmlWidth") +"'><tr><td>"+ xml.getElementsByTagName("marker")[i].firstChild.nodeValue +"</td></tr></table>"
			
			
		    var marker = createMarker(point,i, name, MarkerOrdre,markerorientation,html);
		    
		    map.addOverlay(marker);
		    ChampsGPS+=((ChampsGPSArray!="")?"#":"")+markers[i].getAttribute("ll")
		    if (parseInt(getURLVar("SelectMarkerID")) == parseInt(MarkerID) ){
		    	marker.openInfoWindowHtml(html);
		    }
	    }
	  }
	





    var nbreElements=0
    var SomLongitude=0
    var SomLatitude=0
    var MaxLongitude=-999999999
    var MaxLatitude=-999999999
    var MinLongitude=999999999
    var MinLatitude=999999999
    
    ChampsGPSArray=ChampsGPS.split("#")
    for( var i=0 ; i<ChampsGPSArray.length ;i++){ 
    	var Valeur=ChampsGPSArray[i]
    	if (Valeur!=""  ){

    		var tempArray=Valeur.split(",")
    		SomLatitude+=parseFloat(tempArray[0])
    		SomLongitude+=parseFloat(tempArray[1])
    		
			//var vPoint = new GLatLng( parseFloat(tempArray[0]), parseFloat(tempArray[1]) );
	        //AddMarker(vPoint,i);  
    		
    		nbreElements++
    		
    		if(MaxLongitude<tempArray[0]) MaxLongitude=parseFloat(tempArray[0])
    		if(MaxLatitude<tempArray[1]) MaxLatitude=parseFloat(tempArray[1])
    		if(MinLongitude>tempArray[0]) MinLongitude=parseFloat(tempArray[0])
    		if(MinLatitude>tempArray[1]) MinLatitude=parseFloat(tempArray[1])
    	}
    }
    
    if (nbreElements>1){
    	var DifLongitude=MaxLongitude-MinLongitude
    	var DifLatitude=MaxLatitude-MinLatitude
    	var Dif=(DifLongitude>DifLatitude)?DifLongitude:DifLatitude;
    	//alert( MaxLongitude +"- "+ MinLongitude +"-"+  MaxLatitude +"-"+ MinLatitude +"==="+ Dif )
    	
    	
    	if (Dif<80) zoom=15
    	if (Dif<40) zoom=14
    	if (Dif<20) zoom=13
    	if (Dif<10) zoom=12
    	if (Dif<4.47) zoom=11
    	if (Dif<2.36) zoom=10
    	if (Dif<1.18) zoom=9
    	if (Dif<0.57) zoom=8
    	if (Dif<0.27) zoom=7
    	if (Dif<0.13) zoom=6
    	if (Dif<0.065) zoom=5
    	if (Dif<0.030) zoom=4
    	if (Dif<0.021) zoom=3
    	if (Dif<0.013) zoom=2
    	if (Dif<0.008) zoom=1
    	//alert(Dif +" zoom "+ zoom)
    }
   
   if(nbreElements==1){
   	zoom=4
   }
   
   if(nbreElements==0){
   	SomLatitude=45.521743
   	SomLongitude=2.548828
   	nbreElements=1
   	zoom=12
   }
   
   if(getURLVar("zoom")!=""){
   	zoom=parseInt(getURLVar("zoom"))
   }
  
  
  if (getURLVar("zoom") !=""){
	zoom=getURLVar("zoom")
	}
  
   zoom=17-zoom
   
   
   map.setCenter(new GLatLng( SomLatitude/nbreElements , SomLongitude/nbreElements ), zoom);
   //map.enableScrollWheelZoom();

	
	/*
		// dessiner une ligne 
       var polyline = new GPolyline([
       new GLatLng(42.7548,4.7298),
       new GLatLng(46.7548,4.8298),
           new GLatLng(47.7548,4.9298)
        ], "#FF0000", 10);
        map.addOverlay(polyline);
   */
  }




}
    
function ShowLatLong(vLat,vLong,num) {
  //var vLat = document.getElementById("txtLatitude").value
  //var vLong = document.getElementById("txtLongitude").value
  if (isNaN(vLat) || isNaN(vLong)) {
    alert("Latitude et longitude doivent correspondre à des nombres.");
  } else {
    var vPoint = new GLatLng(vLat, vLong);
    if (mMarker[num]){
    	CreateMarker(vPoint,num);
    }else{
    	AddMarker(vPoint,num)
    }
    mMarker[num].openInfoWindowHtml(GetInfoText(num));
  }
}
    
    
 function AddMarker(vPoint,num) {
 //map.clearOverlays();
  map.setCenter(vPoint);
  
  mMarker[num] = CreateMarker(vPoint,num);
  var vInfoText = GetInfoText(num);
  map.addOverlay(mMarker[num]);
  mMarker[num].openInfoWindowHtml(vInfoText);
  //GEvent.addListener(map, "maptypechanged", function() {mMarker[num].openInfoWindowHtml(GetInfoText(num));});
  //GEvent.addListener(map, "zoomend", function(oldLevel,  newLevel) {mMarker[lastZoomNum].openInfoWindowHtml(GetInfoText(lastZoomNum));});  
}
    
function GetInfoText(num) {
  var vLat = mMarker[num].getPoint().lat().toString()
  var vLng = mMarker[num].getPoint().lng().toString()
  vLat = vLat.substr(0, vLat.indexOf(".") + 7)
  vLng = vLng.substr(0, vLng.indexOf(".") + 7)
  var vInfoText = "<b>Lat: </b> " + vLat + "<br/><b>Long: </b>" + vLng + "<br/><b>Zoom: </b>"  + (17 - map.getZoom());
  lastZoomNum=num
  return vInfoText;
}
    
/*
function CreateMarker(vPoint, num) {
  
  if (mMarker[num]){
		mMarker[num].setPoint(vPoint)
		map.setCenter(vPoint);
  }else{
  
  
  		var letter = String.fromCharCode("A".charCodeAt(0) + num);  
  		var icon = new GIcon(baseIcon);  
  		icon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";  
  		
  
      mMarker[num] = new GMarker(vPoint, {icon: icon  , draggable: true});
      var vInfoText = GetInfoText(num);
      GEvent.addListener(mMarker[num], "click", function() {var vInfoText = GetInfoText(num); mMarker[num].openInfoWindowHtml(vInfoText);});
      //GEvent.addListener(mMarker[num], "dragstart", function() {map.closeInfoWindow();});
      //GEvent.addListener(mMarker[num], "dragend", function() {var vInfoText = GetInfoText(num); mMarker[num].openInfoWindowHtml(vInfoText);UpdateChamp(mMarker[num].getPoint(),num);});
  }
  return mMarker[num];
}
*/

//load()
function StartRecherche(){
	
	//alert("coucou1")
	DoRecherche()
	//alert("coucou2")
	window.setInterval("XMLMarkersListener()", 250)
	//alert("coucou3")
}
function DoRecherche(params,dispo){
	//document.location="/CommunsThema/Recherche/criteresWS.asp?"+ params
	var MonAjax=new RC_Ajax("<%=LangueAb %>"); 
	ajax_MimeType="text/html" 
	ajax_MimeType="text/xml" 
	//MonAjax.ajax_Async=false;
	//http://testext02.agelia.com/CommunsThema/Recherche/criteresWS.asp?LangueID=1
	
	if (dispo == 1) {
		MonAjax.getURL("/CommunsThema/Recherche/criteresWS.asp?LangueID="+LangueID+"&Disponibilite=1&"+ params , "Search_Option_Dispo");
	} else {
		MonAjax.getURL("/CommunsThema/Recherche/criteresWS.asp?LangueID="+LangueID+"&"+ params , "Search_Liste");
	}
	
	
}

var oldXMLMarkers=""
var oldHTMLResult=""
//alert("klkkl")


function XMLMarkersListener(){
		if(document.getElementById( "XMLMarkers" ) && oldXMLMarkers!=document.getElementById( "XMLMarkers" ).value){
			
			oldXMLMarkers=document.getElementById( "XMLMarkers" ).value
			if(oldXMLMarkers.indexOf("<markers ")<0 ){
				GUnload()
				document.getElementById( "map" ).innerHTML ="<img alt='' src='/images/<% = LangueAb %>/Search_Carte.gif' border='0' usemap='#Map'/>"
			}else if(oldXMLMarkers.indexOf("<markers>")>0 && oldXMLMarkers.indexOf("<marker ")<0 ){
				GUnload()
				document.getElementById( "map" ).innerHTML ="<div style='float:left;position:absolute;left:100px;'><br/><br/><br/><br/><h1>Pas de réponse !</h1></div><img alt='' src='/images/<% = LangueAb %>/Search_Carte.gif'  usemap='#Map' border='0'/>"
			}else{
				load()
			}
			ap_showWaitMessage('waitDiv', 0);
		}
		if(document.getElementById( "HTMLResult" ) && oldHTMLResult!=document.getElementById( "HTMLResult" ).value){
			oldHTMLResult=document.getElementById( "HTMLResult" ).value
			
			if(oldHTMLResult.indexOf("<table")<0 ){
				document.getElementById( "ListeReponses" ).innerHTML=""
				Accordion('D_1',{duration:2,classGroup:'MonGroupe' }).openDown(false);
				TimeDivOverflow('visible',2000);
			}else{
				document.getElementById( "ListeReponses" ).innerHTML=oldHTMLResult
				document.getElementById( 'D_1').style.overflow = 'hidden';
				Accordion('D_2',{duration:2,classGroup:'MonGroupe' }).openDown(false);					
			}
		}
}


//alert("coucou01")
window.onunload=GUnload
//window.onload=load
//StartRecherche()
//window.onload=StartRecherche
addLoadEvent(StartRecherche )
//alert("coucou02")

// ON GERE L'OVERFLOW POUR LES CALENDRIER DU MODULE EXTERIEUR
function TimeDivOverflow(Status,Time) {
	setTimeout("DivOverflow('"+Status+"')",Time);
}
function DivOverflow(Status) {
	document.getElementById( 'D_1').style.overflow = Status;
}

var DHTML = (document.getElementById || document.all || document.layers);
function ap_getObj(name) { if (document.getElementById) { return document.getElementById(name).style; } else if (document.all) { return document.all[name].style;
} else if (document.layers) { return document.layers[name]; } } 
function ap_showWaitMessage(div,flag)  {if (!DHTML) return; var x = ap_getObj(div); x.visibility = (flag) ? 'visible':'hidden'
if(! document.getElementById) if(document.layers) x.left=280/2; return true; } 
