User:Kakurady/Convention map script
From WikiFur, the furry encyclopedia.
/* OBSOLETE: This powered Kakurady's copy of the map of active conventions.
The current live version is at this one; new data should be added here.
Further experimentation will happen at https://github.com/Kakurady/FurryConventionMap .*/ var map = null; var infoWindow = null; var meets = []; // number of conventions in different areas, displayed in drop down var count = 0; var count_na = 0; var count_eu = 0; var count_oceania = 0; var count_others = 0; //constants specifying which region is selected in the drop down var FILT_ALL = 0; var FILT_NA = 1; var FILT_EU = 2; var FILT_OCEANIA = 3; var FILT_OTHERS = 4; //These functions are used to classify conventions into regions //They are hacks; function only be accurate for existing data function is_in_na(lat, lng){ return (lat > 21 && lat < 75 && lng > -144 && lng < -48); } function is_in_eu(lat, lng){ return (lat > 36 && lat < 75 && lng > -13 && lng < 32); } function is_in_oceania(lat, lng){ return (lat > -50 && lat < -5 && lng > 110 && lng < 180); } var is_phone = false; function load() { var useragent = navigator.userAgent; is_phone = (useragent.indexOf('iPhone') != -1 || useragent.indexOf('Android') != -1) //TODO support other phones that support tel: protocol? if (useragent.indexOf('iPhone') != -1 || useragent.indexOf('Android') != -1) { //working around Android Browser having no scroll bar (Fennec/Firefox Mobile has no bar, but can scroll inside divs) //document.getElementById("map").style.position="fixed"; //Google Maps will undo this document.getElementById("side").style.height="auto"; document.getElementById("side").style.overflow="auto"; } if (true) { var mapNode = document.getElementById("map"); markers = []; // Set initial position // These values are assuming a 1280x800 monitor with 96dpi. // it would be nice to scale this according to client area size var centerLatLng = new google.maps.LatLng(40,-40); var mapOpts = { zoom: 3, center: centerLatLng, mapTypeId: google.maps.MapTypeId.ROADMAP, streetViewControl: true }; // creating map map = new google.maps.Map(mapNode, mapOpts); infoWindow = new google.maps.InfoWindow({}); // Add map points // Format: addLocation(latitude, longitude, 'Name', 'website', 'Place name<br>Street<br>City, State Code<br>Country', 'Phone Number', 'Mon[th] 1-3 20XX', attendance); addLocation(-24.097951,-48.371558, 'Abando', 'abando.com.br', 'São Roque, São Paulo<br>Brazil', '', 'Feb 9-12 2013', 50); //addLocation(-37.891950, -57.832850, 'Animales Sueltos', 'furrycamp.com.ar', 'Camping \'La Serranita\'<br>barrio Colinas Verdes<br>Mar del Plata<br>Argentina', '', 41); addLocation(40.444334, -79.995532, 'Anthrocon', 'www.anthrocon.org', 'Westin Convention Center Pittsburgh<br>1000 Penn Avenue<br>Pittsburgh, Pennsylvania 15222<br>USA', '+1 (412) 281-3700', 'Jul 4-7 2013', '5179'); addLocation(52.597652, 13.22226, 'BerliCon', 'www.berlicon.org', 'Zeltlagerplatz e.V.<br>Rallenweg 4,13505 Berlin-Heiligensee<br>Germany', '', 'Jun 21-24 2012', 35); //addLocation(61.599498, 9.750860, 'CabinCon', 'swandog.livejournal.com', 'Vinstra<br>Norway', '');//not on list, website is private addLocation(39.077092, -74.830348, 'Cape May Fur Meet', 'capemayfurmeet.com', 'Middle Township Elementary School #2<br>101 West Pacific Ave, Cape May Court House<br>Middle, New Jersey 08210<br>USA', '', 'May 19-20 2012', 3); addLocation(33.679673,-117.852488, 'Califur', 'califur.com', 'Irvine Marriott<br>18000 Von Karman Avenue<br>Irvine, California, 92614<br>USA', '+1 (949) 553-0100', 'Jun 1-3 2012', 919); addLocation(43.721056,-121.291552, 'Campfire Tails', 'campfiretails.com', 'Ogden Group Camp C<br>Paulina Lake<br>La Pine, Oregon<br>USA', '', 'Aug 2-6 2012', 100); addLocation(38.9439, -95.3385, 'Central Midwest Furmeet', 'cmfurmeet.webs.com', ' Bloomington West Group Camp at Clinton Lake near Lawrence, Kansas', '', 'Sep 14-16 2012', 22); addLocation(50.176635, 14.355700, 'ČeSFuR', 'www.cesfur.org', 'Hotel Vltava<br>250 68 Rez u Prahy<br>Czech Republic', '+420 220 940 759', 'Jul 5-8 2012', 86); addLocation(50.94149, 6.94651, 'Cologne Furdance', 'www.cologne-cfd.de', 'Zeughaus24, Zeughausstraße 24, 50667 Köln, Germany', '', 'Nov 10 2012'); //Colonge Fur-Dance, Germany, June/November addLocation(42.930358, -81.218609, 'Condition', 'www.conditionfurry.ca', 'Four Points Sheraton<br>1150 Wellington Road South<br>London, Ontario N6E 1M3<br>Canada', '+1 (519) 681-0600', 'Jul 27-29 2012', 251); addLocation(53.415679, -2.247281, 'ConFuzzled', 'confuzzled.org.uk', 'Britannia Country House Hotel<br>Palatine Road<br>Didsbury<br>Manchester M20 2WG<br>England', 'N/A', 'May 25-28 2012', 725); addLocation(41.80347,-88.120222, 'Duckon', 'www.duckon.org', 'Naperville Holiday Inn Select<br>1801 Naper Blvd<br>Naperville, IL 60563<br>United States', '', 'Jun 1-3 2012'); addLocation(51.283333, 11.566667, 'EAST', 'www.east-con.de.vu', '', '', 'Sep 27-30'); addLocation(28.33704,-81.587777, 'Elliott\'s Live Events', 'ele.furryhost.com', 'Radisson Resort Worldgate<br>3011 Maingate Lane, Kissimmee, FL 34747, United States','', "Year-round", 215);//May21-23, Aug7-8, Oct30-31 addLocation(50.616714, 10.723858, 'Eurofurence', 'eurofurence.org', 'Ringberg Resort Hotel<br>Ringberg 10<br>D-98527 Suhl<br>Germany', '+49 36 81/3 89-0', 'Aug 29-Sep 2 2012', 1066); addLocation(40.703546, -74.184279, 'FA: United', 'faunited.org', 'Hanover Marriott<br>1401 Rt 10 E<br>Whippany, NJ 07981<br>USA', '+1 (973) 538 8811 ', 'Aug 17-19 2012', 531); addLocation(45.880449, -78.564606, 'Feral!', 'campferal.org', 'Camp Arowhon<br>Algonquin Park, Ontario P1H 2G6<br>Canada', '+1 (705) 633-5651', 'Aug 24-28 2012', 94); addLocation(62.02209, 30.0185, 'FinFur', 'ffsc.finfur.net', '', '', 'Jul 11-15'); addLocation(-38.625454,176.090927, 'FurcoNZ', 'www.furconz.org.nz', 'Kiwanis and Huia Lodges, Huia<b>Waitakere Ranges Regional Park<br>Auckland<br>New Zealand', '', 'Dec 14-17 2012', 50); addLocation(-28.00041, 153.4264, 'FurDU', 'www.furrydownunder.com', 'Vibe Hotel Gold Coast<br>42 Ferny Avenue,<br>Surfers Paradise, QLD 4217<br>Australia', '', 'Apr 27-29 2012', 246); addLocation(53.541723, -113.625262, 'Fur-eh!', 'fureh.ca', 'Hilton Garden Inn<br>17610 Stony Plain Road<br>Edmonton, Alberta, T5S 1A2<br>Canada', '+1 (780) 443-2233', 'May 4-6 2012', 200); addLocation(41.542706, -72.970258, 'FurFright', 'furfright.org', 'Crowne Plaza Cromwell<br>100 Berlin Road<br>Cromwell, CT 06416<br>USA', '+1 (888) 233-9527', 'Oct 26-28 2012', 1485); addLocation(-33.859972, 151.211111, 'FurJam', 'www.furjam.org', ' Forresters Hotel<br>336 Riley Street<br>Surry Hills NSW 2010<br>Australia', '(02) 9212 3035', 'Oct 7-9 2012'); addLocation(39.983333, -82.983333, 'Furlaxation', 'furlaxation.org', '', '', 'Sept 28-30 2012'); addLocation(28.542401, -81.347945, 'Furloween', 'www.furhold.org/furloween', 'Orlando Elks Lodge<br>12 North Primrose Dr.<br>Orlando, Florida 32803<br>USA', '+1 (407) 282-3900', 'Oct 29 2011', 148); addLocation(43.689551, -79.586356, 'Furnal Equinox', 'furnalequinox.com', 'Sheraton Toronto Airport Hotel & Conference Centre<br>801 Dixon Road<br>Toronto, ON M9W 1J3<br>Canada', '+1 (416) 675-6100', 'Mar 8-10 2013', 651); addLocation(42.441891, -83.434789, 'Furry Connection North', 'furryconnectionnorth.com', 'Shearton Detroit Novi<br>21111 Haggerty Road<br>Novi, Michigan 48375<br>USA', '+1 (248) 349-4000', 'Apr 13-15 2012', 1179); addLocation(28.401971, -80.618792, 'Furry Cruise', 'www.furrycruise.com', 'Royal Caribbean\'s <i>Freedom of the Seas</i><br>Port Canaveral, Florida<br>USA', '+1 (734) 340-4553', 'Dec 2-7 2012', 24); addLocation(32.9455, -96.8398, 'Furry Fiesta', 'www.furryfiesta.org', 'Crowne Plaza Hotel<br>14315 Midway Road<br>Addison, Texas 75001<br>USA','+1 (972) 980-8877', 'Feb 22-24 2013', 1210); addLocation(33.626091, -84.451776, 'Furry Weekend Atlanta', 'furryweekend.com', 'Westin Peachtree Plaza<br>210 Peachtree St<br>Atlanta, GA 30303<br>USA', '+1 (404) 659-1400', 'Mar 14-17 2012', 1902); addLocation(51.40328, 5.95940, 'Furs on Fire', 'www.fursonfire.eu', 'Evertsoord, The Netherlands', '', 'Dec 29-Jan 1 2013'); addLocation(52.588333, 14.65, 'Furstock', 'www.polfurs.org', '', '', 'Aug 4-6 2011'); addLocation(57.05, 9.916667, 'Furtastic', 'www.furtastic.dk', 'Denmark', '', 'Jul 2012?'); addLocation(37.330294,-121.888375, 'Further Confusion', 'furtherconfusion.org', 'San Jose Mariott<br>301 South Market Street<br>San Jose, CA 95113<br>USA', '+1 408-280-1300', 'Jan 17-21 2013', 3021); addLocation(51.388923,-115.784912, 'Furthest North', 'furthestnorth.ca', 'Deer Creek Provincial Recreation Area<br>Alberta<br>Canada', '+1 (403) 637-2229', 'Aug 3-6 2012', 63); addLocation(51.93180, 19.407, 'Futrzakon', 'www.futrzakon.org', 'Municipal Cultural Center<br>95-001 Dzierżązna<br>Poland', '42 717 84 66', 'Aug 8-11 2012', 67); addLocation(47.35016, 7.76123, 'Golden Leaves Con', 'glc.furry.ch', 'Baselbieter Chinderhus<br>Bachtalenstrasse 10<br>4438 Langenbruck<br>Switzerland', '062 390 12 24', 'Nov 15-18 2012');// //addLocation(52.505369, 13.353882, 'Herbstcon', 'herbstcon.de', 'Sozialistische Jugend Deutschlands – Die Falken<br>Haus am Lützowplatz<br>Lützowplatz 9<br>10785 Berlin<br>Germany', '030-261030-0', 'Oct 11-14 2012', 20);//Invite only addLocation(49.616848, 8.826463, 'H-Con', 'h-con.afc-group.org', 'Gerhart-Hauptmann-Haus<br>Außerhalb 1-3<br>64689 Grasellenbach-Scharbach<br>Germany', '+49 06 2 07/1 22-1', 'Oct 3-7 2012'); addLocation(49.26716,-123.010021, 'Howloween', 'howloween.org', 'Burnaby Executive Hotel<br>4201 Lougheed Highway<br>Burnaby, BC<br>Canada', '', '5-6 Nov 2011', 151); addLocation(39.768971, -86.160601, 'IndyFurCon', 'indyfurcon.com', 'Sheraton at Keystone Crossing<br>8787 Keystone Crossing<br>Indianapolis, IN 46240<br>USA', '+1 (317) 846-2700', 'Aug 10-12 2012', 369); addLocation(35.694742, 139.816679, 'Kemocon', 'www.kemocon.com', 'Sumida Industrial Centre<br>〒130-0022<br>Sumida, Tokyo<br>Japan', '', 'Nov 19 2011', 400); addLocation(47.336284, 12.855555, 'Lakeside Furs', 'lakesidefurs.at', 'Zell am See<br>Talstr. 159, 5700 Thumersbach<br>Austria', '+43 (0)6542/73734', 'Aug 8-11 2012', 20); addLocation(28.333938, -81.587638, 'Megaplex', 'megaplexcon.org', 'Worldgate Resort Hotel<br>3011 Maingate Lane<br>Kissimmee, FL 34747-2302<br>USA', '+1 (866) 705-7676', 'Jul 27-29 2012', 553); addLocation(34.966572, -89.791608, 'Mephit Furmeet', 'mephitfurmeet.org', 'Whispering Woods Hotel & Conference Center<br>11200 Goodman Rd<br>Olive Branch, MS 38654-4212<br>USA', '+1 (662) 895-2941', 'Aug 31-Sep 2 2012', 546); addLocation(50.825484, 7.887068, 'Mephit Mini Con', 'mmc.furcon.de', 'Freusburg, Seigen<br>Germany', '', 'May 9-12 2013', 200); addLocation(-37.80541, 144.963291, 'MiDFur', 'www.midfur.com.au', 'Arrow on Swanston<br>488 Swanston Street<br>Carlton, VIC<br>Australia', '(613) 9225 9000', 'Dec 4-8 2012', 372); addLocation(41.981284, -87.859078, 'Midwest FurFest', 'furfest.org', "Hyatt Regency O'Hare<br>9300 Bryn Mawr Avenue<br>Rosemont, Illinois 60018<br>USA", '+1 (847) 696-1234', 'Nov 16-18 2012', 2600); addLocation(40.105846, -83.017244, 'Morphicon', 'morphicon.org', 'Holiday Inn Columbus-Worthington<br>7007 N. High Street<br>Worthington, Ohio 43085<br>USA', '+1 (614) 436-0700', 'May 3-6 2012', 275); addLocation(39.65924 , -75.75286, 'New Year\'s Furry Ball', 'www.ticketderby.com/innerindex.php?eventid=3505', 'Embassy Suites Newark-Wilmington/South<br>854 S College Ave<br>Newark, DE 19713<br>USA', '(302) 368-8000', 'Dec 30-Jan 1 2011', 146) // Was replaced by Furstivus in 2012, but planned to resume for 2013 addLocation(35.933888, -98.429604, 'Oklacon', 'oklacon.com', 'Roman Nose State Park<br>Rt 1 Box 2-2<br>Watonga, Oklahoma 73772<br>USA', '+1 (580) 623-4215', 'Oct 17-22 2012', 300); addLocation(-31.952222, 115.858889, 'Perthfur Gathering', 'gathering.perthfurs.net', 'Perth, Western Australia', '', 'Aug 13 2011', 76);//"3rd qtr, 2010" addLocation(47.444579,-122.293807, 'RainFurrest', 'rainfurrest.org', 'Hilton Seattle Airport<br>17620 International Boulevard<br>Seattle, WA 98188<br>USA', '+1 (206) 244-4800', 'Sep 27-30 2012', 1424); addLocation(-27.467778, 153.027778, 'RivFur', 'www.rivfur.org', 'Brisbane, Queensland, Australia', '', 'June 29-Jul 2 2012', 50); addLocation(34.6701, -86.577759, 'Rocket City FurMeet', 'rcfm.net', 'Hilton Garden Inn Huntsville South<br>301 Boulevard South SW<br>Huntsville, Alabama 35802<br>USA', '+1 (256) 881-4170', 'May 25-27 2012', 302); addLocation(39.762235,-104.900293, 'Rocky Mountain Fur Con', 'rockymountainfurcon.org', 'Doubletree Hotel Denver<br>3203 Quebec Street<br>Denver, Colorado 80207<br>USA', '+1 (303) 321-3333', 'Aug 10-12 2012', 643); addLocation(55.734529, 36.882262, 'Rusfurrence', 'rusfurrence.ru', 'РАН "Звенигородский" (RAS "Zvenigorodsky")<br>Звенигород (Zvenigorod), Moscow<br>Russian Federation', '', 'Jan 31-Feb 5 2012', 190); addLocation(57.478307, -4.22672, 'ScotiaCon', 'www.scotiacon.com', 'Mercure Inverness Hotel<br>Church Street<br>Inverness, IV1 1QY<br>Inverness-shire, United Kingdom', '', 'Jul 27-30 2012', 123); addLocation(-33.932, 25.571, 'South Afrifur meet', 'forum.zafur.co.za/viewtopic.php?f=53&t=1330', '', '', 'Dec 2012?'); addLocation(50.456309, 30.504819, 'WUFF (UA Furence)', 'furry.org.ua/index.php?page=meetings', 'Kiev, Ukraine', '', '28 April-2 May 2012', 95) addLocation(49.266323,-123.011509, 'VancouFur', 'vancoufur.ca', 'Executive Hotel & Conference Centre Burnaby<br>4201 Lougheed Hwy<br>Burnaby, British Columbia, V5C 3Y6<br>Canada', '', 'March 9–11 2012');//check date, no clue for 2013 addLocation(45.493191,-73.5736397, 'What The Fur', 'whatthefur.ca', 'The Days Hotel & Conference Centre of Montreal<br>1005 rue Guy, Montréal, QC H3H 2K4, Canada', '514-938-4611', 'May 2013?', 282); addLocation(40.538786, -79.830565, 'Western Pennsylvania Furry Weekend', 'wpafw.org', 'Quality Inn Pittsburgh North<br>2801 Freeport Road<br>Pittsburgh, Pennsylvania 15238<br>USA', '+1 (412) 828-9400', 'Sep 28-30 2012', 116); addLocation(35.042611, -95.317672, 'Wild Nights', 'wildnights.org', 'Robbers Cave State Park<br>Wilburton, Oklahoma 74578<br>USA', '+1 (918) 465-2565', 'Apr 25-29 2013', 122); addLocation(47.405582, 12.040372, 'Zillercon', '', 'Wildschönau, Tyrol<br>Austria', '', 'Jan 21-28 2012', 40); addLocation(50.773040, 15.311701, 'ZodiaCon', 'zodiacon.org', 'Hotel Emilka<br>Na Novině 401<br>468 61 Desná III<br>Czech Republic', '+420 483 300 335', 'May 2012?'); // convert textual dates to numbers for sorting. for(var i = 0, meet; meet = meets[i]; i++){ meet.datev=(v=getmonthvalue(meet.date))?v:3000; } // adds or rearranges meets in the side bar. function refresh(f){ for(var i = 0, meet; meet = meets[i]; i++){ addLocation1(meet, f); } } // comparison functions, those decide the order meetups are listed function compare_name(a, b){ return a.name?(b.name?a.name.localeCompare(b.name):-1):1; } function compare_date(a,b){ var d = a.datev - b.datev; return (d == 0)? compare_name(a, b) : d; } function compare_attendence(a,b){ if (a.attendence){ if (b.attendence){ return b.attendence - a.attendence; } else { return -1; } } else { if (b.attendence){ return 1; } else { return compare_name(a,b); } } } // assigning functionality to sort buttons document.getElementById("bydate").onclick=function(){ meets.sort(compare_date); refresh(function(meet){return meet.date?(meet.date + " " + meet.name):meet.name;}); } document.getElementById("byname").onclick=function(){ meets.sort(compare_name); refresh(); } document.getElementById("byattendence").onclick=function(){ meets.sort(compare_attendence); refresh(function (meet){return meet.name + (meet.attendence?" ("+meet.attendence+")":"");}); } meets.sort(function (a,b){ return a.datev - b.datev; }) refresh(function(meet){return meet.date?(meet.date + " " + meet.name):meet.name;}); // add drop-down options opt = document.createElement("option"); opt.innerHTML = "All events ("+count+")"; opt.value = FILT_ALL; opt.selected=true; document.getElementById("filter").appendChild(opt); opt = document.createElement("option"); opt.innerHTML = "North America ("+count_na+")"; opt.value = FILT_NA; document.getElementById("filter").appendChild(opt); opt = document.createElement("option"); opt.innerHTML = "Europe ("+count_eu+")"; opt.value = FILT_EU; document.getElementById("filter").appendChild(opt); opt = document.createElement("option"); opt.innerHTML = "Oceania ("+count_oceania+")"; opt.value = FILT_OCEANIA; document.getElementById("filter").appendChild(opt); opt = document.createElement("option"); opt.innerHTML = "Rest of the World ("+count_others+")"; opt.value = FILT_OTHERS; document.getElementById("filter").appendChild(opt); document.getElementById("filter").onchange = function(){ opts = document.getElementById("filter").firstChild; selection = 0; while(opts != null){ if (opts.selected) { selection = opts.value; } opts = opts.nextSibling; } filter_func = null; switch(Number(selection)){ case FILT_NA: filter_func = is_in_na; break; case FILT_EU: filter_func = is_in_eu; break; case FILT_OCEANIA: filter_func = is_in_oceania; break; case FILT_OTHERS: filter_func = function(lat, lng){ return !(is_in_na(lat, lng)) && !(is_in_eu(lat, lng)) && !(is_in_oceania(lat, lng)) ; } break; case FILT_ALL: default: filter_func = function(lat, lng){return true;} break; } bounds = null; for(var i = 0, meet; meet = meets[i]; i++){ //only show those that pass filter_func visible = filter_func(meet.lat, meet.lng); meet.marker.setVisible(visible); meet.li.style.display = visible ? "": "none"; if (visible) { if (bounds){ bounds.extend(meet.marker.getPosition()); } else { pos = meet.marker.getPosition(); bounds = new google.maps.LatLngBounds(pos, pos); } } } if (bounds) {map.fitBounds(bounds);} //zoom to include in the viewport all markers if there are any } } //if (true) footnote = document.createElement("p"); footnote.innerHTML = '<a href="http://en.wikifur.com/w/index.php?title=User:Kakurady/Convention_map_script&action=edit">Edit data on WikiFur</a> or <a href="http://en.wikifur.com/wiki/User_talk:Kakurady/Convention_map_script">discuss</a>'; document.getElementById("side").appendChild(footnote); } //load() // convert textual dates into numbers for sorting // Might benefit from also parsing years. function getmonthvalue(s){ if (!s) {return 4001;} //automatically generate these for i18n and l10n extensibility? x = /(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(?: )?([0-9]*)/.exec(s); if (!x || !x[1]) return 4000; day = (v=parseInt(x[2]))?v:0; if (day > 1980) {day = 40;} switch (x[1]){ case "Jan": month = 1; break; case "Feb": month = 2; break; case "Mar": month = 3; break; case "Apr": month = 4; break; case "May": month = 5; break; case "Jun": month = 6; break; case "Jul": month = 7; break; case "Aug": month = 8; break; case "Sep": month = 9; break; case "Oct": month = 10; break; case "Nov": month = 11; break; case "Dec": month = 12; break; default: month = 20; }//switch return month * 100 + day; } //returns the text to be displayed in info window function getLocationHTML(name, url, address, tel, date, attendence) { return '<p><b><a href="http://en.wikifur.com/wiki/' + name + '">' + name + '</a></b>' + (url?('<br><a href="http://' + url + '">' + url + '</a>'):'') + '</p><p class="smaller">' + address + (tel? ('<br>Phone: ' + (is_phone? ('<a href="tel:' + tel.replace(/\s/g, "") + '">' + tel + '</a>') :tel)) :'') + (date?'<br>'+date:'') + (attendence? " Past atnd. "+ attendence:"") + "</p>"; } function addLocation(lat, lng, name, url, address, tel, date, attendence){ meets.push({"lat":lat, 'lng': lng, 'name':name, 'url': url, 'address': address, 'tel': tel, 'date':date, 'attendence': attendence}); } //this is called to add markers as well as to sort markers. //this takes advantage of the fact that when adding a child to a DOM node, if the child is already in the document, it is removed from its original location first. //lat, lng, name, url, address, tel, date function addLocation1(a, f) { if (!f) {f = function(meet){return meet.date? (meet.name + " " + meet.date) : meet.name;}}; if (!a.marker || !a.li){ //make the marker markerOpts = { position: new google.maps.LatLng(a.lat, a.lng), map: map, title: name } a.marker = new google.maps.Marker(markerOpts); fn = function() { infoWindow.setContent(getLocationHTML(a.name, a.url, a.address, a.tel, a.date, a.attendence)); infoWindow.open(map, a.marker); } google.maps.event.addListener(a.marker, "click",fn); link = document.createElement("A"); link.innerHTML = f(a); link.href = "#"; link.onclick = fn; //clean up this on unload! a.li = document.createElement("LI"); a.li.appendChild(link); count++; if (is_in_na(a.lat, a.lng)){ count_na++; } else if (is_in_eu(a.lat, a.lng)) { count_eu++; } else if (is_in_oceania(a.lat, a.lng)){ count_oceania ++; } else { count_others ++; } } else { //only change the label text a.li.firstChild.innerHTML = f(a); } //(re)insert the item into list document.getElementById("list").appendChild(a.li); } function unload(){ for(var i = 0, meet; meet = meets[i]; i++){ meet.marker=null; meet.li=null; } } //