User:Ccsmith/sandbox/map media js

/** See bottom for functions **/ /****** menu data structure *******/ const menus = { "africa_countries": { "class": "countrymenu", "title": "Africa", "list": [ "Algeria", "Angola", "Benin", "Botswana", "Burkina Faso", "Burundi", "Cameroon", "Cape Verde", "Central African Republic", "Chad", "Comoros", "Congo, Democratic Republic of the", "Congo, Republic of the", "Djibouti", "Egypt", "Equatorial Guinea", "Eritrea", "Eswatini", "Ethiopia", "Gabon", "The Gambia", "Ghana", "Guinea", "Guinea-Bissau", "Ivory Coast", "Kenya", "Lesotho", "Liberia", "Libya", "Madagascar", "Malawi", "Mali", "Mauritania", "Mauritius", "Mayotte", "Morocco", "Mozambique", "Namibia", "Niger", "Nigeria ", "Réunion Island", "Rwanda", "Saint Helena", "Sao Tome & Principe", "Senegal", "Seychelles", "Sierra Leone", "Somalia", "South Africa ", "South Sudan", "Sudan", "Tanzania", "Togo", "Tunisia", "Uganda", "Western Sahara", "Zambia", "Zimbabwe" ] },  "asia_countries": { "class": "countrymenu", "title": "Asia", "list": [ "Afghanistan", "Armenia", "Azerbaijan", "Bahrain", "Bangladesh", "Bhutan", "British Indian Ocean Territory", "Brunei", "Cambodia", "China", "East Timor", "Hong Kong SAR", "India", "Indonesia", "Iran", "Iraq", "Israel", "Japan", "Jordan", "Kazakhstan", "Kuwait", "Kyrgyzstan", "Laos", "Lebanon", "Macau SAR", "Malaysia", "Maldives", "Mongolia", "Myanmar", "Nepal", "North Korea", "Oman", "Pakistan", "Palestine", "Philippines ", "Qatar", "Russia", "Saudi Arabia", "Singapore", "South Korea", "Sri Lanka", "Syria", "Taiwan", "Tajikistan", "Thailand", "Turkey", "Turkmenistan", "United Arab Emirates", "Uzbekistan", "Vietnam", "Yemen" ] },  "europe_countries": { "class": "countrymenu", "title": "Europe", "list": [ "Albania", "Andorra", "Austria ", "Belarus", "Belgium ", "Bosnia & Herzegovina", "Bulgaria", "Channel Islands", "Croatia", "Cyprus", "Czech Republic", "Denmark ", "England ", "Estonia", "Faroe Islands", "Finland ", "France ", "Georgia", "German Empire ", "Germany ", "Gibraltar", "Greece", "Hungary ", "Iceland", "Isle of Man ", "Ireland ", "Italy ", "Jersey", "Kosovo", "Latvia", "Liechtenstein ", "Lithuania", "<span class=\"fakelink menulink\">Luxembourg ", "Malta", "Moldova", "Monaco", "Montenegro", "<span class=\"fakelink menulink\">Netherlands ", "North Macedonia", "<span class=\"fakelink menulink\">Northern Ireland ", "<span class=\"fakelink menulink\">Norway ", "<span class=\"fakelink menulink\">Poland ", "<span class=\"fakelink menulink\">Portugal ", "Romania", "Russia", "San Marino", "<span class=\"fakelink menulink\">Scotland ", "Serbia", "<span class=\"fakelink menulink\">Slovakia ", "Slovenia", "<span class=\"fakelink menulink\">Spain ", "<span class=\"fakelink menulink\">Sweden ", "<span class=\"fakelink menulink\">Switzerland ", "Ukraine", "<span class=\"fakelink menulink\">Wales ", "Vatican City" ] },  "north_america_countries": { "class": "countrymenu", "title": "North America", "list": [ "Anguilla", "Antigua & Barbuda", "Aruba", "Bahamas", "Barbados", "Belize", "Bermuda ", "Bonaire", "British Virgin Islands", "<span class=\"fakelink menulink\">Canada ", "Cayman Islands", "<span class=\"fakelink menulink\">Costa Rica ", "Cuba", "Curaçao", "Dominica", "<span class=\"fakelink menulink\">Dominican Republic ", "El Salvador", "Greenland ", "Grenada", "Guadeloupe", "<span class=\"fakelink menulink\">Guatemala ", "Haiti", "<span class=\"fakelink menulink\">Honduras ", "Jamaica", "Martinique", "<span class=\"fakelink menulink\">Mexico ", "<span class=\"fakelink menulink\">Montserrat ", "<span class=\"fakelink menulink\">Netherlands Antilles ", "Nicaragua", "<span class=\"fakelink menulink\">Panama ", "<span class=\"fakelink menulink\">Puerto Rico ", "Saba", "Saint Barthelemy", "<span class=\"fakelink menulink\">Saint Kitts & Nevis ", "Saint Lucia", "Saint Martin Island", "Saint Martin", "Saint Pierre & Miquelon", "Saint Vincent & the Grenadines ", "Sint Eustatius", "Sint Maarten", "Trinidad & Tobago", "Turks & Caicos Islands", "<span class=\"fakelink menulink\">United States ", "U.S. Virgin Islands" ] },  "pacific_countries": { "class": "countrymenu", "title": "Australia/Oceania", "list": [ "American Samoa", "<span class=\"fakelink menulink\">Australia ", "Christmas Island", "Cocos Islands", "Cook Islands", "Easter Island", "Micronesia", "Fiji", "<span class=\"fakelink menulink\">French Polynesia ", "Guam", "Kiribati", "Marshall Islands", "Nauru", "New Caledonia", "New Zealand", "Niue", "Norfolk Island", "Northern Mariana Islands", "Palau", "Papua New Guinea", "Pitcairn Islands", "Samoa", "Solomon Islands", "Tokelau", "Tonga", "Tuvalu", "Vanuatu", "Wake Island", "Wallis & Futuna" ] },  "south_america_countries": { "class": "countrymenu", "title": "South America", "list": [ "<span class=\"fakelink menulink\">Argentina ", "<span class=\"fakelink menulink\">Bolivia ", "<span class=\"fakelink menulink\">Brazil ", "<span class=\"fakelink menulink\">Chile ", "Colombia", "Ecuador", "Falkland Islands", "French Guiana", "Guyana", "<span class=\"fakelink menulink\">Paraguay ", "<span class=\"fakelink menulink\">Peru ", "Suriname", "<span class=\"fakelink menulink\">Uruguay ", "<span class=\"fakelink menulink\">Venezuela " ] },  "argentina_states": { "parent": "south_america_countries", "class": "statemenu", "title": "Argentina Provinces", "list": [ "Argentina", "City of Buenos Aires", "Buenos Aires", "Catamarca", "Chaco", "Chubut", "Córdoba", "Corrientes", "Entre Ríos", "Formosa", "Jujuy", "La Pampa", "La Rioja", "Mendoza", "Misiones", "Neuquén", "Río Negro", "Salta", "San Juan", "San Luis", "Santa Cruz", "Santa Fe", "Santiago del Estero", "Tierra del Fuego", "Tucumán" ] },  "australia_states": { "parent": "pacific_countries", "class": "statemenu", "title": "Australia States", "list": [ "Australia", "New South Wales", "Queensland", "South Australia", "Tasmania", "Victoria", "Western Australia" ] },  "austria_states": { "parent": "europe_countries", "class": "statemenu", "title": "Austria Provinces", "list": [ "Austria", "Burgenland", "Carinthia", "Lower Austria", "Upper Austria", "Salzburg", "Styria", "Tyrol", "Vorarlberg", "Vienna" ] },  "belgium_states": { "parent": "europe_countries", "class": "statemenu", "title": "Belgium Provinces", "list": [ "Belgium", "Antwerp Province", "Limburg Province", "East Flanders Province", "Flemish Brabant Province", "West Flanders Province", "Brabant Wallon Province", "Hainaut Province", "Liège Province", "Luxembourg Province", "Namur Province" ] },  "bolivia_states": { "parent": "south_america_countries", "class": "statemenu", "title": "Bolivia Departments", "list": [ "Bolivia", "Beni", "Chuquisaca", "Cochabamba", "La Paz", "Oruro", "Pando", "Potosí", "Santa Cruz", "Tarija" ] },  "brazil_states": { "parent": "south_america_countries", "class": "statemenu", "title": "Brazil States", "list": [ "Brazil", "Acre", "Alagoas", "Amapá", "Amazonas", "Bahia", "Ceará", "Distrito Federal Includes Brasília", "Espírito Santo", "Goiás", "Maranhão", "Mato Grosso", "Mato Grosso do Sul", "Minas Gerais", "Para", "Paraiba", "Parana", "Pernambuco", "Piaui", "Rio de Janeiro", "Rio Grande do Norte", "Rio Grande do Sul", "Rondonia", "Roraima", "Santa Catarina", "São Paulo", "Sergipe", "Tocantins" ] },  "canada_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Canada", "list": [ "Canada", "Alberta", "British Columbia", "Manitoba", "New Brunswick", "Newfoundland & Labrador", "Northwest Territories", "Nova Scotia", "Nunavut", "Ontario", "Prince Edward Island", "Quebec", "Saskatchewan", "Yukon" ] },  "chile_states": { "parent": "south_america_countries", "class": "statemenu", "title": "Chile Regions", "list": [ "Chile", "Antofagasta", "Araucanía", "Arica y Parinacota", "Atacama", "Aysén del General Carlos Ibáñez del Campo", "Biobío", "Chile", "Coquimbo", "Los Lagos", "Los Ríos", "Magallanes y de la Antártica Chilena", "Maule", "Libertador General Bernardo O'Higgins", "Santiago Metropolitan Region", "Tarapacá", "Valparaíso" ] },  "costa_rica_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Costa Rica Provinces", "list": [ "Costa Rica", "Alajuela", "Cartago", "Guanacaste", "Heredia", "Limón", "Puntarenas", "San José " ] },  "denmark_states": { "parent": "europe_countries", "class": "statemenu", "title": "Denmark Counties", "list": [ "Denmark", "Bornholm", "Copenhagen City", "Frederiksborg", "Haderslev", "Hjørring", "Holbæk", "København", "Maribo", "Odense", "Præstø", "Randers", "Ribe", "Ringkøbing", "Roskilde", "Skanderborg", "Sorø", "Svendborg", "Sønderborg", "Thisted", "Tønder", "Vejle", "Viborg", "Åbenrå", "Ålborg", "Århus", "Faroe Islands" ] },  "dominican_republic_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Dominican Republic Provinces", "list": [ "Dominican Republic", "Azua", "Bahoruco", "Barahona", "Dajabon", "Distrito Nacional", "Duarte", "El Seibo", "Elias Pina", "Espaillat", "Hato Mayor", "Independencia", "La Altagracia", "La Romana", "La Vega", "Maria Trinidad Sanchez", "Monsenor Nouel", "Monte Cristi", "Monte Plata", "Pedernales", "Peravia", "Puerto Plata", "Salcedo", "Samana", "San Cristobal", "San Jose de Ocoa", "San Juan", "San Pedro de Macoris", "Sanchez Ramirez", "Santiago", "Santiago Rodriguez", "Valverde" ] },  "england_states": { "parent": "europe_countries", "class": "statemenu", "title": "England", "list": [ "England", "Bedfordshire", "Berkshire", "Buckinghamshire", "Cambridgeshire", "Cheshire", "Cornwall", "Cumberland", "Derbyshire", "Devon", "Dorset", "Durham", "Essex", "Gloucestershire", "Hampshire", "Herefordshire", "Hertfordshire", "Huntingdonshire", "Kent", "Lancashire", "Leicestershire", "Lincolnshire", "London", "Middlesex", "Norfolk", "Northamptonshire", "Northumberland", "Nottinghamshire", "Oxfordshire", "Rutland", "Shropshire", "Somerset", "Staffordshire", "Suffolk", "Surrey", "Sussex", "Warwickshire", "Westmorland", "Wiltshire", "Worcestershire", "Yorkshire" ] },  "finland_states": { "parent": "europe_countries", "class": "statemenu", "title": "Finland Counties", "list": [ "Finland", "Ahvenanmaa", "Häme", "Keski-Suomi", "Dajabon", "Kuopio", "Kymi", "Lappi", "Mikkeli", "Oulu", "Pohjois-Karjala", "Turku-Pori", "Uusimaa", "Vaasa", "Viipuri" ] },  "france_states": { "parent": "europe_countries", "class": "statemenu", "title": "France Counties", "list": [ "France", "Ain", "Aisne", "Allier", "Alpes-de-Haute", "Hautes-Alpes", "Alpes-Maritimes", "Ardèche", "Ardennes", "Ariège", "Aube", "Aude", "Aveyron", "Bouches-du-Rhône", "Calvados", "Cantal", "Charente", "Charente-Maritime", "Cher", "Corrèze", "Corse-du-Sud", "Haute-Corse", "Côte d'Or", "Côtes d'Armor", "Creuse", "Dordogne", "Doubs", "Drôme", "Eure", "Eure-et-Loir", "Finistère", "Gard", "Haute-Garonne", "Gers", "Gironde", "Hérault", "Ille-et-Vilaine", "Indre", "Indre-et-Loire", "Isère", "Jura", "Landes", "Loir-et-Cher", "Loire", "Haute-Loire", "Loire-Atlantique", "Loiret", "Lot", "Lot-et-Garonne", "Lozère", "Maine-et-Loire", "Manche", "Marne", "Haute-Marne", "Mayenne", "Meurthe-et-Moselle", "Meuse", "Morbihan", "Moselle", "Nièvre", "Nord", "Oise", "Orne", "Pas-de-Calais", "Puy-de-Dôme", "Pyrénées-Atlantiques", "Hautes-Pyrénées", "Pyrénées-Orientales", "Bas-Rhin", "Haut-Rhin", "Rhône", "Haute-Saône", "Saône-et-Loire", "Sarthe", "Savoie", "Haute-Savoie", "Paris", "Seine-Maritime", "Seine-et-Marne", "Yvelines", "Deux-Sèvres", "Somme", "Tarn", "Tarn-et-Garonne", "Var", "Vaucluse", "Vendée", "Vienne", "Haute-Vienne", "Vosges", "Yonne", "Territoire-de-Belfort", "Essonne", "Hauts-de-Seine", "Seine-St.Denis", "Val-de-Marne", "Val-d’Oise" ] },  "french_polynesia_states": { "parent": "pacific_countries", "class": "statemenu", "title": "French Polynesia", "list": [ "French Polynesia", "Marquesas Islands", "Tuamotu Islands", "Society Islands", "Gambier Islands", "Austral Islands" ] },  "germany_states": { "parent": "europe_countries", "class": "statemenu", "title": "Germany", "list": [ "Germany", "Baden-Württemberg", "Bavaria", "Berlin", "Brandenburg", "Bremen", "Hamburg", "Hesse", "Mecklenburg-Western Pomerania", "Lower Saxony", "North Rhine-Westphalia", "Rhineland-Palatinate", "Saarland", "Saxony", "Saxony-Anhalt", "Schleswig-Holstein", "Thuringia", ] },  "german_empire_states": { "parent": "europe_countries", "class": "statemenu", "title": "German Empire", "list": [ "Anhalt", "Baden", "Bavaria", "Brandenburg", "Brunswick", "East Prussia", "Elsass-Lothringen", "Hanover", "Hesse", "Hesse-Nassau", "Hohenzollern", "Lippe", "Mecklenburg-Schwerin", "Mecklenburg-Strelitz", "Oldenburg", "Pomerania", "Posen", "Reuss Older Line", "Reuss Younger Line", "Rhineland", "Saxe-Altenburg", "Saxe-Coburg-Gotha", "Saxe-Meiningen", "Saxe-Weimar-Eisenach", "Saxony", "Saxony (province)", "Schaumburg-Lippe", "Schleswig-Holstein", "Schwarzburg-Rudolstadt", "Schwarzburg-Sondershausen", "Silesia", "Waldeck", "West Prussia", "Westphalia", "Württemberg" ] },    "guatemala_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Guatemala", "list": [ "Guatemala", "Alta Verapaz", "Baja Verapaz", "Chimaltenango", "Chiquimula", "El Progreso", "Escuintla", "Guatemala", "Huehuetenango", "Izabal", "Jalapa", "Jutiapa", "Petén", "Quetzaltenango", "Quiché", "Retalhuleu", "Sacatepéquez", "San Marcos", "Santa Rosa", "Sololá", "Suchitepéquez", "Totonicapán", "Zacapa" ] },  "honduras_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Honduras", "list": [ "Honduras", "Atlántida", "Bay Islands", "Choluteca", "Colón", "Comayagua", "Copán", "Cortés", "El Paraíso", "Francisco Morazán", "Gracias a Dios", "Intibucá", "La Paz", "Lempira", "Ocotepeque", "Olancho", "Santa Bárbara", "Valle", "Yoro" ] },  "hungary_states": { "parent": "europe_countries", "class": "statemenu", "title": "Hungary", "list": [ "Hungary", "Bács-Kiskun", "Baranya", "Békés", "Borsod-Abaúj-Zemplén", "Budapest", "Csongrád", "Fejér", "Győr-Moson-Sopron", "Hajdú-Bihar", "Heves", "Jász-Nagykun-Szolnok", "Komárom-Esztergom", "Nógrád", "Pest", "Somogy ", "Szabolcs-Szatmár-Bereg", "Tolna", "Vas", "Veszprém", "Zala" ] },  "ireland_states": { "parent": "europe_countries", "class": "statemenu", "title": "Ireland", "list": [ "Ireland", "Carlow", "Cavan", "Clare", "Cork", "Donegal", "Dublin", "Galway", "Kerry", "Kildare", "Kilkenny", "Laois", "Leitrim", "Limerick", "Longford", "Louth", "Mayo", "Meath", "Monaghan", "Offaly", "Roscommon", "Sligo", "Tipperary", "Waterford", "Westmeath", "Wexford", "Wicklow" ] },  "isle_of_man_states": { "parent": "europe_countries", "class": "statemenu", "title": "Isle of Man", "list": [ "Isle of Man", "Andreas", "Arbory", "Ballaugh", "Braddan", "Bride", "German", "Jurby", "Lezayre", "Lonan", "Malew", "Marown", "Maughold", "Michael", "Onchan", "Patrick", "Rushen", "Santon" ] },  "italy_states": { "parent": "europe_countries", "class": "statemenu", "title": "Italy", "list": [ "Italy", "Abruzzo", "Aosta Valley*", "Puglia", "Basilicata", "Calabria", "Campania", "Emilia-Romagna", "Friuli-Venezia Giulia*", "Lazio", "Liguria", "Lombardy", "Marche", "Molise", "Piedmont", "Sardinia*", "Sicily", "Trentino-Alto Adige*", "Tuscany", "Umbria", "Veneto" ] },  "liechtenstein_states": { "parent": "europe_countries", "class": "statemenu", "title": "Liechtenstein", "list": [ "Liechtenstein", "Balzers", "Bendern", "Eschen", "Gamprin", "Mauren", "Planken", "Ruggell", "Schaan", "Schellenberg", "Triesen", "Triesenberg", "Vaduz" ] },  "luxembourg_states": { "parent": "europe_countries", "class": "statemenu", "title": "Luxembourg", "list": [ "Luxembourg", "Capellen", "Clervaux", "Diekirch", "Echternach", "Esch-sur-Alzette", "Grevenmacher", "Luxembourg (canton)", "Mersch", "Redange", "Remich", "Vianden", "Wiltz" ] },  "mexico_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Mexico", "list": [ "Mexico", "Aguascalientes", "Baja California", "Baja California Sur", "Campeche", "Chiapas", "Chihuahua", "Coahuila", "Colima", "Distrito Federal", "Durango", "Guanajuato", "Guerrero", "Hidalgo", "Jalisco", "Mexico (state)", "Michoacán", "Morelos", "Nayarit", "Nuevo León", "Oaxaca", "Puebla", "Querétaro", "Quintana Roo", "San Luis Potosí", "Sinaloa", "Sonora", "Tabasco", "Tamaulipas", "Tlaxcala", "Veracruz", "Yucatán", "Zacatecas" ] },  "montserrat_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Montserrat", "list": [ "Montserrat", "Saint Anthony", "Saint Georges", "Saint Peter" ] },  "netherlands_states": { "parent": "europe_countries", "class": "statemenu", "title": "Netherlands", "list": [ "The Netherlands", "Drenthe", "Flevoland", "Friesland", "Gelderland", "Groningen", "Limburg", "Noord-Brabant", "Noord-Holland", "Overijssel", "Utrecht", "Zeeland", "Zuid-Holland" ] },  "netherlands_antilles_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Netherlands Antilles", "list": [ "The Netherlands", "Aruba", "Bonaire", "Curaçao", "Saba", "Sint Eustatius", "Sint Maarten" ] },  "nigeria_states": { "parent": "africa_countries", "class": "statemenu", "title": "Nigeria", "list": [ "Nigeria", "Abuja", "Abia", "Anambra", "Adamawa", "Akwa Ibom", "Bauchi", "Bayelsa", "Benue", "Borno", "Cross River", "Delta", "Ebonyi", "Edo", "Ekiti", "Enugu", "Gombe", "Imo", "Jigawa", "Kaduna", "Kano", "Katsina", "Kebbi", "Kogi", "Kwara", "Lagos", "Nasarawa", "Niger", "Ogun", "Ondo", "Osun", "Oyo", "Plateau", "Rivers", "Sokoto", "Taraba", "Yobe", "Zamfara" ] },  "northern_ireland_states": { "parent": "europe_countries", "class": "statemenu", "title": "Ireland", "list": [ "Northern Ireland", "County Antrim", "County Armagh", "County Derry", "County Down", "County Fermanagh", "County Tyrone" ] },  "norway_states": { "parent": "europe_countries", "class": "statemenu", "title": "Norway", "list": [ "Norway", "Akershus", "Aust-Agder", "Bergen City", "Buskerud", "Finnmark", "Hedmark", "Hordaland", "Møre og Romsdal", "Nordland", "Nord-Trøndelag", "Oppland", "Oslo", "Rogaland", "Sogn og Fjordane", "Sør-Trøndelag", "Svalbard", "Telemark", "Troms", "Vest-Agder", "Vestfold", "Østfold" ] },  "panama_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Panama", "list": [ "Panama", "Provinces", "Bocas del Toro", "Chiriquí", "Coclé", "Colón", "Darién", "Herrera", "Los Santos", "Panama", "West Panama", "Veraguas" ] },  "paraguay_states": { "parent": "south_america_countries", "class": "statemenu", "title": "Paraguay", "list": [ "Paraguay", "Alto Paraguay", "Alto Paraná", "Amambay", "Asunción", "Boquerón", "Caaguazú", "Caazapá", "Canindeyú", "Central", "Concepción", "Cordillera", "Guairá", "Itapúa", "Misiones", "Ñeembucú", "Paraguarí", "Presidente Hayes", "San Pedro" ] },  "peru_states": { "parent": "south_america_countries", "class": "statemenu", "title": "Peru", "list": [ "Peru", "Amazonas", "Ancash", "Apurímac", "Arequipa", "Ayacucho", "Cajamarca", "Callao", "Cusco", "Huancavelica", "Huánuco", "Ica", "Junín", "La Libertad", "Lambayeque", "Lima", "Loreto", "Madre de Dios", "Moquegua", "Pasco", "Piura", "Puno", "San Martín", "Tacna", "Tumbes", "Ucayali" ] },  "philippines_states": { "parent": "asia_countries", "class": "statemenu", "title": "Philippines", "list": [ "Philippines", "Abra", "Agusan del Norte", "Agusan del Sur", "Aklan", "Albay", "Antique", "Apayao", "Aurora", "Basilan", "Bataan", "Batanes", "Batangas", "Benguet", "Biliran", "Bohol", "Bukidnon", "Bulacan", "Cagayan", "Camarines Norte", "Camarines Sur", "Camiguin", "Capiz", "Catanduanes", "Cavite", "Cebu", "Compostela Valley", "Cotabato", "Davao del Norte", "Davao del Sur", "Davao Occidental", "Davao Oriental", "Dinagat Islands", "Eastern Samar", "Guimaras Province", "Ifugao", "Ilocos Norte", "Ilocos Sur", "Iloilo", "Isabela", "Kalinga", "La Union", "Laguna", "Lanao del Norte", "Lanao del Sur", "Leyte", "Maguindanao", "Metropolitan Manila", "Marinduque", "Masbate", "Misamis Occidental", "Misamis Oriental", "Mountain", "Negros Occidental", "Negros Oriental", "Northern Samar", "Nueva Ecija", "Nueva Vizcaya", "Occidental Mindoro", "Oriental Mindoro", "Palawan", "Pampanga", "Pangasinan", "Quezon", "Quirino", "Rizal", "Romblon", "Samar", "Sarangani", "Siquijor", "Sorsogon", "South Cotabato", "Southern Leyte", "Sultan Kudarat", "Sulu", "Surigao del Norte", "Surigao del Sur", "Tarlac", "Tawi-Tawi", "Zambales", "Zamboanga City", "Zamboanga del Norte", "Zamboanga del Sur", "Zamboanga Sibugay" ] },  "poland_states": { "parent": "europe_countries", "class": "statemenu", "title": "Poland", "list": [ "Poland", "Greater Poland Voivodeship", "Kuyavian-Pomeranian", "Lesser Poland", "Łódź", "Lower Silesian", "Lublin", "Lubusz", "Masovian", "Opole", "Podlaskie", "Pomeranian", "Silesian", "Subcarpathian", "Świętokrzyskie", "Warmian-Masurian", "Western Pomeranian" ] },  "portugal_states": { "parent": "europe_countries", "class": "statemenu", "title": "Portugal", "list": [ "Portugal", "Aveiro", "Azores*", "Beja", "Braga", "Bragança", "Castelo Branco", "Coimbra", "Évora", "Faro", "Guarda", "Leiria", "Lisbon", "Madeira Islands*", "Portalegre", "Porto", "Santarém", "Setúbal", "Viana do Castelo", "Vila Real", "Viseu" ] },  "puerto_rico_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Puerto Rico", "list": [ "Puerto Rico", "Adjuntas", "Aguada", "Aguadilla", "Aguas Buenas", "Aibonito", "Añasco", "Arecibo", "Arroyo", "Barceloneta", "Barranquitas", "Bayamón", "Cabo Rojo", "Caguas", "Camuy", "Canóvanas", "Carolina", "Cataño", "Cayey", "Ceiba", "Ciales", "Cidra", "Coamo", "Comerío", "Corozal", "Culebra", "Dorado", "Fajardo", "Florida", "Guánica", "Guayama", "Guayanilla", "Guaynabo", "Gurabo", "Hatillo", "Hormigueros", "Humacao", "Isabela", "Jayuya", "Juana Diaz", "Juncos", "Lajas", "Lares", "Las Marias", "Las Piedras", "Loiza", "Luquillo", "Manati", "Maricao", "Maunabo", "Mayagüez", "Moca", "Morovis", "Naguabo", "Naranjito", "Orocovis", "Patillas", "Peñuelas", "Ponce", "Quebradillas", "Rincón", "Rio Grande", "Sabana Grande", "Salinas", "San Germán", "San Juan", "San Lorenzo", "San Sebastián", "Santa Isabel", "Toa Alta", "Toa Baja", "Trujillo Alto", "Utuado", "Vega Alta", "Vega Baja", " Vieques", "Villalba", "Yabucoa", "Yauco" ] },  "saint_kitts_and_nevis_states": { "parent": "north_america_countries", "class": "statemenu", "title": "Saint Kitts and Nevis", "list": [ "Saint Kitts & Nevis", "Christ Church Nichola Town", "St Anne Sandy Point", "St George Basseterre", "St George Gingerland", "St James Windward", "St John Capesterre", "St John Figtree", "St Mary Cayon", "St Paul Capesterre", "St Paul Charlestown", "St Peter Basseterre", "St Thomas Lowland", "St Thomas Middle Island", "Trinity Palmetto Point" ] },  "scotland_states": { "parent": "europe_countries", "class": "statemenu", "title": "Scotland", "list": [ "Scotland", "Aberdeenshire", "Angus", "Argyllshire", "Ayrshire", "Banffshire", "Berwickshire", "Bute", "Caithness", "Clackmannanshire", "Dumfriesshire", "Dunbartonshire", "East Lothian", "Edinburghshire", "Elginshire", "Fife", "Forfarshire", "Haddingtonshire", "Inverness-shire", "Kincardineshire", "Kinross-shire", "Kirkcudbrightshire", "Lanarkshire", "Linlithgowshire", "Midlothian", "Moray", "Nairnshire", "Orkney", "Peeblesshire", "Perthshire", "Renfrewshire", "Ross & Cromarty", "Roxburghshire", "Selkirkshire", "Shetland", "Stirlingshire", "Sutherland", "West Lothian", "Wigtownshire" ] },  "slovakia_states": { "parent": "europe_countries", "class": "statemenu", "title": "Slovakia", "list": [ "Slovakia", "Banská Bystrica", "Bratislava", "Košice", "Nitra", "Prešov", "Trnava", "Trenčín", "Žilina" ] },  "south_africa_states": { "parent": "africa_countries", "class": "statemenu", "title": "South Africa", "list": [ "South Africa", "Eastern Cape", "Free State", "Gauteng", "KwaZulu-Natal", "Limpopo", "Mpumalanga", "Northern Cape", "North West", "Western Cape" ] },  "spain_states": { "parent": "europe_countries", "class": "statemenu", "title": "Spain", "list": [ "Spain", "Álava", "Albacete", "Alicante", "Almería", "Asturias", "Ávila", "Badajoz", "Baleares", "Barcelona", "Burgos", "Cáceres", "Cádiz", "Cantabria", "Castellón ", "Ciudad Real", "Córdoba", "Cuenca", "Gerona", "Granada", "Guadalajara", "Guipúzcoa", "Huelva", "Huesca", "Jaén", "La Coruña", "La Rioja", "Las Palmas", "León", "Lérida", "Lugo", "Madrid", "Málaga", "Murcia", "Navarra", "Orense", "Palencia", "Pontevedra", "Salamanca", "Santa Cruz de Tenerife", "Segovia", "Sevilla", "Soria", "Tarragona", "Teruel", "Toledo", "Valencia", "Valladolid", "Vizcaya", "Zamora", "Zaragoza" ] },  "sweden_states": { "parent": "europe_countries", "class": "statemenu", "title": "Sweden", "list": [ "Sweden", "Blekinge", "Dalarna", "Göteborg och Bohus", "Gotland", "Gävleborg", "Halland", "Jämtland", "Jönköping", "Kalmar", "Kopparberg", "Kristianstad", "Kronoberg", "Malmöhus", "Norrbotten", "Skaraborg", "Stockholm", "Södermanland", "Uppsala", "Värmland", "Västerbotten", "Västernorrland", "Västmanland", "Älvsborg", "Örebro", "Östergötland" ] },  "switzerland_states": { "parent": "europe_countries", "class": "statemenu", "title": "Switzerland", "list": [ "Switzerland", "Aargau", "Appenzell Innerrhoden", "Appenzell Ausserrhoden", "Basel-Landschaft", "Basel-Stadt", "Bern", "Fribourg", "Genève", "Glarus", "Graubünden", "Jura", "Lucerne", "Neuchâtel", "Nidwalden", "Obwalden", "St. Gallen", "Schaffhausen", "Schwyz", "Solothurn", "Thurgau", "Ticino", "Uri", "Valais", "Vaud", "Zug", "Zürich" ] },  "united_states_states": { "parent": "north_america_countries", "class": "statemenu", "title": "United States", "list": [ "United States", "Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "District of Columbia", "Florida", "Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon", "Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming" ] },  "uruguay_states": { "parent": "south_america_countries", "class": "statemenu", "title": "Uruguay", "list": [ "Uruguay", "Artigas", "Canelones", "Cerro Largo", "Colonia", "Durazno", "Flores", "Florida", "Lavalleja", "Maldonado", "Montevideo", "Paysandú", "Río Negro", "Rivera", "Rocha", "Salto", "San José", "Soriano", "Tacuarembó", "Treinta y Tres" ] },  "venezuela_states": { "parent": "south_america_countries", "class": "statemenu", "title": "Venezuela", "list": [ "Venezuela", "Amazonas", "Anzoátegui", "Apure", "Aragua", "Barinas", "Bolívar", "Carabobo", "Cojedes", "Delta Amacuro", "Federal Dependencies", "Federal District", "Falcón", "Guárico", "Lara", "Mérida", "Miranda", "Monagas", "Nueva Esparta", "Portuguesa", "Sucre", "Táchira", "Trujillo", "Vargas", "Yaracuy", "Zulia" ] },  "wales_states": { "parent": "europe_countries", "class": "statemenu", "title": "Wales", "list": [ "Wales", "Anglesey", "Breconshire", "Caernarfonshire", "Cardiganshire", "Carmarthenshire", "Denbighshire", "Flintshire", "Glamorgan", "Merionethshire", "Monmouthshire", "Montgomeryshire", "Pembrokeshire", "Radnorshire" ] } };

/** * When you click a button, show the list for that country * Note that button ids must match country identifiers in the JSON */ function showList(name) { var html = ''; var exit = ' [x] '; // There is no break in JavaScript for (var i in menus) { if (i === name) { var title = linkify(menus[i].title); // add in the id and class attributes html += '<div id="' + i + '" class="' + menus[i].class + ' menuTitle"'; // add in the custom "parent" attribute if its defined in the data if (menus[i].parent) { html += ' parent="' + menus[i].parent + '"'; }           html += '>' + title + exit + ' '; html += '<ul>'; for (var j in menus[i].list) { var link = linkify(menus[i].list[j]); html += '<li>' + link + '</li>'; }           html += '</ul>'; }   }    // place the generated html in the menu $("#menu").html(html); }

/** * NB There is no matching JSON object for "all countries"... we just loop * through the whole menu object. We alphabetize according to the 'sort value' * that we create in the list2 object */ function showAllCountries { var exit = ' [x] '; var html = ' List of all Localities' + exit + ' '; var list = []; // initialize our list variables var list2 = []; for (var i in menus) { // only output the _countries menus if (/_countries$/.test(i)) { list = list.concat(menus[i].list); }   }    for (var j in list) { var link = linkify(list[j]); var sortv = getSortV(list[j]); list2[j] = { link: link, sortv: sortv }; }   // sort our list structure in-place list2.sort(function(a, b) {     // a comes before b      if (a.sortv < b.sortv) { return -1;}      // b comes before a      if (a.sortv > b.sortv) { return 1;}      // they're equal      return 0;    }); // assemble our html html += "<ul>"; for (var k in list2) { html += "<li>" + list2[k].link + "</li>"; }   html += "</ul";

// console.log(list2); // place the generated html in the menu $("#menu").html(html); }

/** * Take a string value and strip characters to get it's * "sort value". The two types of strings we expect are either * a) a wiki link * b) a element * In the case of a wiki link, we want the link text * In the case of a span element, we want the innerHtml */ function getSortV(str) { var sortv = null; var n = str.indexOf('['); if (n !== -1) { var sortv = str.split("|"); for (var i = 0; i < sortv.length; i++) { sortv[i] = sortv[i].replace(/\[/g, ""); sortv[i] = sortv[i].replace(/\]/g, ""); }       sortv = (sortv.length > 1) ? sortv[1] : sortv[0]; } else { sortv = str.substring(str.indexOf(">") + 1, str.indexOf("<", 2)); }   if (sortv === null) { console.log("ERROR: could not parse " + str + " for a sort value") } return sortv; } /** * Take a string value and if it's a wikitext link turn it into * an html link * @param {string} str */ function linkify(str) { // e.g. "https://beta.familysearch.org/wiki/en/"; const lang = mw.config.get('wgContentLanguage'); const base = document.location.origin + '/wiki/' + lang + '/'; var n = str.indexOf('['); // indexOf returns -1 if not found if (n == -1) { // console.log ("No link in " + str); // return the string unharmed return str; } else { var link = str.split("|"); // link could be just one element, or two if it is piped for (var i = 0; i < link.length; i++) { // get rid of brackets globally link[i] = link[i].replace(/\[/g, ""); link[i] = link[i].replace(/\]/g, ""); }       // find out what we need to use for text in our anchor var text = (link.length > 1) ? link[1] : link[0]; // encode spaces and such var html = '<a href="' + base + encodeURI(link[0]) + '">' + text + "</a>"; return html; } }

$(document).ready(function {    // start out by showing all menu items    // showAllCountries; }); /** End of Map Menus code */