var map = null;
var geocoder;
var currentOpacity = 0;
var opacitySpeed = 10;

function search() {
  map = new GMap2(document.getElementById("maps"));
  
  document.getElementById('searchButton').disabled = true;
  document.getElementById('searchButton').style.color = "#888888";
  var city = document.getElementById('cityString').value;
  var country = document.getElementById('countryString').value;
  
  if (geocoder) {
    geocoder.getLatLng(
      country+","+city,
      function(point) {
        if (!point) {
          alert(noResults);
          document.getElementById('searchButton').disabled = false;
          document.getElementById('searchButton').style.color = "#c90ee1";
        } else {
          configMap(point);
        }
      }
    );
  } else {
    alert("google api error");
    document.getElementById('searchButton').disabled = false;
    document.getElementById('searchButton').style.color = "#c90ee1";
  }

}

function configMap(point) {
  if (GBrowserIsCompatible()) {
    map.setCenter(point, 13);
    
    map.addControl(new GLargeMapControl());
    var mapControl = new GMapTypeControl();
    map.addControl(mapControl);
    
    getShops(point);
  }
}

function getShops(point) {
  var lat = point.y;
  var lng = point.x;
  var resultMode = new Array('function', 'configShops');
  ajax.addInQueue('/includes/getShopsData.php', Array('lat','lng'), Array(lat, lng), resultMode);
}

function configShops(data) {
  var d = data.split(GOOGLE_BOUND);
  var shops = new Array();
  
  if (d.length < 2) {
    alert(enlargeSearch);
    document.getElementById('searchButton').disabled = false;
    document.getElementById('searchButton').style.color = "#c90ee1";
  } else {
    if (GBrowserIsCompatible()) {
      for (var i = 0; i < d.length-2; i=i+3) {
        var lat = d[i];
        var lng = d[i+1];
        var str = d[i+2];
        
        var point = new GLatLng(lat, lng);
        m = createMarker(point, str);
        map.addOverlay(m);
        
        if (d.length - 4 == 1) {
          map.setCenter(new GLatLng(lat, lng));
          m.openInfoWindowHtml(str);
        }
      }
    }
    
    var zoom = parseInt(d[d.length-2]);
    map.setZoom(zoom);
    
    document.getElementById('searchBox').innerHTML = d[d.length-1];
    
    displayMap();
  }
}

function createMarker(point, str) {
  var marker = new GMarker(point);
  
  GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(str); } );
  return marker;
}

function getSearchBox() {
  var resultMode = new Array('display', 'searchBox');
  ajax.addInQueue('/includes/getShopSearchBox.php', Array(), Array(), resultMode);
}

function newSearch() {
  getSearchBox();
  hideMap();
}

function displayMap() {
  if (currentOpacity < 100) {
    currentOpacity += opacitySpeed;
    setOpacity(document.getElementById('maps'), currentOpacity);
    setTimeout("displayMap();", 50);
  }
}

function hideMap() {
  if (currentOpacity > 0) {
    currentOpacity -= opacitySpeed;
    setOpacity(document.getElementById('maps'), currentOpacity);
    setTimeout("hideMap();", 50);
  } else {
    map = null;
    document.getElementById('maps').innerHTML = "";
  }
}

function setOpacity(ob, op) {
  ob.style.opacity = op/100;
  ob.style.filter = "Alpha(opacity="+op+")";
}
