GRO Index Search Helper

Adds additional functionality to the General Regsiter Office (GRO) BMD indeax search

Fra og med 05.11.2016. Se den nyeste version.

// ==UserScript==
// @name        GRO Index Search Helper
// @description Adds additional functionality to the General Regsiter Office (GRO) BMD indeax search
// @namespace   cuffie81.scripts
// @include     https://www.gro.gov.uk/gro/content/certificates/indexes_search.asp
// @version     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='&lt; Years' />").insertBefore($(searchButton));
	$("<input class='formButton' id='mygroBtnYearsNext' type='button' value='Years &gt;' />").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);
	}
}