google.load("maps","2.115");google.load("dojo","1.2.3");google.setOnLoadCallback(window_onLoad);var marker;var icon;var bounds;var isSearching=false;var MAX_ZOOM=17;var LIMIT_ZOOM=15;var AREA_COLOR="#ccff33";var EMPTY_AREA_COLOR="#666666";var geocoder;var errorCircle=false;var mouseCircle=true;bloquearBusqueda=false;var client;var overlayInstance;var panorama;function window_onLoad(e){dojo.require('dojo.string');dojo.require('dojo.number');getBundle('bundle.htm?action=loadJSONBundle&filter=labs.common');getBundle('bundle.htm?action=loadJSONBundle&filter=labs.propertySearch');getBundle('bundle.htm?action=loadJSONBundle&filter=tipos');djConfig.usePlainJson=true;if(!google.maps.BrowserIsCompatible()){return;}
var ops={draggableCursor:"default"};google.maps.DraggableObject.setDraggableCursor("default");map=new google.maps.Map2(dojo.byId("googlemapa"),ops);google.maps.Event.addListener(map,"moveend",function(){var center=map.getCenter();});var point=new google.maps.LatLng(LATITUDE,LONGITUDE);map.setCenter(point,6);map.addControl(new google.maps.LargeMapControl());map.addControl(new google.maps.ScaleControl());map.enableScrollWheelZoom();map.addMapType(G_PHYSICAL_MAP);var mapControl=new google.maps.HierarchicalMapTypeControl();mapControl.clearRelationships();mapControl.addRelationship(G_SATELLITE_MAP,G_HYBRID_MAP,"hibrido");map.addControl(mapControl);setTimeout("oculta()",1000);addCircleControl();loadMapIcons();dojo.addOnLoad(window_onLoadFilter);client=new google.maps.StreetviewClient();geocoder=new google.maps.ClientGeocoder();if(dojo.byId("address").value!=""){setTimeout("FindLoc()",1000);}}
function toggleOverlay(){if(!overlayInstance){overlayInstance=new GStreetviewOverlay();map.addOverlay(overlayInstance);}else{map.removeOverlay(overlayInstance);overlayInstance=null;}}
function checkPanoramaEnable(point){client.getNearestPanorama(point,beforePanorarama);}
function beforePanorarama(response){if(response.code==200){dojo.removeClass(dojo.byId('streetview'),'d-none');}else{dojo.addClass(dojo.byId('streetview'),'d-none');}}
function showPanoramaForMarker(point){panorama=new google.maps.StreetviewPanorama(document.getElementById("pano"));client.getNearestPanorama(point,onResponse);}
function onResponse(response){if(response.code!=200){dojo.addClass(dojo.byId('pano'),'d-none');}else if(response.code==200){dojo.removeClass('pano','d-none');var latlng=new GLatLng(response.Location.lat,response.Location.lng);panorama.setLocationAndPOV(latlng);}}
function updateLocation(location){var point=new google.maps.LatLng(location.latitude,location.longitude);map.setCenter(point,8);}
function FindLoc(){var accuracy=[];accuracy[0]=2;accuracy[1]=3;accuracy[2]=4;accuracy[3]=6;accuracy[4]=8;accuracy[5]=13;accuracy[6]=16;accuracy[7]=16;accuracy[8]=16;var address=dojo.byId('address').value;if(geocoder){geocoder.getLocations(address,function(result){if(result.Status.code==G_GEO_SUCCESS){var coord=result.Placemark[0].Point.coordinates;var point=new GLatLng(coord[1],coord[0]);if(dojo.byId('zoom').value){map.setZoom(parseInt(dojo.byId('zoom').value));}else{map.setZoom(accuracy[result.Placemark[0].AddressDetails.Accuracy]);}
if(!isSearching){initSearch();searchInRatio(point);}}});}}
var icons=new Array();var NO_EXACTA=0;var EXACTA=1;function loadMapIcons(){var icono=new google.maps.Icon();icono.iconSize=new google.maps.Size(32,32);icono.shadowSize=new google.maps.Size(59,32);icono.iconAnchor=new google.maps.Point(19,17);icono.infoWindowAnchor=new google.maps.Point(10,4);icono.infoShadowAnchor=new google.maps.Point(10,4);icono.image="img/application/maps/pin_oculta.png";icono.shadow="img/application/maps/sombra_oculta.png";icons[NO_EXACTA]=icono;icono=new google.maps.Icon();icono.iconSize=new google.maps.Size(32,32);icono.shadowSize=new google.maps.Size(59,32);icono.iconAnchor=new google.maps.Point(8,24);icono.infoWindowAnchor=new google.maps.Point(9,5);icono.infoShadowAnchor=new google.maps.Point(9,5);icono.image="img/application/maps/pin_exacto.png";icono.shadow="img/application/maps/sombra_exacto.png";icons[EXACTA]=icono;}
function addCircleControl(){icono=new google.maps.Icon();icono.image="img/application/maps/circulo.png";icono.iconSize=new google.maps.Size(110,110);icono.iconAnchor=new google.maps.Point(55,55);markerOps=new Object();markerOps.icon=icono;marker=new google.maps.Marker(map.getCenter(),markerOps);map.addOverlay(marker);google.maps.Event.addListener(map,"mousemove",function(point){if(point=='(NaN, NaN)'){return;}
if(map.getZoom()<=LIMIT_ZOOM){icono.iconSize=new google.maps.Size(110,110);icono.iconAnchor=new google.maps.Point(55,55);}else{icono.iconSize=new google.maps.Size(220,220);icono.iconAnchor=new google.maps.Point(110,110);}
map.removeOverlay(marker);if(mouseCircle&&!isInErrorCircle(point)){markerOps={clickable:false,draggable:false,icon:icono};markerOps.icon=icono;marker=new google.maps.Marker(point,markerOps);map.addOverlay(marker);bloquearBusqueda=false;}else{bloquearBusqueda=true;}});google.maps.Event.addListener(map,"click",function(area,point){dojo.addClass("capa_streetView","d-none");dojo.byId('address').value="";if(bloquearBusqueda){return;}
if(area!=null&&!(area instanceof google.maps.Polygon)){return}
var pto=marker.getPoint();if(pto){if(!isSearching){initSearch();searchInRatio(pto);}}});}
function initSearch(){isSearching=true;closePopUps();dojo.removeClass("loader","d-none");map.clearOverlays();if(circle){map.addOverlay(circle);}}
function endSearch(){isSearching=false;dojo.addClass("loader","d-none");map.clearOverlays();}
var circle;function searchInRatio(point)
{map.setCenter(point);bounds=new google.maps.LatLngBounds();if(circle)
{map.removeOverlay(circle);}
var points=drawCircleAndSetZoom(point);dojo.byId("radio").value=points;dojo.byId("center").value=map.getCenter().toUrlValue();dojo.byId("numPage").value=1;getProperties();}
function getProperties(){initSearch();dojo.xhrGet({url:"propertyMap.htm?action=json&address="+escape(dojo.byId('address').value)+"&k=",form:dojo.byId('controles'),load:function(response,ioArgs){endSearch();dojo.byId('searchName').innerHTML=response[0];var result=response[1];pushPins(response[1].elementList);addPager(response[1].total,response[1].itemsPerPage,response[1].actualPage,response[1].totalPages);},error:function(response,ioArgs){console.debug('error');endSearch()},handleAs:"json"});}
function addPager(total,itemsPerPage,actualPage,totalPages){dojo.byId('totalProperties').innerHTML=dojo.string.substitute(labs_propertySearch["labs.propertySearch.total_properties_criterios"],[milsep(total)]);dojo.byId('paginador').innerHTML="";if(total<=itemsPerPage){dojo.addClass("mapPager","d-none");dojo.byId('hmtctl').style.top="7px";return}
var headPager="<span>"+dojo.string.substitute(labs_propertySearch["labs.propertySearch.total_properties"],[milsep(total)])+"</span>";var pager="";pager+="<label>";if(actualPage!=1){pager+="<a href='#' onclick='changePage("+(actualPage-1)+");return false;'>"+dojo.string.substitute(labs_propertySearch["labs.propertySearch.previous"],[milsep(itemsPerPage)])+"</a>";}
lowerRange=(actualPage==1)?1:(actualPage-1)*itemsPerPage;upperRange=(actualPage*itemsPerPage>total)?total:actualPage*itemsPerPage;pager+=dojo.string.substitute(labs_propertySearch["labs.propertySearch.from_to"],[milsep(lowerRange),milsep(upperRange)]);if(actualPage!=totalPages){pager+="<a href='#' onclick='changePage("+(actualPage+1)+");return false;'>"+dojo.string.substitute(labs_propertySearch["labs.propertySearch.next"],[milsep(itemsPerPage)])+"</a>";}
pager+="</label>";dojo.byId('mapPager').innerHTML=headPager+pager;dojo.removeClass("mapPager","d-none");dojo.byId('hmtctl').style.top="70px";dojo.byId('paginador').innerHTML=pager;}
function changePage(page){dojo.byId("numPage").value=page;getProperties();}
function pushPins(properties){var table=dojo.byId('listado');table.removeChild(document.getElementsByTagName('tbody')[0])
var tbody1=document.createElement('tbody');table.appendChild(tbody1);var hayConDirOculta=false;for(i=0;i<properties.length;i++){var point=new google.maps.LatLng(properties[i].latitude,properties[i].longitude);var icono=(properties[i].showAddress)?icons[EXACTA]:icons[NO_EXACTA]
var marker=createMarker(point,properties[i],icono,i);map.addOverlay(marker);addTableRow(properties[i],(i+1)%3==0,tbody1);if(!hayConDirOculta){hayConDirOculta=!properties[i].showAddress;}}
if(hayConDirOculta){dojo.removeClass(dojo.byId('extraHiddenAddressInfo'),'d-none');}else{dojo.addClass(dojo.byId('extraHiddenAddressInfo'),'d-none');}
map.removeOverlay(circle);if(properties.length==0){redrawCircle(points,EMPTY_AREA_COLOR,EMPTY_AREA_COLOR);dojo.removeClass("mapEmpty","d-none");dojo.byId('hmtctl').style.top="70px";errorCircle=true;dojo.addClass("busquedaOk","d-none");}else{dojo.byId('hmtctl').style.top="7px";dojo.addClass("mapEmpty","d-none");redrawCircle(points,AREA_COLOR,AREA_COLOR);errorCircle=false;dojo.removeClass("busquedaOk","d-none");}}
function addTableRow(property,separator,tbody1){var row="";var tr1=document.createElement('tr');if(separator){tr1.className='separador';}
tbody1.appendChild(tr1);var td1=document.createElement('td');tr1.appendChild(td1);var numPhotos;if(property.numPhotos>0){numPhotos=property.numPhotos+" "+((property.numPhotos>1)?labs_common["labs.common.photos"]:labs_common["labs.common.photo"]);var a1=document.createElement('a');a1.setAttribute('href','http://'+property.photosUrl);a1.setAttribute('target',"_blank");a1.onclick=function(){this.href=dojo.byId('redirectIdealista').value+property.photosUrl};td1.appendChild(a1);}else{numPhotos=labs_common["labs.common.withoutPhoto"];a1=td1;}
var txt4=document.createTextNode(numPhotos);a1.appendChild(txt4);var td2=document.createElement('td');tr1.appendChild(td2);var txt6=document.createTextNode(property.propertyType);td2.appendChild(txt6);var td3=document.createElement('td');tr1.appendChild(td3);var a2=document.createElement('a');a2.setAttribute('href','http://'+property.url);a2.setAttribute('target',"_blank");a2.setAttribute('title',property.address);a2.onclick=function(){this.href=dojo.byId('redirectIdealista').value+property.url};td3.appendChild(a2);var txt8=document.createTextNode(property.abrAddress);a2.appendChild(txt8);var td5=document.createElement('td');tr1.appendChild(td5);var txt12=document.createTextNode(property.rooms);td5.appendChild(txt12);var abbr1=document.createElement('abbr');abbr1.setAttribute('title','dormitorios');td5.appendChild(abbr1);var txt13=document.createTextNode(' dorm');abbr1.appendChild(txt13);var td6=document.createElement('td');td6.setAttribute('class','plantaListado');tr1.appendChild(td6);var floor=dojo.number.format(property.floor)!=null&&dojo.number.format(property.floor)!="0"?property.floor+"\u00aa":property.floor;var txt15=document.createTextNode(floor);td6.appendChild(txt15);var td7=document.createElement('td');tr1.appendChild(td7);var txt17=document.createTextNode(Math.round(property.size));td7.appendChild(txt17);var abbr2=document.createElement('abbr');abbr2.setAttribute('title','metros cuadrados');td7.appendChild(abbr2);var td8=document.createElement('td');tr1.appendChild(td8);var txt20=document.createTextNode(milsep(Math.round(property.price/property.size)));td8.appendChild(txt20);var td9=document.createElement('td');tr1.appendChild(td9);var txt22=document.createTextNode(milsep(Math.round(property.price)));td9.appendChild(txt22);var abbr3=document.createElement('abbr');abbr3.setAttribute('title','euros');td9.appendChild(abbr3);var txt23=document.createTextNode(' eur');abbr3.appendChild(txt23);var td10=document.createElement('td');tr1.appendChild(td10);var condition=property.condition!=""?tipos["tipos.estado."+property.condition.replace(/ /gi,"-")]:"";var txt25=document.createTextNode(condition);td10.appendChild(txt25);return row;}
function redrawCircle(points,fillColor,liColor)
{liWidth=2;circle=new google.maps.Polygon(points,liColor,liWidth,null,fillColor,null);map.addOverlay(circle);}
function createMarker(point,property,icono,indice){var mark;if(icono!=null){mark=new google.maps.Marker(point,icono);}else{mark=new google.maps.Marker(point);}
google.maps.Event.addListener(mark,"click",function(){createPropertyTooltip(property,mark);});google.maps.Event.addListener(mark,"mouseover",function(){map.removeOverlay(marker);dojo.addClass(dojo.byId('listado').getElementsByTagName('tr')[indice+1],'listadoOver');mouseCircle=false;});google.maps.Event.addListener(mark,"mouseout",function(){mouseCircle=true;dojo.removeClass(dojo.byId('listado').getElementsByTagName('tr')[indice+1],'listadoOver');});return mark;}
function getRatio(){var relZoom=map.getZoom()-7;relZoom=Math.pow(2,relZoom);var partial=(map.getZoom()<=LIMIT_ZOOM)?1:2;return(50/relZoom)*partial;}
function drawCircleAndSetZoom(point){var ratio=getRatio();var points=drawCircle(point,ratio,60);fit();return points;}
var points=[];function drawCircle(center,radius,nodes,liColor,liWidth,liOpa,fillColor,fillOpa)
{areaPoints="";var latConv=center.distanceFrom(new google.maps.LatLng(center.lat()+0.1,center.lng()))/100;var lngConv=center.distanceFrom(new google.maps.LatLng(center.lat(),center.lng()+0.1))/100;points=[];var step=parseInt(360/nodes)||10;var numPoints=0;for(var i=0;i<=360;i+=step)
{var fin="";var pint=new google.maps.LatLng(center.lat()+(radius/latConv*Math.cos(i*Math.PI/180)),center.lng()+
(radius/lngConv*Math.sin(i*Math.PI/180)));if(numPoints==0){areaPoints+=pint.lat()+","+pint.lng();}
numPoints++;points.push(pint);bounds.extend(pint);}
fillColor=(fillColor==null)?AREA_COLOR:fillColor;liColor=(liColor==null)?AREA_COLOR:liColor;liWidth=liWidth||2;circle=new google.maps.Polygon(points,liColor,liWidth,liOpa,fillColor,fillOpa);map.addOverlay(circle);return areaPoints;}
function getZoomFromCircle(){var zoom=map.getBoundsZoomLevel(bounds);return map.getBoundsZoomLevel(bounds);}
function fit(){map.panTo(map.getCenter());var newZoom=getZoomFromCircle();map.setZoom(newZoom);}
function fitMap(){map.checkResize();map.panTo(map.getCenter())}
function muestra(){controlador=document.getElementById('controles');var mapaPpal=document.getElementById('googlemapa');var loader=document.getElementById('loader');imgmostrar=document.getElementById('muestra_oculta').getElementsByTagName('img')[0];if(pox<=223){controlador.style.left=-223+pox+'px';mapaPpal.style.left=(30+pox)+'px';mapaPpal.style.width=(807-pox)+'px';var t=setTimeout("muestra()",50);pox=(poy*poy)/223;poy=poy+44.6;}else{imgmostrar.src='img/application/maps/mostrar_criterios_of.gif';controlesab=true;imgmostrar.onclick=function(){oculta()};pox=0;poy=0;}
loader.style.left="45%";fitMap();}
function oculta(){controlador=document.getElementById('controles');var mapaPpal=document.getElementById('googlemapa');var loader=document.getElementById('loader');imgmostrar=document.getElementById('muestra_oculta').getElementsByTagName('img')[0];if(pox<=223){controlador.style.left=0-pox+'px';mapaPpal.style.left=254-pox+'px';mapaPpal.style.width=583+pox+'px';var t=setTimeout("oculta()",50);pox=(poy*poy)/223;poy=poy+44.6;}else{imgmostrar.src='img/application/maps/mostrar_criterios_on.gif';imgmostrar.onclick=function(){muestra()};controlesab=false;pox=0;poy=0;}
loader.style.left="30%";fitMap();}
function setDateSince(e){if(!e){var e=window.event;}
var oObject=(e.srcElement||e.target);if(oObject.tagName=='A'||oObject.tagName=='IMG'){return}
dojo.byId('since').value=(dojo.byId('ver_1').checked)?dojo.byId('ver_1').value:(dojo.byId('ver_2').checked)?dojo.byId('ver_2').value:dojo.byId('ver_3').value;refreshProperties();}
function refreshProperties(){if(circle){dojo.byId('numPage').value=1;getProperties();}}
contains=function(point,poly){var j=0;var oddNodes=false;var x=point.lng();var y=point.lat();for(var i=0;i<poly.getVertexCount();i++){j++;if(j==poly.getVertexCount()){j=0;}
if(((poly.getVertex(i).lat()<y)&&(poly.getVertex(j).lat()>=y))||((poly.getVertex(j).lat()<y)&&(poly.getVertex(i).lat()>=y))){if(poly.getVertex(i).lng()+(y-poly.getVertex(i).lat())/(poly.getVertex(j).lat()-poly.getVertex(i).lat())*(poly.getVertex(j).lng()-poly.getVertex(i).lng())<x){oddNodes=!oddNodes}}}
return oddNodes;}
function isInErrorCircle(point){var result=false;if(circle){result=errorCircle&&contains(point,circle);}
return result;}
function createPropertyTooltip(property,mark){tooltip=dojo.byId("propertyDetail");dojo.byId('detailPhoto').setAttribute('src',"");dojo.removeClass("propertyDetail","d-none");var euros=(dojo.byId('operation').value=='V')?labs_common["labs.common.euros"]:labs_common["labs.common.eurosXmonth"];dojo.byId('detailPrice').innerHTML="<a href='http://"+property.url+"' onclick='this.href=\""+dojo.byId('redirectIdealista').value+property.url+"\"'target='_blank'>"+milsep(Math.round(property.price))+" "+euros+"</a>";dojo.byId('detailDescription').innerHTML=property.rooms+" "+labs_common["labs.common.rooms"];var numPhotos="";if(property.numPhotos>0){dojo.byId('detailPhoto').setAttribute('src',property.thumbnail);numPhotos="<a href='http://"+property.photosUrl+"' onclick='this.href=\""+dojo.byId('redirectIdealista').value+property.photosUrl+"\"' target='_blank'>"+labs_propertySearch["labs.propertySearch.seePhotos"]+"("+property.numPhotos+")</a>";}else{dojo.byId('detailPhoto').setAttribute('src',"img/application/maps/sin_foto_labs.gif");}
dojo.byId('detailPhotosNumber').innerHTML=numPhotos;if(property.showAddress==true){dojo.byId('streetview').innerHTML="<a href='#' id='openstr' onclick='openStreetView ("+property.latitude+","+property.longitude+"); return false;'>"+labs_propertySearch["labs.propertySearch.linkStreetView"]+"</a>"}
else{dojo.byId('streetview').innerHTML=" ";}
var point=new google.maps.LatLng(property.latitude,property.longitude);checkPanoramaEnable(point);var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(mark.getPoint(),map.getZoom());var anchor=mark.getIcon().iconAnchor;var width=mark.getIcon().iconSize.width;var height=tooltip.clientHeight;var pos=new google.maps.ControlPosition(G_ANCHOR_TOP_LEFT,new google.maps.Size(offset.x-point.x-anchor.x+width+90,offset.y+60-point.y-anchor.y+480));pos.apply(tooltip);}
function openStreetView(lat,lon){street_tooltip=dojo.byId("propertyDetail");dojo.removeClass("capa_streetView","d-none");var point=new google.maps.LatLng(lat,lon);showPanoramaForMarker(point);}
function closeTooltip(name){dojo.addClass(name,"d-none");}
function showTooltip(name){dojo.removeClass(name,"d-none");}
function closePopUps(){dojo.addClass('propertyDetail',"d-none");dojo.addClass('hiddenAddress',"d-none");}