PageSourceSearch

https://journey.travel/vendor/zoho/js/validation.js

js journey.travel collected 2026-10-03 23:52:12 UTC 17,247 bytes, 407 lines download raw bytes

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.