var icons = {};
var encharge=false;
var dist_ref = 200;
var sb;
var tabAccuracy = new Array(2,4,6,10,12,13,15,15,15,15);
var gmarkers = [];
var gevents = [];
var bI = new GIcon();
bI.iconSize=new GSize(32,32);
bI.shadowSize=new GSize(56,32);
bI.iconAnchor=new GPoint(16,16);
bI.infoWindowAnchor=new GPoint(16,0);
var cible = new GIcon(bI, "/images/cible.png", null, "/images/cibles.png");
var resultatcible;
var poly = null;
var color = "#4169FF";
var sfx='f0';
function initOnload(){
  loadzoom(0,map.getZoom(),lastCenter);
}

function searchLocations(address) {
  geocoder.getLocations(address, function(response) {
    if (response.Status.code!="200") {
      alert(address + ' est introuvable');
    } else {
      map.closeInfoWindow();
      place = response.Placemark[0];
      accuracy = place.AddressDetails.Accuracy;
      if (map.getExtInfoWindow() != null) {
        map.closeExtInfoWindow();
      }
      zoom = tabAccuracy[accuracy];
      if (zoom<6) zoom=6;
      resultatcible = new GMarker(new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]),cible);
      loadzoom(0,zoom,new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]),address);
    }
  });
}

function wheelevent(e){
  if (!e){
    e = window.event
  }
  if (e.preventDefault){
    e.preventDefault()
  }
  e.returnValue = false;
}

function loadzoom(Old,New,center,recherche){    
  if (!encharge){
    needReload = false;
    encharge=true;
    if (!center) {
      center=map.getCenter();
      max = dist_ref * Math.pow(2,17-map.getZoom());
      if ((center !=null) && (center.distanceFrom(lastCenter)>max)){
        needReload = true;
      }
    } else {
      map.setCenter(center);
    }
    if (!New) {
      New=map.getZoom();
    } else {
      needReload = true;
      if (map.getZoom() != New) {
        map.setZoom(New);
      }
      if (New!=lastZoom) needReload = true;
    }  
    if (needReload) {
      map.closeInfoWindow();
      if (map.getExtInfoWindow() != null) map.closeExtInfoWindow();
      for (var j=gevents.length-1; j>=0; j--){
       GEvent.removeListener(gevents[j]);
      }
      gmarkers=[];
      gevents = []; 
      map.clearOverlays();
      lastCenter = center;
      lastZoom = New;
	  if (!recherche)
		recherche = '';
      GDownloadUrl("/hotel_json3.php?sfx="+sfx+"&zoom="+New+"&lat="+center.lat()+"&lng="+center.lng()+"&rech="+recherche, process_it);
      if (resultatcible != null) map.addOverlay(resultatcible);
    } else {
      encharge=false;
    }
  }
}


function process_it(doc) {
    var jsonData = eval('(' + doc + ')');
    for (var i=0; i<jsonData.markers.length; i++) {
      if (jsonData.markers[i].t>1) {
        var marker = createGroup(i, jsonData.markers[i]);
        gmarkers[jsonData.markers[i].i] = marker;
      } else {
        var marker = createHotel(i,jsonData.markers[i]);
        gmarkers[jsonData.markers[i].i] = marker;
      }
      if (marker != null)
      map.addOverlay(marker);
    }    
    encharge= false;  
    if (jsonData.zoom != map.getZoom()){
      loadzoom(0,map.getZoom());
      }
}

var iconData = {
  "hotels":{w:47,h:36},
  "hotel0":{w:42,h:36},
  "hotel1":{w:43,h:36},
  "hotel2":{w:42,h:36},
  "hotel3":{w:42,h:36},
  "hotel4":{w:42,h:36},
  "hotel5":{w:42,h:36}
};

var logo = {
  "1":{w:67,h:27},  
  "3":{w:32,h:32},
  "4":{w:120,h:20},
  "5":{w:90,h:30},
  "6":{w:123,h:38},
  "8":{w:65,h:60}
};  

function getIcon(image) {
  var icon = null;
  if (image) {
    if (icons[image]) {
      icon = icons[image];
    } else {
      icon = new GIcon();
      icon.image = "/images/" + image + ".png";
      icon.iconAnchor = new GPoint(0,0);
      icon.infoWindowAnchor=new GPoint(16,16);
      icon.iconSize = new GSize(42, 36);
      if (image == "hotels")
        icon.iconSize = new GSize(47, 36);
      icons[image] = icon;
    }
  }
  return icon;
}


function createGroup(i, jma) {
  var posn = new GLatLng(jma.lat, jma.lng);
  var marker = new LabeledMarker(posn, {"icon": getIcon("hotels"), "draggable":false,"labelText":jma.t+"<br>H&ocirc;tels","labelOffset": new GSize(6, -4),"labelClass":"LabeledMarker_Hotels"});
    gevents.push(GEvent.addListener(marker, "click", function() { 
    loadzoom(0,jma.nz,marker.getPoint());
    	}));
  return marker;
}

function createHotel(i, jma) {
  var x = 10;
  if (jma.p>99) x=4;
  var posn = new GLatLng(jma.lat, jma.lng);
  var prix = "";
  if (jma.p != "")
    prix = jma.p+"&nbsp;&euro;";
  var iname = "hotel";
  if (selected == jma.i) iname="hotelg";  
  var marker = new LabeledMarker(posn, { "icon": getIcon(iname+jma.s), "draggable":false,"labelText":prix,"labelOffset": new GSize(x, 4),"labelClass":"LabeledMarker_Hotel"});
  var txt = getMapBubble(jma);
  gevents.push(GEvent.addListener(marker, 'click', function(){ 
        marker.openExtInfoWindow(
          map,
          "custom_info_window_red",
          txt,
          {beakOffset: 2,paddingX:40,paddingY:20}
        ); 
      }));
return marker;
}

function getMapBubble(jma){
  var img = getImage(jma);
  var th = '<table width="400" border="0" cellspacing="0" cellpadding="0"><tr><td width="70"  rowspan="2">';
  if (img != '')
    th = th + '<img src="http://'+img+'" width="70" height="70">';
  th += '</td><td width="210" rowspan="2"><p><span class="nomhotel">' + jma.n + '</span><img src="/images/'+ jma.s +'s.gif"  height="14"><br><span class="ville">'+jma.v+'</span><br>';
  th += '<span class="partenaire">avec notre partenaire&nbsp;<img src="/images/partenaire/'+jma.f+'.gif" width="'+logo[jma.f].w+'" height="'+logo[jma.f].h+'" align="absmiddle"> </span> </p></td>';
  th += '<td width="120" valign="top" class="prix">'+jma.p+' &euro; par nuit*</td></tr><tr><td valign="top" class="prix"><br>';
  th += '<a href="/redirect.php?id='+jma.i+'" target="_blank"><img src="/images/verifier.gif" width="92" height="20" border="0"></a>';
  th += '</td></tr></table>';
  return th;
}

function getImage(jma){
  var img;
  if (jma.f == 1) img = "media.expedia.com/hotels/"+jma.im;
  if (jma.f == 3) img = "book.bestwestern.com/props/"+jma.ifo+"/"+jma.ifo+"_b1.jpg";
  if (jma.f == 5) img = "www.venere.com/img/hotel/"+jma.im;
  if (jma.f == 6) img = "www.booking.com/images/hotel/square60/"+jma.im;
  if (jma.f == 4) {
    if (jma.im == 'vide') img = 'www.accorhotels.com/photos/ibiH.gif';
    else img = "www.accorhotels.com/photos/"+jma.ifo+"h00.gif";
    };
  if (jma.f == 8) {
	img = '91.121.134.14/animation/cat-hotel/'+jma.im+'/'+ (jma.im*1) +'-hotelbb-1.jpg';
	}
  return img;
}

function filtreBudget(level){
	sfx=level;
	loadzoom(0,map.getZoom());
	return true;
}