var map;
var mgr;
var longInit,latInit;
function initialize() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map_canvas"));

    var position1 = new GLatLng(20.688419,-103.366681);
    var position1 = new GLatLng(24.647017162630366, -100.8544921875);
    if(longInit!=undefined && latInit!=undefined)
    	var position1 = new GLatLng(latInit,longInit);
//    map.setCenter(position1, 17);
    map.setCenter(position1, 5);

//    creaMarker(position1);

	map.addControl(new GLargeMapControl());
	map.enableScrollWheelZoom();

	GEvent.addListener(map, "dragend", function(source) {
		listener_movement_map();
	});
	GEvent.addListener(map, "zoomend", function(source) {
//		listener_movement_map();
	});
	mgr = new MarkerManager(map);
	$("#overlay").css('display','none');
  }
}

/**

**/
function listener_movement_map(){
	if(map.getZoom()<13)
			{
			$("#notice").html('A este nivel de zoom tenemos demasiadas propiedades. Acércate un poco más!');
			$("#notice").css('display','block');
			return false;
			}
		$("#notice").css('display','none');
		$("#overlay").css('display','block');
	  var center = map.getBounds();
	  var southWest = center.getSouthWest();
	  var northEast = center.getNorthEast();
	  var maxLong = southWest['x'];
	  var minLong = northEast['x'];
	  var minLat = southWest['y'];
	  var maxLat = northEast['y'];
//	  console.log(minLong,maxLong,minLat,maxLat)
	  	$.getJSON("/search.php", {BUSQUEDA:'map', LATITUD_MIN:minLat, LATITUD_MAX:maxLat, LONGITUD_MIN:minLong, LONGITUD_MAX:maxLong}, function(data){
		  procesa_resultados(data,true);
	  		$("#overlay").css('display','none');
		});
}

var tips = new Object();
	tips[0] = "Dato: Si pones el cursor del mouse sobre el ícono de una propiedad en el panel de la izquierda, se revelar&aacute; su ubicaci&oacute;n en el mapa.";

/**

**/
$("#BUSCAR").click(function(){
		$("#overlay").css('display','block');

		var estado = $("#ESTADO").val();
		var ciudad = $("#CIUDAD").val();
		var colonia = $("#COLONIA").val();

		if(estado=='' || estado=="Todas")
			{
			$("#options-error").html('Selecciona un estado');
			$("#options-error").css('display','block');
			var error = true;
			}
		else if(ciudad=='' || ciudad=="Todas")
			{
			$("#options-error").html('Selecciona una ciudad');
			$("#options-error").css('display','block');
			var error = true;
			}
		else if(colonia=='' || colonia=="Todas")
			{
			$("#options-error").html('Selecciona una colonia');
			$("#options-error").css('display','block');
			var error = true;
			}
		if(error!=undefined && error==true)
			{
			$("#overlay").css('display','none');
			return false;
			}
		else
			$("#options-error").css('display','none');

		// MSG
		var loco = $("#warning > #text");
			loco.val(tips[0]);

		$.getJSON("/search.php", {  BUSQUEDA:'map', ACCION:$("#ACCION").val(),INMUEBLE:$("#INMUEBLE").val(), ESTADO:estado, CIUDAD:ciudad, COLONIA:colonia}, function(data){
		  procesa_resultados(data);
		$("#overlay").css('display','none');
		});
	  return false;
});

/**

**/
var props;
function procesa_resultados(data,dragged)
{
	props = data;

	if(dragged==undefined) var dragged = false;

	/* pinta en mapa*/
	var minLong;
	var minLat;
	var maxLong;
	var maxLat;

	batch = [];
	var j = 0;
	for(var k in data)
	{
		if(minLong==undefined)
			{
			minLong = parseFloat(data[k]['Longitud']);
			maxLong = parseFloat(data[k]['Longitud']);
			minLat = parseFloat(data[k]['Latitud']);
			maxLat = parseFloat(data[k]['Latitud']);
			}
		else
			{
			var t = parseFloat(data[k]['Longitud']);
			minLong = (minLong<t)? minLong : t;
			maxLong = (maxLong>t)? maxLong : t;

			t = parseFloat(data[k]['Latitud']);
			minLat = (minLat<t)? minLat : t;
			maxLat = (maxLat>t)? maxLat : t;
			}

		var lon = parseFloat(data[k]['Longitud']);
		var lat = parseFloat(data[k]['Latitud']);
		var position = new GLatLng(lat,lon);
		insertMarker(position);
		batch[j]['HTML'] = data[k]['HTML'];
		batch[j]['test']= j;
		var marker = batch[j];
		addInfoWindow(marker);
		j++;
	}

//	console.log("batch",batch);
	mgr.clearMarkers();
	if(batch.length==0){
		$("#notice").html('No se encontraron propiedades, cambia su filtro de busqueda');
		$("#notice").css('display','block');
	    imprime_propiedades(data);
		return false;
	}

	$("#notice").css('display','none');
	mgr.addMarkers(batch, 3); /** SOS (zoom)**/
	mgr.refresh();

	var longMed = (minLong+maxLong)/2;
	var latMed = (minLat+maxLat)/2;
	var position = new GLatLng(latMed,longMed);
//	console.log(minLong, maxLong, minLat, maxLat,position);

	// ********** BETA ***********
	location.hash = 'lat:'+latMed+"&pos:"+longMed;

	if(!dragged)
		{
		map.setZoom(17);
    	map.panTo(position);
		}
    imprime_propiedades(data);
}

/**

**/
function addInfoWindow(marker)
{
	GEvent.addListener(marker, "click", function() {
		$("#notice").css('display','none');
		$("#warning").css('display','none');
    	marker.openInfoWindowHtml(marker['HTML']);
 	});
}

/**

**/
var batch = [];
function insertMarker(point){
	batch.push(new GMarker(point, { icon: creaIconos() }));
	return batch;
}


/**

**/
var IMAGES = [ "house_icon"];//, "rain", "snow", "storm"
var ICONS = [];
function creaIconos(){
	var i = Math.floor(IMAGES.length*Math.random());
      if (!ICONS[i]) {
        var icon = new GIcon();
        icon.image = "/images/"
            + IMAGES[i] + ".png";
        icon.iconAnchor = new GPoint(0, 0);
        icon.infoWindowAnchor = new GPoint(9, 2);
        icon.iconSize = new GSize(30, 29);
        icon.shadow = "images/"
            + IMAGES[i] + "-shadow.png";
        icon.shadowSize = new GSize(37, 34);
        ICONS[i] = icon;
      }
      return ICONS[i];
}


/**

**/
function imprime_propiedades(data)
{
	var html = "";
	var i = 0;
	for(var k in data)
	{
		html += "<div class='propiedad' id='"+data[k]['Id']+"'>"+
				"<div id='image'><img src='/images/house_icon.png' onmouseout='map.getInfoWindow().hide()' onmouseover='showInfoMarker("+i+")'><div>ID:"+data[k]['Id']+"</div></div>"
				+"<div class='tipo'>"+data[k]['Inmueble']+"</div>"+
//				"<span>"+data[k]['Domicilio']+"</span>"+
				"<span>"+data[k]['Metros']+"mts"+"</span>"+
				"<div class='precio'>$"+data[k]['Precio']+"</div>"+
//				"<input type='button' onclick='showInfoMarker("+i+")'>"+
				"</div>";
		i++;
	}
	var header = "<div id='num-props'>"+i+" propiedades encontradas</div>";
	$("#resultados-propiedades").html(header+html);
}

function showInfoMarker(i){
	var Lat  = batch[i].getLatLng().lat();
	var Lon  = batch[i].getLatLng().lng();
	map.panTo(new GLatLng(Lat,Lon));
	batch[i].openInfoWindowHtml(batch[i]['HTML']);
}


$().ready(function(){
	var altura = $(window).height();
	var alturaHeader = $("#header").height();
	var res = altura - alturaHeader - 2;
	if(res>350)
		{
		$("#contenedor").css("height",res);
		}
});