var pruned_location_attrs;var map;var tiles;var current_page;var shown_tags={};var already_loaded_point_tiles={};var tag_selection={};function startswith(b,a){return b.substr(0,a.length)===a}function filter_empty(a){var c,b=[];for(c=0;c<a.length;c+=1){if(a[c]){b.push(a[c])}}return b}function path_to_list(b){var a;a=b.split("::");return[a[0]].concat(filter_empty(a[1].split(":")))}function list_to_path(a){var c,b;c=a[0]+"::";b=a.slice(1);if(b.length!==0){c=c+b.join(":")+":"}return c}function make_cache_key(a){return String(a[0])+","+String(a[1])+","+String(a[2])}function checkListValue(d,c){var a=false,b;for(b=0;b<d.length;b=b+1){if(d[b]===c){a=true;break}}return a}function invalidate_point_tile_load_cache(){var b,a;for(b in already_loaded_point_tiles){if(already_loaded_point_tiles.hasOwnProperty(b)){a=already_loaded_point_tiles[b];if(YAHOO.util.Connect.isCallInProgress(a)){YAHOO.util.Connect.abort(a)}}}already_loaded_point_tiles={}}function set_default_marker_style(a){var b=a.marker;b.setIcon(map_util.get_marker_image(a.tags,"sm"));b.setShadow(map_util.get_marker_special("shadow","sm"));b.setZIndex(undefined)}function set_result_marker_style(e,a,b){var d=a.marker,c=String.fromCharCode("A".charCodeAt(0)+b);d.setIcon(map_util.get_marker_image(a.tags,"lg",c));d.setShadow(map_util.get_marker_special("shadow","lg"));d.setZIndex(1000-b)}function should_show_point(c,a){var e,h,d,f,b,k,g,j;for(d in location_facets){if(location_facets.hasOwnProperty(d)){f=true;b=d+"::";for(g in a){if(a.hasOwnProperty(g)&&startswith(g,b)){f=false;j=false;for(e=0;e<c.length;e=e+1){k=c[e];if(startswith(k,g)){j=true;break}}if((j&&a[g])||(!j&&!a[g])){f=true;break}}}if(!f){return false}}}return true}var points_manager=(function(){var n={},o,k="map_info_window",e="map_rollover_info",l;function g(B){var x,E,F,D,s,v,w,A,C,y,z,u;invalidate_point_tile_load_cache();x=B.getNorthEast();E=B.getSouthWest();F=x.lat();D=E.lat();s=x.lng();v=E.lng();z=0;for(w in n){if(n.hasOwnProperty(w)){u=n[w].marker;y=u.getPosition();A=y.lat();C=y.lng();if(D>A||A>F||v>C||C>s){u.setMap(null);delete n[w]}}}}function h(s){l=document.createElement("div");l.id=s;l.style.display="none";l.style.position="absolute";l.style.border="1px solid #ccc";l.style.background="#fff";l.style.padding="5px";l.style.margin="5px";l.style.fontWeight="bold";l.style.zIndex=50000;document.body.appendChild(l)}function d(t){var s=t.offsetLeft;while(t.offsetParent){s+=t.offsetParent.offsetLeft;t=t.offsetParent}return s}function c(t){var s=t.offsetTop;while(t.offsetParent){s+=t.offsetParent.offsetTop;t=t.offsetParent}return s}function b(t,w){var v,s,C,z=t.getBounds(),B=t.getZoom(),y=Math.pow(2,B),x=z.getNorthEast(),A=z.getSouthWest(),u=t.getProjection();x=u.fromLatLngToPoint(x);A=u.fromLatLngToPoint(A);v=u.fromLatLngToPoint(w.getPosition());s=c(t.getDiv())+(v.y-x.y)*y;C=d(t.getDiv())+(v.x-A.x)*y;return{top:s,left:C}}function p(v,x){var u,s=n[v],w=s.marker,t=document.getElementById(k);t.innerHTML=x;u=b(map,w);t.style.top=u.top-20+"px";t.style.left=u.left+10+"px";t.style.zIndex=50000;t.style.display="block";t.style.border="1px solid #ccc";t.style.background="#fff";t.style.padding="5px";t.style.margin="5px"}function j(u){var s=n[u],t=s.info_window_data;if(t!==undefined){p(u,t);return}if(o!==undefined&&YAHOO.util.Connect.isCallInProgress(o)){YAHOO.util.Connect.abort(o)}function v(w){p(u,w.responseText)}if(s.listing){YAHOO.util.Connect.setDefaultXhrHeader(false);o=YAHOO.util.Connect.asyncRequest("GET",s.url+"/listing_marker_info.html",{success:v},"")}else{YAHOO.util.Connect.setDefaultXhrHeader(false);o=YAHOO.util.Connect.asyncRequest("GET",s.url+"/marker_info.html",{success:v},"")}location.hash="googlesearchmap"}function i(){var s=document.getElementById(k);s.style.display="none"}function m(v){var u,s=n[v],w=s.marker,t=document.getElementById(e);t.innerHTML=s.title;u=b(map,w);t.style.top=u.top-20+"px";t.style.left=u.left+10+"px";t.style.background="#fff";t.style.zIndex=49999;t.style.display="block"}function f(){var s=document.getElementById(e);s.style.display="none"}function q(A){var C,z,v,w,s=A.uuid,B=n[s];if(B!==C){return B}z=new google.maps.LatLng(A.lat,A.lng);v=new google.maps.Marker({position:z,map:map});function x(u){f();j(s)}google.maps.event.addListener(v,"click",x);function t(u){m(s)}google.maps.event.addListener(v,"mouseover",t);function y(u){f()}google.maps.event.addListener(v,"mouseout",y);n[s]={marker:v,tags:A.tags,url:A.url,title:A.title,listing:A.listing};B=n[s];set_default_marker_style(B);return B}function r(){var t,s,u;for(t in n){if(n.hasOwnProperty(t)){s=n[t];u=s.marker.getVisible();if(should_show_point(s.tags,tag_selection)){if(!u){s.marker.setVisible(true)}}else{if(u){s.marker.setVisible(false)}}}}}function a(){h(k);h(e)}return{initialize:a,tag_selection_changed:r,make_point:q,cull_points:g,open_info_window:j,close_info_window:i,open_rollover_info:m,close_rollover_info:f}}());function update_paginator(h,f,a){var e=[],g=10,b,d,c;if(a===0){YAHOO.util.Dom.setStyle("pag1","display","none");YAHOO.util.Dom.setStyle("pag2","display","none");return}if(f!==1){e.push('<a rel="prev" class="prev" onclick="javascript: prev_results()">'+js_var.paginator_prev+"</a>")}e.push("<ul>");e.push("<li>");e.push(js_var.paginator_page);e.push(" "+f);b=(f-1)*g+1;d=b-1+a;e.push(" ("+js_var.paginator_results+" "+b+"-"+d+")");e.push("</li>");e.push("</ul>");if(!h){e.push('<a rel="next" class="next" onclick="javascript: next_results()">'+js_var.paginator_next+"</a>")}e=e.join("");document.getElementById("pag1").innerHTML=e;document.getElementById("pag2").innerHTML=e;YAHOO.util.Dom.setStyle("pag1","display","");YAHOO.util.Dom.setStyle("pag2","display","")}function decode_tag_selection(a,d){var c={},b;a=filter_empty(a.split(","));for(b=0;b<a.length;b=b+1){c[decodeURIComponent(a[b])]=true}d=filter_empty(d.split(","));for(b=0;b<d.length;b=b+1){c[decodeURIComponent(d[b])]=false}return c}function encode_tag_selection(d){var b=[],c=[],a;for(a in d){if(d[a]){b.push(encodeURIComponent(a))}else{c.push(encodeURIComponent(a))}}b.sort();c.sort();return[b.join(","),c.join(",")]}function set_search_backlink_cookie(){var a=new Date(),b=a.getTime()+3600000;a.setTime(b);document.cookie="mp_search_backlink="+location.href+"; expires="+a.toGMTString()+"; path=/"}function save_state(){var c=map.getZoom(),b=encode_tag_selection(tag_selection),d=map.getCenter(),a="c="+d.lat()+","+d.lng()+"&zoom="+c+"&tags="+b[0]+"&notags="+b[1]+"&p="+current_page,e=document.location.href.split("#");e[1]=a;document.location.href=e.join("#");set_search_backlink_cookie()}function load_state(){var c,g,b,f,e=document.location.href,a={},d={};e=e.split("#")[1];if(e===undefined){return a}e=e.split("&");for(c=0;c<e.length;c=c+1){g=e[c].split("=");if(g.length===2){b=g[0];d[b]=g[1]}}f=d.c||"";f=filter_empty(f.split(","));if(f.length===2){a.center=new google.maps.LatLng(f[0],f[1])}if(d.p!==undefined){a.page=parseInt(d.p,10)}if(d.zoom!==undefined){a.zoom=parseInt(d.zoom,10)}a.tag_selection=decode_tag_selection(d.tags||"",d.notags||"");return a}var load_results=(function(){var b,a,d=[];function c(m){var f,h,j,g,l,e,k=YAHOO.lang.JSON.parse(m.responseText);e=k.html;for(h=0;h<d.length;h=h+1){a=d[h];set_default_marker_style(a)}d=[];for(g in k.json){if(k.json.hasOwnProperty(g)){l=k.json[g];a=points_manager.make_point(l);set_result_marker_style(l,a,parseInt(g,10));d.push(a);e=e.replace("map_icon_"+l.uuid,a.marker.getIcon())}}if(k.json.length===0){document.getElementById("location_list_div").innerHTML=['<p class="noresults">',js_var.no_results_text,"</p>"].join("")}else{document.getElementById("location_list_div").innerHTML=e}update_paginator(k.is_last_page,k.current_page,d.length)}return function(){var h,f,j,e,g,i;if(b!==h){if(YAHOO.util.Connect.isCallInProgress(b)){YAHOO.util.Connect.abort(b)}}f=map.getBounds();j=f.getNorthEast();e=f.getSouthWest();f=[j.lat(),e.lng(),e.lat(),j.lng()].join(",");i={success:c};g=encode_tag_selection(tag_selection);YAHOO.util.Connect.setDefaultXhrHeader(false);b=YAHOO.util.Connect.asyncRequest("GET","result.json?bounds="+f+"&page="+current_page+"&tags="+g[0]+"&notags="+g[1],i,"")}}());function get_tiles_from_map(){var i,j,c,g,f,l,k=map.getZoom(),e=map.getBounds(),a=map.getProjection(),d=Math.pow(2,k),b=e.getNorthEast(),h=e.getSouthWest();l=d/256;b=a.fromLatLngToPoint(b);j=[];j[0]=Math.floor(b.x*l);j[1]=Math.floor(b.y*l);j[2]=k;h=a.fromLatLngToPoint(h);c=[];c[0]=Math.floor(h.x*l);c[1]=Math.floor(h.y*l);c[2]=k;i=[];for(g=c[0];g<=j[0];g=g+1){for(f=j[1];f<=c[1];f=f+1){i.push([g,f,k])}}return i}function load_points_callback(f){var a,d,b,c,e;d=YAHOO.lang.JSON.parse(f.responseText);for(b=0;b<d.length;b=b+1){e=d[b];c=points_manager.make_point(e)}}function update_points(a){var c,d,e,g,b,f;b=encode_tag_selection(tag_selection);for(d=0;d<a.length;d=d+1){f=a[d];e=make_cache_key(f);if(already_loaded_point_tiles[e]===c){g={success:load_points_callback};YAHOO.util.Connect.setDefaultXhrHeader(false);already_loaded_point_tiles[e]=YAHOO.util.Connect.asyncRequest("GET","location_raw.json?tile="+e+"&page=1&tags="+b[0]+"&notags="+b[1],g,"")}}}function tiles_equal(e,d){var h,i,c,f,g;if(e===h&&d===h){return true}if(d===h){return false}i=e[e.length-1];c=d[d.length-1];if(i[0]!==c[0]||i[1]!==c[1]||i[2]!==c[2]){return false}g=e[0];f=d[0];if(g[0]!==f[0]||g[1]!==f[1]||g[2]!==f[2]){return false}return true}function pruned_facets_tree(){var a=js_var.search_tags,c=[],e,h,j,d,g={},b={};d={};for(e=0;e<a.length;e=e+1){c.push(a[e]);j=a[e].split("::")[0];d[j]=g}for(e in location_facets){if(location_facets.hasOwnProperty(e)){if(d[e]!==g){c.push(e+"::")}}}for(h in location_attrs){if(location_attrs.hasOwnProperty(h)){for(e=0;e<c.length;e=e+1){if(startswith(h,c[e])){b[h]=location_attrs[h];break}}}}return b}function get_tags_to_show(){var n={},m,k,g,f,e,c,b,a,d,h,l={};for(k in shown_tags){if(shown_tags.hasOwnProperty(k)){g=shown_tags[k];for(f=0;f<g.length;f=f+1){m=g[f][0];d=g[f][1];if(pruned_location_attrs.hasOwnProperty(m)){n[m]=pruned_location_attrs[m];if(tag_selection[m]!==undefined){b=path_to_list(m)[0];for(e=0;e<d.length;e+=1){h=d[e];a=path_to_list(h)[0];for(c in location_facets){if(location_facets.hasOwnProperty(c)&&c!==b&&l[c]===undefined){l[c]={}}}if(a!==b){l[a][h]=true}}}}}}}for(m in n){if(n.hasOwnProperty(m)){b=path_to_list(m)[0];if(l[b]!==undefined&&!tag_selection.hasOwnProperty(m)&&!l[b].hasOwnProperty(m)){delete n[m]}}}return n}function get_sorted_tags(){var b=get_tags_to_show(),d,a,f,c;a=[];for(d in b){if(b.hasOwnProperty(d)){a.push(location_attrs[d])}}function e(h,g){var j=h.title,i=g.title;if(j===i){return 0}if(j>i){return 1}if(j<i){return -1}}a.sort(e);return a}function make_facets_dict(a){var e={},b,c,f;for(c in location_facets){if(location_facets.hasOwnProperty(c)){e[c]=[]}}for(c=0;c<a.length;c=c+1){if(typeof(a[c].path)!==undefined){f=a[c].path.split("::")[0];e[f].push(a[c])}else{f=a[c].split("::")[0];if(!checkListValue(e[f],a[c])){e[f].push(a[c])}}}return e}function add_path(e,b,c){var a,d;if(c.length===0){return}a=c.splice(0,1)[0];if(a){b.push(a);d=e[a];if(d===undefined){e[a]={};d=e[a]}e=d}add_path(e,b,c)}function cmp_by_title(b,a){var d=b.title,c=a.title;if(d===c){return 0}if(d>c){return 1}if(d<c){return -1}}function recursive_sort(b,a,c,f){var d,e;a.name=b;d=c.concat(b);a.path=list_to_path(d);a.title=location_attrs[a.path].title;for(e in f){if(f.hasOwnProperty(e)){a.push(recursive_sort(e,[],d,f[e]))}}a.sort(cmp_by_title);return a}function all_selected(c){var a,b;a=c+"::";for(b in tag_selection){if(tag_selection.hasOwnProperty(b)&&startswith(b,a)){return false}}return true}function render_item(g,c,f,b,a,e){var d=[];if(e%2===1){d.push('<li class="odd">')}else{d.push('<li class="even">')}d.push('<input class="checkbox" type="checkbox" onclick="');d.push(c);if(typeof(f)==="string"){f=tag_selection.hasOwnProperty(f)}if(f){d.push('" checked name="')}else{d.push('" name="')}d.push(a);d.push('"/>');d.push(g.replace("&","&amp;").replace("<","&lt;").replace(">","&gt;"));if(b.length!==0){d.push("<ul>");d=d.concat(b);d.push("</ul>")}d.push("</li>");return d}function render_inner(e,g){var k,h,f,d,o,p,c,m=0,n=[],b,l,a=js_var.search_tags;for(k=0;k<e.length;k=k+1){p=e[k];c=render_inner(p,g);g=c[2];l=c[1];m+=l;c=c[0];f=path_to_list(p.path);d=f[0]+"::";b=true;for(h=0;h<a.length;h=h+1){if(startswith(a[h],d)){b=false;if(startswith(p.path,a[h])){b=true;break}}}if(b&&e.length===1&&!tag_selection.hasOwnProperty(p.path)){if(l!==0){b=false}}if(tag_selection[p.path]===true){m+=1}if(b){m+=1;g+=1;n=n.concat(render_item(p.title,"select_tag('"+p.path+"', this, true)",p.path,c,f[0]+"_checkbox",g))}else{n=n.concat(c)}}return[n,m,g]}function render_facets(){var n=[],x,v,t,h,f,k,p,o,w,z,q,e,s,g=false,d,l={},m=[],b,y,u=js_var.search_tags;x=0;for(v in shown_tags){if(shown_tags.hasOwnProperty(v)){x+=1}}if(x!==tiles.length){return}y=get_tags_to_show();for(z in y){if(y.hasOwnProperty(z)){e=path_to_list(z);s=e[0];d=l[s];if(d===undefined){l[s]={};d=l[s]}add_path(d,[s],e.slice(1))}}for(z in tag_selection){if(tag_selection.hasOwnProperty(z)&&tag_selection[z]===false){d=path_to_list(z)[0];if(l[d]===undefined){l[d]={}}}}for(d in l){if(l.hasOwnProperty(d)){m.push(recursive_sort(d,[],[],l[d]))}}function a(i,c){var r=i.name,j=c.name;if(r===j){return 0}if(r>j){return 1}if(r<j){return -1}}m.sort(a);for(v=0;v<m.length;v=v+1){f=m[v];k=f.name+"::";p=render_inner(f,1);o=p[2];w=p[1];p=p[0];b=true;for(t=0;t<u.length;t=t+1){if(startswith(u[t],k)){b=false;break}}if(b){w+=1;if(tag_selection[k]===false){w+=1}}if(w>1){g=true;s=f.name;n.push('<div class="facet">');n.push("<h3>"+location_attrs[k].title+"</h3>");n.push("<ul>");h=all_selected(s);n=n.concat(render_item(js_var["all-text"],"select_all_facet('"+k+"')",h,[],s+"_all_checkbox",1));n=n.concat(p);if(b){n=n.concat(render_item(js_var["other-text"],"select_tag('"+k+"', this, false)",k,[],s+"_checkbox",o+1))}n.push("</ul></div>")}}if(g){document.getElementById("features_list_div").innerHTML=n.join("");YAHOO.util.Dom.setStyle("features_list_div","display","");YAHOO.util.Dom.setStyle("features_name","display","")}else{YAHOO.util.Dom.setStyle("features_list_div","display","none");YAHOO.util.Dom.setStyle("features_name","display","none")}}function update_tags_for_tile(d,e){var b,c,a;b=make_cache_key(d);for(a=0;a<tiles.length;a=a+1){c=make_cache_key(tiles[a]);if(c===b){shown_tags[b]=e;break}}if(shown_tags[b]===undefined){return}render_facets()}var tag_getter=(function(){var c={},a={};function e(f){c[f.argument.cache_key]=undefined}function b(g){var f=YAHOO.lang.JSON.parse(g.responseText);c[g.argument.cache_key]=f;update_tags_for_tile(g.argument.tile,f)}function d(f){var g,j,k,l,h;for(g=0;g<f.length;g=g+1){j=f[g];h=make_cache_key(j);k=c[h];if(k!==undefined){if(k!=="pending"){update_tags_for_tile(j,k)}}else{c[h]="pending";l={success:b,failure:e,argument:{tile:j,cache_key:h}};YAHOO.util.Connect.setDefaultXhrHeader(false);YAHOO.util.Connect.asyncRequest("GET","facets.json?tile="+h,l,"")}}}a.update_tags=d;return a}());function reset_paging(){current_page=1;update_paginator(true,1,0)}var update_all=(function(){var b=100,c;function a(){var e,d=map.getZoom();if(b<d){points_manager.cull_points(c)}c=map.getBounds();b=d;save_state();load_results();e=get_tiles_from_map();update_points(e);if(!tiles_equal(e,tiles)){shown_tags={};tiles=e;tag_getter.update_tags(tiles)}}return a}());var handle_map_idle=(function(){var b=true;function a(){if(b){b=false}else{reset_paging()}update_all()}return a}());function initialize(){set_search_backlink_cookie();var a,d,b,c=load_state();pruned_location_attrs=pruned_facets_tree();tag_selection=c.tag_selection||{};current_page=c.page||1;a={zoom:c.zoom,center:c.center};if(a.zoom===undefined){a.zoom=js_var.zoom}if(a.center===undefined){d=js_var.center[0];b=js_var.center[1];a.center=new google.maps.LatLng(d,b)}a.mapTypeId=google.maps.MapTypeId.ROADMAP;map=new google.maps.Map(document.getElementById("googlesearchmap"),a);google.maps.event.addListener(map,"idle",handle_map_idle);points_manager.initialize()}function set_page(a){current_page=a;save_state();load_results();return false}function next_results(){current_page=current_page+1;save_state();load_results();return false}function prev_results(){current_page=current_page-1;save_state();load_results();return false}function tag_selection_changed(){invalidate_point_tile_load_cache();points_manager.tag_selection_changed();reset_paging();update_all();render_facets()}function select_all_facet(e){var c,f,b,d,a;f=path_to_list(e)[0];for(c in tag_selection){if(tag_selection.hasOwnProperty(c)){if(startswith(c,e)){delete tag_selection[c]}}}b=document.facetform[f+"_all_checkbox"];b.checked=true;d=document.facetform[f+"_checkbox"];for(a=0;a<d.length;a=a+1){d[a].checked=false}tag_selection_changed()}function select_tag(e,c,d){var f,a,b;f=path_to_list(e)[0];b=document.facetform[f+"_all_checkbox"];if(c.checked){for(a in tag_selection){if(tag_selection.hasOwnProperty(a)&&(startswith(a,e)||startswith(e,a))){delete tag_selection[a]}}tag_selection[e]=d;b.checked=false}else{delete tag_selection[e];if(all_selected(f)){b.checked=true}}tag_selection_changed()}function qlSelect(c){var a=c[c.selectedIndex].value,e,b,f,d;a=a.split("__");if(a.length===3){e=parseFloat(a[0]);b=parseFloat(a[1]);d=new google.maps.LatLng(e,b);f=parseInt(a[2],10);map.setCenter(d);map.setZoom(f)}}var extInfoDiv="notin";function hideHoverInfo(a){points_manager.close_info_window()};
