// ==UserScript==
// @name Script Ancestry.com Hint Helper
// @description This script works with Ancestry.com’s hint merge page to properly update data. This helps enforce genealogy best practices and saves time.
// @version 1
// @grant none
// @license MIT
// @include https://www.ancestry.com/family-tree/tree/*
// @namespace https://greasyfork.org/users/851861
// ==/UserScript==
monthNames = ['', 'January','February','March','April','May','June','July','August','September','October','November','December','Sept'];
function createInput(tag, value) {
return '<input id="altfield' + tag + '" type="hidden" value="' + value + '" name="altfield' + tag + '">';
}
function addChecks( className ) {
elements = document.getElementsByClassName (className);
eLen = elements.length;
for (i = 0; i < elements.length; i++) {
elements[i].classList.add('checked');
}
}
/*********
* Corrects month by
* 1) Changing "abt" to "Abt."
* 2) Changing to DD mmm YYYY format
* 3) Adding leading 0 to 1 digit dates (matching Family Tree Maker format)
* 4) Adding "01 Apr" to resident dates from 1940 census
*********/
function formatDate(date, is1940census) {
if (date.length > 0) {
if (date.substring(0,4).toLowerCase() == 'abt ') {
date = 'Abt. ' + date.substring(4);
} else {
if (date.includes('/')) {
temp = parts[0];
} else {
parts = date.split(' ');
}
if (parts.length == 3) {
if (parts[0].length == 1) {
parts[0] = '0' + parts[0];
}
parts[1] = abbrevMonth(parts[1]);
}
if (parts.length == 1 && is1940census) {
if (parts[0] == 1935 || parts[0] == 1940) {
parts.unshift('Apr');
parts.unshift('01');
}
}
date = parts.join(' ');
}
}
return date;
}
/*********
* Corrects month by
* 1) Shortening month to three letters
* 2) Converting number to letters
*********/
function abbrevMonth(month) {
if (month.length != 3) {
if (monthNames.includes(month)) {
month = month.substring(0,3);
} else if (month > 0) {
month = monthNames[month].substring(0,3);
}
}
return month;
}
/*********
* Corrects any formatting problems with the places. This includes:
* 1) Add USA when there is a state
* 2) Change "United States" to USA
* 3) Add missing counties for some states (New England in first iteration)
* 4) Remove the word "County" when there is a city or town
* 5) Remove "Ward #" from city
*********/
function formatPlace(place) {
if (place.length > 0) {
parts = place.split(', ');
switch(parts[parts.length -1]) {
case 'Alabama': case 'Alaska': case 'Arizona': case 'Arkansas': case 'California': case 'Colorado': case 'Connecticut': case 'Delaware': case 'Florida': case 'Georgia': case 'Hawaii': case 'Idaho': case 'Illinois': case 'Indiana': case 'Iowa': case 'Kansas': case 'Kentucky': case 'Louisiana': case 'Maine': case 'Maryland': case 'Massachusetts': case 'Michigan': case 'Minnesota': case 'Mississippi': case 'Missouri': case 'Montana': case 'Nebraska': case 'Nevada': case 'New Hampshire': case 'New Jersey': case 'New Mexico': case 'New York': case 'North Carolina': case 'North Dakota': case 'Ohio': case 'Oklahoma': case 'Oregon': case 'Pennsylvania': case 'Rhode Island': case 'South Carolina': case 'South Dakota': case 'Tennessee': case 'Texas': case 'Utah': case 'Vermont': case 'Virginia': case 'Washington': case 'West Virginia': case 'Wisconsin': case 'Wyoming':
parts.push('USA');
break;
case 'United States':
parts[parts.length -1] = 'USA';
}
cityParts = parts[0].split(' ');
if (cityParts.length > 2 && cityParts[cityParts.length - 2] == 'Ward') {
cityParts.pop();
cityParts.pop();
parts[0] = cityParts.join(' ');
}
if (parts.length == 3 && parts[2] == 'USA') {
county = '';
switch ( parts[1] ) {
case 'Connecticut':
switch ( parts[0] ) {
case 'Bethel': case 'Bridgeport': case 'Brookfield': case 'Danbury': case 'Darien': case 'Easton': case 'Greenwich': case 'Monroe': case 'New Canaan': case 'New Fairfield': case 'Newtown': case 'Norwalk': case 'Redding': case 'Ridgefield': case 'Shelton': case 'Sherman': case 'Stamford': case 'Stratford': case 'Trumbull': case 'Weston': case 'Westport': case 'Wilton': county = 'Fairfield'; break;
case 'Avon': case 'Berlin': case 'Bloomfield': case 'Bristol': case 'Burlington': case 'Canton': case 'East Granby': case 'East Hartford': case 'East Windsor': case 'Enfield': case 'Farmington': case 'Glastonbury': case 'Granby': case 'Hartland': case 'Manchester': case 'Marlborough': case 'New Britain': case 'Newington': case 'Plainville': case 'Rocky Hill': case 'Simsbury': case 'South Windsor': case 'Southington': case 'Suffield': case 'West Hartford': case 'Wethersfield': case 'Windsor': case 'Windsor Locks': county = 'Hartford'; break;
case 'Barkhamsted': case 'Bethlehem': case 'Bridgewater': case 'Canaan': case 'Colebrook': case 'Cornwall': case 'Goshen': case 'Harwinton': case 'Kent': case 'Morris': case 'New Hartford': case 'New Milford': case 'Norfolk': case 'North Canaan': case 'Plymouth': case 'Roxbury': case 'Salisbury': case 'Sharon': case 'Thomaston': case 'Torrington': case 'Warren': case 'Washington': case 'Watertown': case 'Winchester': case 'Woodbury': county = 'Litchfield'; break;
case 'Chester': case 'Clinton': case 'Cromwell': case 'Deep River': case 'Durham': case 'East Haddam': case 'East Hampton': case 'Essex': case 'Haddam': case 'Killingworth': case 'Middlefield': case 'Middletown': case 'Old Saybrook': case 'Portland': case 'Westbrook': county = 'Middlesex'; break;
case 'Ansonia': case 'Beacon Falls': case 'Bethany': case 'Branford': case 'Cheshire': case 'Derby': case 'East Haven': case 'Guilford': case 'Hamden': case 'Madison': case 'Meriden': case 'Middlebury': case 'Milford': case 'Naugatuck': case 'North Branford': case 'North Haven': case 'Orange': case 'Oxford': case 'Prospect': case 'Seymour': case 'Southbury': case 'Wallingford': case 'Waterbury': case 'West Haven': case 'Wolcott': case 'Woodbridge': county = 'New Haven'; break;
case 'Bozrah': case 'Colchester': case 'East Lyme': case 'Franklin': case 'Griswold': case 'Groton': case 'Lebanon': case 'Ledyard': case 'Lisbon': case 'Lyme': case 'Montville': case 'North Stonington': case 'Norwich': case 'Old Lyme': case 'Preston': case 'Salem': case 'Sprague': case 'Stonington': case 'Voluntown': case 'Waterford': county = 'New London'; break;
case 'Andover': case 'Bolton': case 'Columbia': case 'Coventry': case 'Ellington': case 'Hebron': case 'Mansfield': case 'Somers': case 'Stafford': case 'Union': case 'Vernon': case 'Willington': county = 'Tolland'; break;
case 'Ashford': case 'Brooklyn': case 'Canterbury': case 'Chaplin': case 'Eastford': case 'Hampton': case 'Killingly': case 'Plainfield': case 'Pomfret': case 'Putnam': case 'Scotland': case 'Sterling': case 'Thompson': case 'Woodstock': county = 'Windham'; break;
}
break;
case 'Maine':
switch ( parts[0] ) {
case 'Durham': case 'Greene': case 'Leeds': case 'Lisbon': case 'Livermore': case 'Livermore Falls': case 'Mechanic Falls': case 'Minot': case 'Poland': case 'Sabattus': case 'Turner': case 'Wales': county = 'Androscoggin'; break;
case 'Allagash': case 'Amity': case 'Ashland': case 'Blaine': case 'Bridgewater': case 'Castle Hill': case 'Caswell': case 'Chapman': case 'Crystal': case 'Dyer Brook': case 'Eagle Lake': case 'Easton': case 'Fort Fairfield': case 'Fort Kent': case 'Frenchville': case 'Grand Isle': case 'Hamlin': case 'Hammond': case 'Haynesville': case 'Hersey': case 'Hodgdon': case 'Houlton': case 'Island Falls': case 'Limestone': case 'Linneus': case 'Littleton': case 'Ludlow': case 'Madawaska': case 'Mapleton': case 'Mars Hill': case 'Masardis': case 'Merrill': case 'Monticello': case 'New Canada': case 'New Limerick': case 'New Sweden': case 'Oakfield': case 'Orient': case 'Perham': case 'Portage Lake': case 'Sherman': case 'Smyrna': case 'St. Agatha': case 'St. Francis': case 'Stockholm': case 'Van Buren': case 'Wade': case 'Wallagrass': case 'Washburn': case 'Westfield': case 'Westmanland': case 'Weston': case 'Woodland': county = 'Aroostook'; break;
case 'Durham': case 'Greene': case 'Leeds': case 'Lewiston': case 'Lisbon': case 'Livermore': case 'Livermore Falls': case 'Mechanic Falls': case 'Minot': case 'Poland': case 'Sabattus': case 'Turner': case 'Wales': county = 'Androscoggin'; break;
case 'Allagash': case 'Amity': case 'Ashland': case 'Blaine': case 'Bridgewater': case 'Caribou': case 'Castle Hill': case 'Caswell': case 'Chapman': case 'Crystal': case 'Dyer Brook': case 'Eagle Lake': case 'Easton': case 'Fort Fairfield': case 'Fort Kent': case 'Frenchville': case 'Grand Isle': case 'Hamlin': case 'Hammond': case 'Haynesville': case 'Hersey': case 'Hodgdon': case 'Houlton': case 'Island Falls': case 'Limestone': case 'Linneus': case 'Littleton': case 'Ludlow': case 'Madawaska': case 'Mapleton': case 'Mars Hill': case 'Masardis': case 'Merrill': case 'Monticello': case 'New Canada': case 'New Limerick': case 'New Sweden': case 'Oakfield': case 'Orient': case 'Perham': case 'Portage Lake': case 'Presque Isle': case 'Sherman': case 'Smyrna': case 'St. Agatha': case 'St. Francis': case 'Stockholm': case 'Van Buren': case 'Wade': case 'Wallagrass': case 'Washburn': case 'Westfield': case 'Westmanland': case 'Weston': case 'Woodland': county = 'Aroostook'; break;
case 'Baldwin': case 'Bridgton': case 'Brunswick': case 'Cape Elizabeth': case 'Casco': case 'Chebeague Island': case 'Falmouth': case 'Freeport': case 'Frye Island': case 'Gorham': case 'Gray': case 'Harpswell': case 'Harrison': case 'Long Island': case 'Naples': case 'New Gloucester': case 'North Yarmouth': case 'Portland': case 'Pownal': case 'Raymond': case 'Scarborough': case 'Sebago': case 'South Portland': case 'Standish': case 'Westbrook': case 'Windham': case 'Yarmouth': county = 'Cumberland'; break;
case 'Avon': case 'Carrabassett Valley': case 'Carthage': case 'Chesterville': case 'Eustis': case 'Farmington': case 'Industry': case 'Jay': case 'Kingfield': case 'New Sharon': case 'New Vineyard': case 'Phillips': case 'Rangeley': case 'Strong': case 'Temple': case 'Weld': case 'Wilton': county = 'Franklin'; break;
case 'Amherst': case 'Aurora': case 'Bar Harbor': case 'Blue Hill': case 'Brooklin': case 'Brooksville': case 'Bucksport': case 'Castine': case 'Cranberry Isles': case 'Dedham': case 'Deer Isle': case 'Eastbrook': case 'Ellsworth': case 'Frenchboro': case 'Gouldsboro': case 'Great Pond': case 'Lamoine': case 'Mariaville': case 'Mount Desert': case 'Orland': case 'Osborn': case 'Otis': case 'Sedgwick': case 'Sorrento': case 'Southwest Harbor': case 'Stonington': case 'Sullivan': case 'Surry': case "Swan's Island": case 'Tremont': case 'Trenton': case 'Verona Island': case 'Waltham': case 'Winter Harbor': county = 'Hancock'; break;
case 'Albion': case 'Augusta': case 'Belgrade': case 'Benton': case 'Chelsea': case 'China': case 'Clinton': case 'Farmingdale': case 'Fayette': case 'Gardiner': case 'Hallowell': case 'Litchfield': case 'Manchester': case 'Monmouth': case 'Mount Vernon': case 'Oakland': case 'Pittston': case 'Randolph': case 'Readfield': case 'Rome': case 'Sidney': case 'Vassalboro': case 'Vienna': case 'Waterville': case 'Wayne': case 'West Gardiner': case 'Windsor': case 'Winslow': case 'Winthrop': county = 'Kennebec'; break;
case 'Appleton': case 'Camden': case 'Cushing': case 'Friendship': case 'Hope': case 'Isle au Haut': case 'North Haven': case 'Owls Head': case 'Rockland': case 'Rockport': case 'South Thomaston': case 'St. George': case 'Thomaston': case 'Union': case 'Vinalhaven': case 'Warren': county = 'Knox'; break;
case 'Alna': case 'Boothbay': case 'Boothbay Harbor': case 'Bremen': case 'Bristol': case 'Damariscotta': case 'Dresden': case 'Edgecomb': case 'Jefferson': case 'Newcastle': case 'Nobleboro': case 'Somerville': case 'South Bristol': case 'Southport': case 'Waldoboro': case 'Westport Island': case 'Whitefield': case 'Wiscasset': county = 'Lincoln'; break;
case 'Andover': case 'Bethel': case 'Brownfield': case 'Buckfield': case 'Byron': case 'Canton': case 'Denmark': case 'Dixfield': case 'Fryeburg': case 'Gilead': case 'Greenwood': case 'Hanover': case 'Hartford': case 'Hebron': case 'Hiram': case 'Lovell': case 'Mexico': case 'Newry': case 'Norway': case 'Otisfield': case 'Paris': case 'Peru': case 'Porter': case 'Roxbury': case 'Rumford': case 'Stoneham': case 'Stow': case 'Sumner': case 'Sweden': case 'Upton': case 'Waterford': case 'West Paris': case 'Woodstock': county = 'Oxford'; break;
case 'Alton': case 'Bangor': case 'Bradford': case 'Bradley': case 'Brewer': case 'Burlington': case 'Carmel': case 'Charleston': case 'Chester': case 'Clifton': case 'Corinna': case 'Corinth': case 'Dexter': case 'Dixmont': case 'East Millinocket': case 'Eddington': case 'Edinburg': case 'Enfield': case 'Etna': case 'Exeter': case 'Garland': case 'Glenburn': case 'Greenbush': case 'Hampden': case 'Hermon': case 'Holden': case 'Howland': case 'Hudson': case 'Kenduskeag': case 'Lagrange': case 'Lakeville': case 'Lee': case 'Levant': case 'Lowell': case 'Mattawamkeag': case 'Maxfield': case 'Medway': case 'Milford': case 'Millinocket': case 'Mount Chase': case 'Newburgh': case 'Newport': case 'Old Town': case 'Orono': case 'Orrington': case 'Passadumkeag': case 'Patten': case 'Plymouth': case 'Springfield': case 'Stacyville': case 'Stetson': case 'Veazie': case 'Winn': case 'Woodville': county = 'Penobscot'; break;
case 'Abbot': case 'Beaver Cove': case 'Bowerbank': case 'Brownville': case 'Dover-Foxcroft': case 'Greenville': case 'Guilford': case 'Medford': case 'Milo': case 'Monson': case 'Parkman': case 'Sangerville': case 'Sebec': case 'Shirley': case 'Wellington': case 'Willimantic': county = 'Piscataquis'; break;
case 'Arrowsic': case 'Bath': case 'Bowdoin': case 'Bowdoinham': case 'Georgetown': case 'Phippsburg': case 'Richmond': case 'Topsham': case 'West Bath': case 'Woolwich': county = 'Sagadahoc'; break;
case 'Anson': case 'Athens': case 'Bingham': case 'Cambridge': case 'Canaan': case 'Caratunk': case 'Cornville': case 'Detroit': case 'Embden': case 'Fairfield': case 'Harmony': case 'Hartland': case 'Jackman': case 'Madison': case 'Mercer': case 'Moose River': case 'Moscow': case 'New Portland': case 'Norridgewock': case 'Palmyra': case 'Pittsfield': case 'Ripley': case 'Skowhegan': case 'Smithfield': case 'Solon': case 'St. Albans': case 'Starks': county = 'Somerset'; break;
case 'Belfast': case 'Belmont': case 'Brooks': case 'Burnham': case 'Frankfort': case 'Freedom': case 'Islesboro': case 'Jackson': case 'Liberty': case 'Lincolnville': case 'Monroe': case 'Montville': case 'Morrill': case 'Northport': case 'Palermo': case 'Prospect': case 'Searsmont': case 'Searsport': case 'Stockton Springs': case 'Swanville': case 'Thorndike': case 'Troy': case 'Unity': case 'Winterport': county = 'Waldo'; break;
case 'Addison': case 'Alexander': case 'Baileyville': case 'Beals': case 'Beddington': case 'Calais': case 'Charlotte': case 'Cherryfield': case 'Columbia': case 'Columbia Falls': case 'Cooper': case 'Crawford': case 'Cutler': case 'Danforth': case 'Deblois': case 'Dennysville': case 'East Machias': case 'Harrington': case 'Jonesboro': case 'Jonesport': case 'Lubec': case 'Machias': case 'Machiasport': case 'Marshfield': case 'Meddybemps': case 'Milbridge': case 'Northfield': case 'Pembroke': case 'Perry': case 'Princeton': case 'Robbinston': case 'Roque Bluffs': case 'Steuben': case 'Talmadge': case 'Topsfield': case 'Vanceboro': case 'Waite': case 'Wesley': case 'Whiting': case 'Whitneyville': county = 'Washington'; break;
case 'Acton': case 'Alfred': case 'Arundel': case 'Berwick': case 'Biddeford': case 'Buxton': case 'Cornish': case 'Dayton': case 'Eliot': case 'Hollis': case 'Kennebunk': case 'Kennebunkport': case 'Kittery': case 'Lebanon': case 'Limerick': case 'Limington': case 'Lyman': case 'Newfield': case 'North Berwick': case 'Ogunquit': case 'Old Orchard Beach': case 'Parsonsfield': case 'Saco': case 'Sanford': case 'Shapleigh': case 'South Berwick': case 'Waterboro': case 'Wells': county = 'York'; break;
}
break;
case 'Massachusetts':
switch ( parts[0] ) {
case 'Bourne': case 'Brewster': case 'Chatham': case 'Dennis': case 'Eastham': case 'Falmouth': case 'Harwich': case 'Mashpee': case 'Orleans': case 'Provincetown': case 'Sandwich': case 'Truro': case 'Wellfleet': case 'Yarmouth': county = 'Barnstable'; break;
case 'Adams': case 'Alford': case 'Becket': case 'Cheshire': case 'Clarksburg': case 'Dalton': case 'Egremont': case 'Florida': case 'Great Barrington': case 'Hancock': case 'Hinsdale': case 'Lanesborough': case 'Lee': case 'Lenox': case 'Monterey': case 'Mount Washington': case 'New Ashford': case 'New Marlborough': case 'North Adams': case 'Otis': case 'Peru': case 'Pittsfield': case 'Richmond': case 'Sandisfield': case 'Savoy': case 'Sheffield': case 'Stockbridge': case 'Tyringham': case 'Washington': case 'West Stockbridge': case 'Williamstown': case 'Windsor': county = 'Berkshire'; break;
case 'Acushnet': case 'Attleboro': case 'Berkley': case 'Dartmouth': case 'Dighton': case 'Easton': case 'Fairhaven': case 'Fall River': case 'Freetown': case 'Mansfield': case 'New Bedford': case 'North Attleborough': case 'Norton': case 'Raynham': case 'Rehoboth': case 'Seekonk': case 'Somerset': case 'Swansea': case 'Taunton': case 'Westport': county = 'Bristol'; break;
case 'Aquinnah': case 'Chilmark': case 'Edgartown': case 'Gosnold': case 'Oak Bluffs': case 'Tisbury': case 'West Tisbury': county = 'Dukes'; break;
case 'Amesbury': case 'Andover': case 'Beverly': case 'Boxford': case 'Danvers': case 'Georgetown': case 'Gloucester': case 'Groveland': case 'Hamilton': case 'Haverhill': case 'Ipswich': case 'Lawrence': case 'Lynn': case 'Lynnfield': case 'Manchester-by-the-Sea': case 'Marblehead': case 'Merrimac': case 'Methuen': case 'Middleton': case 'Nahant': case 'Newbury': case 'Newburyport': case 'North Andover': case 'Peabody': case 'Rockport': case 'Rowley': case 'Salem': case 'Salisbury': case 'Saugus': case 'Swampscott': case 'Topsfield': case 'Wenham': case 'West Newbury': county = 'Essex'; break;
case 'Ashfield': case 'Bernardston': case 'Buckland': case 'Charlemont': case 'Colrain': case 'Conway': case 'Deerfield': case 'Erving': case 'Gill': case 'Greenfield': case 'Hawley': case 'Heath': case 'Leverett': case 'Leyden': case 'Monroe': case 'Montague': case 'New Salem': case 'Northfield': case 'Orange': case 'Rowe': case 'Shelburne': case 'Shutesbury': case 'Sunderland': case 'Warwick': case 'Wendell': case 'Whately': county = 'Franklin'; break;
case 'Agawam': case 'Blandford': case 'Brimfield': case 'Chester': case 'Chicopee': case 'East Longmeadow': case 'Granville': case 'Holland': case 'Holyoke': case 'Longmeadow': case 'Ludlow': case 'Monson': case 'Montgomery': case 'Palmer': case 'Russell': case 'Southwick': case 'Springfield': case 'Tolland': case 'Wales': case 'West Springfield': case 'Westfield': case 'Wilbraham': county = 'Hampden'; break;
case 'Amherst': case 'Belchertown': case 'Chesterfield': case 'Cummington': case 'Easthampton': case 'Goshen': case 'Granby': case 'Hadley': case 'Hatfield': case 'Huntington': case 'Middlefield': case 'Northampton': case 'Pelham': case 'Plainfield': case 'South Hadley': case 'Southampton': case 'Ware': case 'Westhampton': case 'Williamsburg': case 'Worthington': county = 'Hampshire'; break;
case 'Acton': case 'Arlington': case 'Ashby': case 'Ashland': case 'Ayer': case 'Bedford': case 'Belmont': case 'Billerica': case 'Boxborough': case 'Burlington': case 'Cambridge': case 'Carlisle': case 'Chelmsford': case 'Concord': case 'Dracut': case 'Dunstable': case 'Everett': case 'Framingham': case 'Groton': case 'Holliston': case 'Hopkinton': case 'Hudson': case 'Lexington': case 'Lincoln': case 'Littleton': case 'Lowell': case 'Malden': case 'Marlborough': case 'Maynard': case 'Medford': case 'Melrose': case 'Natick': case 'Newton': case 'North Reading': case 'Pepperell': case 'Reading': case 'Sherborn': case 'Shirley': case 'Somerville': case 'Stoneham': case 'Stow': case 'Sudbury': case 'Tewksbury': case 'Townsend': case 'Tyngsborough': case 'Wakefield': case 'Waltham': case 'Watertown': case 'Wayland': case 'Westford': case 'Weston': case 'Wilmington': case 'Winchester': case 'Woburn': county = 'Middlesex'; break;
case 'Nantucket': county = 'Nantucket'; break;
case 'Avon': case 'Bellingham': case 'Braintree': case 'Brookline': case 'Canton': case 'Cohasset': case 'Dedham': case 'Dover': case 'Foxborough': case 'Franklin': case 'Holbrook': case 'Medfield': case 'Medway': case 'Millis': case 'Milton': case 'Needham': case 'Norwood': case 'Plainville': case 'Quincy': case 'Randolph': case 'Sharon': case 'Stoughton': case 'Walpole': case 'Wellesley': case 'Westwood': case 'Weymouth': case 'Wrentham': county = 'Norfolk'; break;
case 'Abington': case 'Bridgewater': case 'Brockton': case 'Carver': case 'Duxbury': case 'East Bridgewater': case 'Halifax': case 'Hanover': case 'Hanson': case 'Hingham': case 'Hull': case 'Kingston': case 'Lakeville': case 'Marion': case 'Marshfield': case 'Mattapoisett': case 'Middleborough': case 'Norwell': case 'Pembroke': case 'Plympton': case 'Rochester': case 'Rockland': case 'Scituate': case 'Wareham': case 'West Bridgewater': case 'Whitman': county = 'Plymouth'; break;
case 'Boston': case 'Chelsea': case 'Revere': case 'Winthrop': county = 'Suffolk'; break;
case 'Ashburnham': case 'Athol': case 'Auburn': case 'Barre': case 'Berlin': case 'Blackstone': case 'Bolton': case 'Boylston': case 'Brookfield': case 'Charlton': case 'Clinton': case 'Douglas': case 'Dudley': case 'East Brookfield': case 'Fitchburg': case 'Gardner': case 'Grafton': case 'Hardwick': case 'Harvard': case 'Holden': case 'Hopedale': case 'Hubbardston': case 'Lancaster': case 'Leicester': case 'Leominster': case 'Lunenburg': case 'Mendon': case 'Milford': case 'Millbury': case 'Millville': case 'New Braintree': case 'North Brookfield': case 'Northborough': case 'Northbridge': case 'Oakham': case 'Oxford': case 'Paxton': case 'Petersham': case 'Phillipston': case 'Princeton': case 'Royalston': case 'Rutland': case 'Shrewsbury': case 'Southborough': case 'Southbridge': case 'Spencer': case 'Sterling': case 'Sturbridge': case 'Sutton': case 'Templeton': case 'Upton': case 'Uxbridge': case 'Warren': case 'Webster': case 'West Boylston': case 'West Brookfield': case 'Westborough': case 'Westminster': case 'Winchendon': county = 'Worcester'; break;
}
break;
case 'New Hampshire':
switch ( parts[0] ) {
case 'Alton': case 'Barnstead': case 'Belmont': case 'Center Harbor': case 'Gilford': case 'Gilmanton': case 'Laconia': case 'Meredith': case 'New Hampton': case 'Sanbornton': case 'Tilton': county = 'Belknap'; break;
case 'Albany': case 'Bartlett': case 'Brookfield': case 'Chatham': case 'Conway': case 'Eaton': case 'Effingham': case 'Freedom': case "Hart's Location": case 'Jackson': case 'Madison': case 'Moultonborough': case 'Ossipee': case 'Sandwich': case 'Tamworth': case 'Tuftonboro': case 'Wakefield': case 'Wolfeboro': county = 'Carroll'; break;
case 'Alstead': case 'Chesterfield': case 'Dublin': case 'Fitzwilliam': case 'Gilsum': case 'Harrisville': case 'Hinsdale': case 'Jaffrey': case 'Keene': case 'Marlborough': case 'Marlow': case 'Nelson': case 'Richmond': case 'Rindge': case 'Roxbury': case 'Stoddard': case 'Sullivan': case 'Surry': case 'Swanzey': case 'Troy': case 'Walpole': case 'Westmoreland': case 'Winchester': county = 'Cheshire'; break;
case 'Berlin': case 'Clarksville': case 'Colebrook': case 'Columbia': case 'Dalton': case 'Dummer': case 'Errol': case 'Gorham': case 'Jefferson': case 'Lancaster': case 'Milan': case 'Northumberland': case 'Pittsburg': case 'Randolph': case 'Shelburne': case 'Stark': case 'Stewartstown': case 'Stratford': case 'Whitefield': county = 'Coos'; break;
case 'Alexandria': case 'Ashland': case 'Bath': case 'Benton': case 'Bethlehem': case 'Bridgewater': case 'Bristol': case 'Campton': case 'Canaan': case 'Dorchester': case 'Easton': case 'Ellsworth': case 'Enfield': case 'Franconia': case 'Groton': case 'Hanover': case 'Haverhill': case 'Hebron': case 'Holderness': case 'Landaff': case 'Lebanon': case 'Lincoln': case 'Lisbon': case 'Littleton': case 'Lyman': case 'Lyme': case 'Monroe': case 'Orange': case 'Orford': case 'Piermont': case 'Plymouth': case 'Rumney': case 'Sugar Hill': case 'Thornton': case 'Warren': case 'Waterville Valley': case 'Wentworth': case 'Woodstock': county = 'Grafton'; break;
case 'Amherst': case 'Antrim': case 'Bedford': case 'Bennington': case 'Brookline': case 'Deering': case 'Francestown': case 'Goffstown': case 'Greenfield': case 'Greenville': case 'Hancock': case 'Hollis': case 'Hudson': case 'Litchfield': case 'Lyndeborough': case 'Manchester': case 'Mason': case 'Milford': case 'Mont Vernon': case 'Nashua': case 'New Boston': case 'New Ipswich': case 'Pelham': case 'Peterborough': case 'Sharon': case 'Temple': case 'Weare': case 'Wilton': case 'Windsor': county = 'Hillsborough'; break;
case 'Allenstown': case 'Andover': case 'Boscawen': case 'Bow': case 'Bradford': case 'Canterbury': case 'Chichester': case 'Concord': case 'Danbury': case 'Dunbarton': case 'Epsom': case 'Franklin': case 'Henniker': case 'Hill': case 'Hooksett': case 'Hopkinton': case 'Loudon': case 'New London': case 'Newbury': case 'Northfield': case 'Pembroke': case 'Pittsfield': case 'Salisbury': case 'Sutton': case 'Warner': case 'Webster': case 'Wilmot': county = 'Merrimack'; break;
case 'Atkinson': case 'Auburn': case 'Brentwood': case 'Candia': case 'Chester': case 'Danville': case 'Deerfield': case 'Derry': case 'East Kingston': case 'Epping': case 'Exeter': case 'Fremont': case 'Greenland': case 'Hampstead': case 'Hampton': case 'Hampton Falls': case 'Kensington': case 'Kingston': case 'Londonderry': case 'New Castle': case 'Newfields': case 'Newington': case 'Newmarket': case 'Newton': case 'North Hampton': case 'Northwood': case 'Nottingham': case 'Plaistow': case 'Portsmouth': case 'Raymond': case 'Rye': case 'Salem': case 'Sandown': case 'Seabrook': case 'South Hampton': case 'Stratham': case 'Windham': county = 'Rockingham'; break;
case 'Barrington': case 'Dover': case 'Durham': case 'Farmington': case 'Lee': case 'Madbury': case 'Middleton': case 'Milton': case 'New Durham': case 'Rochester': case 'Rollinsford': case 'Somersworth': case 'Strafford': county = 'Strafford'; break;
case 'Acworth': case 'Charlestown': case 'Claremont': case 'Cornish': case 'Croydon': case 'Goshen': case 'Grantham': case 'Langdon': case 'Lempster': case 'Newport': case 'Plainfield': case 'Springfield': case 'Sunapee': case 'Unity': case 'Washington': case 'Springfield': case 'Sunapee': case 'Unity': case 'Washington': county = 'Sullivan'; break;
}
break;
case 'Rhode Island':
switch ( parts[0] ) {
case 'Barrington': case 'Warren': county = 'Bristol'; break;
case 'Coventry': case 'East Greenwich': case 'Warwick': case 'West Greenwich': case 'West Warwick': county = 'Kent'; break;
case 'Jamestown': case 'Little Compton': case 'Middletown': case 'Portsmouth': case 'Tiverton': county = 'Newport'; break;
case 'Burrillville': case 'Central Falls': case 'Cranston': case 'Cumberland': case 'East Providence': case 'Foster': case 'Glocester': case 'Johnston': case 'Lincoln': case 'North Providence': case 'North Smithfield': case 'Pawtucket': case 'Scituate': case 'Smithfield': case 'Woonsocket': county = 'Providence'; break;
case 'Charlestown': case 'Exeter': case 'Hopkinton': case 'Narragansett': case 'New Shoreham': case 'North Kingstown': case 'Richmond': case 'South Kingstown': case 'Westerly': county = 'Washington'; break;
}
break;
case 'Vermont':
switch ( parts[0] ) {
case 'Bethel': case 'Bridgeport': case 'Brookfield': case 'Danbury': case 'Darien': case 'Easton': case 'Greenwich': case 'Monroe': case 'New Canaan': case 'New Fairfield': case 'Newtown': case 'Norwalk': case 'Redding': case 'Ridgefield': case 'Shelton': case 'Sherman': case 'Stamford': case 'Stratford': case 'Trumbull': case 'Weston': case 'Westport': case 'Wilton': county = 'Fairfield'; break;
case 'Avon': case 'Berlin': case 'Bloomfield': case 'Bristol': case 'Burlington': case 'Canton': case 'East Granby': case 'East Hartford': case 'East Windsor': case 'Enfield': case 'Farmington': case 'Glastonbury': case 'Granby': case 'Hartland': case 'Manchester': case 'Marlborough': case 'New Britain': case 'Newington': case 'Plainville': case 'Rocky Hill': case 'Simsbury': case 'South Windsor': case 'Southington': case 'Suffield': case 'West Hartford': case 'Wethersfield': case 'Windsor': case 'Windsor Locks': county = 'Hartford'; break;
case 'Barkhamsted': case 'Bethlehem': case 'Bridgewater': case 'Canaan': case 'Colebrook': case 'Cornwall': case 'Goshen': case 'Harwinton': case 'Kent': case 'Morris': case 'New Hartford': case 'New Milford': case 'Norfolk': case 'North Canaan': case 'Plymouth': case 'Roxbury': case 'Salisbury': case 'Sharon': case 'Thomaston': case 'Torrington': case 'Warren': case 'Washington': case 'Watertown': case 'Winchester': case 'Woodbury': county = 'Litchfield'; break;
case 'Chester': case 'Clinton': case 'Cromwell': case 'Deep River': case 'Durham': case 'East Haddam': case 'East Hampton': case 'Essex': case 'Haddam': case 'Killingworth': case 'Middlefield': case 'Middletown': case 'Old Saybrook': case 'Portland': case 'Westbrook': county = 'Middlesex'; break;
case 'Ansonia': case 'Beacon Falls': case 'Bethany': case 'Branford': case 'Cheshire': case 'Derby': case 'East Haven': case 'Guilford': case 'Hamden': case 'Madison': case 'Meriden': case 'Middlebury': case 'Milford': case 'Naugatuck': case 'North Branford': case 'North Haven': case 'Orange': case 'Oxford': case 'Prospect': case 'Seymour': case 'Southbury': case 'Wallingford': case 'Waterbury': case 'West Haven': case 'Wolcott': case 'Woodbridge': county = 'New Haven'; break;
case 'Bozrah': case 'Colchester': case 'East Lyme': case 'Franklin': case 'Griswold': case 'Groton': case 'Lebanon': case 'Ledyard': case 'Lisbon': case 'Lyme': case 'Montville': case 'North Stonington': case 'Norwich': case 'Old Lyme': case 'Preston': case 'Salem': case 'Sprague': case 'Stonington': case 'Voluntown': case 'Waterford': county = 'New London'; break;
case 'Andover': case 'Bolton': case 'Columbia': case 'Coventry': case 'Ellington': case 'Hebron': case 'Mansfield': case 'Somers': case 'Stafford': case 'Union': case 'Vernon': case 'Willington': county = 'Tolland'; break;
case 'Ashford': case 'Brooklyn': case 'Canterbury': case 'Chaplin': case 'Eastford': case 'Hampton': case 'Killingly': case 'Plainfield': case 'Pomfret': case 'Putnam': case 'Scotland': case 'Sterling': case 'Thompson': case 'Woodstock': county = 'Windham'; break;
}
break;
}
if (county.length > 0) {
parts.splice(1, 0, county);
}
}
if (parts.length == 4) {
if (parts[1].endsWith("County")) {
parts[1] = parts[1].substring(0, parts[1].length - 7);
}
}
if (parts[parts.length - 1] == 'United States of America') {
parts[parts.length - 1] = 'USA';
}
place = parts.join(', ');
}
return place;
}
function formatCounty(place) {
parts = place.split(',');
if (parts.length == 3) {
parts[0] = parts[0] + ' County';
}
place = parts.join(', ');
return place;
}
/***********************
* Check checkboxes
***********************/
addChecks('eventItem updateMergeItem hasAltPref');
addChecks('eventItem updateEventItem diffItem hasAltPref');
addChecks('eventItem updateEventItem hasAltPref');
addChecks('eventItem descItem newItem');
elements = document.getElementsByClassName ('eventItem descItem newItem');
for (i = 0; i < elements.length; i++) {
elements[i].classList.remove('checked');
}
elements = document.getElementsByClassName ('radio altPrefRadio');
for (i = 0; i < elements.length; i++) {
if (elements[i].id.substring(0,4) == '_pre' ) {
elements[i].classList.remove('checked');
} else {
elements[i].classList.add('checked');
elements[i].checked = true;
}
}
elements = document.getElementsByClassName ('recTbl altItem');
for (i = 0; i < elements.length; i++) {
elements[i].classList.remove('hide');
}
elements = document.getElementsByClassName ('recTbl wasItem');
for (i = 0; i < elements.length; i++) {
elements[i].classList.add('hide');
}
elements = document.getElementsByClassName ('mergeCheck');
for (i = 0; i < elements.length; i++) {
if (elements[i].title.length == 0) {
if (elements[i].tagName == 'A') {
elements[i].classList.add('checked');
}
}
}
elements = document.getElementsByClassName ('secItem matchedItem deselected');
elen = elements.length;
for (i = elen; i > 0; i=i-1) {
elements[i-1].classList.remove('deselected');
}
elements = document.getElementsByClassName ('secItem newItem deselected');
elen = elements.length;
for (i = elen; i > 0; i=i-1) {
elements[i-1].classList.remove('deselected');
}
/***********************
* Set up hidden inputs
***********************/
var altFields = new Array();
var altFieldTags = new Array();
var dataNorms = new Array();
var altChecks = new Array();
elements = document.getElementsByClassName ('alternates');
for (i = 0; i < elements.length; i++) {
fields = elements[i].getElementsByClassName ('field');
for (j = 0; j < fields.length / 2; j++) {
altFields.push(fields[j].innerHTML);
if(fields[j].attributes.length == 1) {
dataNorms.push('');
} else {
dataNorms.push(fields[j].attributes[1]);
}
}
if (fields.length == 2) {
altFields.push('');
altFields.push('');
dataNorms.push('');
dataNorms.push('');
}
}
elements = document.getElementsByClassName ('radio altPrefRadio');
for (i = 0; i < elements.length; i++) {
if (elements[i].id.substring(0,4) == '_pre' ) {
elements[i].classList.remove('checked');
} else {
elements[i].classList.add('checked');
elements[i].checked = true;
}
if (elements[i].id.substring(0,15) == '_prefRadiofield' ) {
altFieldTags.push(elements[i].id.substring(15));
altFieldTags.push('');
altFieldTags.push('');
} else if (elements[i].id.substring(0,10) == '_prefRadio' ) {
altFieldTags.push('1' + elements[i].id.substring(10) );
altFieldTags.push('2' + elements[i].id.substring(10) );
altFieldTags.push('3' + elements[i].id.substring(10) );
} else if (elements[i].id.substring(0,9) == '_altRadio' ) {
altChecks.push('altChk' + elements[i].id.substring(9));
}
}
elements = document.getElementsByClassName ('alternates');
for (i = 0; i < elements.length; i++) {
fields = elements[i].getElementsByClassName ('altField');
for (j = 0; j < fields.length; j++) {
if (altFields[i * 3 + j] != '') {
tag = altFieldTags[i * 3 + j];
fields[j].innerHTML = createInput(tag, altFields[i * 3 + j]);
if (dataNorms[i * 3 + j] != '') {
if (dataNorms[i * 3 + j].value.includes(",")) {
fields[j].innerHTML = fields[j].innerHTML + createInput(tag + '_GPID', dataNorms[i * 3 + j].value);
} else {
fields[j].innerHTML = fields[j].innerHTML + createInput(tag + '_ND', dataNorms[i * 3 + j].value);
}
}
}
}
}
elements = document.getElementsByClassName ('eventItem descItem newItem');
for (i = 0; i < elements.length; i++) {
divs = elements[i].getElementsByClassName ('recDiv');
divs[1].style = 'display: none;';
}
for (i = 0; i < altChecks.length; i++) {
elements = document.getElementById (altChecks[i]);
elements.value = "1";
}
elements = document.getElementsByClassName ('editTextField textdefault textsml');
for (i = 0; i < elements.length; i++) {
elements[i].innerHTML = '';
}
elements = document.getElementsByClassName ('nodeChecked');
for (i = 0; i < elements.length; i++) {
elements[i].value = '1';
}
/***********************
* Clean up fields
***********************/
var is1940census = false;
var isCaliforniaDeathIndex = false;
var isCaliforniaBirthIndex = false;
elements = document.getElementsByClassName ('subtitle recHeader textlrg coloralt4 bold');
if (elements[0].innerHTML == 'in the 1940 United States Federal Census') {
is1940census = true;
} else if (elements[0].innerHTML == 'in the California, U.S., Death Index, 1940-1997') {
isCaliforniaDeathIndex = true;
} else if (elements[0].innerHTML == 'in the California Birth Index, 1905-1995') {
isCaliforniaBirthIndex = true;
}
var fields = new Array();
elements = document.getElementsByClassName ('dateField');
for (i = 0; i < elements.length; i++) {
fields.push(elements[i].id.substring(5));
}
for (i = 0; i < fields.length; i++) {
elements = document.getElementById( 'field' + fields[i] );
elements.value = formatDate(elements.value, is1940census);
elements = document.getElementById( 'altfield' + fields[i] );
if (elements) {
elements.value = formatDate(elements.value, is1940census);
}
}
fields = new Array();
elements = document.getElementsByClassName ('placeField');
for (i = 0; i < elements.length; i++) {
fields.push(elements[i].id.substring(5));
}
for (i = 0; i < fields.length; i++) {
elements = document.getElementById( 'field' + fields[i] );
elements.value = formatPlace(elements.value);
elements = document.getElementById( 'altfield' + fields[i] );
if (elements) {
elements.value = formatPlace(elements.value);
}
}
if (isCaliforniaDeathIndex == true) {
elements = document.getElementById( 'field' + fields[fields.length -1] );
if ( elements.value.includes(',') == false ) {
elements.value = elements.value + ' County, California, USA';
}
elements = document.getElementById( 'altfield' + fields[fields.length -1] );
if (elements) {
elements.value = elements.value + ' County, California, USA';
}
}
if (isCaliforniaBirthIndex == true) {
elements = document.getElementById( 'field2_0_1' );
elements.value = formatCounty( elements.value );
elements = document.getElementById( 'altfield2_0_1' );
if (elements) {
elements.value = formatCounty( elements.value );
}
}