document.body.className = ((document.body.className) ? document.body.className + ' js-enabled' : 'js-enabled');
function onFormSubmit() {
event.preventDefault();
}
function searchCertificate() {
try{
const getElement = (id) => document.getElementById(id);
const addErrorClass = (element) => element.classList.add('govuk-input--error');
const removeErrorClass = (element) => element.classList.remove('govuk-input--error');
const documentId = getElement("documentId");
const birthDay = getElement("dob-day");
const birthMonth = getElement("dob-month");
const birthYear = getElement("dob-year");
const docIdDiv = getElement("div-docid");
const dobDiv = getElement("div-dob");
const ulClass = document.getElementsByClassName("govuk-error-summary__list")[0];
docIdDiv.classList.remove('govuk-form-group--error');
dobDiv.classList.remove('govuk-form-group--error');
removeErrorClass(documentId);
removeErrorClass(birthDay);
removeErrorClass(birthMonth);
removeErrorClass(birthYear);
ulClass.innerHTML = '';
let showErrorDiv = false;
let isChildErrorLogCreated = false;
let listInnerHTML = '';
const createErrorEntry = (element, message) => {
showErrorDiv = true;
const entry = document.createElement('li');
entry.innerHTML = `${message}`;
ulClass.appendChild(entry);
};
const createErrorChildElement = (message) => {
isChildErrorLogCreated = true;
const pTag = getElement("dob-error") || document.createElement('p');
pTag.className = "govuk-error-message";
pTag.id = 'dob-error';
pTag.innerHTML = `Error: ${message}`;
dobDiv.classList.add('govuk-form-group--error');
dobDiv.children[0].firstElementChild.before(pTag);
return true;
};
const validateEmptyField = (element, message) => {
if (element.value === "") {
createErrorEntry(element, `Enter ${message}`);
addErrorClass(element);
if (!isChildErrorLogCreated) {
isChildErrorLogCreated = createErrorChildElement(`Enter ${message}`);
}
} else {
const errorElement = getElement(`${element.id}-error`);
if (errorElement !== null) {
errorElement.parentNode.removeChild(errorElement);
}
}
};
if(documentId.value == ""){
createErrorEntry(documentId,'Enter the document ID');
let pDocumentTag = document.getElementById("documentId-error");
if(pDocumentTag == null){
pDocumentTag = document.createElement('p');
pDocumentTag.className = "govuk-error-message";
pDocumentTag.id = 'documentId-error';
pDocumentTag.innerHTML = 'Error: Enter the document ID';
docIdDiv.insertBefore(pDocumentTag,docIdDiv.children[1]);
}
docIdDiv.classList.add('govuk-form-group--error');
documentId.classList.add('govuk-input--error');
}
else{
if(document.getElementById("documentId-error") != null){
document.getElementById("documentId-error").parentNode.removeChild(document.getElementById("documentId-error"));
}
}
validateEmptyField(birthDay, 'a day');
validateEmptyField(birthMonth, 'a month');
validateEmptyField(birthYear, 'a year');
if (birthDay.value != "" && birthMonth.value != "" && birthYear.value != "") {
const birthDate = `${birthYear.value}-${birthMonth.value}-${birthDay.value}`;
if (!isValidDate(birthYear.value, birthMonth.value, birthDay.value)) {
createErrorEntry(dobDiv, 'Please enter a valid date of birth');
if (!isChildErrorLogCreated) {
isChildErrorLogCreated = createErrorChildElement('Please enter a valid date of birth');
}
}
else{
const dob = new Date(parseInt(birthYear.value), parseInt(birthMonth.value) - 1, parseInt(birthDay.value));
const currentDate = new Date();
if (dob > currentDate) {
createErrorEntry(dobDiv, 'Please enter a date of birth from the past');
if (!isChildErrorLogCreated) {
isChildErrorLogCreated = createErrorChildElement('Please enter a date of birth from the past');
}
}
else{
if(document.getElementById("dob-error") != null){
document.getElementById("dob-error").parentNode.removeChild(document.getElementById("dob-error"));
}
}
if(!showErrorDiv){
let url = /Certificate-Search-Results/ +'?documentId=' +encodeURIComponent(documentId.value) +'&date=' + encodeURIComponent(birthDate);
window.open(url, '_self');
}
}
}
else {
createErrorEntry(dobDiv, 'Please enter a valid date of birth');
if (!isChildErrorLogCreated) {
isChildErrorLogCreated = createErrorChildElement('Please enter a valid date of birth');
}
}
getElement("errorDiv").style.display = showErrorDiv ? "block" : "none";
}
catch(err){
console.log(err.message);
}
}
function isValidDate(year,month,day) {
try{
const date = `${year}-${month}-${day}`;
const datePattern = /^([12]\d{3}-(0?[1-9]|1[0-2])-(0?[1-9]|[12]\d|3[01]))/;
const matchArray = date.match(datePattern);
if (matchArray === null) {
return false;
}
const dateString = date.replace(/\D/g, '');
const parsedYear = parseInt(year);
const parsedMonth = parseInt(month);
const parsedDay = parseInt(day);
const daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (parsedYear % 400 === 0 || (parsedYear % 100 !== 0 && parsedYear % 4 === 0)) {
daysInMonth[1] = 29;
}
if (parsedMonth < 1 || parsedMonth > 12 || parsedDay < 1 || parsedDay > daysInMonth[parsedMonth - 1]) {
return false;
}
return true;
}
catch(err){
console.log(err.message);
return false;
}
}