$.validator.setDefaults({ ignore: ":hidden:not(.fxt-captcha)" });
/**
* Google Recaptcha
*/
var reCaptchaArray = reCaptchaArray || [];
$.validator.unobtrusive.adapters.add("recaptcha", function (options) {
options.rules["recaptcha"] = true;
if (options.message) {
options.messages["recaptcha"] = options.message;
}
});
$.validator.addMethod("recaptcha", function (value, element, exclude) {
return true;
});
var recaptchasRendered = false;
var loadReCaptchas = function () {
for (var i = 0; i < reCaptchaArray.length; i++) {
var reCaptcha = reCaptchaArray[i];
if (reCaptcha.IsRendered === undefined) {
reCaptcha.IsRendered = true;
reCaptcha();
}
}
};
/**
* File upload Content Type
*/
$.validator.unobtrusive.adapters.addSingleVal("contenttype", "allowedcontenttypes");
$.validator.addMethod("contenttype", function (value, element, allowedcontenttypes) {
if (!this.optional(element)) {
for (var i = 0; i < element.files.length; i++) {
if (allowedcontenttypes.indexOf(element.files[i].type) < 0) {
return false;
}
}
}
return true;
});
/**
* File upload File Size
*/
$.validator.unobtrusive.adapters.addSingleVal("filesize", "maxfilesize");
$.validator.addMethod("filesize", function (value, element, maxfilesize) {
if (!this.optional(element)) {
for (var i = 0; i < element.files.length; i++) {
if (element.files[i].size > maxfilesize) {
return false;
}
}
}
return true;
});
// Date Time Span Validator
["timespan", "tsminagedate", "tsfuturedate", "tspastdate"].forEach(validationType =>{
$.validator.unobtrusive.adapters.add(validationType, ['min', 'max', 'unit'], function(options) {
options.rules[validationType] = [options.params.min, options.params.max, options.params.unit];
options.messages[validationType] = options.message;
});
$.validator.addMethod(validationType, function (value, element, params) {
if (!this.optional(element)) {
var unit = params[2];
var minvalue = params[0];
var maxvalue = params[1];
var valueToValidate = 0;
switch (unit) {
case 'days':
valueToValidate = getDays(value);
break;
case 'months':
valueToValidate = getMonths(value);
break;
case 'years':
valueToValidate = getYears(value);
break;
}
var isValid = true;
if (typeof minvalue !== 'undefined' && valueToValidate < minvalue)
isValid = false;
if (typeof maxvalue !== 'undefined' && valueToValidate > maxvalue)
isValid = false;
return isValid;
}
return true;
});
})
/*
$.validator.unobtrusive.adapters.add('timespan', ['min', 'max', 'unit'], function(options) {
options.rules['timespan'] = [options.params.min, options.params.max, options.params.unit];
options.messages['timespan'] = options.message;
});
$.validator.addMethod("timespan", timespanValidatorFunction);*/
function getDays(date) {
var today = new Date();
return Math.floor((today - new Date(date)) / (1000 * 60 * 60 * 24));
}
function getYears(date) {
var today = new Date();
var diffYears = today.getFullYear() - new Date(date).getFullYear();
var temp = today;
temp.setFullYear(temp.getFullYear() - diffYears);
if (new Date(date) > temp)
diffYears--;
return diffYears;
}
function getMonths(date) {
var today = new Date();
var d = new Date(date);
return (today.getFullYear() - d.getFullYear()) * 12 + today.getMonth() - d.getMonth();
}