var map;var hintIcon=new GIcon();hintIcon.image="images/icocentro.png";hintIcon.iconSize=new GSize(24,24);hintIcon.iconAnchor=new GPoint(16,16);hintIcon.shadow="images/icos.png";hintIcon.shadowSize=new GSize(30,30);var locationsCache=new Object();var locationsHintsCache=new Object();var locationsIniCache=new Object();var busy=false;var markers=[];var curPage=1;var filter={};var pagina=1;var loadingControl=new MLoadingControl();var polygons=Array();var clusters=Array();var timeout;var code;var usuario;var refresca=false;var filtro_mod;var iniIcon=new GIcon(G_DEFAULT_ICON);iniIcon.image="icon13.png";iniIcon.iconSize=new GSize(32,32);iniIcon.iconAnchor=new GPoint(16,30);var gpoly_ok=true;var color_track="#ff0000";var tracks_ini=[];var tracks_pol=[];var principal=true;var lathi=40.2;var lonhi=-3;var zoohi=6;var n_color_track=1;var n_color_encon=1;var color_0="#ff0000";var color_1="#ff0000";var color_2="#00ccff";var color_3="#00ff00";var color_4="#ffff00";var color_5="#996600";var color_6="#006600";var color_7="#0000cc";var color_8="#ff9900";var color_9="#999999";var color_10="#000000";function Dibuja_rutas(refe_relacion,track_cod,puntos,texto,imagen){var inf_iz,sup_de,marca_ini,poly_linea;if(track_cod.length>0){niveles=repeat("B",puntos);switch(n_color_track){case 1:color_track=color_1;break;case 2:color_track=color_2;break;case 3:color_track=color_3;break;case 4:color_track=color_4;break;case 5:color_track=color_5;break;case 6:color_track=color_6;break;case 7:color_track=color_7;break;case 8:color_track=color_8;break;case 9:color_track=color_9;break;case 10:color_track=color_10;break;default:color_track=color_0}n_color_track=n_color_track+1;if(n_color_track>10){n_color_track=1}poly_linea=new GPolyline.fromEncoded({color:color_track,weight:4,opacity:1,points:track_cod,levels:niveles,zoomFactor:16,numLevels:4});var vertice_pri_punto=poly_linea.getVertex(0);ini_track=vertice_pri_punto}locationsCache[refe_relacion]=[marca_ini,poly_linea,refe_relacion,color_track];return ini_track}function showLocation(refe_relacionados){var referencias=refe_relacionados[0];var c=refe_relacionados[1];if(referencias){map.addOverlay(referencias);tracks_ini[refe_relacionados[2]]=referencias}if(c instanceof GPolyline){if(gpoly_ok){gpoly=c;color_track="#ff0000";gpoly_ok=false}map.addOverlay(c);tracks_pol[refe_relacionados[2]]=c}}function repeat(s,n){var a=[];while(a.length<n){a.push(s)}return a.join("")}function recopilar(a){if(busy){return}busy=true;refresca=false;loadingControl.show();filter={};if(!a){curPage=1}$.extend(filter,{latsi:map.getBounds().getNorthEast().lat(),lonsi:map.getBounds().getSouthWest().lng(),latid:map.getBounds().getSouthWest().lat(),lonid:map.getBounds().getNorthEast().lng(),zoom:map.getZoom(),PAG:curPage,rutporpag:encontradosPerPage,code:code,U:usuario,mod:filtro_mod});clearClusters();$.getJSON("clustersbd.asp",filter,function(g){if(g.tipo=="sector"){var c=g.encontrados;$("#pager").html("");oldcode=g.olcode;var fsec=g.total;if(!principal){$("#rutList").html("");if(fsec<1){$("#rutList").append("<span class='rojo_p'><b>&nbsp;&nbsp;No se encontraron rutas en esta zona</b></span>")}else{$("#rutList").append("<span class='rojo_p'><b>&nbsp;&nbsp;Se encontraron "+fsec+" rutas en esta zona</b></span>")}}if(oldcode!=code){refresca=true}if(markers){for(rutId in markers){map.removeOverlay(markers[rutId])}}for(rutId in tracks_ini){map.removeOverlay(tracks_ini[rutId])}for(rutId in tracks_pol){map.removeOverlay(tracks_pol[rutId])}for(var i=0;i<c.length;i++){var element=c[i];if(element.tipo=="sector"){var poly=drawPolygon(element);map.addOverlay(poly);polygons.push(poly);var marker2=parseCluster(element);clusters.push(marker2);map.addOverlay(marker2)}}loadingControl.hide();busy=false}if(g.tipo=="ruta"){if(a){map.clearOverlays()}else{if(markers){for(rutId in markers){map.removeOverlay(markers[rutId])}for(rutId in tracks_ini){map.removeOverlay(tracks_ini[rutId])}for(rutId in tracks_pol){map.removeOverlay(tracks_pol[rutId])}}}markers=[];$("#rutList").html("");var c=g.encontrados;var h=c.length;var f=g.total;oldcode=g.olcode;if(oldcode!=code){refresca=true}if(f<1){$("#rutList").append("<span class='rojo_p'><b>&nbsp;&nbsp;No se encontraron rutas en esta zona</b></span>")}$.each(c,function(l,m){m.inicio=Dibuja_rutas(m.numero,m.codi,"1",m.numero);m.inicio='"'+m.inicio+'"';m.inicio=m.inicio.replace('"',"");m.inicio=m.inicio.replace('"',"");m.inicio=m.inicio.replace("(","");m.inicio=m.inicio.replace(")","");e_arr=m.inicio.split(",");m.inicio_lat=e_arr[0];m.inicio_lon=e_arr[1];var k=new GIcon();if(m.mod=="BTT"){k.image="images/icobtt.png"}if(m.mod=="Carretera"){k.image="images/icocarretera.png"}k.iconSize=new GSize(24,24);k.iconAnchor=new GPoint(16,16);k.shadow="images/icos.png";k.shadowSize=new GSize(30,30);var j=new GMarker(new GLatLng(m.latc,m.lonc),k);GEvent.addListener(j,"click",function(){location.href="ruta000.asp?REF="+m.numero});GEvent.addListener(j,"mouseover",function(){HighlightEncontrada(m.numero,m.latc,m.lonc,true,true,m.inicio_lat,m.inicio_lon,true)});GEvent.addListener(j,"mouseout",function(){EndHighlightEncontrada(m.numero,true,true,true)});map.addOverlay(j);markers[m.numero]=j;$("#rutList").append(getEncontradaHTML(m));showLocation(locationsCache[m.numero])});var i=(curPage-1)*encontradosPerPage;var d=i+h;$("#pager").html("");if(f>1){$("#pager").append("<span class='pager-disabled'>&nbsp;Rutas&nbsp;"+(i+1)+" a "+(i+h)+" de "+f+"&nbsp;&nbsp;</span>")}if(curPage>1){$("#pager").append("<a class='pager' onClick='curPage--;recopilar(true);return false;' href='#'>&laquo;&nbsp;Anterior</a>")}if(curPage<(Math.ceil(f/encontradosPerPage))){$("#pager").append("<a class='pager' onClick='curPage++;recopilar(true);return false;' href='#'>Siguiente&nbsp;&raquo;</a>")}$("#pager").append("<b><span class='rojo_p'>&nbsp;"+f+" rutas en este mapa</span></b>");loadingControl.hide();busy=false}})}function getEncontradaHTML(a){switch(n_color_encon){case 1:color_track=color_1;break;case 2:color_track=color_2;break;case 3:color_track=color_3;break;case 4:color_track=color_4;break;case 5:color_track=color_5;break;case 6:color_track=color_6;break;case 7:color_track=color_7;break;case 8:color_track=color_8;break;case 9:color_track=color_9;break;case 10:color_track=color_10;break;default:color_track=color_0}n_color_encon=n_color_encon+1;if(n_color_encon>10){n_color_encon=1}if(a.mod=="BTT"){var mod_image="images/icobtt.png"}if(a.mod=="Carretera"){var mod_image="images/icocarretera.png"}return'<div class="encontrada" onmouseover="HighlightEncontrada('+a.numero+","+a.latc+","+a.lonc+",true, true,"+a.inicio_lat+","+a.inicio_lon+');" onmouseout="EndHighlightEncontrada('+a.numero+',true, true);" style="width:100%;overflow:hidden;"><a class="bloc" id="'+a.numero+'" href="ruta000.asp?REF='+a.numero+'" title="'+a.nombre+'"><img alt="'+a.numero+'" class="icon" style="border-right: 8px solid '+color_track+'" src="'+mod_image+'" /><span class="gris_m">'+a.numero+'&nbsp;</span><br/><span class="nom">'+a.nombre+'</span><br/><span class="info">'+a.dist+'&nbsp;kilometros&nbsp,</span>&nbsp;<span class="info">IBP:&nbsp;<b>'+a.ibp+"</b></span></a></div>"}function ajaxEnabled(){$.ajaxSetup({scriptCharset:"utf-8"})}function isClose(a,b){return(Math.abs(a-b)<0.000001)}function extractDataFromLocation(c,g){if(c.length>0){var d=c.split("&");for(var f=0;f<d.length;f++){var b=d[f].split("=");g[b[0]]=parseFloat(b[1])}}}function getMapTypeOrder(){var b=map.getCurrentMapType();var a;switch(b){case G_NORMAL_MAP:a=0;break;case G_SATELLITE_MAP:a=1;break;case G_HYBRID_MAP:a=2;break;case G_PHYSICAL_MAP:a=3;break;default:a=1}return a}function historyChange(d){var f={ln:lonhi,lt:lathi,z:zoohi,k:2};extractDataFromLocation(d,f);var a=map.getCenter();var b=getMapTypeOrder();if(!a||!isClose(f.lt,a.lat())||!isClose(f.ln,a.lng())||(f.z)!=map.getZoom()||f.k!=b){map.setCenter(new GLatLng(f.lt,f.ln),f.z,f.k<3?map.getMapTypes()[f.k]:G_PHYSICAL_MAP)}}function r(b){return b.toFixed(6)}function updateLinkToThisPage(){var f=map.getCenter();var a=getMapTypeOrder();var g=map.getZoom();var d="lt="+r(f.lat())+"&ln="+r(f.lng())+"&z="+g+"&k="+a;var c=$.historyCurrentHash.replace(/^#/,"");if(d!=c){$.historyLoad(d)}}function onMoveEndMap(){var a=Math.ceil(Math.random()*9)+"";var b=Math.ceil(Math.random()*9)+"";var c=Math.ceil(Math.random()*9)+"";var d=Math.ceil(Math.random()*9)+"";var e=Math.ceil(Math.random()*9)+"";var f=Math.ceil(Math.random()*9)+"";code=a+b+c+d+e+f;recopilar(false);updateLinkToThisPage();zoom=map.getZoom();if(timeout){window.clearTimeout(timeout)}timeout=window.setTimeout(function(){if(refresca){recopilar(false)}},6000)}function setupDynamicMap(lt,ln,z){if(lt){lathi=lt;lonhi=ln;zoohi=z}var a=document.getElementById("map");if(GBrowserIsCompatible()){if(a){map=new GMap2(a,{draggableCursor:"crosshair"});$.historyInit(historyChange);map.addControl(new GLargeMapControl3D());map.addMapType(G_PHYSICAL_MAP);map.addControl(new GMapTypeControl());map.enableDoubleClickZoom();map.enableContinuousZoom();map.enableScrollWheelZoom();map.addControl(loadingControl);G_PHYSICAL_MAP.getMinimumResolution=function(){return 4};G_NORMAL_MAP.getMinimumResolution=function(){return 4};G_SATELLITE_MAP.getMinimumResolution=function(){return 4};G_HYBRID_MAP.getMinimumResolution=function(){return 4};G_PHYSICAL_MAP.getMaximumResolution=function(){return 13};G_NORMAL_MAP.getMaximumResolution=function(){return 13};G_SATELLITE_MAP.getMaximumResolution=function(){return 13};G_HYBRID_MAP.getMaximumResolution=function(){return 13};GEvent.addListener(map,"moveend",function(){onMoveEndMap()});GEvent.addListener(map,"maptypechanged",function(){updateLinkToThisPage()});recopilar(false)}}else{alert("Su navegador no parece ser compatible con Google Maps")}}function ShowPosHint(d,c,a,e,g,h){var b;if(locationsHintsCache[d]){gMarkerHint=locationsHintsCache[d]}else{gMarkerHint=new GMarker(new GLatLng(c,a),hintIcon);locationsHintsCache[d]=gMarkerHint}if(locationsIniCache[d]){gMarkerIni=locationsIniCache[d]}else{gMarkerIni=new GMarker(new GLatLng(e,g),iniIcon);locationsIniCache[d]=gMarkerIni}if(map){if(!h){map.addOverlay(gMarkerHint)}map.addOverlay(gMarkerIni)}}function HighlightEncontrada(f,c,a,b,d,e,g,h){locationsCache[f][1].weight=4;locationsCache[f][1].color="#ff00ff";locationsCache[f][0]="";showLocation(locationsCache[f]);if(d){$("#"+f).css({backgroundColor:"#EEEEEE"})}else{$("#ctrl"+f).css({display:"block"});$("#nom"+f).css({textDecoration:"underline"})}if(b){ShowPosHint(f,c,a,e,g,h)}}function HidePosHint(a){if(map){map.removeOverlay(locationsHintsCache[a]);map.removeOverlay(locationsIniCache[a])}}function EndHighlightEncontrada(c,a,b){locationsCache[c][1].weight=4;locationsCache[c][1].color=locationsCache[c][3];locationsCache[c][0]="";showLocation(locationsCache[c]);if(b){$("#"+c).css({backgroundColor:"transparent"})}else{$("#ctrl"+c).css({display:"none"});$("#nom"+c).css({textDecoration:"none"})}if(a){HidePosHint(c)}}function drawPolygon(element){var polyPoints=Array();polyPoints.push(new GLatLng(parseFloat(element.gridSWLat).toFixed(6),parseFloat(element.gridSWLon).toFixed(6)));polyPoints.push(new GLatLng(parseFloat(element.gridSWLat).toFixed(6),parseFloat(element.gridNELon).toFixed(6)));polyPoints.push(new GLatLng(parseFloat(element.gridNELat).toFixed(6),parseFloat(element.gridNELon).toFixed(6)));polyPoints.push(new GLatLng(parseFloat(element.gridNELat).toFixed(6),parseFloat(element.gridSWLon).toFixed(6)));polyPoints.push(new GLatLng(parseFloat(element.gridSWLat).toFixed(6),parseFloat(element.gridSWLon).toFixed(6)));return new GPolygon(polyPoints,"#ffffff",1,1,"#ff0000",0.2)}function parseCluster(element){var avLat=parseFloat(element.gridNELat)-((parseFloat(element.gridNELat)-parseFloat(element.gridSWLat))/3);var avLon=parseFloat(element.gridNELon)-((parseFloat(element.gridNELon)-parseFloat(element.gridSWLon))/5);var latlng=new GLatLng(parseFloat(element.gridNELat),parseFloat(element.gridSWLon));var icon=new GIcon();icon.image="images/icolupa.png";if(filtro_mod=="BTT"){icon.image="images/icobttb32.png"}if(filtro_mod=="Carretera"){icon.image="images/icocarb32.png"}icon.iconSize=new GSize(32,32);icon.shadow="images/icos.png";icon.shadowSize=new GSize(40,40);icon.iconAnchor=new GPoint(-90,-50);icon.infoWindowAnchor=new GPoint(25,7);var plurar="Rutas";if(element.cnt==1){plurar="Ruta"}opts={icon:icon,clickable:true,title:"Ampliar zona",labelText:'<pre><font face="Verdana" size="2" color="#FFFFFF"><b>'+element.cnt+" "+plurar+"</b></font></pre>",labelOffset:new GSize(80,20)};var marker2=new LabeledMarker(latlng,opts);var bounds=new GLatLngBounds();bounds.extend(new GLatLng(parseFloat(element.gridSWLat),parseFloat(element.gridSWLon)));bounds.extend(new GLatLng(parseFloat(element.gridNELat),parseFloat(element.gridNELon)));GEvent.addListener(marker2,"click",function(){principal=false;zoom=map.getZoom();map.setCenter(bounds.getCenter(),zoom+2)});return marker2}function clearClusters(){var marker=clusters.shift();while(marker){map.removeOverlay(marker);marker=clusters.shift()}var poly=polygons.shift();while(poly){map.removeOverlay(poly);poly=polygons.shift()}}function dump(arr,level){var dumped_text="";if(!level){level=0}var level_padding="";for(var j=0;j<level+1;j++){level_padding+="    "}if(typeof(arr)=="object"){for(var item in arr){var value=arr[item];if(typeof(value)=="object"){dumped_text+=level_padding+"'"+item+"' ...\n";dumped_text+=dump(value,level+1)}else{dumped_text+=level_padding+"'"+item+"' => \""+value+'"\n'}}}else{dumped_text="===>"+arr+"<===("+typeof(arr)+")"}return dumped_text};
