1function zf_ValidateAndSubmit(formEl) { 2 var cfg = formEl._zfConfig; 3 4 if (!zf_CheckMandatory(formEl, cfg)) return false; 5 if (!zf_ValidCheck(formEl, cfg)) return false; 6 7 grecaptcha.ready(function() { 8 grecaptcha.execute(window.recaptchaV3.siteKey, { action: 'submit' }).then(function(token) { 9 // Scoped to formEl: multiple Zoho form partials render on the same page, 10 // so a global getElementById('recaptchaToken') can write the token into 11 // the wrong form's hidden field. 12 var tokenField = formEl.querySelector('[name="recaptcha_token"]'); 13 if (tokenField) { 14 tokenField.value = token; 15 } 16 formEl.submit(); 17 }); 18 }); 19 20 return false; 21} 22 23function zf_CheckMandatory(formEl, cfg) { 24 var zf_MandArray = cfg.MandArray; 25 var zf_FieldArray = cfg.FieldArray; 26 for (i = 0; i < zf_MandArray.length; i++) { 27 var fieldObj = formEl[zf_MandArray[i]]; 28 if (fieldObj) { 29 if (fieldObj.nodeName != null) { 30 if (fieldObj.nodeName == 'OBJECT') { 31 if (!zf_MandatoryCheckSignature(fieldObj)) { 32 zf_ShowErrorMsg(zf_MandArray[i], zf_FieldArray, formEl); 33 return false; 34 } 35 } else if (((fieldObj.value).replace(/^\s+|\s+$/g, '')).length == 0) { 36 if (fieldObj.type == 'file') { 37 fieldObj.focus(); 38 zf_ShowErrorMsg(zf_MandArray[i], zf_FieldArray, formEl); 39 return false; 40 } 41 fieldObj.focus(); 42 zf_ShowErrorMsg(zf_MandArray[i], zf_FieldArray, formEl); 43 return false; 44 } else if (fieldObj.nodeName == 'SELECT') { // No I18N 45 if (fieldObj.options[fieldObj.selectedIndex].value == '-Select-') { 46 fieldObj.focus(); 47 zf_ShowErrorMsg(zf_MandArray[i], zf_FieldArray, formEl); 48 return false; 49 } 50 } else if (fieldObj.type == 'checkbox' || fieldObj.type == 'radio') { 51 if (fieldObj.checked == false) { 52 fieldObj.focus(); 53 zf_ShowErrorMsg(zf_MandArray[i], zf_FieldArray, formEl); 54 return false; 55 } 56 } 57 } else { 58 var checkedValsCount = 0; 59 var inpChoiceElems = fieldObj; 60 for (var ii = 0; ii < inpChoiceElems.length; ii++) { 61 if (inpChoiceElems[ii].checked === true) { 62 checkedValsCount++; 63 } 64 } 65 if (checkedValsCount == 0) { 66 inpChoiceElems[0].focus(); 67 zf_ShowErrorMsg(zf_MandArray[i], zf_FieldArray, formEl); 68 return false; 69 } 70 } 71 } 72 } 73 return true; 74} 75 76function zf_ValidCheck(formEl, cfg) { 77 var zf_FieldArray = cfg.FieldArray; 78 var zf_DateRegex = cfg.DateRegex; 79 var zf_MonthYearRegex = cfg.MonthYearRegex; 80 var isValid = true; 81 82 for (ind = 0; ind < zf_FieldArray.length; ind++) { 83 var fieldObj = formEl[zf_FieldArray[ind]]; 84 if (fieldObj) { 85 if (fieldObj.nodeName != null) { 86 var checkType = fieldObj.getAttribute("checktype"); 87 if (checkType == "c2") { // No I18N 88 if (!zf_ValidateNumber(fieldObj)) { 89 isValid = false; 90 fieldObj.focus(); 91 zf_ShowErrorMsg(zf_FieldArray[ind], zf_FieldArray, formEl); 92 return false; 93 } 94 } else if (checkType == "c3") { // No I18N 95 if (!zf_ValidateCurrency(fieldObj) || !zf_ValidateDecimalLength(fieldObj, 10)) { 96 isValid = false; 97 fieldObj.focus(); 98 zf_ShowErrorMsg(zf_FieldArray[ind], zf_FieldArray, formEl); 99 return false;
100 } 101 } else if (checkType == "c4") { // No I18N 102 if (!zf_ValidateDateFormat(fieldObj)) { 103 isValid = false; 104 fieldObj.focus(); 105 zf_ShowErrorMsg(zf_FieldArray[ind], zf_FieldArray, formEl); 106 return false; 107 } 108 } else if (checkType == "c5") { // No I18N 109 if (!zf_ValidateEmailID(fieldObj)) { 110 isValid = false; 111 fieldObj.focus(); 112 zf_ShowErrorMsg(zf_FieldArray[ind], zf_FieldArray, formEl); 113 return false; 114 } 115 } else if (checkType == "c6") { // No I18N 116 if (!zf_ValidateLiveUrl(fieldObj)) { 117 isValid = false; 118 fieldObj.focus(); 119 zf_ShowErrorMsg(zf_FieldArray[ind], zf_FieldArray, formEl); 120 return false; 121 } 122 } else if (checkType == "c7") { // No I18N 123 if (!zf_ValidatePhone(fieldObj)) { 124 isValid = false; 125 fieldObj.focus(); 126 zf_ShowErrorMsg(zf_FieldArray[ind], zf_FieldArray, formEl); 127 return false; 128 } 129 } else if (checkType == "c8") { // No I18N 130 zf_ValidateSignature(fieldObj); 131 } else if (checkType == "c9") { // No I18N 132 if (!zf_ValidateMonthYearFormat(fieldObj)) { 133 isValid = false; 134 fieldObj.focus(); 135 zf_ShowErrorMsg(zf_FieldArray[ind], zf_FieldArray, formEl); 136 return false; 137 } 138 } 139 } 140 } 141 } 142 return isValid; 143} 144 145function zf_ShowErrorMsg(uniqName, zf_FieldArray, formEl) { 146 var fldLinkName; 147 for (errInd = 0; errInd < zf_FieldArray.length; errInd++) { 148 fldLinkName = zf_FieldArray[errInd].split('_')[0]; 149 var hideEl = formEl.querySelector('#' + fldLinkName + '_error'); 150 if (hideEl) hideEl.style.display = 'none'; 151 } 152 var linkName = uniqName.split('_')[0]; 153 var showEl = formEl.querySelector('#' + linkName + '_error'); 154 if (showEl) showEl.style.display = 'block'; 155} 156 157function zf_ValidateNumber(elem) { 158 var validChars = "-0123456789"; 159 var numValue = elem.value.replace(/^\s+|\s+$/g, ''); 160 if (numValue != null && !numValue == "") { 161 var strChar; 162 var result = true; 163 if (numValue.charAt(0) == "-" && numValue.length == 1) { 164 return false; 165 } 166 for (i = 0; i < numValue.length && result == true; i++) { 167 strChar = numValue.charAt(i); 168 if ((strChar == "-") && (i != 0)) { 169 return false; 170 } 171 if (validChars.indexOf(strChar) == -1) { 172 result = false;
173 } 174 } 175 return result; 176 } else { 177 return true; 178 } 179} 180 181function zf_ValidateDateFormat(inpElem) { 182 var dateValue = inpElem.value.replace(/^\s+|\s+$/g, ''); 183 if (dateValue == "") { 184 return true; 185 } else { 186 return (zf_DateRegex.test(dateValue)); 187 } 188} 189 190function zf_ValidateCurrency(elem) { 191 var validChars = "0123456789."; 192 var numValue = elem.value.replace(/^\s+|\s+$/g, ''); 193 if (numValue.charAt(0) == '-') { 194 numValue = numValue.substring(1, numValue.length); 195 } 196 if (numValue != null && !numValue == "") { 197 var strChar; 198 var result = true; 199 for (i = 0; i < numValue.length && result == true; i++) { 200 strChar = numValue.charAt(i); 201 if (validChars.indexOf(strChar) == -1) { 202 result = false; 203 } 204 } 205 return result; 206 } else { 207 return true; 208 } 209} 210 211function zf_ValidateDecimalLength(elem, decimalLen) { 212 var numValue = elem.value; 213 if (numValue.indexOf('.') >= 0) { 214 var decimalLength = numValue.substring(numValue.indexOf('.') + 1).length; 215 if (decimalLength > decimalLen) { 216 return false; 217 } else { 218 return true; 219 } 220 } 221 return true; 222} 223 224function zf_ValidateEmailID(elem) { 225 var check = 0; 226 var emailValue = elem.value; 227 if (emailValue != null && !emailValue == "") { 228 var emailArray = emailValue.split(","); 229 for (i = 0; i < emailArray.length; i++) { 230 var emailExp = /^[\w]([\w\-.+&'/]*)@([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,22}$/; 231 if (!emailExp.test(emailArray[i].replace(/^\s+|\s+$/g, ''))) { 232 check = 1; 233 } 234 } 235 if (check == 0) { 236 return true; 237 } else { 238 return false; 239 } 240 } else { 241 return true; 242 } 243} 244 245function zf_ValidateLiveUrl(elem) { 246 var urlValue = elem.value; 247 if (urlValue !== null && typeof (urlValue) !== "undefined") { 248 urlValue = urlValue.replace(/^\s+|\s+$/g, ''); 249 if (urlValue !== "") { 250 var urlregex = new RegExp("^(((https|http|ftps|ftp)://[a-zA-Z\\d]+((_|-|@)[a-zA-Z\\d]+)*(\\.[a-zA-Z\\d]+((_|-|@)[a-zA-Z\\d]+)*)+(:\\d{1,5})?)|((w|W){3}(\\.[a-zA-Z\\d]+((_|-|@)[a-zA-Z\\d]+)*){2,}(:\\d{1,5})?)|([a-zA-Z\\d]+((_|-)[a-zA-Z\\d]+)*(\\.[a-zA-Z\\d]+((_|-)[a-zA-Z\\d]+)*)+(:\\d{1,5})?))(/[-\\w.?,:'/\\\\+=&;%$#@()!~]*)?$", "i"); // No I18N 251 return (urlregex.test(urlValue)); 252 } 253 } 254 return true; 255} 256 257function zf_ValidatePhone(inpElem) { 258 var ZFPhoneRegex = { 259 PHONE_INTE_ALL_REG: /^[+]{0,1}[()0-9-. ]+$/, 260 PHONE_INTE_NUMERIC_REG: /^[0-9]+$/, 261 PHONE_INTE_CONT_CODE_ENABLED_REG: /^[(0-9-.][()0-9-. ]*$/, 262 PHONE_USA_REG: /^[0-9]+$/, 263 PHONE_CONT_CODE_REG: /^[+][0-9]{1,4}$/ 264 } 265 var phoneFormat = parseInt(inpElem.getAttribute("phoneFormat")); 266 var fieldInpVal = inpElem.value.replace(/^\s+|\s+$/g, ''); 267 var toReturn = true; 268 if (phoneFormat === 1) { 269 if (inpElem.getAttribute("valType") == 'code') { 270 var codeRexp = ZFPhoneRegex.PHONE_CONT_CODE_REG; 271 if (fieldInpVal != "" && !codeRexp.test(fieldInpVal)) { 272 return false; 273 } 274 } else { 275 var IRexp = ZFPhoneRegex.PHONE_INTE_ALL_REG; 276 if (inpElem.getAttribute("phoneFormatType") == '2') { 277 IRexp = ZFPhoneRegex.PHONE_INTE_NUMERIC_REG; 278 } 279 if (fieldInpVal != "" && !IRexp.test(fieldInpVal)) { 280 toReturn = false; 281 return toReturn; 282 } 283 } 284 return toReturn; 285 } else if (phoneFormat === 2) { 286 var InpMaxlength = inpElem.getAttribute("maxlength"); 287 var USARexp = ZFPhoneRegex.PHONE_USA_REG; 288 if (fieldInpVal != "" && USARexp.test(fieldInpVal) && fieldInpVal.length == InpMaxlength) { 289 toReturn = true; 290 } else if (fieldInpVal == "") { 291 toReturn = true; 292 } else { 293 toReturn = false; 294 } 295 return toReturn; 296 } 297} 298 299function zf_ValidateSignature(objElem) { 300 var linkName = objElem.getAttribute("compname"); 301 var canvasElem = document.getElementById("drawingCanvas-" + linkName); 302 var isValidSign = zf_IsSignaturePresent(objElem, linkName, canvasElem); 303 var hiddenSignInputElem = document.getElementById("hiddenSignInput-" + linkName); 304 if (isValidSign) { 305 hiddenSignInputElem.value = canvasElem.toDataURL(); 306 } else { 307 hiddenSignInputElem.value = ""; // No I18N 308 } 309 return isValidSign; 310} 311 312function zf_MandatoryCheckSignature(objElem) { 313 var linkName = objElem.getAttribute("compname"); 314 var canvasElem = document.getElementById("drawingCanvas-" + linkName); 315 var isValid = zf_IsSignaturePresent(objElem, linkName, canvasElem); 316 return isValid; 317} 318 319function zf_IsSignaturePresent(objElem, linkName, canvasElem) { 320 var context = canvasElem.getContext('2d'); // No I18N 321 var canvasWidth = canvasElem.width; 322 var canvasHeight = canvasElem.height; 323 var canvasData = context.getImageData(0, 0, canvasWidth, canvasHeight); 324 var signLen = canvasData.data.length; 325 var flag = false;
326 for (var index = 0; index < signLen; index++) { 327 if (!canvasData.data[index]) { 328 flag = false; 329 } else if (canvasData.data[index]) { 330 flag = true; 331 break; 332 } 333 } 334 return flag; 335} 336 337function zf_FocusNext(elem, event) { 338 if (event.keyCode == 9 || event.keyCode == 16) { 339 return; 340 } 341 if (event.keyCode >= 37 && event.keyCode <= 40) { 342 return; 343 } 344 var compname = elem.getAttribute("compname"); 345 var inpElemName = elem.getAttribute("name"); 346 if (inpElemName == compname + "_countrycode") { 347 if (elem.value.length == 3) { 348 document.getElementsByName(compname + "_first")[0].focus(); 349 } 350 } else if (inpElemName == compname + "_first") { 351 if (elem.value.length == 3) { 352 document.getElementsByName(compname + "_second")[0].focus(); 353 } 354 } 355} 356 357function zf_ValidateMonthYearFormat(inpElem) { 358 var monthYearValue = inpElem.value.replace(/^\s+|\s+$/g, ''); 359 if (monthYearValue == "") { 360 return true; 361 } else { 362 return (zf_MonthYearRegex.test(monthYearValue)); 363 } 364} 365 366function zf_SetDateAndMonthRegexBasedOnDateFormate(dateFormat) { 367 var dateAndMonthRegexFormateArray = new Array(); 368 var dateFormatRegExp; 369 var monthYearFormatRegExp; 370 371 if (dateFormat === "dd-MMM-yyyy") { 372 dateFormatRegExp = "^(([0][1-9])|([1-2][0-9])|([3][0-1]))[-](Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)[-](?:(?:19|20)[0-9]{2})$"; 373 monthYearFormatRegExp = "^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)[-](?:(?:19|20)[0-9]{2})$"; // No I18N 374 } else if (dateFormat === "dd-MMMM-yyyy") { // No I18N 375 dateFormatRegExp = "^(([0][1-9])|([1-2][0-9])|([3][0-1]))[-](January|February|March|April|May|June|July|August|September|October|November|December|JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER)[-](?:(?:19|20)[0-9]{2})$"; 376 monthYearFormatRegExp = "^(January|February|March|April|May|June|July|August|September|October|November|December|JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER)[-](?:(?:19|20)[0-9]{2})$"; // No I18N 377 } else if (dateFormat === "MMMM-dd-yyyy") { // No I18N 378 dateFormatRegExp = "^(January|February|March|April|May|June|July|August|September|October|November|December|JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER)[-](([0][1-9])|([1-2][0-9])|([3][0-1]))[-](?:(?:19|20)[0-9]{2})$"; 379 monthYearFormatRegExp = "^(January|February|March|April|May|June|July|August|September|October|November|December|JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|OCTOBER|NOVEMBER|DECEMBER)[-](?:(?:19|20)[0-9]{2})$"; // No I18N 380 } else if (dateFormat === "dd/MM/yyyy") { // No I18N 381 dateFormatRegExp = "^(([0][1-9])|([1-2][0-9])|([3][0-1]))[\/]([0][1-9]|1[012])[\/](?:(?:19|20)[0-9]{2})$"; 382 monthYearFormatRegExp = "^([0][1-9]|1[012])[\/](?:(?:19|20)[0-9]{2})$"; 383 } else if (dateFormat === "dd-MM-yyyy") { // No I18N 384 dateFormatRegExp = "^(([0][1-9])|([1-2][0-9])|([3][0-1]))[-]([0][1-9]|1[012])[-](?:(?:19|20)[0-9]{2})$"; 385 monthYearFormatRegExp = "^([0][1-9]|1[012])[-](?:(?:19|20)[0-9]{2})$"; 386 } else if (dateFormat === "MM/dd/yyyy") { // No I18N 387 dateFormatRegExp = "^([0][1-9]|1[012])[\/](([0][1-9])|([1-2][0-9])|([3][0-1]))[\/](?:(?:19|20)[0-9]{2})$"; 388 monthYearFormatRegExp = "^([0][1-9]|1[012])[\/](?:(?:19|20)[0-9]{2})$"; 389 } else if (dateFormat === "yyyy-MM-dd") { // No I18N 390 dateFormatRegExp = "^(?:(?:19|20)[0-9]{2})[-]([0][1-9]|1[012])[-](([0][1-9])|([1-2][0-9])|([3][0-1]))$"; 391 monthYearFormatRegExp = "^(?:(?:19|20)[0-9]{2})[-]([0][1-9]|1[012])$"; 392 } else if (dateFormat === "yyyy/MM/dd") { // No I18N 393 dateFormatRegExp = "^(?:(?:19|20)[0-9]{2})[\/]([0][1-9]|1[012])[\/](([0][1-9])|([1-2][0-9])|([3][0-1]))$"; 394 monthYearFormatRegExp = "^(?:(?:19|20)[0-9]{2})[\/]([0][1-9]|1[012])$"; 395 } else if (dateFormat === "dd.MM.yyyy") { // No I18N 396 dateFormatRegExp = "^(([0][1-9])|([1-2][0-9])|([3][0-1]))[.]([0][1-9]|1[012])[.](?:(?:19|20)[0-9]{2})$"; 397 monthYearFormatRegExp = "^([0][1-9]|1[012])[.](?:(?:19|20)[0-9]{2})$"; 398 } else if (dateFormat === "MM-dd-yyyy") { // No I18N 399 dateFormatRegExp = "^([0][1-9]|1[012])[-](([0][1-9])|([1-2][0-9])|([3][0-1]))[-](?:(?:19|20)[0-9]{2})$"; 400 monthYearFormatRegExp = "^([0][1-9]|1[012])[-](?:(?:19|20)[0-9]{2})$"; 401 } 402 403 dateAndMonthRegexFormateArray.push(dateFormatRegExp); 404 dateAndMonthRegexFormateArray.push(monthYearFormatRegExp); 405 406 return dateAndMonthRegexFormateArray; 407}
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.