var geocoder = new GClientGeocoder();
var map = null;//carte
var markers = new Array();//tableau des objets markers
var markersXml = null;//tableau des lignes xml
var initC = 0;

function load(search) {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
        map.setCenter(new GLatLng(49.294233,-0.705872), 10);
        hookMouseWheelHandlers("map");

      if (geocoder) {
                GDownloadUrl("dataXml.php?search="+search, function(data) {
          var xml = GXml.parse(data);
          markersXml = xml.getElementsByTagName("marker");

          for (var i = 0; i < markersXml.length; i++) {
                makeMarker(markersXml[i],i);
                showMarker(markers[i]);
            initC++;
          }
          //fin chargement
          document.getElementById("chargement").style.display = "none";
        });      
      }

      }
}

function rechargeCarte(idType){
        window.location.href = "index.php?search=0&idType="+idType;
}

function afficheType(idType) {
    hideMarkers(markers);
    for (var i = 0; i < markers.length; i++) {          
        if(markersXml[i].getAttribute("idType")==idType) {
            if(markers[i]!=null) {
                showMarker(markers[i]);               
            }
        }
    }
    reInitSelect(idType);
}
function loadType(type) {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
        map.setCenter(new GLatLng(49.294233,-0.705872), 10);
        hookMouseWheelHandlers("map");

      if (geocoder) {
                GDownloadUrl("dataXml.php?idType="+type, function(data) {
          var xml = GXml.parse(data);
          markersXml = xml.getElementsByTagName("marker");

          for (var i = 0; i < markersXml.length; i++) {
                makeMarker(markersXml[i],i);
                showMarker(markers[i]);
            initC++;
          }
          //fin chargement
          document.getElementById("chargement").style.display = "none";
        });      
      }

      }
}
function loadPrestataire(idPrestataire) {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
        map.setCenter(new GLatLng(49.294233,-0.705872), 10);
        hookMouseWheelHandlers("map");

      if (geocoder) {
                GDownloadUrl("dataXml.php?num="+idPrestataire, function(data) {
          var xml = GXml.parse(data);
          markersXml = xml.getElementsByTagName("marker");

          for (var i = 0; i < markersXml.length; i++) {
                makeMarker(markersXml[i],i);
                showMarker(markers[i]);
            initC++;
          }
          //fin chargement
          document.getElementById("chargement").style.display = "none";
        });      
      }

      }
}
/*
save
function afficheTypeById(idType,isChecked) {    
    for (var i = 0; i < markers.length; i++) {          
        if(markersXml[i].getAttribute("idType")==idType) {
            if(markers[i]!=null) {
                if(isChecked) {
                    showMarker(markers[i]);
                } else {
                    hideMarker(markers[i]);
                }
                
            }
        }
    }
    reInitSelect(idType);
}
*/
function reInitSelect(idType) {
    //non utilisée ici, définie uniquement pour eviter NULL
}

function afficheAllType(isChecked) {    
    
    //map
    //clear
    map.clearOverlays();
    
    if(isChecked) {
        for (var i = 0; i < markers.length; i++) {          
                if(markers[i]!=null) {
                    showMarker(markers[i]);
                }
        }    
    }
    
    //met le select choixType sur vide
    //A FAIRE

    
}

/*
//inutilisée
function afficheType(champ) {
    var idType = champ.value;
    var isChecked = champ.checked;
    afficheTypeById(idType,isChecked);    
}
*/
function makeMarker(markerXml,i) {

    var lat = markerXml.getAttribute("lat");
    var lng = markerXml.getAttribute("lng");
    var picto = markerXml.getAttribute("picto");
    
    if(lat!="" && lng!="") {
        var marker = null;
        if(picto!="") {
    
            var icon = new GIcon();
    
            icon.image = "icones/" + picto;
            icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
            icon.iconSize = new GSize(12, 20);
            icon.shadowSize = new GSize(22, 20);
            icon.iconAnchor = new GPoint(6, 20);
            icon.infoWindowAnchor = new GPoint(5, 1);
    
            marker = new GMarker(new GLatLng(lat,lng),icon);
        } else {
            marker = new GMarker(new GLatLng(lat,lng));
        }    
        GEvent.addListener(marker, "click", function() {
            makePopup(marker,markerXml);
        });
        
    }
    
    markers[i] = marker;
    
}

//affiche un point (s'il existe)
function showMarker(marker) {
    try {
      map.addOverlay(marker);
    } catch(e) {      
    }    
       
}

//cache un point (s'il existe)
function hideMarker(marker) {
    try {
      map.removeOverlay(marker);
    } catch(e) {      
    }
}

//cache tout
function hideMarkers(markerArray) {
    for(m=0;m<markerArray.length;m++) {
      hideMarker(markerArray[m]);
    }
}

//affiche infobulle d'un point
function makePopup(marker,markerXml) {

    var nom = markerXml.getAttribute("nom");
    var ville = markerXml.getAttribute("ville");
    var id = markerXml.getAttribute("id");
    var adresse = markerXml.getAttribute("adresse");
    var cp = markerXml.getAttribute("cp");
    var nomfr = markerXml.getAttribute("nomfr");
    var pagedetail = markerXml.getAttribute("pagedetail");
    var photo = markerXml.getAttribute("photo");
    var photoEtab = "";
    if(photo!="") {
        photoEtab = "<img src=\"" + photo + "\" height=\"80\" />";
    }
    var html = "<table cellpadding=\"2\" cellspacing=\"2\"><tr><td colspan=\"2\" class=\"nomType\">" + nomfr + "</td></tr><tr><td valign=\"top\"><b>" + nom + "</b><br/>" + adresse + "<br/>" + cp + " " + ville + "<br/>";
    if(pagedetail!="") {
      html += "<br/><img src=\"icones/arrow.gif\"/>&nbsp;<a href=\"javascript:void(0)\" onclick=\"viewFicheEtab('" + pagedetail + "')\">Plus d'infos...</a>";
    }
    html += "</td><td>" + photoEtab+ "</td></tr></table>";
    
    try {
      marker.openInfoWindowHtml(html);    
      map.panTo(marker.getPoint());    
    } catch(e) {
    }

}

function viewFicheEtab(pagedetail) {
    if(pagedetail!="") {
      window.opener.location.href = pagedetail;
    }
    window.opener.focus();
}

//recherche
function replaceAll( str, from, to ) {
    var idx = str.indexOf( from );


    while ( idx > -1 ) {
        str = str.replace( from, to ); 
        idx = str.indexOf( from );
    }

    return str;
}

function nettoieCaras(mot) {
    caras = new Array("à","â","ä","é","è","ê","ë","ö","ô","ü","û","ù","î","ï","ç");
    replaces = new Array("a","a","a","e","e","e","e","o","o","u","u","u","i","i","c");
    for(c=0;c<caras.length;c++) {
        mot = replaceAll(mot,caras[c],replaces[c]);
    }
    return mot;
}

function rechercheEtabs() {

    if(document.getElementById("search").value!="" && document.getElementById("search").value.length>2) {
    
        document.getElementById("resultats").innerHTML = "";
        document.getElementById("resultatsTitre").innerHTML = "";
        var nbres = 0;
        var searchValue = nettoieCaras(document.getElementById("search").value);
        tabSearch = searchValue.split(" ");
        
        for (var i = 0; i < markersXml.length; i++) {
            for(var t = 0; t < tabSearch.length; t++) {
                var search = tabSearch[t];
                //if(markersXml[i].getAttribute("nom").toLowerCase()==search.toLowerCase() || markersXml[i].getAttribute("ville").toLowerCase()==search.toLowerCase()) {
                if(markersXml[i].getAttribute("titreRecherche").toLowerCase().indexOf(search.toLowerCase())>=0 || markersXml[i].getAttribute("villeRecherche").toLowerCase().indexOf(search.toLowerCase())>=0) {
                    document.getElementById("resultats").innerHTML += "<div>&nbsp;<img src=\"icones/arrow.gif\" width=\"5px\" />&nbsp;<a href=\"javascript:void(0)\" onclick=\"viewMarker('" + i + "')\">" + markersXml[i].getAttribute("nom") + "</a></div>";
                    nbres++;
                }  
            }
        }
        if(nbres>0) {
            document.getElementById("resultatsTitre").innerHTML = "<p style=\"text-align:center;text-decoration:underline;color:#565656;font-weight:bold\">Résultats (" + nbres + ")</p>";
        } else {
            document.getElementById("resultatsTitre").innerHTML = "<p style=\"text-align:center;color:#FF9900;font-weight:bold\">Aucun résultat</p>";
        }
        
    }
}

function viewMarker(indice) {
    
    hideMarkers(markers)//cache les autres
    
    markerXml = markersXml[indice];
    makeMarker(markerXml,indice);
    
    marker = markers[indice];
    showMarker(marker);
    map.addOverlay(marker);
    //map.setCenter(marker.getPoint(), 10);
    makePopup(marker,markerXml);
}



    function pointToCoord(point) {
        
        var pointstr = point.toString();
        pointstr = pointstr.replace("(","");
        pointstr = pointstr.replace(")","");
        pointstr = pointstr.replace(" ","");
        
        var tableau = pointstr.split(",");

        //var tableau = point.toString().split(RegExp("[(,) ]+", "g"));
        return tableau;
    }
