// Regex patterns
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
var phonePattern = /^\(\d{3}\)\s\d{3}-\d{4}/;
var postalCodePattern = /^[A-Za-z]\d[A-Za-z][ -]?\d[A-Za-z]\d$/;
var civicNumberPattern = /^\d{1,5}([A-Z])?$/;
/**
* Used to add an Email match validator
* @param {String} primaryemail
* @param {String} confirmemail
* @param {Object} errorMessage
*/
function addEmailMatchValidator(primaryemail, confirmemail, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.EmailMatchMessage.fr : ErrorMessages.EmailMatchMessage.en;
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = confirmemail+"MatchValidator";
newValidator.controltovalidate = confirmemail;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
// check if primary email matches confirm email
if ($('#'+primaryemail).val() == $('#'+confirmemail).val()) {
return true;
} else {
return false;
}
};
Page_Validators.push(newValidator);
}
/**
* Used to add an Email format validator
* @param {String} fieldname
*/
function addEmailFormatValidator(fieldname, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.EmailFormatMessage.fr : ErrorMessages.EmailFormatMessage.en;
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname+"FormatValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
// check if email is valid
var emailValue = $('#' + fieldname).val();
if(!emailValue || (emailValue && emailValue.length > 0 && emailPattern.test(emailValue))) {
return true;
} else {
return false;
}
};
Page_Validators.push(newValidator);
}
/**
* Used to add an Numeric format validator
* @param {String} fieldname
* @param {Object} errorMessage
*/
function addNumericFormatValidator(fieldname, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.NumericFormatMessage.fr : ErrorMessages.NumericFormatMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname+"NumericValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
// check if field is numeric
var fieldValue = $('#' + fieldname).val();
if(!fieldValue || (fieldValue && isNumeric(fieldValue) && parseInt(fieldValue) >= 0 && parseInt(fieldValue) <= 999999999)) {
return true;
} else {
return false;
}
};
Page_Validators.push(newValidator);
}
/**
* Used to add minimum length validation
* @param {String} fieldname
* @param {Number} length
* @param {Object} errorMessage
*/
function addMinLengthValidator(fieldname, length, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.MinLengthMessage.fr : ErrorMessages.MinLengthMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
validationMessage = validationMessage.replace('', length);
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname+"MinLengthValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
// check if email is valid
var fieldValue = $('#' + fieldname).val();
if(fieldValue.length >= length) {
return true;
} else {
return false;
}
};
Page_Validators.push(newValidator);
}
/**
* Used to add maximum length validation
* @param {String} fieldname
* @param {Number} length
* @param {Object} errorMessage
*/
function addMaxLengthValidator(fieldname, length, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.MaxLengthMessage.fr : ErrorMessages.MaxLengthMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
validationMessage = validationMessage.replace('', length);
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname+"MaxLengthValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
// check lenght smaller than max length
var fieldValue = $('#' + fieldname).val();
if(fieldValue.length <= length) {
return true;
} else {
return false;
}
};
Page_Validators.push(newValidator);
}
/**
* Used to add regex validation
* @param {String} fieldname
* @param {String} type * the type can be phone, email
* @param {Number} regex
* @param {Object} errorMessage
*/
function addRegexValidator(fieldname, type, customRegex, errorMessage) {
var lang = $("#langCode").val();
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
}
if (typeof (Page_Validators) == 'undefined') return;
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname+"RegexValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
// check if email is valid
var fieldValue = $('#' + fieldname).val();
if(type == 'phone') { customRegex = phonePattern; }
if(type == 'postal') { customRegex = postalCodePattern; }
if(fieldValue.length == 0 || fieldValue.match(customRegex)) {
return true;
} else {
return false;
}
};
Page_Validators.push(newValidator);
}
/**
* Used to add an Required match validator
* @param {String} fieldname
* @param {Boolean} isDate
* @param {Object} errorMessage
*/
function addRequiredValidator(fieldname, isDate = false, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredMessage.fr : ErrorMessages.RequiredMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = "RequiredFieldValidator" + fieldname;
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
var value = $("#"+ fieldname).val();
if (value == null || value == "") {
return false;
} else {
return true;
}
};
$('#' + fieldname).prop('required',true);
$('#' + fieldname + '_label').closest('.table-info').addClass('required');
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate that there is a selected element for a N to N multiselect input
* @param {String} fieldname
* @param {String} fieldToCheck
* @param {Object} errorMessage
*/
function addRequiredNtoNValidator(fieldname, fieldToCheck, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredNtoNMessage.fr : ErrorMessages.RequiredNtoNMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname + "Validator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
return $('#'+ fieldToCheck).find(':selected').length > 0;
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate that there is a selected element for a N to N multiselect input
* @param {String} fieldname
* @param {String} fieldToCheck
* @param {Object} errorMessage
*/
function addRequiredCheckboxGroupValidator(fieldname, fieldsContainer, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredNtoNMessage.fr : ErrorMessages.RequiredNtoNMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname + "CheckboxGroupValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
return $('#'+ fieldsContainer).find(':checked').length > 0;
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate that there is at least one element added in the subgrid
* @param {String} fieldname
* @param {Object} errorMessage
*/
function addMinimumSubgridElementValidator(fieldname, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.MinimumSubgridElementMessage.fr : ErrorMessages.MinimumSubgridElementMessage.en;
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname + "MinimumValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
var amount = $('#' + fieldname).find('.view-grid').find('tbody').children().length;
if(amount > 0) {
return true;
} else {
return false;
}
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate the date is greater or lower then the given date
* @param {String} testDate
* @param {boolean} isToday
* @param {String} compareDate date with format YYYY/MM/DD
* @param {Object} errorMessage
*/
function addDateCompareValidator(testDate, isToday, compareDate, isBigger = true, errorMessage, comparefieldName) {
var lang = $("#langCode").val();
var fieldLabel = testDate.replace('_datepicker_description', '') + "_label";
var validationMessage = "";
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
else {
if(isToday && isBigger) {
validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateCurrentGreater.fr : ErrorMessages.DateCurrentGreater.en;
}
else if(isToday && !isBigger) {
validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateCurrentLower.fr : ErrorMessages.DateCurrentLower.en;
}
else if(!isToday && isBigger) {
validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateGreater.fr : ErrorMessages.DateGreater.en;
}
else if(!isToday && !isBigger) {
validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateLower.fr : ErrorMessages.DateLower.en;
}
validationMessage = validationMessage.replace('', $('#' + fieldLabel).text());
validationMessage = validationMessage.replace('', comparefieldName);
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = testDate + "DateCompareValidator";
newValidator.controltovalidate = testDate;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
if(!$('#' + testDate).val()) {
return true;
}
var m_Date = $('#' + testDate).val();
m_Date = m_Date.substring(0, m_Date.indexOf("T"));
var m_CompareDate = isToday ? moment() : moment(compareDate, 'DD/MM/YYYY');
if((isBigger ? moment(m_Date).isAfter(m_CompareDate.format('YYYY-MM-DD')): moment(m_Date).isBefore(m_CompareDate.format('YYYY-MM-DD')))) {
return true;
} else {
return false;
}
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate the date is greater or lower then the given date
* @param {String} testDate
* @param {boolean} isToday
* @param {String} compareDate date with format YYYY/MM/DD
* @param {Object} errorMessage
*/
function addDateEqualCompareValidator(testDate, isToday, compareDate, isBigger = true, errorMessage, comparefieldName) {
var lang = $("#langCode").val();
var fieldLabel = testDate.replace('_datepicker_description', '') + "_label";
var validationMessage = "";
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
else {
if(isToday && isBigger) {
validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateCurrentGreaterEqual.fr : ErrorMessages.DateCurrentGreaterEqual.en;
}
else if(isToday && !isBigger) {
validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateCurrentLowerEqual.fr : ErrorMessages.DateCurrentLowerEqual.en;
}
else if(!isToday && isBigger) {
validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateGreaterEqual.fr : ErrorMessages.DateGreaterEqual.en;
}
else if(!isToday && !isBigger) {
validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.DateLowerEqual.fr : ErrorMessages.DateLowerEqual.en;
}
validationMessage = validationMessage.replace('', $('#' + fieldLabel).text());
validationMessage = validationMessage.replace('', comparefieldName);
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = testDate + "DateEqualCompareValidator";
newValidator.controltovalidate = testDate;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
if(!$('#' + testDate).val()) {
return true;
}
var m_Date = $('#' + testDate).val();
m_Date = m_Date.substring(0, m_Date.indexOf("T"));
var m_CompareDate = isToday ? moment() : moment(compareDate, 'DD/MM/YYYY');
if((isBigger ? moment(m_Date).isSameOrAfter(m_CompareDate.format('YYYY-MM-DD')): moment(m_Date).isSameOrBefore(m_CompareDate.format('YYYY-MM-DD')))) {
return true;
} else {
return false;
}
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate the end date is after the start date
* @param {String} beginDate
* @param {String} endDate
* @param {Object} errorMessage
*/
function addEndDateValidator(beginDate, endDate, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.EndDateMessage.fr : ErrorMessages.EndDateMessage.en;
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = endDate + "DateValidator";
newValidator.controltovalidate = endDate;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
var m_StartDate = $('#' + beginDate).val();
var m_EndDate = $('#' + endDate).val();
if(moment(m_EndDate, 'DD/MM/YYYY').isAfter(moment(m_StartDate, 'DD/MM/YYYY')) || moment(m_EndDate, 'DD/MM/YYYY').isSame(moment(m_StartDate, 'DD/MM/YYYY'))) {
return true;
} else {
return false;
}
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate the end time is after the start time
* @param {String} beginTime
* @param {String} endTime
* @param {Object} errorMessage
*/
function addEndTimeValidator(beginTime, endTime, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.EndTimeMessage.fr : ErrorMessages.EndTimeMessage.en;
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = endTime + "TimeValidator";
newValidator.controltovalidate = endTime;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
var m_StartTime = $('#' + beginTime).val();
var m_EndTime = $('#' + endTime).val();
if(moment(m_EndTime, 'hh:mm').isAfter(moment(m_StartTime, 'hh:mm'))) {
return true;
} else {
return false;
}
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
// Validator that check if there is at least a certain amount of valid radio set to 'YES'
/**
* Used to validate the end time is after the start time
* The groupId is the id of the element on which to append the error message, leave blank if none by default we get
* the parent fieldset of the first field
* @param {String} groupId /
* @param {Array} fieldnames
* @param {Number} minAmount
* @param {Object} errorMessage
*/
function addMinimumRadioGroupValidator(groupId, fieldnames, minAmount, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.MinimumRadioGroupMessage.fr : ErrorMessages.MinimumRadioGroupMessage.en;
validationMessage = validationMessage.replace('', minAmount);
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
var referenceID = groupId && groupId.length > 0 ? 'group_' + groupId : fieldnames[0].replace('$', '');
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldnames[0] + "MinimumGroupValidator";
newValidator.controltovalidate = fieldnames[0];
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
if(fieldnames.length > 0) {
var counter = 0;
for (i=0; i < fieldnames.length; i++) {
var checkedValue = $("input:radio[name$='" + fieldnames[i].replace('$', '') + "']:checked").val();
if(checkedValue == 1) {
counter++;
}
}
if(counter >= minAmount) {
return true;
}
else {
return false;
}
}
else {
return true;
}
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate the file size
* @param {String} fieldname
* @param {Number} filesize
* @param {Object} errorMessage
*/
function addFileSizeValidator(fieldname, filesize, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.FileSizeMessage.fr : ErrorMessages.FileSizeMessage.en;
validationMessage = validationMessage.replace('', filesize);
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname + "FileSizeValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
if($('#' + fieldname + '_input_file').val()) {
var size = $('#'+ fieldname + '_input_file')[0].files[0].size/1024/1024; //count file size in "mb"
if(size >= filesize) {
return false;
}
}
return true;
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate the file type
* @param {String} fieldname
* @param {array} filetypes
* @param {Object} errorMessage
*/
function addFileTypeValidator(fieldname, filetypes, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.FileFormatMessage.fr : ErrorMessages.FileFormatMessage.en;
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname + "FileTypeValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
if($('#' + fieldname + '_input_file').val()) {
var resultid = $('#' + fieldname + '_input_file').val().split(".");
var currentType = resultid [resultid.length-1]; // get file type
var index = filetypes.findIndex(x => x == currentType.toLowerCase());
if(index < 0) {
return false
}
}
return true;
};
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to add an Required match validator
* @param {String} fieldname
* @param {Object} errorMessage
*/
function addRequiredFileValidator(fieldname, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredMessage.fr : ErrorMessages.RequiredMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
// Create new validator
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = "RequiredFieldFileValidator" + fieldname;
newValidator.controltovalidate = fieldname + 'input';
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = ""; // Set this if you have set ValidationGroup on the form
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
var value = $("#"+ fieldname + "hidden_filename").val();
if (value && value.length > 0) {
return true;
} else {
return false;
}
};
$('#' + fieldname + 'input_file').prop('required',true);
$('#' + fieldname + '_label').closest('.table-info').addClass('required');
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
/**
* Used to validate boolean input
* @param {String} fieldname
* @param {String} expectedValue
* @param {Object} errorMessage
*/
function addBooleanValidator(fieldname, expectedValue, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.RequiredMessage.fr : ErrorMessages.RequiredMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof (Page_Validators) == 'undefined') return;
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname+"BooleanValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
// check current value equal expected value
var fieldValue = $(`input[name$="${fieldname}"]:checked`).val();
if(fieldValue == expectedValue) {
return true;
} else {
return false;
}
};
Page_Validators.push(newValidator);
}
function addIPValidator(fieldname, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1 ? ErrorMessages.IPMessage.fr : ErrorMessages.IPMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
if(errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname+"IPValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage = ""+ validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
var ip = GetUserIP();
if(!ip) {
return false;
}
$('#' + fieldname).val(ip);
return true;
}
// Add the new validator to the page validators array:
Page_Validators.push(newValidator);
}
// * Ajoute une validation pour numéro civique : jusqu’à 5 chiffres + optionnelle lettre majuscule
/**
* @param {String} fieldname
* @param {Object} errorMessage
*/
function addCivicNumberValidator(fieldname, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang === 'fr-FR'
? ErrorMessages.CivicNumberMessage.fr
: ErrorMessages.CivicNumberMessage.en;
validationMessage = validationMessage.replace('', $('#' + fieldname + '_label').text());
if (errorMessage) {
validationMessage = lang === 'fr-FR' ? errorMessage.fr : errorMessage.en;
}
if (typeof(Page_Validators) === 'undefined') return;
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = fieldname + "CivicNumberValidator";
newValidator.controltovalidate = fieldname;
newValidator.errormessage =
"" +
validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
var value = $("#" + fieldname).val();
return civicNumberPattern.test(value);
};
Page_Validators.push(newValidator);
}
/**
* Remove email matching validation
* @param {String} primaryemail
*/
function removeEmailMatchValidator(confirmemail) {
var index = Page_Validators.findIndex(x => x.id == confirmemail + "MatchValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove email format validation
* @param {String} primaryemail
*/
function removeEmailFormatValidator(primaryemail) {
var index = Page_Validators.findIndex(x => x.id == primaryemail + "FormatValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove numeric format validation
* @param {String} fieldname
*/
function removeNumericFormatValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "NumericValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove regex validation
* @param {String} fieldname
*/
function removeRegexValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "RegexValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove required validation
* @param {String} fieldname
*/
function removeValidators(fieldname) {
var index = Page_Validators.findIndex(x => x.id == "RequiredFieldValidator" + fieldname);
if (index > -1) {
Page_Validators.splice(index, 1);
}
$('#' + fieldname).prop('required',false);
$('#' + fieldname + '_label').closest('.table-info').removeClass('required');
}
/**
* Remove minimum subgrid element validation
* @param {String} fieldname
*/
function removeMinimumSubgridElementValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "MinimumValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove minimum radio group element validation
* @param {String} fieldname
*/
function removeMinimumRadioGroupValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "MinimumGroupValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove date compare validator
* @param {String} fieldname
*/
function removeDateCompareValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "DateCompareValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove date equal compare validator
* @param {String} fieldname
*/
function removeDateEqualCompareValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "DateEqualCompareValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove end date validator
* @param {String} endDate
*/
function removeEndDateValidator(endDate) {
var index = Page_Validators.findIndex(x => x.id == endDate + "DateValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove end time validator
* @param {String} endTime
*/
function removeEndTimeValidator(endTime) {
var index = Page_Validators.findIndex(x => x.id == endTime + "TimeValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove min length validator
* @param {String} fieldname
*/
function removeMinLengthValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "MinLengthValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove max length validator
* @param {String} fieldname
*/
function removeMaxLengthValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "MaxLengthValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove File Size validator
* @param {String} fieldname
*/
function removeFileSizeValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "FileSizeValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove File Type validator
* @param {String} fieldname
*/
function removeFileTypeValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "FileTypeValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove File Required validator
* @param {String} fieldname
*/
function removeFileRequiredValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "RequiredFieldFileValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove Boolean validator
* @param {String} fieldname
*/
function removeBooleanValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "BooleanValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Remove civic validator
* @param {String} fieldname
*/
function removeCivicNumberValidator(fieldname) {
var index = Page_Validators.findIndex(x => x.id == fieldname + "CivicNumberValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}
/**
* Used to validate the end time is after the start time
* @param {String} email
*/
function validateEmail(email) {
var emailValue = $('#' + email).val();
// Clear all validations message and styling
$('#' + email).removeClass('is-invalid');
$('#error_' + email).remove();
// Validate the email format
if(!emailPattern.test(emailValue)) {
$('#' + email).addClass("is-invalid");
$('#' + email).closest('.control').after(`
Le format du courriel est incorrect.
`);
}
}
/**
* Used to validate if a string is numeric
* @param {String} str
*/
function isNumeric(str) {
if (typeof str != "string") return false // we only process strings!
return !isNaN(str) && // use type coercion to parse the _entirety_ of the string (`parseFloat` alone does not do this)...
!isNaN(parseFloat(str)) // ...and ensure strings of whitespace fail
}
function addLogistiqueValidator(fieldnameToAnchor, errorMessage) {
var lang = $("#langCode").val();
var validationMessage = lang.indexOf('fr') > -1
? "Au moins 1 choix doit être sélectionné parmi les choix disponibles."
: "";
if (errorMessage) {
validationMessage = lang.indexOf('fr') > -1 ? errorMessage.fr : errorMessage.en;
}
if (typeof(Page_Validators) === 'undefined') return;
var newValidator = document.createElement('span');
newValidator.style.display = "none";
newValidator.id = "logistiqueValidator";
newValidator.controltovalidate = fieldnameToAnchor;
newValidator.errormessage =
"" +
validationMessage + "";
newValidator.validationGroup = "";
newValidator.initialvalue = "";
newValidator.evaluationfunction = function () {
const logistiqueChecked = $("input[name$='$form_impactlogistique']:checked").val() === '1';
const emplacementVal = sessionStorage.getItem("form_typeemplacement");
if (!(logistiqueChecked && emplacementVal == 0)) return true;
const vehicules = $('#form_nbvehicules').val().trim();
const navettes = $('#form_nbnavettes').val().trim();
const salleAppui = $("input[name$='$form_utilisationsalleappui']:checked").val() === '1';
return vehicules !== "" || navettes !== "" || salleAppui;
};
Page_Validators.push(newValidator);
}
function removeLogistiqueValidator() {
const index = Page_Validators.findIndex(x => x.id === "logistiqueValidator");
if (index > -1) {
Page_Validators.splice(index, 1);
}
}