1$.validator.setDefaults({ ignore: ":hidden:not(.fxt-captcha)" }); 2 3/** 4 * Google Recaptcha 5 */ 6var reCaptchaArray = reCaptchaArray || []; 7$.validator.unobtrusive.adapters.add("recaptcha", function (options) { 8 options.rules["recaptcha"] = true; 9 if (options.message) { 10 options.messages["recaptcha"] = options.message; 11 } 12}); 13 14$.validator.addMethod("recaptcha", function (value, element, exclude) { 15 return true; 16}); 17var recaptchasRendered = false; 18var loadReCaptchas = function () { 19 for (var i = 0; i < reCaptchaArray.length; i++) { 20 var reCaptcha = reCaptchaArray[i]; 21 if (reCaptcha.IsRendered === undefined) { 22 reCaptcha.IsRendered = true; 23 reCaptcha(); 24 } 25 } 26}; 27 28/** 29 * File upload Content Type 30 */ 31$.validator.unobtrusive.adapters.addSingleVal("contenttype", "allowedcontenttypes"); 32 33$.validator.addMethod("contenttype", function (value, element, allowedcontenttypes) { 34 if (!this.optional(element)) { 35 for (var i = 0; i < element.files.length; i++) { 36 if (allowedcontenttypes.indexOf(element.files[i].type) < 0) { 37 return false; 38 } 39 } 40 } 41 return true; 42}); 43 44/** 45 * File upload File Size 46 */ 47$.validator.unobtrusive.adapters.addSingleVal("filesize", "maxfilesize"); 48$.validator.addMethod("filesize", function (value, element, maxfilesize) { 49 if (!this.optional(element)) { 50 for (var i = 0; i < element.files.length; i++) { 51 if (element.files[i].size > maxfilesize) { 52 return false; 53 } 54 } 55 } 56 return true; 57}); 58 59// Date Time Span Validator 60 61$.validator.unobtrusive.adapters.add('timespan', ['min', 'max', 'unit'], function(options) { 62 options.rules['timespan'] = [options.params.min, options.params.max, options.params.unit]; 63 options.messages['timespan'] = options.message; 64}); 65 66 67$.validator.addMethod("timespan", function (value, element, params) { 68 if (!this.optional(element)) { 69 var unit = params[2]; 70 var minvalue = params[0]; 71 var maxvalue = params[1]; 72 73 var valueToValidate = 0; 74 75 switch (unit) { 76 case 'days': 77 valueToValidate = getDays(value); 78 break; 79 case 'months': 80 valueToValidate = getMonths(value); 81 break; 82 case 'years': 83 valueToValidate = getYears(value); 84 break; 85 } 86 87 var isValid = true; 88 89 if (typeof minvalue !== 'undefined' && valueToValidate < minvalue) 90 isValid = false; 91 92 if (typeof maxvalue !== 'undefined' && valueToValidate > maxvalue) 93 isValid = false; 94 95 return isValid; 96 } 97 return true; 98}); 99 100function getDays(date) { 101 var today = new Date(); 102 return Math.floor((today - new Date(date)) / (1000 * 60 * 60 * 24)); 103} 104 105function getYears(date) { 106 var today = new Date(); 107 var diffYears = today.getFullYear() - new Date(date).getFullYear(); 108 var temp = today; 109 110 temp.setFullYear(temp.getFullYear() - diffYears); 111 112 if (new Date(date) > temp) 113 diffYears--; 114 115 return diffYears; 116} 117 118function getMonths(date) { 119 var today = new Date(); 120 var d = new Date(date); 121 122 return (today.getFullYear() - d.getFullYear()) * 12 + today.getMonth() - d.getMonth(); 123}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.