<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.seculargames.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AHuntingGuide.js</id>
	<title>MediaWiki:HuntingGuide.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.seculargames.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AHuntingGuide.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.seculargames.org/index.php?title=MediaWiki:HuntingGuide.js&amp;action=history"/>
	<updated>2026-07-29T05:22:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.seculargames.org/index.php?title=MediaWiki:HuntingGuide.js&amp;diff=45799&amp;oldid=prev</id>
		<title>imported&gt;Loramin at 18:20, 1 January 2026</title>
		<link rel="alternate" type="text/html" href="https://wiki.seculargames.org/index.php?title=MediaWiki:HuntingGuide.js&amp;diff=45799&amp;oldid=prev"/>
		<updated>2026-01-01T18:20:41Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// Basic DOM manipulation onReady (since the wiki won&amp;#039;t let us add &amp;lt;input&amp;gt; tags in the wiki text&lt;br /&gt;
&lt;br /&gt;
const $document = $(document);&lt;br /&gt;
/**&lt;br /&gt;
 * Makes provided radio button toggleable on/ff&lt;br /&gt;
 */&lt;br /&gt;
var make$RadioToggleable = function ($radio) {&lt;br /&gt;
&lt;br /&gt;
 var radioState;&lt;br /&gt;
&lt;br /&gt;
  // Use event delegation on the document or a parent container&lt;br /&gt;
  $radio.on(&amp;#039;mousedown&amp;#039;, function() {&lt;br /&gt;
    // Store the current &amp;#039;checked&amp;#039; state when the mouse button is pressed down&lt;br /&gt;
    radioState = this.checked;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  $radio.on(&amp;#039;click&amp;#039;, function() {&lt;br /&gt;
    // If it was already checked when mousedown occurred, uncheck it now&lt;br /&gt;
    if (radioState) {&lt;br /&gt;
      this.checked = false;&lt;br /&gt;
    }&lt;br /&gt;
    // If it was not checked, the default click behavior will check it (which is fine)&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var buildEraCheckbox = function (era) {&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;#039;&amp;lt;label&amp;gt;&amp;lt;input checked class=&amp;quot;era-filter&amp;quot; type=&amp;quot;checkbox&amp;quot; value=&amp;quot;&amp;#039; +&lt;br /&gt;
    era.substr(0, 3).toLowerCase() +&lt;br /&gt;
    &amp;#039;&amp;quot;/&amp;gt;&amp;#039; +&lt;br /&gt;
    era +&lt;br /&gt;
    &amp;#039;&amp;lt;/label&amp;gt;&amp;#039;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Create filter results table&lt;br /&gt;
var $filterResults = $(&amp;#039;table.eoTable3.wikitable.sortable&amp;#039;).eq(0).clone().hide();&lt;br /&gt;
&lt;br /&gt;
var $headerRow = $(&amp;#039;.hunting-guide-row:first&amp;#039;).clone();&lt;br /&gt;
var clearFilterResults = function () {&lt;br /&gt;
  return $filterResults.empty().append($headerRow);&lt;br /&gt;
};&lt;br /&gt;
clearFilterResults();&lt;br /&gt;
&lt;br /&gt;
$(&amp;#039;h4:contains(&amp;quot;Hunting Spots 1-4&amp;quot;)&amp;#039;).before($filterResults);&lt;br /&gt;
&lt;br /&gt;
var toTitleCase = function(original){&lt;br /&gt;
  return original.split(&amp;#039; &amp;#039;).map(function toTitleCaseSingleWord(word) {&lt;br /&gt;
    return word[0].toUpperCase() + word.substr(1);&lt;br /&gt;
  }).join(&amp;#039; &amp;#039;);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var ALL_ERAS = [&amp;#039;Classic&amp;#039;, &amp;#039;Kunark&amp;#039;, &amp;#039;Velious&amp;#039;];&lt;br /&gt;
var subErasShort = [&lt;br /&gt;
  &amp;#039;cla&amp;#039;,&lt;br /&gt;
  &amp;#039;fea&amp;#039;,&lt;br /&gt;
  &amp;#039;hat&amp;#039;,&lt;br /&gt;
  &amp;#039;tem&amp;#039;,&lt;br /&gt;
  &amp;#039;sky&amp;#039;,&lt;br /&gt;
  &amp;#039;pai&amp;#039;,&lt;br /&gt;
  &amp;#039;kun&amp;#039;, &lt;br /&gt;
  &amp;#039;hol&amp;#039;,&lt;br /&gt;
  &amp;#039;epi&amp;#039;,&lt;br /&gt;
  &amp;#039;war&amp;#039;,&lt;br /&gt;
  &amp;#039;sto&amp;#039;,&lt;br /&gt;
  &amp;#039;vel&amp;#039;,&lt;br /&gt;
  &amp;#039;ch2.0&amp;#039;&lt;br /&gt;
];&lt;br /&gt;
var KUNARK_INDEX = 6;&lt;br /&gt;
var VELIOUS_INDEX = 11;&lt;br /&gt;
var isWithinEra = function(era, subEra) {&lt;br /&gt;
  var index = subErasShort.indexOf(subEra);&lt;br /&gt;
&lt;br /&gt;
  switch (era) {&lt;br /&gt;
     case &amp;#039;cla&amp;#039;: return index &amp;lt; KUNARK_INDEX;&lt;br /&gt;
     case &amp;#039;kun&amp;#039;: return index &amp;gt;= KUNARK_INDEX &amp;amp;&amp;amp; index &amp;lt; VELIOUS_INDEX;&lt;br /&gt;
     case &amp;#039;vel&amp;#039;: return index &amp;gt;= VELIOUS_INDEX;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
var isSubEraOf = function(eras, subera) {&lt;br /&gt;
  return eras.some(function(era) {&lt;br /&gt;
     return isWithinEra(era, subera);&lt;br /&gt;
  });  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var classAbbreviations = {&lt;br /&gt;
    bard: &amp;#039;BRD&amp;#039;,&lt;br /&gt;
    cleric: &amp;#039;CLR&amp;#039;,&lt;br /&gt;
    druid: &amp;#039;DRU&amp;#039;,&lt;br /&gt;
    enchanter: &amp;#039;ENC&amp;#039;,&lt;br /&gt;
    magician: &amp;#039;MAG&amp;#039;,&lt;br /&gt;
    monk: &amp;#039;MNK&amp;#039;,&lt;br /&gt;
    necromancer: &amp;#039;NEC&amp;#039;,&lt;br /&gt;
    paladin: &amp;#039;PAL&amp;#039;,&lt;br /&gt;
    ranger: &amp;#039;RNG&amp;#039;,&lt;br /&gt;
    rogue: &amp;#039;ROG&amp;#039;,&lt;br /&gt;
    &amp;#039;shadow knight&amp;#039;: &amp;#039;SHD&amp;#039;,&lt;br /&gt;
    shaman: &amp;#039;SHM&amp;#039;,&lt;br /&gt;
    warrior: &amp;#039;WAR&amp;#039;,&lt;br /&gt;
    wizard: &amp;#039;WIZ&amp;#039;,&lt;br /&gt;
};&lt;br /&gt;
var monsterTypes = [&amp;#039;Animal&amp;#039;, &amp;#039;Goblin&amp;#039;, &amp;#039;Guard&amp;#039;, &amp;#039;Undead&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
var animals = [];&lt;br /&gt;
&lt;br /&gt;
var fetchPageOfAnimals = function(url) {&lt;br /&gt;
  return fetch(url)&lt;br /&gt;
    .then(function(response){return response.text()})&lt;br /&gt;
    .then(function (html) {&lt;br /&gt;
      var $html = $(html);&lt;br /&gt;
&lt;br /&gt;
      $html&lt;br /&gt;
        .find(&amp;#039;.mw-content-ltr table td li a&amp;#039;)&lt;br /&gt;
        .map(function (i, x) {&lt;br /&gt;
          animals.push(x.innerText.toLowerCase());&lt;br /&gt;
        })&lt;br /&gt;
      return $html.find(&amp;#039;[title=&amp;quot;Category:Animal&amp;quot;]&amp;#039;)[0].href;&lt;br /&gt;
    });&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var fetchAllAnimals = function() {&lt;br /&gt;
  return fetchPageOfAnimals(&amp;#039;https://wiki.project1999.com/Category:Animal&amp;#039;)&lt;br /&gt;
           .then(fetchPageOfAnimals)&lt;br /&gt;
           .then(function(){ return animals; });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Add radio buttons (since MediaWiki won&amp;#039;t allow them as content)&lt;br /&gt;
$(&amp;#039;#filter-ui&amp;#039;).html(&lt;br /&gt;
  &amp;#039;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Class:&amp;lt;/strong&amp;gt;&amp;#039; +&lt;br /&gt;
  Object.keys(classAbbreviations).map(function(eqClass){&lt;br /&gt;
    return &amp;#039;&amp;lt;label class=&amp;quot;class-filter filter-link&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;class-filter&amp;quot; /&amp;gt;&amp;#039; + toTitleCase(eqClass) + &amp;#039;&amp;lt;/label&amp;gt;&amp;#039;;&lt;br /&gt;
  }).join(&amp;#039;&amp;#039;) + &amp;#039;&amp;lt;/li&amp;gt;&amp;#039; +&lt;br /&gt;
&lt;br /&gt;
  &amp;#039;&amp;lt;li&amp;gt;&amp;lt;strong&amp;gt;Monster:&amp;lt;/strong&amp;gt;&amp;#039; +&lt;br /&gt;
  monsterTypes.map(function(monster){&lt;br /&gt;
    return &amp;#039;&amp;lt;label class=&amp;quot;monster-filter filter-link&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;monster-filter&amp;quot; /&amp;gt;&amp;#039; + monster + &amp;#039;&amp;lt;/label&amp;gt;&amp;#039;;&lt;br /&gt;
  }).join(&amp;#039;&amp;#039;) + &amp;#039;&amp;lt;/li&amp;gt;&amp;#039; +&lt;br /&gt;
  &amp;#039;&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight:bold&amp;quot;&amp;gt;Level:&amp;lt;/span&amp;gt; &amp;lt;input id=&amp;quot;level-filter&amp;quot; style=&amp;quot;width:30px&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&amp;#039;+&lt;br /&gt;
  &amp;#039;&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight:bold&amp;quot;&amp;gt;Zone:&amp;lt;/span&amp;gt; &amp;lt;input id=&amp;quot;zone-filter&amp;quot; style=&amp;quot;width:50em&amp;quot;/&amp;gt;&amp;lt;/li&amp;gt;&amp;#039; +&lt;br /&gt;
  &amp;#039;&amp;lt;li&amp;gt;&amp;lt;span style=&amp;quot;font-weight:bold&amp;quot;&amp;gt;Era:&amp;lt;/span&amp;gt; &amp;#039; + ALL_ERAS.map(buildEraCheckbox).join(&amp;#039;&amp;#039;) + &amp;#039;&amp;lt;/li&amp;gt;&amp;#039; +&lt;br /&gt;
  &amp;#039;&amp;lt;li&amp;gt;&amp;lt;button id=&amp;quot;clear-filters&amp;quot;&amp;gt;Clear Filters&amp;lt;/button&amp;gt;&amp;lt;/li&amp;gt;&amp;#039; +&lt;br /&gt;
  &amp;#039;&amp;lt;/ul&amp;gt;&amp;#039;); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Get jQuery object of every row in the hunting guide (because all of the filter functions need it)&lt;br /&gt;
var $rows = $(&amp;#039;.wikitable tbody tr&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Build a in-memory data object with the data parsed from each row (which will tell us which&lt;br /&gt;
 * levels/classes should be shown for any filter).&lt;br /&gt;
 * @example a &amp;quot;spot&amp;quot; created by this function for critters in Butcherblock Mountains: {&lt;br /&gt;
 *   soloLevel: &amp;#039;04-06&amp;#039;,&lt;br /&gt;
 *   groupLevel: &amp;#039;03-05&amp;#039;,&lt;br /&gt;
 *   zone: &amp;#039;Butcherblock Mountains&amp;#039;,&lt;br /&gt;
 *   area: &amp;#039;Greater Faydark zoneline&amp;#039;,&lt;br /&gt;
 *   monsters: &amp;#039;Assorted Critters	&amp;#039;,&lt;br /&gt;
 *   xpMod: &amp;#039;100%&amp;#039;,&lt;br /&gt;
 *   notes: &amp;#039;&amp;#039;,&lt;br /&gt;
 *   $tr: *a jQuery object pointing to the &amp;lt;tr&amp;gt; that all this data originally came from*&lt;br /&gt;
 * }&lt;br /&gt;
 */&lt;br /&gt;
var spots = [];&lt;br /&gt;
$rows.each(function (i, el) {&lt;br /&gt;
  var groupLevel = $(el).children(&amp;#039;td:eq(1)&amp;#039;).text();&lt;br /&gt;
  groupLevel = groupLevel.trim() === &amp;#039;-&amp;#039; ? null : groupLevel;&lt;br /&gt;
  var $tr = $(el);&lt;br /&gt;
&lt;br /&gt;
  if ($tr.children(&amp;#039;th&amp;#039;).length) return; // Header row&lt;br /&gt;
&lt;br /&gt;
  spots.push({&lt;br /&gt;
    soloLevel: $tr.children(&amp;#039;td:eq(0)&amp;#039;).text(),&lt;br /&gt;
    groupLevel: groupLevel,&lt;br /&gt;
    zone: $tr.children(&amp;#039;td:eq(2)&amp;#039;).text(),&lt;br /&gt;
    area: $tr.children(&amp;#039;td:eq(3)&amp;#039;).text(),&lt;br /&gt;
    monsters: $tr.children(&amp;#039;td:eq(4)&amp;#039;).text(),&lt;br /&gt;
    xpMod: $tr.children(&amp;#039;td:eq(5)&amp;#039;).text(),&lt;br /&gt;
    era: $tr.children(&amp;#039;td:eq(6)&amp;#039;).text(),&lt;br /&gt;
    image: $tr.children(&amp;#039;td:eq(7)&amp;#039;).text(),&lt;br /&gt;
    notes: $tr.children(&amp;#039;td:eq(8)&amp;#039;).text(),&lt;br /&gt;
    for: $tr.find(&amp;#039;.for&amp;#039;).text(),&lt;br /&gt;
    $tr: $tr,&lt;br /&gt;
  });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Clear garbage entries (wish I had ES6 filter ..)&lt;br /&gt;
var cleanedSpots = [];&lt;br /&gt;
$.each(spots, function (i, spot) {&lt;br /&gt;
  if (spot.soloLevel &amp;amp;&amp;amp; spot.zone) cleanedSpots.push(spot);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$(&amp;#039;#numSpots&amp;#039;).text(cleanedSpots.length);&lt;br /&gt;
&lt;br /&gt;
var toClassAbbreviation = function (eqClass) {&lt;br /&gt;
  return classAbbreviations[eqClass.toLowerCase()];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
var getFilteredSpots = function (&lt;br /&gt;
  selectedClass,&lt;br /&gt;
  selectedMonster,&lt;br /&gt;
  selectedLevel,&lt;br /&gt;
  selectedZone,&lt;br /&gt;
  selectedEras&lt;br /&gt;
) {&lt;br /&gt;
&lt;br /&gt;
  var monstersPromise = selectedMonster ===&amp;#039;Animal&amp;#039;&lt;br /&gt;
    ? fetchAllAnimals() &lt;br /&gt;
    : Promise.resolve([selectedMonster]);&lt;br /&gt;
  selectedMonster = selectedMonster.toLowerCase();&lt;br /&gt;
  // To know what monsters count as animals, we have to go get a list of all animals&lt;br /&gt;
  return monstersPromise.then(function(monsters) {&lt;br /&gt;
    return cleanedSpots.filter(function (spot) {&lt;br /&gt;
      var classMatches = !selectedClass || spot.for.includes(toClassAbbreviation(selectedClass));&lt;br /&gt;
      var monsterMatches =&lt;br /&gt;
        !selectedMonster ||&lt;br /&gt;
        monsters.map(monster =&amp;gt; monster.toLowerCase()).some(function(monster){&lt;br /&gt;
          return spot.monsters.toLowerCase().includes(monster) ||&lt;br /&gt;
          spot.notes.toLowerCase().includes(monster);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
      var minAndMax = spot.soloLevel.split(&amp;#039;-&amp;#039;);&lt;br /&gt;
      var minLevel = parseFloat(minAndMax[0]);&lt;br /&gt;
      var maxLevel = parseFloat(minAndMax[1] || minAndMax[0]);&lt;br /&gt;
      var levelMatches = !selectedLevel || (minLevel &amp;lt;= selectedLevel &amp;amp;&amp;amp; maxLevel &amp;gt;= selectedLevel);&lt;br /&gt;
&lt;br /&gt;
      var lowerCaseZone = spot.zone.toLowerCase();&lt;br /&gt;
      var zonePattern = new RegExp(selectedZone.toLowerCase());&lt;br /&gt;
      var zoneMatches = !selectedZone || lowerCaseZone.match(zonePattern);&lt;br /&gt;
&lt;br /&gt;
      var lowerCaseEra = spot.era.toLowerCase().trim();&lt;br /&gt;
      var eraMatches = selectedEras.length === 3 || isSubEraOf(selectedEras, lowerCaseEra);&lt;br /&gt;
&lt;br /&gt;
      return classMatches &amp;amp;&amp;amp; monsterMatches &amp;amp;&amp;amp; levelMatches &amp;amp;&amp;amp; zoneMatches &amp;amp;&amp;amp; eraMatches;&lt;br /&gt;
    });&lt;br /&gt;
  })&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Replaces the contents of the search results UI with the rows of the provided hunting spots&lt;br /&gt;
 */&lt;br /&gt;
var setResults = function (spots) {&lt;br /&gt;
  // Clear the results (but add back the header row), then append (clones of) the result rows&lt;br /&gt;
  var $resultsTbody = clearFilterResults();&lt;br /&gt;
  var resultRows = spots.map(function (spot) {&lt;br /&gt;
    return spot.$tr.clone();&lt;br /&gt;
  });&lt;br /&gt;
  $resultsTbody.append(resultRows);&lt;br /&gt;
&lt;br /&gt;
  if (spots.length) return; // Show &amp;quot;no matches&amp;quot; UI only if there are no matches&lt;br /&gt;
  $resultsTbody.append(&lt;br /&gt;
    &amp;#039;&amp;lt;tr&amp;gt;&amp;lt;th colspan=&amp;quot;50&amp;quot; style=&amp;quot;color:red; font-weight: bold; font-size: 2em; padding: 1em;&amp;quot;&amp;gt;&amp;#039; +&lt;br /&gt;
      &amp;#039;No results for those filters&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;#039;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Re-filter the page when one of the filtering UI elements changes&lt;br /&gt;
 */&lt;br /&gt;
var handleAnyFilteringElementChange = function (e) {&lt;br /&gt;
  var selectedClass = $(&amp;#039;.class-filter :checked&amp;#039;).parent().text();&lt;br /&gt;
  var selectedMonster = $(&amp;#039;.monster-filter :checked&amp;#039;).parent().text();&lt;br /&gt;
  var selectedLevel = $(&amp;#039;#level-filter&amp;#039;).val();&lt;br /&gt;
  var selectedZone = $(&amp;#039;#zone-filter&amp;#039;).val();&lt;br /&gt;
  var selectedEras = $(&amp;#039;.era-filter:checked&amp;#039;)&lt;br /&gt;
    .map(function (i, el) {&lt;br /&gt;
      return $(el).val();&lt;br /&gt;
    })&lt;br /&gt;
    .toArray();&lt;br /&gt;
&lt;br /&gt;
  // Are we actually filtering out anything?&lt;br /&gt;
  var willFilter =&lt;br /&gt;
    selectedClass || selectedMonster || selectedLevel || selectedZone || selectedEras.length &amp;lt; 3;&lt;br /&gt;
&lt;br /&gt;
  // If so, hide the normal UI and show results (otherwise show normal UI)&lt;br /&gt;
  $(&amp;#039;h4, .wikitable&amp;#039;).toggle(!willFilter);&lt;br /&gt;
  $filterResults.toggle(willFilter);&lt;br /&gt;
&lt;br /&gt;
  getFilteredSpots(&lt;br /&gt;
    selectedClass,&lt;br /&gt;
    selectedMonster,&lt;br /&gt;
    selectedLevel,&lt;br /&gt;
    selectedZone,&lt;br /&gt;
    selectedEras&lt;br /&gt;
  ).then(function(filteredSpots) {&lt;br /&gt;
    setResults(filteredSpots);&lt;br /&gt;
  });&lt;br /&gt;
};&lt;br /&gt;
$(&amp;#039;.class-filter, .monster-filter&amp;#039;).click(handleAnyFilteringElementChange);&lt;br /&gt;
$(&amp;#039;#level-filter&amp;#039;).keyup(handleAnyFilteringElementChange);&lt;br /&gt;
$(&amp;#039;#zone-filter&amp;#039;).keyup(function (e) {&lt;br /&gt;
  if (e.target.value.length &amp;gt; 3) handleAnyFilteringElementChange();&lt;br /&gt;
});&lt;br /&gt;
$(&amp;#039;.era-filter&amp;#039;).change(handleAnyFilteringElementChange);&lt;br /&gt;
&lt;br /&gt;
$(&amp;#039;#clear-filters&amp;#039;).click(function () {&lt;br /&gt;
  // Clear the other radio buttons (the browser won&amp;#039;t do it since they have different names)&lt;br /&gt;
  $(&amp;#039;.filter-link :radio&amp;#039;).attr(&amp;#039;checked&amp;#039;, false);&lt;br /&gt;
  // Clear the text inputs&lt;br /&gt;
  $(&amp;#039;#level-filter&amp;#039;).val(&amp;#039;&amp;#039;);&lt;br /&gt;
  $(&amp;#039;#zone-filter&amp;#039;).val(&amp;#039;&amp;#039;);&lt;br /&gt;
  // Re-check all three era checkboxes&lt;br /&gt;
  $(&amp;#039;.era-filter&amp;#039;).attr(&amp;#039;checked&amp;#039;, true);&lt;br /&gt;
  handleAnyFilteringElementChange();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
$(&amp;#039;:radio&amp;#039;).each(function(i, radio) { make$RadioToggleable($(radio)); });&lt;/div&gt;</summary>
		<author><name>imported&gt;Loramin</name></author>
	</entry>
</feed>