$(document).ready(function() {
	
	$('#finder').submit(function() {
		var zip = $('#zip').val();
		var radius = $('#radius').val();
		var reqUrl = 'http://www.saranac.com/app/find/location/zip/' + zip + '/distance/' + radius;
		var $map = $('#map');
		var $list = $('#list').slideUp();
		var $resultTitle = $('#resultTitle');
		
		$.getJSON(reqUrl,
			function(result) {
				if (result.count == 0) {
					// No results
					$resultTitle.text("Sorry, you can't get Saranac within" + radius + "miles of here.");
				} else {
					// We found some!
					$resultTitle.text('There ' + (result.count == 1 ? 'is 1' : 'are ' + result.count ) + ' locations within 25 miles of ' + result.zip.city + ', ' + result.zip.state);
					
					// List out each location
					var $locations = '';
					
					function sortfunction(a, b){
						return (a.distance - b.distance) //causes an array to be sorted numerically and ascending
					}
					var locs = result.results.sort(sortfunction);
					
					$.each(locs, function(index,item) {
						$locations += '<li class="hcard map-location" data="{id: ' + item.id + ', point: {lat: ' + item.latitude + ', lng: ' + item.longitude + '}}">'
												+ '<h3 class="n"><a href="#" class="map-link">' + item.json['Account Name'] + '</a></h3>'
												+ '<div class="info-box">'
												+ '<div class="street-address">' + item.json['Street Address'] + '</div>'
												+ '<div><span class="locality">' + item.json['City'] + '</span>, '
												+ '<span class="region">' + item.json['State'] + '</span> '
												+ '<span class="postal-code">' + item.json['Zip'] + '</span></div>'
												+ '<div id="tel">' + item.json['Phone Number'] + '</div>'
												+ '</div></li>';
					});
					$list.html($locations).slideDown();
					
					// Draw or update the map
					if ($map.children().length) {
						$('#map').jMapping('update');
					} else {
						$('#map').jMapping({
							side_bar_selector: '#list'
						});
					}
				}
			}
		);
		
		return false;
	});	
	
});


function updateMap() {
	$map = $('#map');
	
}



/*
 * jMapping v1.2.1 - jQuery plugin for creating Google Maps
 *
 * Copyright (c) 2009 Brian Landau (Viget Labs)
 * MIT License: http://www.opensource.org/licenses/mit-license.php
 *
 */

if (GMap2){
  GMap2.prototype.centerAndZoomOnBounds = function(bounds) {
    this.setCenter(bounds.getCenter(), this.getBoundsZoomLevel(bounds));
  };
}

(function($){
  $.jMapping = function(map_elm, options){
    var settings, gmarkers, mapped, map, markerManager, places, bounds, jMapper;
    map_elm = (typeof map_elm == "string") ? $(map_elm).get(0) : map_elm;
    
    if (!($(map_elm).data('jMapping'))){ // TODO: Should we use a different test here?
      settings = $.extend(true, {}, $.jMapping.defaults);
      $.extend(true, settings, options);
      gmarkers = {};
      
      var init = function(doUpdate){
        var info_window_selector, min_zoom, bounds_zoom_level;

        info_window_selector = [
          settings.side_bar_selector, 
          settings.location_selector, 
          settings.info_window_selector
        ].join(' ');

        places = getPlaces();
        bounds = getBounds();

        if (doUpdate){
          gmarkers = {};
          markerManager.clearMarkers();
          map.checkResize();
          map.centerAndZoomOnBounds(bounds);
        } else {
          map = createMap();
          markerManager = new MarkerManager(map);
        }

        places.each(function(){
          var marker = createMarker(this, markerManager);
          if (!(settings.link_selector === false)){
            setupLink(this);
          }
        });

        bounds_zoom_level = map.getBoundsZoomLevel(bounds);
        min_zoom = (bounds_zoom_level < 7) ? 0 : (bounds_zoom_level - 7);

        if (!(settings.link_selector === false) && !doUpdate){
          attachMapsEventToLinks();
        }
      };
      
      var createMap = function(){
        map = new GMap2(map_elm);
        if ($.isFunction(settings.map_config)){
          settings.map_config(map);
        } else {
          map.setMapType(G_NORMAL_MAP);
          map.addControl(new GSmallMapControl());
        }
        map.centerAndZoomOnBounds(bounds);
        return map;
      };
      
      var getPlaces = function(){
        return $(settings.side_bar_selector+' '+settings.location_selector);
      };
      
      var getPlacesData = function(){
        return places.map(function(){
          return $(this).metadata(settings.metadata_options);
        });
      };
      
      var getBounds = function(){
        var places_data = getPlacesData();
        var newBounds = new GLatLngBounds(
          $.jMapping.makeGLatLng(places_data[0].point), 
          $.jMapping.makeGLatLng(places_data[0].point) );

        for (var i=1, len = places_data.length ; i<len; i++) {
          newBounds.extend($.jMapping.makeGLatLng(places_data[i].point));
        }
        return newBounds;
      };
      
      var setupLink = function(place_elm){
        var $place_elm = $(place_elm),
            location_data = $place_elm.metadata(settings.metadata_options),
            link = $place_elm.find(settings.link_selector);

        link.attr('href', ("#" + location_data.id));
      };
      
      var chooseIconOptions = function(category){
        if (settings.category_icon_options){
          if ($.isFunction(settings.category_icon_options)){
            return settings.category_icon_options(category);
          } else {
            return settings.category_icon_options[category] || settings.category_icon_options['default'];
          }
        } else {
          return {};
        }
      };
      
      var createMarker = function(place_elm, markerManager){
        var $place_elm = $(place_elm), place_data, point, marker, $info_window_elm;

        place_data = $place_elm.metadata(settings.metadata_options);
        point = $.jMapping.makeGLatLng(place_data.point);
        
        
        var geocoder = new GClientGeocoder();
        geocoder.getLatLng(
			    $('.street-address', $place_elm).text() + ', ' + $('.locality', $place_elm).text() + ', ' + $('.region', $place_elm).text() + ' ' + $('.postal-code', $place_elm).text(),
			    function(point) {
			    	marker = new GMarker(point);

		        $info_window_elm = $place_elm.find(settings.info_window_selector);
		        if ($info_window_elm.length > 0){
		          marker.bindInfoWindowHtml(
		            '<div><strong>' + $(settings.link_selector, place_elm).html() + '</strong></div>' + $info_window_elm.html(), 
		            {maxWidth: settings.info_window_max_width}
		          );
		        }
		
		        gmarkers[parseInt(place_data.id, 10)] = marker;	
		        
          	$(document).trigger('markerCreated.jMapping', [marker]);
		        
        markerManager.addMarkers(gmarkersArray(), 0);
        markerManager.refresh();		    	
			    }
			  );
      };
      
      var attachMapsEventToLinks = function(){
        var location_link_selector = [
          settings.side_bar_selector, 
          settings.location_selector, 
          settings.link_selector
        ].join(' ');

        $(location_link_selector).live('click', function(e){
          e.preventDefault();
          var marker_index = parseInt($(this).attr('href').split('#')[1], 10);
          GEvent.trigger(gmarkers[marker_index], "click");
        });
      };
      
      var gmarkersArray = function(){
        var marker_arr = [];
        $.each(gmarkers, function(key, value){
          marker_arr.push(value);
        });
        return marker_arr;
      };
      
      if (GBrowserIsCompatible()) {
        if ($(document).trigger('beforeMapping.jMapping', [settings]) != false){
          init();
          mapped = true;
        } else {
          mapped = false;
        }
        jMapper = {
          gmarkers: gmarkers,
          settings: settings,
          mapped: mapped,
          map: map,
          markerManager: markerManager,
          gmarkersArray: gmarkersArray,
          getBounds: getBounds,
          getPlacesData: getPlacesData,
          getPlaces: getPlaces,
          update: function(){
            if ($(document).trigger('beforeUpdate.jMapping', [this])  != false){
              init(true);
              this.map = map;
              this.gmarkers = gmarkers;
              this.markerManager = markerManager;
              $(document).trigger('afterUpdate.jMapping', [this]);
            }
          }
        };
        $(document).trigger('afterMapping.jMapping', [jMapper]);
        return jMapper;
      } else {
        mapped = false;
        return null;
      }
    } else {
      return $(map_elm).data('jMapping');
    }
  };
  
  $.extend($.jMapping, {
    defaults: {
      side_bar_selector: '#map-side-bar:first',
      location_selector: '.map-location',
      link_selector: 'a.map-link',
      info_window_selector: '.info-box',
      info_window_max_width: 425,
      metadata_options: {type: 'attr', name: 'data'}
    },
    makeGLatLng: function(place_point){
      return new GLatLng(place_point.lat, place_point.lng);
    }
  });
  
  $.fn.jMapping = function(options){
    if ((options == 'update') && $(this[0]).data('jMapping')){
      $(this[0]).data('jMapping').update();
    } else {
      if (options == 'update') options = {};
      $(this[0]).data('jMapping', $.jMapping(this[0], options));
    }
    return this;
  };
})(jQuery);




/*
 * Metadata - jQuery plugin for parsing metadata from elements
 *
 * Copyright (c) 2006 John Resig, Yehuda Katz, J�örn Zaefferer, Paul McLanahan
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 * Revision: $Id: jquery.metadata.js 3640 2007-10-11 18:34:38Z pmclanahan $
 *
 */

/**
 * Sets the type of metadata to use. Metadata is encoded in JSON, and each property
 * in the JSON will become a property of the element itself.
 *
 * There are four supported types of metadata storage:
 *
 *   attr:  Inside an attribute. The name parameter indicates *which* attribute.
 *          
 *   class: Inside the class attribute, wrapped in curly braces: { }
 *   
 *   elem:  Inside a child element (e.g. a script tag). The
 *          name parameter indicates *which* element.
 *   html5: Values are stored in data-* attributes.
 *          
 * The metadata for an element is loaded the first time the element is accessed via jQuery.
 *
 * As a result, you can define the metadata type, use $(expr) to load the metadata into the elements
 * matched by expr, then redefine the metadata type and run another $(expr) for other elements.
 * 
 * @name $.metadata.setType
 *
 * @example <p id="one" class="some_class {item_id: 1, item_label: 'Label'}">This is a p</p>
 * @before $.metadata.setType("class")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from the class attribute
 * 
 * @example <p id="one" class="some_class" data="{item_id: 1, item_label: 'Label'}">This is a p</p>
 * @before $.metadata.setType("attr", "data")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from a "data" attribute
 * 
 * @example <p id="one" class="some_class"><script>{item_id: 1, item_label: 'Label'}</script>This is a p</p>
 * @before $.metadata.setType("elem", "script")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from a nested script element
 * 
 * @example <p id="one" class="some_class" data-item_id="1" data-item_label="Label">This is a p</p>
 * @before $.metadata.setType("html5")
 * @after $("#one").metadata().item_id == 1; $("#one").metadata().item_label == "Label"
 * @desc Reads metadata from a series of data-* attributes
 *
 * @param String type The encoding type
 * @param String name The name of the attribute to be used to get metadata (optional)
 * @cat Plugins/Metadata
 * @descr Sets the type of encoding to be used when loading metadata for the first time
 * @type undefined
 * @see metadata()
 */

(function($) {

$.extend({
  metadata : {
    defaults : {
      type: 'class',
      name: 'metadata',
      cre: /({.*})/,
      single: 'metadata'
    },
    setType: function( type, name ){
      this.defaults.type = type;
      this.defaults.name = name;
    },
    get: function( elem, opts ){
      var settings = $.extend({},this.defaults,opts);
      // check for empty string in single property
      if ( !settings.single.length ) settings.single = 'metadata';
      
      var data = $.data(elem, settings.single);
      // returned cached data if it already exists
      if ( data ) return data;
      
      data = "{}";
      
      var getData = function(data) {
        if(typeof data != "string") return data;
        
        if( data.indexOf('{') < 0 ) {
          data = eval("(" + data + ")");
        }
      }
      
      var getObject = function(data) {
        if(typeof data != "string") return data;
        
        data = eval("(" + data + ")");
        return data;
      }
      
      if ( settings.type == "html5" ) {
        var object = {};
        $( elem.attributes ).each(function() {
          var name = this.nodeName;
          if(name.match(/^data-/)) name = name.replace(/^data-/, '');
          else return true;
          object[name] = getObject(this.nodeValue);
        });
      } else {
        if ( settings.type == "class" ) {
          var m = settings.cre.exec( elem.className );
          if ( m )
            data = m[1];
        } else if ( settings.type == "elem" ) {
          if( !elem.getElementsByTagName ) return;
          var e = elem.getElementsByTagName(settings.name);
          if ( e.length )
            data = $.trim(e[0].innerHTML);
        } else if ( elem.getAttribute != undefined ) {
          var attr = elem.getAttribute( settings.name );
          if ( attr )
            data = attr;
        }
        object = getObject(data.indexOf("{") < 0 ? "{" + data + "}" : data);
      }
      
      $.data( elem, settings.single, object );
      return object;
    }
  }
});

/**
 * Returns the metadata object for the first member of the jQuery object.
 *
 * @name metadata
 * @descr Returns element's metadata object
 * @param Object opts An object contianing settings to override the defaults
 * @type jQuery
 * @cat Plugins/Metadata
 */
$.fn.metadata = function( opts ){
  return $.metadata.get( this[0], opts );
};

})(jQuery);


eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('3 w={};w.1K=K(h){3 f=h.1a||A;3 b=h.1g||A;3 e=h.P||"#15";3 a=h.13||"#G";3 g=h.20||"#1W";3 d="N://z.L.Q.O/z?R=1B";3 j=d+"&U="+f+"x"+b+"&T="+g.4("#","")+","+e.4("#","")+","+a.4("#","")+"&F=.E";3 c=u 10(Y);c.X=j;c.V=u B(f,b);c.19=u B(y.1e(f*1.6),b);c.14=u H(f/2,b);c.17=u H(f/2,y.1e(b/12));c.18=j+"&J=I";c.1m=j+"&D=S,s,1h"+"&J=I";j=d+"&U="+f+"x"+b+"&T="+g.4("#","")+","+e.4("#","")+","+a.4("#","");c.1l=j+"&D=a,s,1p&F=.E";c.v=[f/2,b,(7/16)*f,(5/8)*b,(5/16)*f,(7/16)*b,(7/A)*f,(5/16)*b,(5/16)*f,(1/8)*b,(1/2)*f,0,(11/16)*f,(1/8)*b,(25/A)*f,(5/16)*b,(11/16)*f,(7/16)*b,(9/16)*f,(5/8)*b];1k(3 i=0;i<c.v.1Z;i++){c.v[i]=Z(c.v[i])}C c};w.1V=K(k){3 h=k.1a||A;3 j=k.1g||A;3 d=k.P||"#15";3 i=k.1T||"#G";3 m=w.W(k.1j)||"";3 c=k.1i||"#G";3 l=k.1S||0;3 s=k.1R||"1f";3 f=(s==="1f")?"1Q":"1d";3 t="N://z.L.Q.O/z?R="+f;3 n=t+"&U="+h+"x"+j+"&T="+d.4("#","")+","+i.4("#","")+"1P,1c"+"&1b="+m+"&1O="+c.4("#","")+","+l;3 e=u 10(Y);e.X=n+"&D=S,s,1M"+"&F=.E";e.V=u B(h,j);e.19=u B(0,0);e.14=u H(h/2,j/2);e.17=u H(h/2,j/2);e.18=n+"&J=I";e.1m=n+"&D=S,s,1h"+"&J=I";e.1l=n+"&D=a,s,1c&F=.E";e.v=[];M(f==="1d"){e.v=[0,0,h,0,h,j,0,j]}1J{3 o=8;3 r=1I/o;3 b=y.1H(h,j)/2;1k(3 a=0;a<(o+1);a++){3 g=r*a*(y.1G/1F);3 p=b+b*y.1E(g);3 q=b+b*y.1D(g);e.v.1A(Z(p),Z(q))}}C e};w.1L=K(k){3 j=k.P||"#1z";3 b=k.13||"#G";3 f=k.1N||"#1y";3 a=k.1x||"#1w";3 e=w.W(k.1j)||"";3 d=k.1i||"#G";3 i=k.1v||1u;3 c=(i)?"1t":"1s";3 h="N://z.L.Q.O/z?R=d&1U=1r&1b=";3 l=h+c+"\'i\\\\"+"\'["+e+"\'-2\'f\\\\"+"1q\'a\\\\]"+"h\\\\]o\\\\"+j.4("#","")+"\'1X\\\\"+d.4("#","")+"\'1Y\\\\"+b.4("#","")+"\'1o\\\\";M(i){l+=f.4("#","")+"\'1C\\\\"+a.4("#","")+"\'1n\\\\"}l+="22\'f\\\\";3 g=u 10(Y);g.X=l+"&F=.E";g.V=(i)?u B(23,29):u B(21,28);C g};w.W=K(a){M(a===27){C 26}a=a.4(/@/,"@@");a=a.4(/\\\\/,"@\\\\");a=a.4(/\'/,"@\'");a=a.4(/\\[/,"@[");a=a.4(/\\]/,"@]");C 24(a)};',62,134,'|||var|replace||||||||||||||||||||||||||new|imageMap|MapIconMaker||Math|chart|32|GSize|return|chf|png|ext|000000|GPoint|gif|chof|function|apis|if|http|com|primaryColor|google|cht|bg|chco|chs|iconSize|escapeUserText_|image|G_DEFAULT_ICON|parseInt|GIcon|||strokeColor|iconAnchor|ff0000||infoWindowAnchor|printImage|shadowSize|width|chl|ffffff01|itr|floor|circle|height|ECECD8|labelColor|label|for|transparent|mozPrintImage|0C|eC|ffffff11|hv|mapsapi|pin|pin_star|false|addStar|0000FF|starStrokeColor|FFFF00|DA7187|push|mm||sin|cos|180|PI|min|360|else|createMarkerIcon|createLabeledMarkerIcon|00000000|starPrimaryColor|chx|ff|it|shape|labelSize|shadowColor|chdp|createFlatIcon|ffffff|fC|tC|length|cornerColor||Lauto||encodeURIComponent||null|undefined|34|39'.split('|'),0,{}))



eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('5 4(c,b){2 e=3;e.13=c;e.D=c.1k();e.1h=c.1V().1N();b=b||{};e.N=4.1f;2 g=c.29();2 h=g[0].1o();l(2 i=0;i<g.E;i++){2 f=g[i].1o();7(f>h){h=f}}e.p=b.1J||h;e.18=b.1E;e.m=b.15||C;2 d;7(28 b.1s==="24"){d=b.1s}11{d=4.1q}e.1p=w q(-d,d);e.1j=w q(d,-d);e.1Y=d;e.B=[];e.H=[];e.H[e.p]=[];e.s=[];e.s[e.p]=0;X.1e(c,"1U",e,e.1d);e.r=5(a){c.1L(a);e.G--};e.t=5(a){7(e.m){c.1G(a);e.G++}};e.U();e.G=0;e.8=e.V()}4.1f=1C;4.1q=1z;4.1w=1x;4.6.U=5(){2 a=3;2 c=4.1w;l(2 b=0;b<=a.p;++b){a.H[b]=[];a.s[b]=0;a.B[b]=o.2c(c/a.N);c<<=1}};4.6.27=5(){2 a=3;a.v(a.8,a.r);a.U()};4.6.n=5(a,c,b){2 d=3.1h.25(a,c);9 w 23(o.1r((d.x+b.22)/3.N),o.1r((d.y+b.1Z)/3.N))};4.6.10=5(e,a,f){2 b=e.Z();e.1n=a;7(3.18){X.1e(e,"1m",3,3.1l)}2 d=3.n(b,f,q.A);l(2 c=f;c>=a;c--){2 g=3.Y(d.x,d.y,c);g.1i(e);d.x=d.x>>1;d.y=d.y>>1}};4.6.F=5(e){2 a=3;2 c=a.8.J<=e.y&&e.y<=a.8.I;2 f=a.8.M;2 d=f<=e.x&&e.x<=a.8.K;7(!d&&f<0){2 b=a.B[a.8.z];d=f+b<=e.x&&e.x<=b-1}9 c&&d};4.6.1l=5(e,i,g){2 c=3;2 a=c.p;2 f=O;2 h=c.n(i,a,q.A);2 d=c.n(g,a,q.A);1g(a>=0&&(h.x!==d.x||h.y!==d.y)){2 b=c.L(h.x,h.y,a);7(b){7(c.W(b,e)){c.Y(d.x,d.y,a).1i(e)}}7(a===c.D){7(c.F(h)){7(!c.F(d)){c.r(e);f=C}}11{7(c.F(d)){c.t(e);f=C}}}h.x=h.x>>1;h.y=h.y>>1;d.x=d.x>>1;d.y=d.y>>1;--a}7(f){c.u()}};4.6.1T=5(e){2 c=3;2 b=c.p;2 a=O;2 f=e.Z();2 d=c.n(f,b,q.A);1g(b>=0){2 g=c.L(d.x,d.y,b);7(g){c.W(g,e)}7(b===c.D){7(c.F(d)){c.r(e);a=C}}d.x=d.x>>1;d.y=d.y>>1;--b}7(a){c.u()}c.s[e.1n]--};4.6.1S=5(b,a,c){2 d=3.R(c);l(2 i=b.E-1;i>=0;i--){3.10(b[i],a,d)}3.s[a]+=b.E};4.6.R=5(a){9 a||3.p};4.6.1Q=5(a){2 b=0;l(2 z=0;z<=a;z++){b+=3.s[z]}9 b};4.6.1P=5(e,b,a){2 d=3;2 h=w 1O(e,b);2 g=d.n(h,a,q.A);2 f=w 1M(h);2 c=d.L(g.x,g.y,a);7(c!=1b){l(2 i=0;i<c.E;i++){7(e==c[i].1a().1K()&&b==c[i].1a().T()){f=c[i]}}}9 f};4.6.1I=5(e,a,c){2 b=3;2 f=3.R(c);b.10(e,a,f);2 d=b.n(e.Z(),b.D,q.A);7(b.F(d)&&a<=b.8.z&&b.8.z<=f){b.t(e);b.u()}3.s[a]++};19.6.1H=5(a){2 b=3;9(b.M<=a.x&&b.K>=a.x&&b.J<=a.y&&b.I>=a.y)};4.6.Y=5(x,y,z){2 b=3.H[z];7(x<0){x+=3.B[z]}2 c=b[x];7(!c){c=b[x]=[];9(c[y]=[])}2 a=c[y];7(!a){9(c[y]=[])}9 a};4.6.L=5(x,y,z){2 a=3.H[z];7(x<0){x+=3.B[z]}2 b=a[x];9 b?b[y]:1b};4.6.17=5(j,b,c,e){b=o.S(b,3.p);2 i=j.1F();2 f=j.1D();2 d=3.n(i,b,c);2 g=3.n(f,b,e);2 a=3.B[b];7(f.T()<i.T()||g.x<d.x){d.x-=a}7(g.x-d.x+1>=a){d.x=0;g.x=a-1}2 h=w 19([d,g]);h.z=b;9 h};4.6.V=5(){2 a=3;9 a.17(a.13.1R(),a.D,a.1p,a.1j)};4.6.1d=5(){2 a=3;a.16(3,3.1c,0)};4.6.16=5(b,a,c){9 1B.1A(5(){a.1W(b)},c)};4.6.1X=5(){9 3.m?C:O};4.6.1y=5(){9!3.m};4.6.15=5(){3.m=C;3.P()};4.6.20=5(){3.m=O;3.P()};4.6.21=5(){3.m=!3.m;3.P()};4.6.P=5(){2 a=3;7(a.G>0){a.v(a.8,a.r)}7(a.m){a.v(a.8,a.t)}a.u()};4.6.1c=5(){2 a=3;a.D=3.13.1k();2 b=a.V();7(b.2d(a.8)&&b.z===a.8.z){9}7(b.z!==a.8.z){a.v(a.8,a.r);7(a.m){a.v(b,a.t)}}11{a.14(a.8,b,a.1v);7(a.m){a.14(b,a.8,a.1u)}}a.8=b;a.u()};4.6.u=5(){X.2b(3,"1m",3.8,3.G)};4.6.v=5(b,a){l(2 x=b.M;x<=b.K;x++){l(2 y=b.J;y<=b.I;y++){3.Q(x,y,b.z,a)}}};4.6.Q=5(x,y,z,a){2 b=3.L(x,y,z);7(b){l(2 i=b.E-1;i>=0;i--){a(b[i])}}};4.6.1v=5(x,y,z){3.Q(x,y,z,3.r)};4.6.1u=5(x,y,z){3.Q(x,y,z,3.t)};4.6.14=5(c,d,a){2 b=3;b.1t(c,d,5(x,y){a.2a(b,[x,y,c.z])})};4.6.1t=5(j,k,b){2 f=j.M;2 a=j.J;2 d=j.K;2 h=j.I;2 g=k.M;2 c=k.J;2 e=k.K;2 i=k.I;2 x,y;l(x=f;x<=d;x++){l(y=a;y<=h&&y<c;y++){b(x,y)}l(y=o.12(i+1,a);y<=h;y++){b(x,y)}}l(y=o.12(a,c);y<=o.S(h,i);y++){l(x=o.S(d+1,g)-1;x>=f;x--){b(x,y)}l(x=o.12(f,e+1);x<=d;x++){b(x,y)}}};4.6.W=5(a,c,b){2 d=0;l(2 i=0;i<a.E;++i){7(a[i]===c||(b&&a[i]===c)){a.26(i--,1);d++}}9 d};',62,138,'||var|this|MarkerManager|function|prototype|if|shownBounds_|return||||||||||||for|show_|getTilePoint_|Math|maxZoom_|GSize|removeOverlay_|numMarkers_|addOverlay_|notifyListeners_|processAll_|new||||ZERO|gridWidth_|true|mapZoom_|length|isGridPointVisible_|shownMarkers_|grid_|maxY|minY|maxX|getGridCellNoCreate_|minX|tileSize_|false|refresh|processCellMarkers_|getOptMaxZoom_|min|lng|resetManager_|getMapGridBounds_|removeFromArray_|GEvent|getGridCellCreate_|getPoint|addMarkerBatch_|else|max|map_|rectangleDiff_|show|objectSetTimeout_|getGridBounds_|trackMarkers_|GBounds|getLatLng|undefined|updateMarkers_|onMapMoveEnd_|bind|DEFAULT_TILE_SIZE_|while|projection_|push|nePadding_|getZoom|onMarkerMoved_|changed|MarkerManager_minZoom|getMaximumResolution|swPadding_|DEFAULT_BORDER_PADDING_|floor|borderPadding|rectangleDiffCoords_|addCellMarkers_|removeCellMarkers_|MERCATOR_ZOOM_LEVEL_ZERO_RANGE|256|isHidden|100|setTimeout|window|1024|getNorthEast|trackMarkers|getSouthWest|addOverlay|containsPoint|addMarker|maxZoom|lat|removeOverlay|GMarker|getProjection|GLatLng|getMarker|getMarkerCount|getBounds|addMarkers|removeMarker|moveend|getCurrentMapType|call|visible|borderPadding_|height|hide|toggle|width|GPoint|number|fromLatLngToPixel|splice|clearMarkers|typeof|getMapTypes|apply|trigger|ceil|equals'.split('|'),0,{}))
