var map = null;
var geocoder = null;
var markers = new Array();
var markerClusterer;

	Event.observe(document,'dom:loaded',function(){
		//watch for state zooming
		$('stateSelect').observe('change',function(){
			zoomToLocation($('stateSelect').options[$('stateSelect').selectedIndex].text + ',United States');
		});
		
		//show the country-level map

	      if (GBrowserIsCompatible()) {
	        map = new GMap2(document.getElementById("map_canvas"));

	        //zoomToLocation('United States');
	        map.setCenter(new GLatLng(37.579412513438385, -95.80078125), 3);

	          map.addControl(new GLargeMapControl());
	          map.addControl(new GMapTypeControl());
	          var icon = new GIcon(G_DEFAULT_ICON);
	          //icon.image = "http://chart.apis.google.com/chart?cht=mm&chs=24x32&chco=FFFFFF,008CFF,000000&ext=.png";

	          	          	 var latlng = new GLatLng(34.7501290, -92.3209260);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('UAMS - Gift Shop','4301 W Markham St, <br />Little Rock, AR 72205 <br /><b>501-526-5896</b>','4301 W Markham St, 72205', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(49.6852801, -124.9920265);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Living Room Pharmacy','204-1530 Cliffe Avenue, <br />Courtenay, BC V9N 2K4 <br /><b>250-338-5665</b>','204-1530 Cliffe Avenue, V9N 2K4', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(34.9509880, -120.4132210);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Marian Medical Center Gift Shop','1400 E. Church Street, <br />Santa Maria, CA 93454 <br /><b>805-739-3522</b>','1400 E. Church Street, 93454', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(34.0775113, -117.2577718);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('University Hospital Gifts','1269 E San Bernardino Ave, <br />San Bernardino, CA 92408 <br /><b>909-558-8025</b>','1269 E San Bernardino Ave, 92408', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(37.3785351, -122.0865850);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Cancer Center Boutique','El Camino Hospital, El Camino Hospital, <br />Mountain View, CA 94040 <br /><b>650-988-7519</b>','El Camino Hospital, El Camino Hospital, 94040', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(33.6321942, -117.9141482);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Medical Store','333 E. 17th Street #23, <br />Costa Mesa, CA 92627 <br /><b>949-722-1128</b>','333 E. 17th Street #23, 92627', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(39.7561840, -121.5722842);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Feather River Hospital Gift Shop','5974 Pentz Road, <br />Paradise, CA 95969 <br /><b>530-876-7208</b>','5974 Pentz Road, 95969', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(37.9834630, -122.0335740);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('John Muir Medical Center - Concord','2540 East Street, <br />Concord, CA 94520 <br /><b>925-674-2162</b>','2540 East Street, 94520', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(37.0902400, -95.7128910);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('',', <br />,   <br /><b></b>',', ', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(38.8369870, -104.8216412);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Penrose Hospital Gift Shop','222 North Nevada Ave., <br />Colorado Springs, CO 80907 <br /><b>Penrose Hospita</b>','222 North Nevada Ave., 80907', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(39.6668639, -104.9152390);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('YOUCAN TOOCAN','"6460 E Yale Ave., Unit E-10", <br />Denver, CO 80222 <br /><b>303 759-9525</b>','"6460 E Yale Ave., Unit E-10", 80222', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(38.4524001, -103.1637662);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Harris Healthmart Pharmacy','309 N. Main St., <br />Eads, CO 81036 <br /><b>719-254-3337</b>','309 N. Main St., 81036', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(41.8188131, -72.6566822);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Ellsworth Medical LLC','540 Windsor Ave, <br />Windsor, CT 06095 <br /><b>860-298-9333</b>','540 Windsor Ave, 06095', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(41.2967231, -72.9431038);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('The Boutique at Smilow Cancer Hospital','"Room 1-102, YNMH", "Room 1-102, YNMH", <br />New Haven, CT 06519 <br /><b>203-688-7202</b>','"Room 1-102, YNMH", "Room 1-102, YNMH", 06519', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(41.3372244, -72.1038163);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Lobby Shop','365 Montauk Ave., <br />New London, CT 06320 <br /><b>860-442-0711</b>','365 Montauk Ave., 06320', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(34.7698021, -84.9702228);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Home Health Care Rentals','Home Health Care Rentals, Home Health Care Rentals, <br />Dalton, GA 30720 <br /><b>(706) 278-2336</b>','Home Health Care Rentals, Home Health Care Rentals, 30720', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(33.9421600, -84.3229999);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('CS Medical','4952 Mill Brook Dr., <br />Dunwoody, GA 30338 <br /><b>(770) 394-6551</b>','4952 Mill Brook Dr., 30338', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(33.9095466, -84.3527033);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Northside Hospital','at Northside Hospital, at Northside Hospital, <br />Atlanta, GA 30342-1611 <br /><b>404-303-3966</b>','at Northside Hospital, at Northside Hospital, 30342-1611', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(21.2999215, -157.8345236);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Kapiolani Medical Center Gift Shop','1319 Punahou St, <br />Honolulu, HI 96826 <br /><b>808-983-6567</b>','1319 Punahou St, 96826', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(42.0913440, -87.8538680);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Glenbrook Hospital Gift Shop','2100 Pfingsten Road, <br />Glenview, IL 60026 <br /><b>847-657-5624</b>','2100 Pfingsten Road, 60026', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(41.9711068, -87.7024817);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Swedish Covenant Hospital Cove Gift Shop','Debra McWherter, Debra McWherter, <br />Chicago, IL 60625 <br /><b>773-878-8200 ex</b>','Debra McWherter, Debra McWherter, 60625', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(42.0602081, -87.7024817);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Evanston Hospital','Warm Wishes Gift Shop, Warm Wishes Gift Shop, <br />Evanston, IL 60201 <br /><b>847-570-2717</b>','Warm Wishes Gift Shop, Warm Wishes Gift Shop, 60201', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(41.8750570, -87.6691170);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('"Gift Shop, Rush University Medical Center"','1653 W. Congress Parkway, <br />Chicago, IL 60612 <br /><b>312-942-4245</b>','1653 W. Congress Parkway, 60612', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(41.3436554, -86.3097278);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Corner Treasures Gift Shop','St Joseph Regional Medical Ctr, St Joseph Regional Medical Ctr, <br />Plymouth, IN 46563 <br /><b>574-935-2355</b>','St Joseph Regional Medical Ctr, St Joseph Regional Medical Ctr, 46563', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(38.0860000, -97.9153000);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Health-E-Quip','803 East 30th, <br />Hutchinson, KS 67502 <br /><b>620-665-0528</b>','803 East 30th, 67502', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(39.0079328, -84.5647622);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('St. Elizabeth Womens Wellness Boutique','1 Medical Village Dr, <br />Edgewood, KY 41017 <br /><b>859-301-6200</b>','1 Medical Village Dr, 41017', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(29.9256470, -90.0922820);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Touro Gift Shop','1401 Foucher Street, <br />New Orleans, LA 70115 <br /><b>504-897-7011;</b>','1401 Foucher Street, 70115', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(41.6555049, -70.2751942);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Cape Cod Aux Hosp Gift Shop','27 Park St, <br />Hyannis, MA 02601 <br /><b>508-862-7450</b>','27 Park St, 02601', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(42.5856000, -70.7863000);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Healing Baskets','11 Rockwood Heights Rd, <br />Manchester, MA 01944 <br /><b>978-526-1229</b>','11 Rockwood Heights Rd, 01944', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(39.3322127, -76.6008334);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('The Front Door Aux Gift Shop','Carla Cooper, Carla Cooper, <br />Baltimore, MD 21218-2895 <br /><b>410-554-2658</b>','Carla Cooper, Carla Cooper, 21218-2895', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(39.3899050, -76.6220869);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('The Boutique at GBMC','"6701 North Charles Street, Suite 3101", <br />Baltimore, MD 21204 <br /><b>443-849-8700</b>','"6701 North Charles Street, Suite 3101", 21204', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(42.6557074, -86.2040959);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Saugatuck Drug Store','201 Butler Street, <br />Saugatuck, MI 49453 <br /><b>269-857-2300</b>','201 Butler Street, 49453', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(44.8864500, -93.3269260);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('FSH Gift Shop','6401 France Ave, <br />Edina, MN 55435 <br /><b>952-924-5000</b>','6401 France Ave, 55435', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(45.0844747, -93.3755742);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Reliable Medical Supply Inc','7111 West Broadway Ave, <br />Brooklyn Park, MN 55428 <br /><b>763-398-4128</b>','7111 West Broadway Ave, 55428', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(44.9996041, -93.3288634);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Courage Cards & Gifts','3915 Golden Valley Road, <br />Minneapolis, MN 55422 <br /><b>763-520-0231</b>','3915 Golden Valley Road, 55422', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(38.3495439, -92.5792680);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Eldon Drug & Gifts','101 S. Maple St, <br />Eldon, MO 65026 <br /><b>573-392-4588</b>','101 S. Maple St, 65026', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(37.0548286, -94.5327508);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Freeman Health System','1532 W 32nd Street, <br />Joplin, MO 64804 <br /><b>417-347-6937</b>','1532 W 32nd Street, 64804', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(38.9524800, -92.3532050);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('D&H Drugstore','1001 West Broadway, <br />Columbia, MO 65203 <br /><b>573-874-3341</b>','1001 West Broadway, 65203', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(36.7389428, -91.8755908);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('"West Plains Health Service, Inc."','1703 West 8th St, <br />West Plains, MO 65775 <br /><b>417-256-0900</b>','1703 West 8th St, 65775', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(34.4966059, -89.0202975);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Super Saver Drugs','498 Bankhead, <br />New Albany, MS 38652 <br /><b>662-534-4774</b>','498 Bankhead, 38652', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(46.8840276, -96.7847254);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Merit Care Gifts','720 4th St North, <br />Fargo, ND 58122 <br /><b>701-234-6000</b>','720 4th St North, 58122', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(41.2648080, -95.9563060);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Creighton University Medical Center','601 North 30th Street, <br />Omaha, NE 68131 <br /><b>402-449-4258</b>','601 North 30th Street, 68131', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(41.2418040, -95.9886340);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Kubat Pharmacy Inc','4924 Center Street, <br />Omaha, NE 68106 <br /><b>402-558-8823</b>','4924 Center Street, 68106', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(40.5742696, -74.6098800);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('sanofi-aventis Wellness Boutique','Herecene Green, Herecene Green, <br />Somerville, NJ 08876 <br /><b>908-927-8779</b>','Herecene Green, Herecene Green, 08876', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(32.7485390, -97.1234140);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Lone Star Mobility','1008 N. Davis Dr., <br />Arlington, TX 76012 <br /><b>817-469-4777</b>','1008 N. Davis Dr., 76012', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(30.5400204, -97.7308070);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('The Gift Shop at Round Rock','Round Rock Medical Center, Round Rock Medical Center, <br />Round Rock, TX 78681 <br /><b>512-341-5218</b>','Round Rock Medical Center, Round Rock Medical Center, 78681', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(31.4200961, -100.4701323);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Angelo Community Gift Shop','3501 Knickerbocker Rd, <br />San Angelo, TX 76904 <br /><b>325-947-6253</b>','3501 Knickerbocker Rd, 76904', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(31.4908090, -97.1586153);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Hillcrest Baptist Medical Center','100 Hillcrest Medical Blvd, <br />Waco, TX 76712 <br /><b>254-202-9591</b>','100 Hillcrest Medical Blvd, 76712', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(32.8015780, -96.8293760);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('MDC Gift Shops','2201 Stemmons Fwy, <br />Dallas, TX 75207 <br /><b>214-651-8395</b>','2201 Stemmons Fwy, 75207', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(29.7146047, -98.1231340);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Christus Santa Rosa Hospital','600 North Union Ave, <br />New Braunfels, TX 78130 <br /><b>830-643-6210</b>','600 North Union Ave, 78130', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(40.2475662, -111.6674266);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Intermountain/UVRMC','1035 North 500 West, <br />Provo, UT 84604 <br /><b>801-357-3923</b>','1035 North 500 West, 84604', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(37.5238749, -77.4482880);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Three Bears Gift Shop','403 N 13th St, <br />Richmond, VA 23298 <br /><b>804-828-5999</b>','403 N 13th St, 23298', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(47.5829510, -122.6250550);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Harrison Medical Center Gift Shop','2520 Cherry Ave, <br />Bremerton, WA 98310 <br /><b>360-744-6599</b>','2520 Cherry Ave, 98310', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(43.7934501, -88.4347442);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Agnesian Health Shoppe','327 Winnebago Dr, <br />Fond du Lac, WI 54935 <br /><b>920-926-4554</b>','327 Winnebago Dr, 54935', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(44.8488820, -87.3630359);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('"Bay Pharmacy, Inc."','"1300 Egg Harbor Rd, #112", <br />Sturgeon Bay, WI 54235 <br /><b>920-746-2158</b>','"1300 Egg Harbor Rd, #112", 54235', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(42.9895780, -87.9507890);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Aurora Retail Store #1010','"2900 West Oklahoma Ave, Ste 1002", <br />Milwaukee, WI 53215 <br /><b>414-649-5050</b>','"2900 West Oklahoma Ave, Ste 1002", 53215', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(43.0644851, -88.4659564);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Aurora Pharmacy #1335','"36500 Aurora Dr., Ste. 100", <br />Summit, WI 53066 <br /><b>414-717-3773</b>','"36500 Aurora Dr., Ste. 100", 53066', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(44.4843310, -88.0225310);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Green Bay Home Medical','2020 W. Webster, <br />Green Bay, WI 54301 <br /><b>920-465-3000</b>','2020 W. Webster, 54301', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(44.0206965, -88.5673601);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('Morton Pharmacy','251 North Sawyer Street, <br />Oshkosh, WI 54902 <br /><b>920-236-6801</b>','251 North Sawyer Street, 54902', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          		          	 var latlng = new GLatLng(38.8237969, -104.8240283);
		            var marker = new GMarker(latlng, {icon: icon});
		            var fn = markerClickFn('The Accessibility Store @ The Independence Center','729 South Tejon Street, <br />Colorado Springs,, CO 80903 <br /><b>719-471-7829</b>','729 South Tejon Street, 80903', latlng);
			       GEvent.addListener(marker, "click", fn);

		            markers.push(marker);
	          	
	            refreshMap();
	      }
	
	});

   function markerClickFn(title, txt, addrinfo, latlng) {
     return function() {
       
       var infoHtml = '<div style="width:210px;"><h3>' + title
         + '</h3>' + txt;
       infoHtml += '</div>';
       
		var infoTabs = [
			new GInfoWindowTab("Info", infoHtml),
			new GInfoWindowTab("Directions", '<form name="direction" action="http://maps.google.com" method="get" target="_blank"><strong>Get Directions</strong><br /><label for="saddr">Starting address </label><input type="text" name="saddr" id="saddr" /><input type="hidden" name="daddr" value="'+addrinfo+'" /><input type="hidden" name="hl" value="en" /><input type="hidden" name="f" value="d" /><input type="submit" value="Get Directions" /></form>')
		];       
       
       map.openInfoWindowTabsHtml(latlng, infoTabs);
     };
   }


    function refreshMap() {
        if (markerClusterer != null) {
          markerClusterer.clearMarkers();
        }
        var zoom = 7;
        var size = 10;
        var style = '';
        zoom = zoom == -1 ? null : zoom;
        size = size == -1 ? null : size;
        style = style == "-1" ? null: parseInt(style, 10);
        markerClusterer = new MarkerClusterer(map, markers, {maxZoom: zoom, gridSize: size, styles: null});
      }

	
	function zoomToLocation(address) {

		 var geo = new GClientGeocoder();

 		geo.getLocations(address, function (result){

	
			 // ===== Look for the bounding box of the first result =====
			 var N = result.Placemark[0].ExtendedData.LatLonBox.north;
			 var S = result.Placemark[0].ExtendedData.LatLonBox.south;
			 var E = result.Placemark[0].ExtendedData.LatLonBox.east;
			 var W = result.Placemark[0].ExtendedData.LatLonBox.west;
			var bounds = new GLatLngBounds(new GLatLng(S,W), new GLatLng(N,E));
	
			// Choose a zoom level that fits
			 var zoom = map.getBoundsZoomLevel(bounds);
			map.setCenter(bounds.getCenter(),zoom);
	 	}
	 );

 	} 	

	/**
	 * @name MarkerClusterer
	 * @version 1.0
	 * @author Xiaoxi Wu
	 * @copyright (c) 2009 Xiaoxi Wu
	 * @fileoverview
	 * This javascript library creates and manages per-zoom-level 
	 * clusters for large amounts of markers (hundreds or thousands).
	 * This library was inspired by the <a href="http://www.maptimize.com">
	 * Maptimize</a> hosted clustering solution.
	 * <br /><br/>
	 * <b>How it works</b>:<br/>
	 * The <code>MarkerClusterer</code> will group markers into clusters according to
	 * their distance from a cluster's center. When a marker is added,
	 * the marker cluster will find a position in all the clusters, and 
	 * if it fails to find one, it will create a new cluster with the marker.
	 * The number of markers in a cluster will be displayed
	 * on the cluster marker. When the map viewport changes,
	 * <code>MarkerClusterer</code> will destroy the clusters in the viewport 
	 * and regroup them into new clusters.
	 *
	 */

	/*
	 * Licensed under the Apache License, Version 2.0 (the "License");
	 * you may not use this file except in compliance with the License.
	 * You may obtain a copy of the License at
	 *
	 *     http://www.apache.org/licenses/LICENSE-2.0
	 *
	 * Unless required by applicable law or agreed to in writing, software
	 * distributed under the License is distributed on an "AS IS" BASIS,
	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	 * See the License for the specific language governing permissions and
	 * limitations under the License.
	 */


	/**
	 * @name MarkerClustererOptions
	 * @class This class represents optional arguments to the {@link MarkerClusterer}
	 * constructor.
	 * @property {Number} [maxZoom] The max zoom level monitored by a
	 * marker cluster. If not given, the marker cluster assumes the maximum map
	 * zoom level. When maxZoom is reached or exceeded all markers will be shown
	 * without cluster.
	 * @property {Number} [gridSize=60] The grid size of a cluster in pixel. Each
	 * cluster will be a square. If you want the algorithm to run faster, you can set
	 * this value larger.
	 * @property {Array of MarkerStyleOptions} [styles]
	 * Custom styles for the cluster markers.
	 * The array should be ordered according to increasing cluster size,
	 * with the style for the smallest clusters first, and the style for the
	 * largest clusters last.
	 */

	/**
	 * @name MarkerStyleOptions
	 * @class An array of these is passed into the {@link MarkerClustererOptions}
	 * styles option.
	 * @property {String} [url] Image url.
	 * @property {Number} [height] Image height.
	 * @property {Number} [height] Image width.
	 * @property {Array of Number} [opt_anchor] Anchor for label text, like [24, 12]. 
	 *    If not set, the text will align center and middle.
	 * @property {String} [opt_textColor="black"] Text color.
	 */

	/**
	 * Creates a new MarkerClusterer to cluster markers on the map.
	 *
	 * @constructor
	 * @param {GMap2} map The map that the markers should be added to.
	 * @param {Array of GMarker} opt_markers Initial set of markers to be clustered.
	 * @param {MarkerClustererOptions} opt_opts A container for optional arguments.
	 */
	function MarkerClusterer(map, opt_markers, opt_opts) {
	  // private members
	  var clusters_ = [];
	  var map_ = map;
	  var maxZoom_ = null;
	  var me_ = this;
	  var gridSize_ = 60;
	  var sizes = [53, 56, 66, 78, 90];
	  var styles_ = [];
	  var leftMarkers_ = [];
	  var mcfn_ = null;

	  var i = 0;
	  for (i = 1; i <= 5; ++i) {
	    styles_.push({
	      'url': "http://gmaps-utility-library.googlecode.com/svn/trunk/markerclusterer/images/m" + i + ".png",
	      'height': sizes[i - 1],
	      'width': sizes[i - 1]
	    });
	  }

	  if (typeof opt_opts === "object" && opt_opts !== null) {
	    if (typeof opt_opts.gridSize === "number" && opt_opts.gridSize > 0) {
	      gridSize_ = opt_opts.gridSize;
	    }
	    if (typeof opt_opts.maxZoom === "number") {
	      maxZoom_ = opt_opts.maxZoom;
	    }
	    if (typeof opt_opts.styles === "object" && opt_opts.styles !== null && opt_opts.styles.length !== 0) {
	      styles_ = opt_opts.styles;
	    }
	  }

	  /**
	   * When we add a marker, the marker may not in the viewport of map, then we don't deal with it, instead
	   * we add the marker into a array called leftMarkers_. When we reset MarkerClusterer we should add the
	   * leftMarkers_ into MarkerClusterer.
	   */
	  function addLeftMarkers_() {
	    if (leftMarkers_.length === 0) {
	      return;
	    }
	    var leftMarkers = [];
	    for (i = 0; i < leftMarkers_.length; ++i) {
	      me_.addMarker(leftMarkers_[i], true, null, null, true);
	    }
	    leftMarkers_ = leftMarkers;
	  }

	  /**
	   * Get cluster marker images of this marker cluster. Mostly used by {@link Cluster}
	   * @private
	   * @return {Array of String}
	   */
	  this.getStyles_ = function () {
	    return styles_;
	  };

	  /**
	   * Remove all markers from MarkerClusterer.
	   */
	  this.clearMarkers = function () {
	    for (var i = 0; i < clusters_.length; ++i) {
	      if (typeof clusters_[i] !== "undefined" && clusters_[i] !== null) {
	        clusters_[i].clearMarkers();
	      }
	    }
	    clusters_ = [];
	    leftMarkers_ = [];
	    GEvent.removeListener(mcfn_);
	  };

	  /**
	   * Check a marker, whether it is in current map viewport.
	   * @private
	   * @return {Boolean} if it is in current map viewport
	   */
	  function isMarkerInViewport_(marker) {
	    return map_.getBounds().containsLatLng(marker.getLatLng());
	  }

	  /**
	   * When reset MarkerClusterer, there will be some markers get out of its cluster.
	   * These markers should be add to new clusters.
	   * @param {Array of GMarker} markers Markers to add.
	   */
	  function reAddMarkers_(markers) {
	    var len = markers.length;
	    var clusters = [];
	    for (var i = len - 1; i >= 0; --i) {
	      me_.addMarker(markers[i].marker, true, markers[i].isAdded, clusters, true);
	    }
	    addLeftMarkers_();
	  }

	  /**
	   * Add a marker.
	   * @private
	   * @param {GMarker} marker Marker you want to add
	   * @param {Boolean} opt_isNodraw Whether redraw the cluster contained the marker
	   * @param {Boolean} opt_isAdded Whether the marker is added to map. Never use it.
	   * @param {Array of Cluster} opt_clusters Provide a list of clusters, the marker
	   *     cluster will only check these cluster where the marker should join.
	   */
	  this.addMarker = function (marker, opt_isNodraw, opt_isAdded, opt_clusters, opt_isNoCheck) {
	    if (opt_isNoCheck !== true) {
	      if (!isMarkerInViewport_(marker)) {
	        leftMarkers_.push(marker);
	        return;
	      }
	    }

	    var isAdded = opt_isAdded;
	    var clusters = opt_clusters;
	    var pos = map_.fromLatLngToDivPixel(marker.getLatLng());

	    if (typeof isAdded !== "boolean") {
	      isAdded = false;
	    }
	    if (typeof clusters !== "object" || clusters === null) {
	      clusters = clusters_;
	    }

	    var length = clusters.length;
	    var cluster = null;
	    for (var i = length - 1; i >= 0; i--) {
	      cluster = clusters[i];
	      var center = cluster.getCenter();
	      if (center === null) {
	        continue;
	      }
	      center = map_.fromLatLngToDivPixel(center);

	      // Found a cluster which contains the marker.
	      if (pos.x >= center.x - gridSize_ && pos.x <= center.x + gridSize_ &&
	          pos.y >= center.y - gridSize_ && pos.y <= center.y + gridSize_) {
	        cluster.addMarker({
	          'isAdded': isAdded,
	          'marker': marker
	        });
	        if (!opt_isNodraw) {
	          cluster.redraw_();
	        }
	        return;
	      }
	    }

	    // No cluster contain the marker, create a new cluster.
	    cluster = new Cluster(this, map);
	    cluster.addMarker({
	      'isAdded': isAdded,
	      'marker': marker
	    });
	    if (!opt_isNodraw) {
	      cluster.redraw_();
	    }

	    // Add this cluster both in clusters provided and clusters_
	    clusters.push(cluster);
	    if (clusters !== clusters_) {
	      clusters_.push(cluster);
	    }
	  };

	  /**
	   * Remove a marker.
	   *
	   * @param {GMarker} marker The marker you want to remove.
	   */

	  this.removeMarker = function (marker) {
	    for (var i = 0; i < clusters_.length; ++i) {
	      if (clusters_[i].remove(marker)) {
	        clusters_[i].redraw_();
	        return;
	      }
	    }
	  };

	  /**
	   * Redraw all clusters in viewport.
	   */
	  this.redraw_ = function () {
	    var clusters = this.getClustersInViewport_();
	    for (var i = 0; i < clusters.length; ++i) {
	      clusters[i].redraw_(true);
	    }
	  };

	  /**
	   * Get all clusters in viewport.
	   * @return {Array of Cluster}
	   */
	  this.getClustersInViewport_ = function () {
	    var clusters = [];
	    var curBounds = map_.getBounds();
	    for (var i = 0; i < clusters_.length; i ++) {
	      if (clusters_[i].isInBounds(curBounds)) {
	        clusters.push(clusters_[i]);
	      }
	    }
	    return clusters;
	  };

	  /**
	   * Get max zoom level.
	   * @private
	   * @return {Number}
	   */
	  this.getMaxZoom_ = function () {
	    return maxZoom_;
	  };

	  /**
	   * Get map object.
	   * @private
	   * @return {GMap2}
	   */
	  this.getMap_ = function () {
	    return map_;
	  };

	  /**
	   * Get grid size
	   * @private
	   * @return {Number}
	   */
	  this.getGridSize_ = function () {
	    return gridSize_;
	  };

	  /**
	   * Get total number of markers.
	   * @return {Number}
	   */
	  this.getTotalMarkers = function () {
	    var result = 0;
	    for (var i = 0; i < clusters_.length; ++i) {
	      result += clusters_[i].getTotalMarkers();
	    }
	    return result;
	  };

	  /**
	   * Get total number of clusters.
	   * @return {int}
	   */
	  this.getTotalClusters = function () {
	    return clusters_.length;
	  };

	  /**
	   * Collect all markers of clusters in viewport and regroup them.
	   */
	  this.resetViewport = function () {
	    var clusters = this.getClustersInViewport_();
	    var tmpMarkers = [];
	    var removed = 0;

	    for (var i = 0; i < clusters.length; ++i) {
	      var cluster = clusters[i];
	      var oldZoom = cluster.getCurrentZoom();
	      if (oldZoom === null) {
	        continue;
	      }
	      var curZoom = map_.getZoom();
	      if (curZoom !== oldZoom) {

	        // If the cluster zoom level changed then destroy the cluster
	        // and collect its markers.
	        var mks = cluster.getMarkers();
	        for (var j = 0; j < mks.length; ++j) {
	          var newMarker = {
	            'isAdded': false,
	            'marker': mks[j].marker
	          };
	          tmpMarkers.push(newMarker);
	        }
	        cluster.clearMarkers();
	        removed++;
	        for (j = 0; j < clusters_.length; ++j) {
	          if (cluster === clusters_[j]) {
	            clusters_.splice(j, 1);
	          }
	        }
	      }
	    }

	    // Add the markers collected into marker cluster to reset
	    reAddMarkers_(tmpMarkers);
	    this.redraw_();
	  };


	  /**
	   * Add a set of markers.
	   *
	   * @param {Array of GMarker} markers The markers you want to add.
	   */
	  this.addMarkers = function (markers) {
	    for (var i = 0; i < markers.length; ++i) {
	      this.addMarker(markers[i], true);
	    }
	    this.redraw_();
	  };

	  // initialize
	  if (typeof opt_markers === "object" && opt_markers !== null) {
	    this.addMarkers(opt_markers);
	  }

	  // when map move end, regroup.
	  mcfn_ = GEvent.addListener(map_, "moveend", function () {
	    me_.resetViewport();
	  });
	}

	/**
	 * Create a cluster to collect markers.
	 * A cluster includes some markers which are in a block of area.
	 * If there are more than one markers in cluster, the cluster
	 * will create a {@link ClusterMarker_} and show the total number
	 * of markers in cluster.
	 *
	 * @constructor
	 * @private
	 * @param {MarkerClusterer} markerClusterer The marker cluster object
	 */
	function Cluster(markerClusterer) {
	  var center_ = null;
	  var markers_ = [];
	  var markerClusterer_ = markerClusterer;
	  var map_ = markerClusterer.getMap_();
	  var clusterMarker_ = null;
	  var zoom_ = map_.getZoom();

	  /**
	   * Get markers of this cluster.
	   *
	   * @return {Array of GMarker}
	   */
	  this.getMarkers = function () {
	    return markers_;
	  };

	  /**
	   * If this cluster intersects certain bounds.
	   *
	   * @param {GLatLngBounds} bounds A bounds to test
	   * @return {Boolean} Is this cluster intersects the bounds
	   */
	  this.isInBounds = function (bounds) {
	    if (center_ === null) {
	      return false;
	    }

	    if (!bounds) {
	      bounds = map_.getBounds();
	    }
	    var sw = map_.fromLatLngToDivPixel(bounds.getSouthWest());
	    var ne = map_.fromLatLngToDivPixel(bounds.getNorthEast());

	    var centerxy = map_.fromLatLngToDivPixel(center_);
	    var inViewport = true;
	    var gridSize = markerClusterer.getGridSize_();
	    if (zoom_ !== map_.getZoom()) {
	      var dl = map_.getZoom() - zoom_;
	      gridSize = Math.pow(2, dl) * gridSize;
	    }
	    if (ne.x !== sw.x && (centerxy.x + gridSize < sw.x || centerxy.x - gridSize > ne.x)) {
	      inViewport = false;
	    }
	    if (inViewport && (centerxy.y + gridSize < ne.y || centerxy.y - gridSize > sw.y)) {
	      inViewport = false;
	    }
	    return inViewport;
	  };

	  /**
	   * Get cluster center.
	   *
	   * @return {GLatLng}
	   */
	  this.getCenter = function () {
	    return center_;
	  };

	  /**
	   * Add a marker.
	   *
	   * @param {Object} marker An object of marker you want to add:
	   *   {Boolean} isAdded If the marker is added on map.
	   *   {GMarker} marker The marker you want to add.
	   */
	  this.addMarker = function (marker) {
	    if (center_ === null) {
	      /*var pos = marker['marker'].getLatLng();
	       pos = map.fromLatLngToContainerPixel(pos);
	       pos.x = parseInt(pos.x - pos.x % (GRIDWIDTH * 2) + GRIDWIDTH);
	       pos.y = parseInt(pos.y - pos.y % (GRIDWIDTH * 2) + GRIDWIDTH);
	       center = map.fromContainerPixelToLatLng(pos);*/
	      center_ = marker.marker.getLatLng();
	    }
	    markers_.push(marker);
	  };

	  /**
	   * Remove a marker from cluster.
	   *
	   * @param {GMarker} marker The marker you want to remove.
	   * @return {Boolean} Whether find the marker to be removed.
	   */
	  this.removeMarker = function (marker) {
	    for (var i = 0; i < markers_.length; ++i) {
	      if (marker === markers_[i].marker) {
	        if (markers_[i].isAdded) {
	          map_.removeOverlay(markers_[i].marker);
	        }
	        markers_.splice(i, 1);
	        return true;
	      }
	    }
	    return false;
	  };

	  /**
	   * Get current zoom level of this cluster.
	   * Note: the cluster zoom level and map zoom level not always the same.
	   *
	   * @return {Number}
	   */
	  this.getCurrentZoom = function () {
	    return zoom_;
	  };

	  /**
	   * Redraw a cluster.
	   * @private
	   * @param {Boolean} isForce If redraw by force, no matter if the cluster is
	   *     in viewport.
	   */
	  this.redraw_ = function (isForce) {
	    if (!isForce && !this.isInBounds()) {
	      return;
	    }

	    // Set cluster zoom level.
	    zoom_ = map_.getZoom();
	    var i = 0;
	    var mz = markerClusterer.getMaxZoom_();
	    if (mz === null) {
	      mz = map_.getCurrentMapType().getMaximumResolution();
	    }
	    if (zoom_ >= mz || this.getTotalMarkers() === 1) {

	      // If current zoom level is beyond the max zoom level or the cluster
	      // have only one marker, the marker(s) in cluster will be showed on map.
	      for (i = 0; i < markers_.length; ++i) {
	        if (markers_[i].isAdded) {
	          if (markers_[i].marker.isHidden()) {
	            markers_[i].marker.show();
	          }
	        } else {
	          map_.addOverlay(markers_[i].marker);
	          markers_[i].isAdded = true;
	        }
	      }
	      if (clusterMarker_ !== null) {
	        clusterMarker_.hide();
	      }
	    } else {
	      // Else add a cluster marker on map to show the number of markers in
	      // this cluster.
	      for (i = 0; i < markers_.length; ++i) {
	        if (markers_[i].isAdded && (!markers_[i].marker.isHidden())) {
	          markers_[i].marker.hide();
	        }
	      }
	      if (clusterMarker_ === null) {
	        clusterMarker_ = new ClusterMarker_(center_, this.getTotalMarkers(), markerClusterer_.getStyles_(), markerClusterer_.getGridSize_());
	        map_.addOverlay(clusterMarker_);
	      } else {
	        if (clusterMarker_.isHidden()) {
	          clusterMarker_.show();
	        }
	        clusterMarker_.redraw(true);
	      }
	    }
	  };

	  /**
	   * Remove all the markers from this cluster.
	   */
	  this.clearMarkers = function () {
	    if (clusterMarker_ !== null) {
	      map_.removeOverlay(clusterMarker_);
	    }
	    for (var i = 0; i < markers_.length; ++i) {
	      if (markers_[i].isAdded) {
	        map_.removeOverlay(markers_[i].marker);
	      }
	    }
	    markers_ = [];
	  };

	  /**
	   * Get number of markers.
	   * @return {Number}
	   */
	  this.getTotalMarkers = function () {
	    return markers_.length;
	  };
	}

	/**
	 * ClusterMarker_ creates a marker that shows the number of markers that
	 * a cluster contains.
	 *
	 * @constructor
	 * @private
	 * @param {GLatLng} latlng Marker's lat and lng.
	 * @param {Number} count Number to show.
	 * @param {Array of Object} styles The image list to be showed:
	 *   {String} url Image url.
	 *   {Number} height Image height.
	 *   {Number} width Image width.
	 *   {Array of Number} anchor Text anchor of image left and top.
	 *   {String} textColor text color.
	 * @param {Number} padding Padding of marker center.
	 */
	function ClusterMarker_(latlng, count, styles, padding) {
	  var index = 0;
	  var dv = count;
	  while (dv !== 0) {
	    dv = parseInt(dv / 10, 10);
	    index ++;
	  }

	  if (styles.length < index) {
	    index = styles.length;
	  }
	  this.url_ = styles[index - 1].url;
	  this.height_ = styles[index - 1].height;
	  this.width_ = styles[index - 1].width;
	  this.textColor_ = styles[index - 1].opt_textColor;
	  this.anchor_ = styles[index - 1].opt_anchor;
	  this.latlng_ = latlng;
	  this.index_ = index;
	  this.styles_ = styles;
	  this.text_ = count;
	  this.padding_ = padding;
	}

	ClusterMarker_.prototype = new GOverlay();

	/**
	 * Initialize cluster marker.
	 * @private
	 */
	ClusterMarker_.prototype.initialize = function (map) {
	  this.map_ = map;
	  var div = document.createElement("div");
	  var latlng = this.latlng_;
	  var pos = map.fromLatLngToDivPixel(latlng);
	  pos.x -= parseInt(this.width_ / 2, 10);
	  pos.y -= parseInt(this.height_ / 2, 10);
	  var mstyle = "";
	  if (document.all) {
	    mstyle = 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="' + this.url_ + '");';
	  } else {
	    mstyle = "background:url(" + this.url_ + ");";
	  }
	  if (typeof this.anchor_ === "object") {
	    if (typeof this.anchor_[0] === "number" && this.anchor_[0] > 0 && this.anchor_[0] < this.height_) {
	      mstyle += 'height:' + (this.height_ - this.anchor_[0]) + 'px;padding-top:' + this.anchor_[0] + 'px;';
	    } else {
	      mstyle += 'height:' + this.height_ + 'px;line-height:' + this.height_ + 'px;';
	    }
	    if (typeof this.anchor_[1] === "number" && this.anchor_[1] > 0 && this.anchor_[1] < this.width_) {
	      mstyle += 'width:' + (this.width_ - this.anchor_[1]) + 'px;padding-left:' + this.anchor_[1] + 'px;';
	    } else {
	      mstyle += 'width:' + this.width_ + 'px;text-align:center;';
	    }
	  } else {
	    mstyle += 'height:' + this.height_ + 'px;line-height:' + this.height_ + 'px;';
	    mstyle += 'width:' + this.width_ + 'px;text-align:center;';
	  }
	  var txtColor = this.textColor_ ? this.textColor_ : 'black';

	  div.style.cssText = mstyle + 'cursor:pointer;top:' + pos.y + "px;left:" +
	      pos.x + "px;color:" + txtColor +  ";position:absolute;font-size:11px;" +
	      'font-family:Arial,sans-serif;font-weight:bold';
	  div.innerHTML = this.text_;
	  map.getPane(G_MAP_MAP_PANE).appendChild(div);
	  var padding = this.padding_;
	  GEvent.addDomListener(div, "click", function () {
	    var pos = map.fromLatLngToDivPixel(latlng);
	    var sw = new GPoint(pos.x - padding, pos.y + padding);
	    sw = map.fromDivPixelToLatLng(sw);
	    var ne = new GPoint(pos.x + padding, pos.y - padding);
	    ne = map.fromDivPixelToLatLng(ne);
	    var zoom = map.getBoundsZoomLevel(new GLatLngBounds(sw, ne), map.getSize());
	    map.setCenter(latlng, zoom);
	  });
	  this.div_ = div;
	};

	/**
	 * Remove this overlay.
	 * @private
	 */
	ClusterMarker_.prototype.remove = function () {
	  this.div_.parentNode.removeChild(this.div_);
	};

	/**
	 * Copy this overlay.
	 * @private
	 */
	ClusterMarker_.prototype.copy = function () {
	  return new ClusterMarker_(this.latlng_, this.index_, this.text_, this.styles_, this.padding_);
	};

	/**
	 * Redraw this overlay.
	 * @private
	 */
	ClusterMarker_.prototype.redraw = function (force) {
	  if (!force) {
	    return;
	  }
	  var pos = this.map_.fromLatLngToDivPixel(this.latlng_);
	  pos.x -= parseInt(this.width_ / 2, 10);
	  pos.y -= parseInt(this.height_ / 2, 10);
	  this.div_.style.top =  pos.y + "px";
	  this.div_.style.left = pos.x + "px";
	};

	/**
	 * Hide this cluster marker.
	 */
	ClusterMarker_.prototype.hide = function () {
	  this.div_.style.display = "none";
	};

	/**
	 * Show this cluster marker.
	 */
	ClusterMarker_.prototype.show = function () {
	  this.div_.style.display = "";
	};

	/**
	 * Get whether the cluster marker is hidden.
	 * @return {Boolean}
	 */
	ClusterMarker_.prototype.isHidden = function () {
	  return this.div_.style.display === "none";
	};
 	
