// JavaScript Document
function fTimer() {
	document.getElementById("cargador").style.visibility = 'hidden';
	document.getElementById("preloader").style.visibility = 'hidden';
}

function cargando(){
	document.getElementById("cargador").style.visibility = 'visible';
	document.getElementById("preloader").style.visibility = 'visible';
	timerID = setTimeout("fTimer()", tiempo);	
}

function borrarContenido(){
	if(ini == true){
		ini = false;
		document.getElementById("buscar").value="";
	}
}

function buscarResultado(){
	zoom_actual = map.getZoom();
	accion = 2;
	if(zoom_actual >= 15){
		var cadena = document.getElementById("buscar").value;
		cadena = cadena.replace(/^\s*|\s*$/g,"");
		if(cadena.length > 0 && cadena != "¿Qué estás buscando?"){
			buscarCadena(cadena);
			document.getElementById('ventana').style.display = 'none';
		}else{
			alert("Escriba algo en el buscador para consegu\xedr resultados.");
		}
	}else{
		alert("Selecciones un barrio o acerque el mapa a la zona donde desea buscar");
	}
}

function nuevoAjax(xmlhttp){
	
	   try {
		   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} 
	   catch (e) {
		   try {
			 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		  } 
		  catch (E) {
			  xmlhttp = false;
		  }
	   }
	   if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
		  xmlhttp = new XMLHttpRequest();
	   }
	   return xmlhttp
	}

function cargarContenido(pagina,destino){
	map.clearOverlays();
	clearSideBar();
   var contenedor;
   var ajax;
      
   contenedor = document.getElementById(destino);
   ajax = nuevoAjax(ajax);
   ajax.open("GET", pagina, true);
   ajax.onreadystatechange=function() {
      if (ajax.readyState==4) {
         contenedor.innerHTML = ajax.responseText;
		preLoader.style.visibility = "hidden";
      }
   }
   ajax.send(null);
}

function buscarCadena(valor){
cargando();
refrescar = true;
  preLoader.style.visibility = "visible";
  map.clearOverlays();
  var process = function(material){
    var entries = material.parseCsv(material);
    populateMap(entries);
  }
  var bounds = map.getBounds();
  var southWest = bounds.getSouthWest();
  var northEast = bounds.getNorthEast();
  GDownloadUrl("includes/datos.php?s="+valor+"&lnw="+southWest.lng()+"&lne="+northEast.lng()+"&ltw="+southWest.lat()+"&lte="+northEast.lat(), process);
	document.getElementById('ventana').style.display = 'none';
}
function tinyImage(icono, opt_color, opt_preload){
  var color = opt_color||"red";
  //var src_ = "http://labs.google.com/ridefinder/images/mm_20_blue.png";
  var src_ = "iconos/"+icono;
  if(opt_preload){
    var preImage = new Image();
    preImage.src = src_;
  }
  return  src_;
}  
function tinyIcon(icono, opt_color){
  var tiny = new GIcon();
  tiny.image = "iconos/"+icono;
  //tiny.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
  tiny.shadow = "img/mm_sombra.png";
  tiny.iconSize = new GSize(22, 44);
  tiny.shadowSize = new GSize(32, 44);
  tiny.iconAnchor = new GPoint(11, 42);
  tiny.infoWindowAnchor = new GPoint(5, 1);
  //tiny.imageMap = [4,0,0,4,0,7,3,11,4,19,7,19,8,11,11,7,11,4,7,0];
  tiny.imageMap = [0,0, 21,0, 21,44, 0,44];
  tiny.transparent = "http://maps.google.com/mapfiles/transparent.png"; 
  return tiny;
}
//preload loop
for(var color in icons){
  tinyImage(icons[color], true);
}

String.prototype.parseCsv = function(opt_options){
  var results = [];
  var opts = opt_options||{};
  var iLat = opts.lat||1;
  var iLng = opts.lng||0;
  var lines = this.split("\n");
  for (var i=0; i<lines.length; i++) {
    var blocks = lines[i].split('"');
    for(var j=0;j<blocks.length;j++){
      if(j%2){
        blocks[j]=blocks[j].replace(/,/g,'::::');
      }
    }  
    lines[i] = blocks.join("");
    var lineArray = lines[i].split(",");
    var lat = parseFloat(lineArray[iLat]);
    var lng = parseFloat(lineArray[iLng]);
    var point = new GLatLng(lat,lng);
    for(var cell in lineArray){
      lineArray[cell] = lineArray[cell].replace(/::::/g,',');
    } 
    if(!isNaN(lat+lng)){
      point.textArray = lineArray;
      results.push(point);
    }
  }
  return results;
}

function populateMap(points, opt_options){
	clearSideBar();
	//preLoader.style.visibility = "hidden";
  var bounds = new GLatLngBounds();
  var opts = opt_options||{};
  var color = opts.color||'red';
  sideBar.appendChild(createElem("tit_res", "<img src='img/tit_resultados.gif' />"));
  sideBar.appendChild(createElem("txt_res", ""+points.length+" resultados encontrados en esta zona"));
  for (var i=0; i < points.length; i++) {
    var label = points[i].textArray[3];
    points[i].marker = new GMarker(points[i], {title: label, icon:tinyIcon(points[i].textArray[9],opts.icon)});
    map.addOverlay(points[i].marker);
    bounds.extend(points[i]);
    createInfoWindow(points[i]);
    addToSideBar(points[i], opts);
	if(abrir == true){
		abrir = false;
		var que = points[i].marker;
		refrescar = false;
		setTimeout( function() {GEvent.trigger(que,'click')}, 1000); 
	}
  }
  if(points.length == 0){
	  sideBar.appendChild(createElem("res_cero", "<img src='img/error.gif' align='left' /> No se encontraron resultados en esta zona del mapa."));
  }
}

function createElem(opt_className, opt_html, opt_tagName) {
  var tag = opt_tagName||"div";
  var elem = document.createElement(tag);
  if (opt_html) elem.innerHTML = opt_html;
  if (opt_className) elem.className = opt_className;
  return elem;
}

function createInfoWindow(point){
  var tabs = [];
  var pos = 2;
  
  GDownloadUrl("globos/info.php?id="+point.textArray[2], function(html) {
      tabs[0] = new GInfoWindowTab('Detalles', html); 
  }); 
  
  GDownloadUrl("globos/comentarios.php?id="+point.textArray[2], function(html) {
      tabs[1] = new GInfoWindowTab('Comentarios', html); 
  }); 
  
  if(point.textArray[8] > 0){
	  GDownloadUrl("globos/catalogo.php?id="+point.textArray[2], function(html) {
		  tabs[pos] = new GInfoWindowTab('Productos', html); 
		  pos++;
	  }); 
  }
  
   if(point.textArray[11] != ""){
	  GDownloadUrl("globos/vista360.php?id="+point.textArray[2], function(html) {
		  tabs[pos] = new GInfoWindowTab('Vista 360', html); 
			pos++;
	  }); 
  }
   
  point.marker.bindInfoWindowTabs(tabs);
  GEvent.addListener(point.marker, "infowindowclose", function() { 
		if(categoria == false){
			refrescar = true; 
			globo = false; 
			setTimeout(refrescarItems, 300);
		}else{
			categoria = false;
		}
	});
}

function addToSideBar(point,opt_options){
  //preLoader.style.visibility = "hidden";
  
  if(point.textArray[10] == 0)
  {
	  if(queItem == "item1"){
		  queItem = "item2";
	  }else{
		  queItem = "item1";
	  }
  }else{
	  queItem = "destacado1";
  }
  
  var opts = opt_options||{};
  var iLabel = opts.iLabel||3;
  var label = createElem(queItem, "", "a");
  var datos = createElem("datos_item", "");
  var textosLink = createElem("link_datos", '<strong>'+point.textArray[3] + '<\/strong><br/> Tel.:'+ point.textArray[5]);
  var foto = createElem("fotito", "<img border='0' src='fotos/"+point.textArray[4]+"' />");
  var textos = "<br clear='all'/>";
  if(point.textArray[6].length > 1){
  	textos += "<img  class='mini_btn' border='0' src='img/icon_web_mini.gif' />";
  }
  if(point.textArray[7].length > 1){
  	textos += "<img  class='mini_btn' border='0' src='img/icon_mail_mini.gif' />";
  }
  datos.appendChild(textosLink);
  datos.appendChild(createElem("texto_item", textos));
  label.setAttribute("href", "#");
  label.appendChild(foto);
  label.appendChild(datos);
  sideBar.appendChild(label);
  label.onclick = function(){refrescar = false; globo = true; setTimeout( function() {GEvent.trigger(point.marker,'click')}, 300); return false};//x-browser
  label.onfocus = function(){refrescar = false; globo = true; sumarVisita(point.textArray[2]); setTimeout( function() {GEvent.trigger(point.marker,'click')}, 300); return false};
  GEvent.addListener(point.marker,'click',function(){refrescar = false; globo = true; label.focus(); return false});
  
  
  return point;
}

function clearSideBar(){
  while (sideBar.firstChild) {
    sideBar.removeChild(sideBar.firstChild);
  }
}

function sumarVisita(num){
	if(actual != num){
		actual = num;
		var ajax2;
	   	ajax2 = nuevoAjax(ajax2);
	   	ajax2.open("GET", "sv.php?id="+num+"&code=789123456", true);
		ajax2.send(null);
	}
}

function cambiarBarrio() {
	if(document.getElementById("zonas").value == 0 || document.getElementById("zonas").value == -1){
		map.setCenter(new GLatLng( -34.625, -58.45), 12);
	}else{
	var address = document.getElementById("zonas").options[document.getElementById("zonas").selectedIndex].text + ", Buenos Aires, Argentina";
	var geocoder = new GClientGeocoder();
       if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {

		map.setCenter(point, 15);
	     map.panTo(point);
			}
		  });
	   }
	}
	document.getElementById('ventana').style.display = 'none';
}

function busquedas(_num, _que){
	zoom_actual = map.getZoom();
	busca = _num;
	accion = _que;
	if(zoom_actual >= 15){
		refrescar = true;
		cargando();
		preLoader.style.visibility = "visible";
		map.clearOverlays();
		var limites = '';
		var process = function(material){
			var entries = material.parseCsv(material);
			if(_que == 'l' || _que == 'pl'){
				abrir = true;
				refrescar = false;
				accion = 0;
			}
			populateMap(entries);
		}
		var bounds = map.getBounds();
		var southWest = bounds.getSouthWest();
		var northEast = bounds.getNorthEast();
		if(_que == 'c' || _que == 'cc'){
			limites = "&lnw="+southWest.lng()+"&lne="+northEast.lng()+"&ltw="+southWest.lat()+"&lte="+northEast.lat();
		}
		GDownloadUrl("includes/datos.php?"+_que+"="+_num+limites, process);	
		document.getElementById('ventana').style.display = 'none';
	}else{
		alert("Selecciones un barrio o acerque el mapa a la zona donde desea buscar");
	}
}

function refrescarItems(){
	if(map.getZoom() < 15 && refrescar == true){
		refrescar = false;
		alert("Para actualizar su busqueda debe estar mas cerca en el mapa");
	}
	
	if(map.getZoom() >=15 && refrescar == false && globo == false){
		refrescar = true;
	}
	
	if(refrescar == true){
	   if(accion == 2){
		  buscarResultado()
	   }else if(accion==0){
		   //
	   }else{
			busquedas(busca, accion)
	   }
	}	
}

GEvent.addListener(map, "moveend", function() {
	refrescarItems();
});

