var map;
var geocoder;
var searchStall;

var clusteredIcon = new GIcon(G_DEFAULT_ICON);
clusteredIcon.image = '/img/marker-multiple.png';
var normalIcon = new GIcon(G_DEFAULT_ICON);
normalIcon.image = '/img/marker-single.png';

function loadMap() {
  if (GBrowserIsCompatible()) {
    geocoder = new GClientGeocoder();
    map = new GMap2(document.getElementById('map'));
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.enableScrollWheelZoom();
    var middle = new GLatLng(65.275094, 25.146973);
    searchLocationsNear(middle, true);

    GEvent.addListener(map, "moveend", function(){
      if(searchStall){clearTimeout(searchStall)}
      searchStall=setTimeout(function(){searchLocationsNear()},500);

      var ne = map.getBounds().getNorthEast(), sw = map.getBounds().getSouthWest();
      document.getElementById("nelat").value = ne.lat();
      document.getElementById("nelng").value = ne.lng();
      document.getElementById("swlat").value = sw.lat();
      document.getElementById("swlng").value = sw.lng();
    });
  }
}


function searchLocationsNear(middle){
  if(!map.getInfoWindow().isHidden()){return}

  var a=map.getBounds(),
  url='/mapsearchjson.php?z='+map.getZoom()+'&'+(middle?'center='+middle.toUrlValue()+'&radius=500':'sw='+a.getSouthWest().toUrlValue()+'&ne='+a.getNorthEast().toUrlValue()),
  b=document.getElementById('msea').elements,
  s=document.createElement('script'),
  d=function(){s.onload=null;s.parentNode.removeChild(s);delete(s)};
  for(var i=0;i<b.length;i++){
    var c=b[i];
    if(c.type!='checkbox'||(c.type=='checkbox'&&c.checked)){
      url+='&'+encodeURIComponent(c.name)+'='+encodeURIComponent(c.value)
    }
  }
  s.src=url;
  s.type='text/javascript';
  if(navigator.product=='Gecko'){
    s.onload=d
  } else {
    s.onreadystatechange=function(){if(s.readystate=='ready'||s.readystate=='complete'){s.onreadystatechange=null;d()}};
  }
  document.getElementsByTagName('head')[0].appendChild(s)
}

function placeMarkers(markers,viewport){
  map.clearOverlays();
  if(markers.length==0&&!map.isLoaded()){
    map.setCenter(new GLatLng(65.275094, 25.146973),6);
  } else {
    for(var i=0;i<markers.length;i++){
      var a=markers[i],
      b=a.marker=createMarker(a);
      map.addOverlay(b)
    }
    if(viewport){
      var a=new GLatLngBounds(new GLatLng(parseFloat(viewport.swlat),parseFloat(viewport.swlng)),new GLatLng(parseFloat(viewport.nelat),parseFloat(viewport.nelng)));
      map.setCenter(a.getCenter(),map.getBoundsZoomLevel(a))
    }
  }
}

function createMarker(listing) {
  var marker = new GMarker(new GLatLng(listing.lat,listing.lng),listing.clustered > 1 ? clusteredIcon : normalIcon);
  if(listing.clustered > 1){ // if a clustered marker...
   GEvent.addListener(marker, 'click', function(){
    map.setCenter(new GLatLng(listing.lat,listing.lng),map.getZoom()+1); // zoom in on the marker
   });
  }else{
   var html = '<b style="display: block; padding: 5px; border-bottom: 1px solid #AAAAAA; margin: 0 0 8px 0;"><a href="javascript:infoPopup('+listing.id+')" class="msealink">'+listing.street+', '+listing.city+', '+listing.zip+'</a> &nbsp;&nbsp;</b>';
   if(listing.image != "0" && listing.image != null){
    html += '<div style="float:right"><img src="'+absolute_path+'listingimage.php?i='+listing.image+'&amp;h=55" alt="Kuva" /></div> ';
   }
   html += ' '+number_format(listing.rent)+' &euro;/kk<br/>'+number_format(listing.sqft)+' mē<br/>'+listing.unitstructure;
   marker.bindInfoWindowHtml(html, {onCloseFn:function(){searchLocationsNear()}});
  }
  return marker;
}

function infoPopup(id) {
  window.open(absolute_path+"msealisting/"+id,
"detailwindow","menubar=0,resizable=1,scrollbars=1,width=900,height=500"); 
}

  
function swapSearchContent(current){
  var divnames = new Array("mapsearch", "traditional");
  
  for(i=0;i<2;i++){
    if((i+1) == current){
      document.getElementById("t"+(i+1)).className = "active";
      document.getElementById(divnames[i]).className = "";
    } else {
      document.getElementById("t"+(i+1)).className = "";
      document.getElementById(divnames[i]).className = "hide";
    }
    document.getElementById("t"+(i+1)+"l").blur();
    if((i+1) == 1){
      loadMap();
    }
  }
  
  window.location.hash = "#"+current;
}