var map;
var markers;
var geocoder = new GClientGeocoder();
var chaine_comp = "";
var iduser;
var i;

var icon = new GIcon();
icon.iconSize = new GSize(20, 20);
icon.iconAnchor = new GPoint(10, 10);
icon.infoWindowAnchor = new GPoint(16, 4);

function load(domaine) {
  chaine_comp = domaine;

  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    switch(lang) {
      case 'fr' :
        map.setCenter(new GLatLng(46.227638, 2.213749), 5);
        break ;
      case 'de' :
        map.setCenter(new GLatLng(51.138001,11.162109), 6);
        break ;
      case 'en' :
        map.setCenter(new GLatLng(54.5259614, 15.2551187), 3);
        break ;
    }
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
  }

  afficheliens();
  affiche_10_presta(0);

  GEvent.addListener(map, "dragend", function () {
    affiche_10_presta(0);
  });
  GEvent.addListener(map, "zoomend", function (oldLevel, newLevel) {
    affiche_10_presta(0);
  });
}

function load_user(domaine, userchoisi, lat, lng) {
  chaine_comp = domaine;
  iduser = userchoisi;
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.setCenter(new GLatLng(lat, lng), 11);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
  }

  afficheliens();
  affiche_presta_sim();

  GEvent.addListener(map, "dragend", function () {
    affiche_presta_sim();
  });
  GEvent.addListener(map, "zoomend", function (oldLevel, newLevel) {
    affiche_presta_sim();
  });
}

function zoomsur() {
  lieu = $("#lieu").val();

  if (geocoder) {
    geocoder.getLocations(lieu,
    function(point) {
      if(!point || point.Status.code != 200) {
        alert(lieu + " not found, sorry.");
      }
      else {
        place = point.Placemark[0];
        point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
        var niveau = 0;
        switch(place.AddressDetails.Accuracy) {
          case 0 :
            niveau = 1 ;
            break ;
          case 1 :
            niveau = 5 ;
            break ;
          case 2 :
            niveau = 7 ;
            break ;
          case 3 :
            niveau = 8 ;
            break ;
          case 4 : case 5 :
            niveau = 11 ;
            break ;
          case 6 : case 7 : case 8 : case 9 :
            niveau = 15 ;
            break ;
        }
      map.setCenter(point, niveau);
      affiche_10_presta(0);
      }
    });
  }
}

function affiche_10_presta(debut) {
  motclef = $("#motclef").val();
  afficheliens();
  map.clearOverlays();
  bounds = map.getBounds();
  chaine_comp = $("#cat").val();
  fichier = file("js/ajax/10presta.php?bounds="+bounds+"&cat="+chaine_comp+"&debut="+debut+"&motclef="+motclef);
  ajoutemarqueur(fichier);
  $("#loc").html("");
  // sert à écrire ce qui est renvoyé par prestaxml.php (les requetes ou les coordonnées de la carte, en général)
  //document.getElementById("loc").innerHTML = texte;
  affiche_liste_10(debut);
  file("js/ajax/supprime_fichier.php?fichier="+fichier);
  return false;
}

function verif_clavier(event, origine) {
  TouchKeyUp = (window.Event) ? event.which : event.keyDown;
  //alert(TouchKeyUp);
  if(TouchKeyUp == 13){
    if (origine == "zoom") {
      zoomsur()
    } else {
      if (origine == "recherche") {
        affiche_10_presta(0);
      }
    }
  }
}

function verif_clavier2(origine) {
    if (origine == "zoom") {
      zoomsur()
    } else {
      if (origine == "recherche") {
        affiche_10_presta(0);
      }
    }
  return false;
}

function afficheliens() {
  //alert("getelementid");
  //motclef = document.form_cache.motclef.value;
  motclef = $("#motclef").val();
  //alert("escape");
  motclef = escape(motclef);
  //alert("apres escape");
  chaine_comp = $("#cat").val();
  texte = file("js/ajax/make_liens.php?cat="+chaine_comp+"&motclef="+motclef);
  $("#liens").html(texte);
}

function ajoutemarqueur(nomfichier) {
i = 1;
  $.ajax({
    type: "GET",
    url: nomfichier,
    dataType: "xml",
    cache: false,
    success: function(xml) {
      $(xml).find('marker').each(function(){
        var point = new GLatLng(parseFloat($(this).attr('lat')), parseFloat($(this).attr('lng')));
        var marker = creerMarker(point, $(this).attr('details'), $(this).attr('id'), i);
        map.addOverlay(marker);
        if(iduser > 0 && i == 1) {
          marker.openInfoWindowTabsHtml($(this).attr('details'));
        }
        i++;
      });
    }
  });
}

function orderOfCreation(marker,b) {
  return Math.abs(i-100);
}

function creerMarker(point, onglet1, indicatif, numero) {
  var icone = new GIcon();
  icone.iconAnchor = new GPoint(10, 10);
  icone.infoWindowAnchor = new GPoint(10, 4);
  icone.iconSize = new GSize(20, 20);
  if(iduser > 0) {
    if(numero == 1) {
      icone.image = "images/pin_green.gif";
      icone.iconSize = new GSize(20, 34);
      icone.iconAnchor = new GPoint(10, 34);
      icone.infoWindowAnchor = new GPoint(10, 2);
    }
    else {
      numero = numero-1;
      icone.image = "images/map/"+numero+".png";
    }
  }
  else {
    icone.image = "images/map/"+numero+".png";
  }
  var marker = new GMarker(point, {icon:icone, zIndexProcess:orderOfCreation});
  var infoTabs = [new GInfoWindowTab("Détails", onglet1)];
  GEvent.addListener(marker, "click", function(){marker.openInfoWindowTabsHtml(infoTabs);});

  return marker;
}


function affiche_liste_10(debut) {
    bounds = map.getBounds();
    texte = file("js/ajax/liste_resultats_10.php?bounds="+bounds+"&cat="+chaine_comp+"&debut="+debut+"&motclef="+motclef);
    $("#loc").html(texte);
}

function affiche_presta_sim() {
  afficheliens();
  map.clearOverlays();
  bounds = map.getBounds();
  fichier = file("js/ajax/presta_sim.php?bounds="+bounds+"&iduser="+iduser);
  ajoutemarqueur(fichier);
  texte = file("js/ajax/liste_resultats_sim.php?bounds="+bounds+"&iduser="+iduser);
  $("#loc").html(texte);
  file("js/ajax/supprime_fichier.php?fichier="+fichier);
}
