The Dynamic WWII Army Number Estimator © The Dynamic WWII Hood Estimator © by ArmyVehicleMarking.com a design by © FDY Design © Holland / The Netherlands – version 20231204v043 © The Dynamic WWII Army/Bonnet/Census/Hood ESTIMATOR © Do you know if your WWII vehicle U.S.A.(W.) or CC bonnet/hood number is correct? If you know your military vehicle’s frame number, then you are in luck! Simply fill out the following form for an approximation of your vehicle’s U.S.A.(W.) bonnet/hood number. Please Note The Army bonnet/hood number generated by this page is simply an estimate. It is good practice to validate this number against the current serial number archives provided by sites like the g503 website for example. Calculate Your Bonnet/Hood Number: Select your Local Database / File (*.xlsx): Or choose your Online Database / File: After selecting a source Press: Load, Read and Display the Data or Disconnect SELECT your Vehicle Brand and Vehicle Type: This page is dynamically designed and only shows selected brand and type from the above linked file / database. Choose now your brand and type. Select your Vehicle Brand: Show all TEST and SAMPLE DATA - Vehicle Brands VEHbrandVEHcountry AECCommonwealth AlbionCommonwealth AustinCommonwealth AutocarUSA BantamUSA BedfordCommonwealth Ben-HurUSA BrockwayUSA ChevroletUSA ChryslerUSA CrossleyCommonwealth DiamondUSA DodgeUSA FordUSA GMCUSA Guy MotorsCommonwealth Harley-DavidsonUSA HumberCommonwealth Indian MotorcyclesUSA KarrierCommonwealth LeylandCommonwealth MackUSA MorrisCommonwealth PacificUSA ScammellCommonwealth StudebakerUSA Willys-OverlandUSA Select your Vehicle Type: Show all TEST and SAMPLE DATA - VEHbrand - VEHtype (Currently Work in Progress) VEHbrandVEHtype DodgeVC-1 DodgeVC-2 DodgeWC-51 DodgeWC-52 DodgeWC-52 DodgeWC-58 DodgeWC-58 DodgeWC-58 DodgeWC-62 DodgeWC-63 Harley-Davidson42WLC Harley-Davidson43WLC Jeep Ford Jeep Willys Jeep Bantam After selecting the brand and type, a table will appear in the middle of the page with the specific data for your vehicle. Enter Your Chassis Number: Estimate your No. or Reset (TEST) Your ESTIMATED Hood Number is: CC 987654 U.S.A.W. 01234567 -S U.S.A. 012345 -S U.S.N. 987654 U.S.M.C. 012345 USAAF 012345 Can you help make this data even more complete? Sometimes we miss some detailed information per brand and type. Or we simply do not have any information about the relevant brand or type in our files. If you can or would like to help with this, we will add data to this estimator. If you encounter any errors or have additional information, please do not hesitate to email us. Thank you in advance on behalf of us and your fellow enthusiastic vehicle owners. If a database, brand and type are selected, a table will appear here: TEST and SAMPLE DATA - Chassis vs Hood Number (Currently Work in Progress) VEHbrandVEHtypeVEHrowCHASSISstartCHASSISendCHASSIStotARMYprefixHOODstartHOODendHOODtotARMYendfixChHoFactYEARARMYcontractSOURCELINKREMARKSBUILDbrandTOTBUILDtypeTOTBUILDdayTOTBUILDtypeTOTPRODfactTOTPRODfactType DodgeVC-1 TEST1100020001000U.S.A.W.10000112501250-S1.251940-1945ContractnumberSAMPLE Source 001Link 001Remarks111111 DodgeVC-2 TEST1200030001000U.S.A.W.20000212501250-S1.251940-1945ContractnumberSAMPLE Source 002Link 002Remarks111111 DodgeWC-51 TEST111000120001000U.S.A.W.1100001112501250-S1.251940-1945ContractnumberSAMPLE Source 011Link 011Remarks111111 DodgeWC-52 TEST112000130001000U.S.A.1200001212501250-S1.251940-1945ContractnumberSAMPLE Source 012Link 012Remarks111111 DodgeWC-52 TEST213000140001000U.S.A.1300001312501250-S1.251940-1945ContractnumberSAMPLE Source 013Link 013Remarks111111 DodgeWC-58 TEST118000190001000U.S.A.1800001812501250-S1.251940-1945ContractnumberSAMPLE Source 018Link 018Remarks111111 DodgeWC-58 TEST219000200001000U.S.A.1900001912501250-S1.251940-1945ContractnumberSAMPLE Source 019Link 019Remarks111111 DodgeWC-58 TEST320000210001000U.S.A.2000002012501250-S1.251940-1945ContractnumberSAMPLE Source 020Link 020Remarks111111 DodgeWC-61 TEST121000220001000U.S.A.2100002112501250-S1.251940-1945ContractnumberSAMPLE Source 021Link 021Remarks111111 DodgeWC-62 TEST1820000068204500044994U.S.A.22000026524445244-S1.00555629639511943-1945ContractnumberSAMPLE Source 022Link 022Remarks111111 DodgeWC-63 TEST1820000068204500044994U.S.A.23000027524445244-S1.00555629639511943-1945ContractnumberSAMPLE Source 023Link 023Remarks111111 Harley-Davidson42WLC1100048003800? (CC) ?411220041162004000-S1.05263157894741941ContractnumberAugust 1941-November 1941The Liberator: WLA - WLC Motorcycles & US WW2 MilitariaRemarks111111 Harley-Davidson42WLC2100002500015000? (CC) ?4211000422600015000-S11942ContractnumberJanuary-May 1942 & August 1942The Liberator: WLA - WLC Motorcycles & US WW2 MilitariaRemarks111111 Harley-Davidson43WLC1100091348134CC4218004299348134-S11942-1944ContractnumberOctober 1942-February 1944The Liberator: WLA - WLC Motorcycles & US WW2 MilitariaRemarks111111 Jeep Bantam TEST1550006600011000U.S.A.W.12000013322213222-S1.2021940-1945ContractnumberSAMPLE Source 029Link 029Remarks111111 Jeep Ford TEST1330004400011000U.S.A.10000011433314333-S1.3031940-1945ContractnumberSAMPLE Source 027Link 027Remarks111111 Jeep Type 3 TEST1660007700011000U.S.A.W.13000014544415444-S1.4041940-1945ContractnumberSAMPLE Source 030Link 030Remarks111111 Jeep Type 3 TEST2770008800011000U.S.A.14000015655516555-S1.5051940-1945ContractnumberSAMPLE Source 031Link 031Remarks111111 Jeep Willys TEST1440005500011000U.S.A.11000012766617666-S1.6061940-1945ContractnumberSAMPLE Source 028Link 028Remarks111111 End of the displayed data from the database. Credits and Sources: The data used to create this estimator came from the following sources. Therefore credits to people and organizations such as: Army Vehicle Marking . com © (The Netherlands) – https://armyvehiclemarking.com/ ExpODe by FDY Design © (The Netherlands) – http://expode.nl/ TheLiberator . be – by Johan (Belgium) Team – Classic Military Automotive (U.S.A.) – as inspiration for their design of the Jeep Hood Estimator All American Wonder: Volumes 1&2. Author Ray Cowdery MVPA Judging Standard – GPW. Authors Bill Kish & Lloyd White The Military Jeep: MB/GPW. Author Lawrence Nabholtz Field, Maintenance and Service Manual’s like the AR/FM/TM’s for Motorcycles, Trucks and Tanks Copies of these publications can be purchased from the MVPA (Military Vehicle Preservation Association) for example. © The Dynamic WWII Army Bonnet/Census/Hood ESTIMATOR © ArmyVehicleMarking.com © a FDY Design © // ... SCRIPT - START OF PART LOAD XLSX DATA ... let workbook; // Variable to store the workbook for later use function readAndDisplayData(e) { const fileInput = document.getElementById('dynamic-link'); const customUrlInput = document.getElementById('custom-url'); const file = fileInput.files[0]; const customUrl = customUrlInput.value.trim(); if (file || customUrl) { const loadWorkbook = (data) => { workbook = XLSX.read(new Uint8Array(data), { type: 'array' }); const sheetName = workbook.SheetNames[0]; const sheet = workbook.Sheets[sheetName]; // Check if the first sheet is named "Sheet1" const firstSheetName = workbook.SheetNames[0]; const sheetNameToUse = (firstSheetName === 'Sheet1') ? firstSheetName : 'Sheet1'; const sheetToUse = workbook.Sheets[sheetNameToUse]; // Display all data from the selected sheet displayAllData(sheetToUse); // Load VEHbrand options after reading data loadVehBrandOptions(sheetToUse); }; if (file) { const reader = new FileReader(); reader.onload = function (event) { const data = new Uint8Array(event.target.result); loadWorkbook(data); }; reader.readAsArrayBuffer(file); } else if (customUrl) { // Use the custom URL fetch(customUrl) .then(response => response.arrayBuffer()) .then(data => loadWorkbook(data)) .catch(error => showError("Error fetching data from custom URL")) .finally(() => resetCalculation()); } } else { showError("Select a file or enter a custom URL."); } // To prevent form submission if (e) { e.preventDefault(); } } // ... SCRIPT - END OF PART LOAD XLSX DATA ... // Add more functions as needed // ... RESET - URL ... // Function to reset the file input function resetFileInput() { document.getElementById('dynamic-link').value = ""; document.getElementById('custom-url').value = ""; } // ... RESET - CALCULATOR ... // Function to reset the calculation result function resetCalculation() { document.getElementById('chassis-number').value = ""; document.getElementById('result').textContent = ""; showError(""); // Clear error message } // ... SCRIPT - DISPLAY ALL DATA ... function displayAllData(sheet) { const table = document.getElementById('excel-data'); table.innerHTML = ""; const data = XLSX.utils.sheet_to_json(sheet, { header: 1 }); const thead = document.createElement('thead'); const headerRow = document.createElement('tr'); // ... SCRIPT - DISPLAY 16-C1 ... // Display only the first 16 columns in the header for (let i = 0; i < Math.min(16, data[0].length); i++) { const th = document.createElement('th'); th.textContent = data[0][i]; headerRow.appendChild(th); } thead.appendChild(headerRow); table.appendChild(thead); const tbody = document.createElement('tbody'); for (let i = 1; i < data.length; i++) { const row = document.createElement('tr'); row.classList.add('data-row'); // Add class to identify data rows // ... SCRIPT - DISPLAY 16-C2 ... // Display only the first 16 columns in each row for (let j = 0; j < Math.min(16, data[i].length); j++) { const td = document.createElement('td'); td.textContent = data[i][j]; row.appendChild(td); } tbody.appendChild(row); } table.appendChild(tbody); } // ... SCRIPT - LOAD VEHbrand ... function loadVehBrandOptions(sheet) { const vehBrandSelect = document.getElementById('vehbrand'); const vehBrandColumn = 'VEHbrand'; const vehBrandOptions = getUniqueValues(sheet, vehBrandColumn); vehBrandSelect.innerHTML = ""; vehBrandOptions.forEach(option => { const optionElement = document.createElement('option'); optionElement.value = option; optionElement.textContent = option; vehBrandSelect.appendChild(optionElement); }); loadVehTypeOptions(); // Load VEHtype options after reading data and VEHbrand options } // ... SCRIPT - LOAD VEHtype ... function loadVehTypeOptions() { const vehBrandSelect = document.getElementById('vehbrand'); const selectedBrand = vehBrandSelect.value; if (selectedBrand) { const vehTypeSelect = document.getElementById('vehtype'); const sheetName = workbook.SheetNames[0]; const sheet = workbook.Sheets[sheetName]; const vehTypeColumn = 'VEHtype'; const vehTypeOptions = getUniqueValues(sheet, vehTypeColumn, { filterColumn: 'VEHbrand', filterValue: selectedBrand }); vehTypeSelect.innerHTML = ""; vehTypeOptions.forEach(option => { const optionElement = document.createElement('option'); optionElement.value = option; optionElement.textContent = option; vehTypeSelect.appendChild(optionElement); }); filterDataBySelection(); // Filter data based on selected VEHbrand and VEHtype } } // ... SCRIPT - GET DATA ... function getUniqueValues(sheet, column, options = {}) { const { filterColumn, filterValue } = options; const data = XLSX.utils.sheet_to_json(sheet, { header: 1 }); const columnIdx = data[0].indexOf(column); const filterIdx = filterColumn ? data[0].indexOf(filterColumn) : -1; const uniqueValues = new Set(); for (let i = 1; i < data.length; i++) { if ((!filterColumn || data[i][filterIdx] === filterValue) && data[i][columnIdx]) { uniqueValues.add(data[i][columnIdx]); } } return [...uniqueValues].sort(); } // ... SCRIPT - FILTER DATA ... function filterDataBySelection() { const selectedBrand = document.getElementById('vehbrand').value; const selectedType = document.getElementById('vehtype').value; const dataRows = document.querySelectorAll('.data-row'); dataRows.forEach(row => { const brandCell = row.cells[0].textContent; const typeCell = row.cells[1].textContent; if (selectedBrand === "Show all" || brandCell === selectedBrand) { row.classList.remove('hidden'); if (selectedType !== "Show all" && typeCell !== selectedType) { row.classList.add('hidden'); } } else { row.classList.add('hidden'); } }); } // ... SCRIPT - CALCULATOR ... function calculateEstArmNo() { const chassisNumber = parseInt(document.getElementById('chassis-number').value); const vehBrandSelect = document.getElementById('vehbrand'); const vehTypeSelect = document.getElementById('vehtype'); const selectedBrand = vehBrandSelect.value; const selectedType = vehTypeSelect.value; const sheetName = workbook.SheetNames[0]; const sheet = workbook.Sheets[sheetName]; const vehBrandColumn = 'VEHbrand'; const vehTypeColumn = 'VEHtype'; const vehRowColumn = 'VEHrow'; const chassisStartColumn = 'CHASSISstart'; const chassisEndColumn = 'CHASSISend'; const hoodStartColumn = 'HOODstart'; const hoodEndColumn = 'HOODend'; const data = XLSX.utils.sheet_to_json(sheet, { header: 1 }); for (let i = 1; i < data.length; i++) { const currentBrand = data[i][data[0].indexOf(vehBrandColumn)]; const currentType = data[i][data[0].indexOf(vehTypeColumn)]; const currentRow = data[i][data[0].indexOf(vehRowColumn)]; const chassisStart = parseInt(data[i][data[0].indexOf(chassisStartColumn)]); const chassisEnd = parseInt(data[i][data[0].indexOf(chassisEndColumn)]); const hoodStart = parseInt(data[i][data[0].indexOf(hoodStartColumn)]); const hoodEnd = parseInt(data[i][data[0].indexOf(hoodEndColumn)]); if (currentBrand === selectedBrand && currentType === selectedType) { if (chassisNumber >= chassisStart && chassisNumber <= chassisEnd && chassisNumber > 0) { const chassisCounted = chassisNumber - chassisStart; const hoodCounted = hoodEnd - hoodStart; const hoodFactChassis = (hoodEnd - hoodStart) / (chassisEnd - chassisStart); const chassisFact = hoodFactChassis * chassisCounted; const estArmNo = Math.round(chassisFact + hoodStart); showError(""); // Clear previous error message document.getElementById('result').textContent = "YOUR Estimated Army/Bonnet/Hood Number = " + estArmNo; return; } } } if (chassisNumber <= 0) { showError("Chassis number seems <= 0"); } else { showError("Hood Number not found, Chassis number seems not correct."); } } function showError(message) { const errorMessage = document.getElementById('error-message'); errorMessage.textContent = message; }