Legendary Pokémon: Search tweaks

By Opaque Last update Jan 5, 2008 — Installed 168 times. Daily Installs: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0
// ==UserScript==
// @name			Legendary Pokémon: Search tweaks
// @namespace		uri:opaquepink@gmail.com,2007-11:LegendaryPokemon
// @description	Some changes to the Pokédex search, tweaks searching for specific types of Pokémon.
// @author		Opaque
// @version		Version 2.7: 01/05/2008
// @include		http*://*.legendarypokemon.net/pokedex*
// @include		http*://*.legendarypokemon.net/dp/pokedex*
// ==/UserScript==
if(document.getElementById('dexmenu').getElementsByTagName('li')[6].firstChild.getAttribute('class').split(' ')[0]==='dexactive'){
// Simple CSS adding function, shamelessly copied from Dive into Greasemonkey.
function addGlobalStyle(css) {
	var head, style;
	head = document.getElementsByTagName('head')[0];
	if (!head) { return; }
	style = document.createElement('style');
	style.type = 'text/css';
	style.innerHTML = css;
	head.appendChild(style);
}
// Simple xpath function to remove an element.
function xpathRemove(query, context) {
	context = context ? context : document;
	obj = document.evaluate(query, context, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0);
	if (obj) return obj.parentNode.removeChild(obj);
}
// Delete ??? from the type selector.
xpathRemove("//select[@id='atype']/option[@value='9']");
// Delete Flying and ??? from first type selector.
xpathRemove("//select[@id='type']/option[@value='2']");
xpathRemove("//select[@id='type']/option[@value='9']");
// Delete Normal and ??? from second type selector.
xpathRemove("//select[@id='type2']/option[@value='0']");
xpathRemove("//select[@id='type2']/option[@value='9']");
// Delete Monster, Ditto and No Eggs from the second egg group selector.
xpathRemove("//select[@id='egggroup2']/option[@value='1']");
xpathRemove("//select[@id='egggroup2']/option[@value='13']");
xpathRemove("//select[@id='egggroup2']/option[@value='15']");
// New CSS to control what second types/egg groups are selectable.
var style = '#type2 option, #egggroup2 option { display: none; }'+
		  '#type2.normal option[value="2"],'+
		  '#type2.normal option[value="11"],'+
		  '#type2.normal option[value="14"],'+
		  '#type2.fighting option[value="8"],'+
		  '#type2.fighting option[value="14"],'+
		  '#type2.poison option[value="1"],'+
		  '#type2.poison option[value="2"],'+
		  '#type2.poison option[value="4"],'+
		  '#type2.poison option[value="6"],'+
		  '#type2.poison option[value="17"],'+
		  '#type2.ground option[value="2"],'+
		  '#type2.ground option[value="5"],'+
		  '#type2.ground option[value="14"],'+
		  '#type2.ground option[value="16"],'+
		  '#type2.rock option[value="2"],'+
		  '#type2.rock option[value="4"],'+
		  '#type2.rock option[value="6"],'+
		  '#type2.rock option[value="8"],'+
		  '#type2.rock option[value="11"],'+
		  '#type2.rock option[value="12"],'+
		  '#type2.rock option[value="14"],'+
		  '#type2.rock option[value="17"],'+
		  '#type2.bug option[value="1"],'+
		  '#type2.bug option[value="2"],'+
		  '#type2.bug option[value="3"],'+
		  '#type2.bug option[value="4"],'+
		  '#type2.bug option[value="5"],'+
		  '#type2.bug option[value="7"],'+
		  '#type2.bug option[value="8"],'+
		  '#type2.bug option[value="11"],'+
		  '#type2.bug option[value="12"],'+
		  '#type2.ghost option[value="2"],'+
		  '#type2.ghost option[value="3"],'+
		  '#type2.ghost option[value="16"],'+
		  '#type2.ghost option[value="17"],'+
		  '#type2.steel option[value="2"],'+
		  '#type2.steel option[value="4"],'+
		  '#type2.steel option[value="5"],'+
		  '#type2.steel option[value="14"],'+
		  '#type2.steel option[value="16"],'+
		  '#type2.fire option[value="1"],'+
		  '#type2.fire option[value="2"],'+
		  '#type2.fire option[value="4"],'+
		  '#type2.fire option[value="5"],'+
		  '#type2.fire option[value="8"],'+
		  '#type2.water option[value="1"],'+
		  '#type2.water option[value="2"],'+
		  '#type2.water option[value="3"],'+
		  '#type2.water option[value="4"],'+
		  '#type2.water option[value="5"],'+
		  '#type2.water option[value="8"],'+
		  '#type2.water option[value="12"],'+
		  '#type2.water option[value="13"],'+
		  '#type2.water option[value="14"],'+
		  '#type2.water option[value="15"],'+
		  '#type2.water option[value="16"],'+
		  '#type2.water option[value="17"],'+
		  '#type2.grass option[value="1"],'+
		  '#type2.grass option[value="2"],'+
		  '#type2.grass option[value="3"],'+
		  '#type2.grass option[value="4"],'+
		  '#type2.grass option[value="14"],'+
		  '#type2.grass option[value="17"],'+
		  '#type2.electric option[value="2"],'+
		  '#type2.electric option[value="7"],'+
		  '#type2.electric option[value="8"],'+
		  '#type2.psychic option[value="1"],'+
		  '#type2.psychic option[value="2"],'+
		  '#type2.psychic option[value="12"],'+
		  '#type2.ice option[value="2"],'+
		  '#type2.ice option[value="4"],'+
		  '#type2.ice option[value="7"],'+
		  '#type2.ice option[value="11"],'+
		  '#type2.ice option[value="12"],'+
		  '#type2.ice option[value="14"],'+
		  '#type2.dragon option[value="2"],'+
		  '#type2.dragon option[value="4"],'+
		  '#type2.dragon option[value="14"],'+
		  '#type2.dark option[value="2"],'+
		  '#type2.dark option[value="7"],'+
		  '#type2.dark option[value="10"],'+
		  '#type2.dark option[value="15"],'+
		  '#egggroup2.monster option[value="2"],'+
		  '#egggroup2.monster option[value="5"],'+
		  '#egggroup2.monster option[value="7"],'+
		  '#egggroup2.monster option[value="14"],'+
		  '#egggroup2.water1 option[value="3"],'+
		  '#egggroup2.water1 option[value="4"],'+
		  '#egggroup2.water1 option[value="5"],'+
		  '#egggroup2.water1 option[value="6"],'+
		  '#egggroup2.water1 option[value="7"],'+
		  '#egggroup2.water1 option[value="9"],'+
		  '#egggroup2.water1 option[value="11"],'+
		  '#egggroup2.water1 option[value="12"],'+
		  '#egggroup2.water1 option[value="14"],'+
		  '#egggroup2.bug option[value="7"],'+
		  '#egggroup2.bug option[value="8"],'+
		  '#egggroup2.bug option[value="9"],'+
		  '#egggroup2.flying option[value="5"],'+
		  '#egggroup2.flying option[value="6"],'+
		  '#egggroup2.flying option[value="14"],'+
		  '#egggroup2.ground option[value="6"],'+
		  '#egggroup2.ground option[value="7"],'+
		  '#egggroup2.ground option[value="8"],'+
		  '#egggroup2.ground option[value="12"],'+
		  '#egggroup2.ground option[value="14"],'+
		  '#egggroup2.fairy option[value="7"],'+
		  '#egggroup2.fairy option[value="10"],'+
		  '#egggroup2.fairy option[value="11"],'+
		  '#egggroup2.plant option[value="8"],'+
		  '#egggroup2.water2 option[value="14"]'+
		  '{ display: block; }'+
		  '#type2 option[value="18"], #type2 option[value="19"], #type2.any option,'+
		  '#egggroup2 option[value="0"], #egggroup2 option[value="16"], #egggroup2.any option { display: block; }'+
		  '#egggroup2.humanshape option[value="0"], #egggroup2.water3 option[value="0"], #egggroup2.mineral option[value="0"], #egggroup2.inteterminate option[value="0"], #egggroup2.ditto option[value="0"], #egggroup2.dragon option[value="0"], #egggroup2.noeggs option[value="0"]'+
		  '{ display: none; }';
addGlobalStyle(style);
// Set the right class for the second type selector and make sure it switches on change.
document.getElementById('type2').setAttribute('class',document.getElementById('type').options[document.getElementById('type').selectedIndex].innerHTML.toLowerCase());
document.getElementById('type').setAttribute('onchange','document.getElementById(\'type2\').setAttribute(\'class\',document.getElementById(\'type\').options[document.getElementById(\'type\').selectedIndex].innerHTML.toLowerCase())');
// Set the right class for the second egg group selector and make sure it switches on change.
document.getElementById('egggroup2').setAttribute('class',document.getElementById('egggroup').options[document.getElementById('egggroup').selectedIndex].innerHTML.toLowerCase().split(' ').join(''));
document.getElementById('egggroup').setAttribute('onchange','document.getElementById(\'egggroup2\').setAttribute(\'class\',document.getElementById(\'egggroup\').options[document.getElementById(\'egggroup\').selectedIndex].innerHTML.toLowerCase().split(\' \').join(\'\'))');
// Get some of the selections from the form.
var seltype1 = document.getElementById('type').options[document.getElementById('type').selectedIndex].innerHTML;
var seltype2 = document.getElementById('type2').options[document.getElementById('type2').selectedIndex].innerHTML;
var selegg1 = document.getElementById('egggroup').options[document.getElementById('egggroup').selectedIndex].innerHTML;
var selegg2 = document.getElementById('egggroup2').options[document.getElementById('egggroup2').selectedIndex].innerHTML;
// Searching for pokémon with a specific second egg group ( Any / Egg Group ) will no longer show pokémon that have the specified egg group as first egg group.
if(document.getElementById('results') && selegg1==='ANY' && selegg2!=='ANY' && document.getElementById('dexmode').value==='breeder'){
	var egg, segg;
	var d = 0;
	var check = '/ '+selegg2.substring(0,1)+selegg2.substring(1).toLowerCase();
	var tbody = document.getElementById('results').getElementsByTagName('tbody')[0];
	var hits = tbody.getElementsByTagName('tr');
	for(var i = 0; i<hits.length; i++){
		egg = hits[i].getElementsByTagName('td')[3].innerHTML;
		segg = egg.substring(egg.length-check.length, egg.length);
		if(segg!==check){
			hits[i].parentNode.removeChild(hits[i]);
			i--
			d++
		}
	}
	var foot = document.getElementById('results').getElementsByTagName('tfoot')[0].getElementsByTagName('td')[0];
	var total = foot.innerHTML;
	foot.innerHTML = (total.substring(0,total.indexOf(' '))-d)+total.substring(total.indexOf(' '));
}
// Searching for pokémon with a specific second type ( Any / Type ) will no longer show pokémon that have the specified type as first type.
if(document.getElementById('results') && seltype1==='ANY' && seltype2!=='ANY'){
	var type, stype;
	var d = 0;
	var check = '/ '+seltype2.substring(0,1)+seltype2.substring(1).toLowerCase();
	var tbody = document.getElementById('results').getElementsByTagName('tbody')[0];
	var hits = tbody.getElementsByTagName('tr');
	for(var i = 0; i<hits.length; i++){
		type = hits[i].getElementsByTagName('td')[2].innerHTML;
		stype = type.substring(type.length-check.length, type.length);
		if(stype!==check){
			hits[i].parentNode.removeChild(hits[i]);
			i--
			d++
		}
	}
	var foot = document.getElementById('results').getElementsByTagName('tfoot')[0].getElementsByTagName('td')[0];
	var total = foot.innerHTML;
	foot.innerHTML = (total.substring(0,total.indexOf(' '))-d)+total.substring(total.indexOf(' '));
}
}