Adds additional functionality to the UK General Register Office (GRO) BMD index search
当前为
// ==UserScript==
// @name GRO Index Search Helper
// @description Adds additional functionality to the UK General Register Office (GRO) BMD index search
// @namespace cuffie81.scripts
// @include https://www.gro.gov.uk/gro/content/certificates/indexes_search.asp
// @version 1.1
// @grant none
// @require https://code.jquery.com/jquery-2.2.4.min.js
// ==/UserScript==
this.$ = this.jQuery = jQuery.noConflict(true);
$(document).ready(function()
{
// Hide the reset button
$("form[name='SearchIndexes'] input[type='submit'][value='Reset']").hide();
// Hide superflous text
$("table[summary*='contains the search form fields'] > tbody > tr:nth-of-type(3) td.main_text[colspan='5']").parent().hide();
// Add gender and year navigation buttons, and style them
var searchButton = $("form[name='SearchIndexes'] input[type='submit'][value='Search']")
$("<input class='formButton' id='mygroBtnGenderToggle' type='button' value='Gender' />").insertBefore($(searchButton));
$("<input class='formButton' id='mygroBtnYearsPrev' type='button' value='< Years' />").insertBefore($(searchButton));
$("<input class='formButton' id='mygroBtnYearsNext' type='button' value='Years >' />").insertBefore($(searchButton));
var buttonContainer = $("form[name='SearchIndexes'] input[type='submit'][value='Search']").closest("td");
$(buttonContainer).css("padding-bottom", "10px");
$(buttonContainer).find("input[type='button']").css("margin-right", "20px");
$(buttonContainer).find("input[type='submit'], input[type='button']").css("min-width", "100px").css("font-size", "13px").css("padding", "4px 10px");
// Handle button click handlers
$("input#mygroBtnYearsPrev").click(function() { mygro_NavigateYears(false); });
$("input#mygroBtnYearsNext").click(function() { mygro_NavigateYears(true); });
$("input#mygroBtnGenderToggle").click(function() { mygro_ToggleGender(); });
});
function mygro_ToggleGender()
{
var curGender = $("form[name='SearchIndexes'] select#Gender").val();
$("form[name='SearchIndexes'] select#Gender").val((curGender === "F" ? "M" : "F"));
$("form[name='SearchIndexes'] input[type='submit'][value='Search']").click();
}
function mygro_NavigateYears(forward)
{
// Get min and max years
var minYear = parseInt($("form[name='SearchIndexes'] select#Year option:eq(2)").val(), 10);
var maxYear = parseInt($("form[name='SearchIndexes'] select#Year option:last").val(), 10);
//console.log("Year range: %s - %s", minYear, maxYear);
if (!isNaN(minYear) && !isNaN(maxYear))
{
// Read current year and range
var curYear = parseInt($("form[name='SearchIndexes'] select#Year").val(), 10);
var curRange = parseInt($("form[name='SearchIndexes'] select#Range").val(), 10);
if (!isNaN(curYear) && !isNaN(curRange))
{
// Calculate the new year
var step = (curRange * 2) + 1;
var newYear = (forward ? curYear+step : curYear-step);
newYear = Math.min(Math.max(newYear, minYear), maxYear);
// Update the year and submit the search
$("form[name='SearchIndexes'] select#Year").val(newYear);
$("form[name='SearchIndexes'] input[type='submit'][value='Search']").click();
}
//console.log("Current year: %d +-%d (%d-%d), New year: %d (%d-%d)", curYear, curRange, curYear-curRange, curYear+curRange, newYear, newYear-curRange, newYear+curRange);
}
}