PageSourceSearch

https://www.tlvnightrun.co.il/includes/customInputControls/customI…WSNJlLW0bpBq3VQH8NmM02fWyk-z5BKCwQpMq6jV_I1

js tlvnightrun.co.il collected 2026-09-26 14:21:01 UTC 33,956 bytes, 493 lines download raw bytes

1//$.getScript("includes/customInputControls/jquery.formatTextBox.js").fail(function (jqxhr, settings, exception) { alert("error loading jquery.formatTextBox.js"); });
2//function invalidClientFunction(sender /*the object that failed to validate*/, invalidReason /*"isRequired","isEmail","isNumber","isInteger","isNonNegative","isEnglishLettersAndNumbersOnly"*/) {}
3
4function displayServerValidationErrorMessage(senderId, senderType, errorMessage) {
5    var sender = $("#" + senderId);
6
7    var errorMessageContainerSelector = sender.data("validation-captcha-error-message-container-selector");
8    if (errorMessageContainerSelector == null || errorMessageContainerSelector == undefined || errorMessageContainerSelector == "")
9        errorMessageContainerSelector = sender.data("validation-general-error-message-container-selector");
10
11    if (errorMessageContainerSelector != null && errorMessageContainerSelector != undefined && errorMessageContainerSelector != "")
12        $(errorMessageContainerSelector).html(errorMessage);
13    else
14        alert(errorMessage);
15}
16
17$(document).ready(function () {
18    var EMAIL_REGEX = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$|^$/; // empty, email
19    var NUMERIC_REGEX = /^(\d|-)?(\d)*\.?\d*$/; // empty, 123, -123, 123.123, -123.123
20    var INTEGER_REGEX = /^\d*$|^-\d+$/; // empty, 123, -123
21    var NON_NEGATIVE_REGEX = /^[+]?([.]\d+|\d+([.]\d+)?)$|^$/; // empty, 123, 123.123
22    var ENGLISH_LETTERS_AND_NUMBERS_ONLY_REGEX = /^[a-zA-Z0-9]*$/; // empty, 123abc
23    var URL_REGEX = /^(|https?:\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?)$/; // empty, url
24
25    //add watermark to textboxes
26    $("[data-watermark]")
27    .each(function () { if ($(this).val() == "") { $(this).val($(this).attr("data-watermark")); } })
28    .focus(function () {
29        if (this.value.trim() == this.getAttribute("data-watermark"))
30            this.value = "";
31    }).blur(function () {
32        if (this.value.trim() == "")
33            this.value = this.getAttribute("data-watermark");
34    });
35
36    //add formatTextBox to validation enabled textboxes
37    $("[data-validation-enabled=true]").each(function () {
38        var $this = $(this);
39        if ($this.is("input[type=text]")) {
40            var enableKeyCheck = $this.data("validation-enable-key-check");
41            if (enableKeyCheck) {
42                var isEmail = $this.data("validation-is-email");
43                var isNumber = $this.data("validation-is-number");
44                var isInteger = $this.data("validation-is-integer");
45                var isNonNegative = $this.data("validation-is-non-negative");
46                var isEnglishLettersAndNumbersOnly = $this.data("validation-is-english-letters-and-numbers-only");
47                var isUrl = $this.data("validation-is-url");
48                //var isHebrewLettersNumbersAndSpacesOnly = $this.data("validation-is-hebrew-letters-numbers-and-spaces-only");
49
50                var watermark = $this.data("watermark");
51
52                if (isEmail)
53                    $this.formatTextBox({ formatType: 'email', alertOnFormatError: false });
54                else if (isNumber)
55                    $this.formatTextBox({ formatType: 'regex', regexPattern: /^(\d|-)?(\d)*\.?\d*$/, regexPatternKeypress: '[0-9\-\.]' });
56                else if (isInteger)
57                    $this.formatTextBox({ formatType: 'regex', regexPattern: /^\d*$|^-\d+$/, regexPatternKeypress: '[0-9]' });
58                else if (isNonNegative)
59                    $this.formatTextBox({ formatType: 'regex', regexPattern: /^[+]?([.]\d+|\d+([.]\d+)?)$|^$/, regexPatternKeypress: '[0-9\.]' });
60                else if (isEnglishLettersAndNumbersOnly)
61                    $this.formatTextBox({ formatType: 'regex', regexPattern: /^[a-zA-Z0-9]*$/, regexPatternKeypress: '[a-zA-Z0-9]' });
62                else if (isUrl)
63                    $this.formatTextBox({ formatType: 'url', alertOnFormatError: false });
64                //else if (isHebrewLettersNumbersAndSpacesOnly)
65                //    $this.formatTextBox({ formatType: 'regex', regexPattern: /^([à-ú]|[0-9]| )*$/, regexPatternKeypress: '([à-ú]|[0-9]| )' });
66            }
67        }
68    });
69
70    $("[data-validation-configuration-validation-group]").each(function () { //run on all validation configuration controls
71        var validatingControlsSelector = $(this).data("validation-validating-controls-selector"); //get validating controls selector
72        var validationConfigurationControlId = $(this).attr("id");
73
74        $(validatingControlsSelector) //get validating controls
75        .data("validation-configuration-control-id", validationConfigurationControlId) //save the id of the configuration control for later use in the click event of the validation trigger
76        .click(function () {
77            var validationConfigurationControlId = $(this).data("validation-configuration-control-id"); //get the validation configuration control id
78            var validationConfigurationControl = $("#" + validationConfigurationControlId); //get the validation configuration control
79            var validateGroup = validationConfigurationControl.data("validation-configuration-validation-group"); //get the validation group
80
81            var controlsToValidate = null;
82
83            if (validateGroup != null && validateGroup != undefined && validateGroup != "") //if has group then get all the controls that are in the same group
84                controlsToValidate = $("[data-validation-enabled=true][data-validation-group=" + validateGroup + "]");
85            else //else get all controls that dont have a group
86                controlsToValidate = $("[data-validation-enabled=true]").not("[data-validation-group]");
87
88            if (controlsToValidate.length == 0)
89                return true;
90
91            //$(controlsToValidate).change(function () {
92            //    validateControls(controlsToValidate, validationConfigurationControl);
93            //});
94
95            return validateControls(controlsToValidate, validationConfigurationControl);
96        }); //end of "$(validatingControlsSelector).click"
97    }); //end of "$("[data-validation-configuration-validation-group]").each"
98
99    function validateControls(controlsToValidate, validationConfigurationControl) {
100        var isValidForm = true;
101
102        //clear summery error messages
103        var errorMessageSummeryContainerSelector = validationConfigurationControl.data("validation-error-message-summery-container-selector");
104        if (errorMessageSummeryContainerSelector != null && errorMessageSummeryContainerSelector != undefined && errorMessageSummeryContainerSelector != "")
105            $(errorMessageSummeryContainerSelector).html("");
106
107        var summeryErrorMessageStr = "";
108        var popupErrorMessageStr = "";
109
110        controlsToValidate.removeAttr("aria-invalid");
111
112        controlsToValidate.each(function () { //run on all controls in the group
113            var $this = $(this);
114            var controlType = ($this.is("input") ? $this.attr("type") : $this.prop("tagName")).toLowerCase();
115
116            //get the control value by its type
117            var controlValue = "";
118            if (controlType == "text" || controlType == "password" || controlType == "select" || controlType == "textarea")
119                controlValue = $this.val();
120            else if (controlType == "checkbox")
121                controlValue = $this.is(':checked');
122
123            //get validation types
124            var isRequired = $this.data("validation-is-required");
125            var isEmail = $this.data("validation-is-email");
126            var isNumber = $this.data("validation-is-number");
127            var isInteger = $this.data("validation-is-integer");
128            var isNonNegative = $this.data("validation-is-non-negative");
129            var isEnglishLettersAndNumbersOnly = $this.data("validation-is-english-letters-and-numbers-only");
130            var isUrl = $this.data("validation-is-url");
131
132            var watermark = $this.data("watermark"); //get watermark
133            var isRequiredDefaultValue = $this.data("validation-is-required-default-value");
134            if (isRequiredDefaultValue == null || isRequiredDefaultValue == undefined)
135                isRequiredDefaultValue = "";
136
137            //clear control error messages
138            clearControlErrorMessages($this);
139
140            //check if control is valid
141            var isValid = true;
142            var invalidReason = "";
143            //if (isRequired && ((controlValue == isRequiredDefaultValue && watermark == undefined) || (controlValue == 
143watermark))) { //isRequired
144            if (isRequired && ( //isRequired
145                    (controlValue == isRequiredDefaultValue) ||
146                    (controlValue == watermark) ||
147                    (controlType == "checkbox" && controlValue == false) /*checkbox isRequired*/)) {
148                invalidReason = "isRequired";
149                isValid = false;
150            }
151            if (isValid && isEmail && EMAIL_REGEX.test(controlValue) == false && (watermark == undefined || controlValue != watermark)) { //isEmail
152                invalidReason = "isEmail";
153                isValid = false;
154            }
155            if (isValid && isNumber && NUMERIC_REGEX.test(controlValue) == false && (watermark == undefined || controlValue != watermark)) { //isNumber
156                invalidReason = "isNumber";
157                isValid = false;
158            }
159            if (isValid && isInteger && INTEGER_REGEX.test(controlValue) == false && (watermark == undefined || controlValue != watermark)) { //isInteger
160                invalidReason = "isInteger";
161                isValid = false;
162            }
163            if (isValid && isNonNegative && NON_NEGATIVE_REGEX.test(controlValue) == false && (watermark == undefined || controlValue != watermark)) { //isNonNegative
164                invalidReason = "isNonNegative";
165                isValid = false;
166            }
167            if (isValid && isEnglishLettersAndNumbersOnly && ENGLISH_LETTERS_AND_NUMBERS_ONLY_REGEX.test(controlValue) == false && (watermark == undefined || controlValue != watermark)) { //isEnglishLettersAndNumbersOnly
168                invalidReason = "isEnglishLettersAndNumbersOnly";
169                isValid = false;
170            }
171            if (isValid && isUrl && URL_REGEX.test(controlValue) == false && (watermark == undefined || controlValue != watermark)) { //isUrl
172                invalidReason = "isUrl";
173                isValid = false;
174            }
175
176            if (isValid == false) {
177                isValidForm = false;
178
179                $this.attr("aria-invalid", "true");
180
181                //display error message or error message summery
182                var displayErrorMessage = $this.data("validation-display-error-message");
183                var displayErrorMessageSummery = validationConfigurationControl.data("validation-display-error-message-summery");
184
185                if ((displayErrorMessage != null && displayErrorMessage == true) ||
186                        (displayErrorMessageSummery != null && displayErrorMessageSummery == true)) {
187                    //get the error message by error type
188                    var errorMessage = null;
189
190                    if (invalidReason == "isRequired")
191                        errorMessage = $this.data("validation-is-required-error-message");
192                    else if (invalidReason == "isEmail")
193                        errorMessage = $this.data("validation-is-email-error-message");
194                    else if (invalidReason == "isNumber")
195                        errorMessage = $this.data("validation-is-number-error-message");
196                    else if (invalidReason == "isInteger")
197                        errorMessage = $this.data("validation-is-integer-error-message");
198                    else if (invalidReason == "isNonNegative")
199                        errorMessage = $this.data("validation-is-non-negative-error-message");
200                    else if (invalidReason == "isEnglishLettersAndNumbersOnly")
201                        errorMessage = $this.data("validation-is-english-letters-and-numbers-only-error-message");
202                    else if (invalidReason == "isUrl")
203                        errorMessage = $this.data("validation-is-url-error-message");
204
205                    if (errorMessage == null || errorMessage == undefined || errorMessage == "")
206                        errorMessage = $this.data("validation-general-error-message");
207
208                    if (displayErrorMessage != null && displayErrorMessage == true) { //display error message
209                        var errorMessageContainerSelector = null;
210
211                        if (invalidReason == "isRequired")
212                            errorMessageContainerSelector = $this.data("validation-is-required-error-message-container-selector");
213                        else if (invalidReason == "isEmail")
214                            errorMessageContainerSelector = $this.data("validation-is-email-error-message-container-selector");
215                        else if (invalidReason == "isNumber")
216                            errorMessageContainerSelector = $this.data("validation-is-number-error-message-container-selector");
217                        else if (invalidReason == "isInteger")
218                            errorMessageContainerSelector = $this.data("validation-is-integer-error-message-container-selector");
219                        else if (invalidReason == "isNonNegative")
220                            errorMessageContainerSelector = $this.data("validation-is-non-negative-error-message-container-selector");
221                        else if (invalidReason == "isEnglishLettersAndNumbersOnly")
222                            errorMessageContainerSelector = $this.data("validation-is-english-letters-and-numbers-only-error-message-container-selector");
223                        else if (invalidReason == "isUrl")
224                            errorMessageContainerSelector = $this.data("validation-is-url-error-message-container-selector");
225
226                        if (errorMessageContainerSelector == null || errorMessageContainerSelector == undefined || errorMessageContainerSelector == "")
227                            errorMessageContainerSelector = $this.data("validation-general-error-message-container-selector");
228
229                        $(errorMessageContainerSelector).html(errorMessage);
230                    }
231
232                    if (displayErrorMessageSummery != null && displayErrorMessageSummery == true) { //display error message summery
233                        var errorMessageSummeryAddBreakLines = validationConfigurationControl.data("validation-error-message-summery-add-break-lines");
234                        var errorMessageSummerySeparator = validationConfigurationControl.data("validation-error-message-summery-separator");
235
236                        if (errorMessage != null && errorMessage != undefined) {
237                            if (errorMessageSummeryAddBreakLines != null && errorMessageSummeryAddBreakLines == true)
238                                summeryErrorMessageStr += errorMessage + "<br />";
239                            else if (errorMessageSummerySeparator != null && errorMessageSummerySeparator != "")
240                                summeryErrorMessageStr += errorMessage + errorMessageSummerySeparator;
241                        }
242                        else
243                            summeryErrorMessageStr += "validation error message not set for control " + $this.attr("id") + "<br />";
244                    }
245                } //end of display error message or error message summery
246
247                //display popup error message
248                var displayPopupErrorMessage = validationConfigurationControl.data("validation-display-popup-error-message");
249                if (displayPopupErrorMessage != null && displayPopupErrorMessage == true) {
250                    var popupErrorMessage = null;
251
252                    if (invalidReason == "isRequired")
253                        popupErrorMessage = $this.data("validation-is-required-popup-error-message");
254                    else if (invalidReason == "isEmail")
255                        popupErrorMessage = $this.data("validation-is-email-popup-error-message");
256                    else if (invalidReason == "isNumber")
257                        popupErrorMessage = $this.data("validation-is-number-popup-error-message");
258                    else if (invalidReason == "isInteger")
259                        popupErrorMessage = $this.data("validation-is-integer-popup-error-message");
260                    else if (invalidReason == "isNonNegative")
261                        popupErrorMessage = $this.data("validation-is-non-negative-popup-error-message");
262                    else if (invalidReason == "isEnglishLettersAndNumbersOnly")
263                        popupErrorMessage = $this.data("validation-is-english-letters-and-numbers-only-popup-error-message");
264                    else if (invalidReason == "isUrl")
265                        popupErrorMessage = $this.data("validation-is-url-popup-error-message");
266
267                    if (popupErrorMessage == null || popupErrorMessage == undefined || popupErrorMessage == "")
268                        popupErrorMessage = $this.data("validation-general-popup-error-message");
269
270                    if (popupErrorMessage != null && popupErrorMessage != undefined)
271                        popupErrorMessageStr += popupErrorMessage + '\n';
272                    else
273                        popupErrorMessageStr += "validation popup error message not set for control " + $this.attr("id") + '\n';
274                }
275
276                //set invalid css class
277                var invalidCssClass = null;
278
279                if (invalidReason == "isRequired")
280                    invalidCssClass = $this.data("validation-is-required-invalid-css-class");
281                else if (invalidReason == "isEmail")
282                    invalidCssClass = $this.data("validation-is-email-invalid-css-class");
283                else if (invalidReason == "isNumber")
284                    invalidCssClass = $this.data("validation-is-number-invalid-css-class");
285                else if (invalidReason == "isInteger")
286                    invalidCssClass = $this.data("validation-is-integer-invalid-css-class");
287                else if (invalidReason == "isNonNegative")
288                    invalidCssClass = $this.data("validation-is-non-negative-invalid-css-class");
289                else if (invalidReason == "isEnglishLettersAndNumbersOnly")
290                    invalidCssClass = $this.data("validation-is-english-letters-and-numbers-only-invalid-css-class");
291                else if (invalidReason == "isUrl")
292                    invalidCssClass = $this.data("validation-is-url-invalid-css-class");
293
294                if (invalidCssClass == null || invalidCssClass == undefined || invalidCssClass == "")
295                    invalidCssClass = $this.data("validation-general-invalid-css-class");
296
297                if (invalidCssClass != null && invalidCssClass != "") { //if has invali
297d css class
298                    var invalidCssClassTargetElementSelector = null;
299
300                    if (invalidReason == "isRequired")
301                        invalidCssClassTargetElementSelector = $this.data("validation-is-required-invalid-css-class-target-element-selector");
302                    else if (invalidReason == "isEmail")
303                        invalidCssClassTargetElementSelector = $this.data("validation-is-email-invalid-css-class-target-element-selector");
304                    else if (invalidReason == "isNumber")
305                        invalidCssClassTargetElementSelector = $this.data("validation-is-number-invalid-css-class-target-element-selector");
306                    else if (invalidReason == "isInteger")
307                        invalidCssClassTargetElementSelector = $this.data("validation-is-integer-invalid-css-class-target-element-selector");
308                    else if (invalidReason == "isNonNegative")
309                        invalidCssClassTargetElementSelector = $this.data("validation-is-non-negative-invalid-css-class-target-element-selector");
310                    else if (invalidReason == "isEnglishLettersAndNumbersOnly")
311                        invalidCssClassTargetElementSelector = $this.data("validation-is-english-letters-and-numbers-only-invalid-css-class-target-element-selector");
312                    else if (invalidReason == "isUrl")
313                        invalidCssClassTargetElementSelector = $this.data("validation-is-url-invalid-css-class-target-element-selector");
314
315                    if (invalidCssClassTargetElementSelector == null ||
316                            invalidCssClassTargetElementSelector == undefined ||
317                            invalidCssClassTargetElementSelector == "")
318                        invalidCssClassTargetElementSelector = $this.data("validation-general-invalid-css-class-target-element-selector");
319
320                    if (invalidCssClassTargetElementSelector != null &&
321                            invalidCssClassTargetElementSelector != undefined &&
322                            invalidCssClassTargetElementSelector != "")
323                        $(invalidCssClassTargetElementSelector).addClass(invalidCssClass);
324                    else
325                        $this.addClass(invalidCssClass);
326                }
327
328                //run invalid client function
329                var invalidClientFunction = null;
330
331                if (invalidReason == "isRequired")
332                    invalidClientFunction = $this.data("validation-is-required-invalid-client-function");
333                else if (invalidReason == "isEmail")
334                    invalidClientFunction = $this.data("validation-is-email-invalid-client-function");
335                else if (invalidReason == "isNumber")
336                    invalidClientFunction = $this.data("validation-is-number-invalid-client-function");
337                else if (invalidReason == "isInteger")
338                    invalidClientFunction = $this.data("validation-is-integer-invalid-client-function");
339                else if (invalidReason == "isNonNegative")
340                    invalidClientFunction = $this.data("validation-is-non-negative-invalid-client-function");
341                else if (invalidReason == "isEnglishLettersAndNumbersOnly")
342                    invalidClientFunction = $this.data("validation-is-english-letters-and-numbers-only-invalid-client-function");
343                else if (invalidReason == "isUrl")
344                    invalidClientFunction = $this.data("validation-is-url-invalid-client-function");
345
346                if (invalidClientFunction == null ||
347                        invalidClientFunction == undefined ||
348                        invalidClientFunction == "")
349                    invalidClientFunction = $this.data("validation-general-invalid-client-function");
350
351                if (invalidClientFunction != null && invalidClientFunction != undefined && invalidClientFunction != "") {
352                    if (typeof (window[invalidClientFunction]) == "function") //check that the function exists
353                        window[invalidClientFunction](this, invalidReason);
354                    else
355                        alert('error running function "' + invalidClientFunction + '", check that it exists and its scope');
356                }
357            } //end of "if (isValid == false)"
358        }); //end of "controlsToValidate.each"
359
360        if (summeryErrorMessageStr != "") { //display error message summery
361            var errorMessageSummeryContainerSelector = validationConfigurationControl.data("validation-error-message-summery-container-selector");
362            var errorMessageSummeryAddBreakLines = validationConfigurationControl.data("validation-error-message-summery-add-break-lines");
363            var errorMessageSummerySeparator = validationConfigurationControl.data("validation-error-message-summery-separator");
364
365            if (errorMessageSummeryAddBreakLines != null && errorMessageSummeryAddBreakLines == true)
366                summeryErrorMessageStr = summeryErrorMessageStr.substring(0, summeryErrorMessageStr.length - 6);
367            else if (errorMessageSummerySeparator != null && errorMessageSummerySeparator != "")
368                summeryErrorMessageStr = summeryErrorMessageStr.substring(0, summeryErrorMessageStr.length - errorMessageSummerySeparator.length);
369
370            $(errorMessageSummeryContainerSelector).html(summeryErrorMessageStr);
371        }
372
373        if (popupErrorMessageStr != "") { //display popup error message
374            popupErrorMessageStr = popupErrorMessageStr.substring(0, popupErrorMessageStr.length - 1);
375            alert(popupErrorMessageStr);
376        }
377
378        return isValidForm;
379    } //end of "function validateControls(controlsToValidate)"
380
381    function clearControlErrorMessages(control) {
382        //clear error messages
383        clearElement(control.data("validation-general-error-message-container-selector")); //general
384        clearElement(control.data("validation-is-required-error-message-container-selector")); //is-required
385        clearElement(control.data("validation-is-email-error-message-container-selector")); //is-email
386        clearElement(control.data("validation-is-number-error-message-container-selector")); //is-number
387        clearElement(control.data("validation-is-integer-error-message-container-selector")); //is-integer
388        clearElement(control.data("validation-is-non-negative-error-message-container-selector")); //is-non-negative
389        clearElement(control.data("validation-is-english-letters-and-numbers-only-error-message-container-selector")); //is-english-letters-and-numbers-only
390        clearElement(control.data("validation-is-url-error-message-container-selector")); //is-url
391
392        function clearElement(elementSelector) {
393            if (elementSelector != null &&
394                elementSelector != undefined &&
395                elementSelector != "")
396                $(elementSelector).html("");
397        }
398
399        //clear css classes
400        var generalInvalidCssClassTargetElementSelector = null;
401        if (control.data("validation-general-invalid-css-class-target-element-selector") != null &&
402            control.data("validation-general-invalid-css-class-target-element-selector") != undefined &&
403            control.data("validation-general-invalid-css-class-target-element-selector") != "")
404            generalInvalidCssClassTargetElementSelector = control.data("validation-general-invalid-css-class-target-element-selector");
405
406        //general
407        removeInvalidCssClass(control, control.data("validation-general-invalid-css-class"), null, generalInvalidCssClassTargetElementSelector);
408
409        //remove general class from specific error types target elements
410        removeInvalidCssClass(control, control.data("validation-general-invalid-css-class"), control.data("validation-is-required-invalid-css-class-target-element-selector"), generalInvalidCssClassTargetElementSelector);
411        removeInvalidCssClass(control, control.data("validation-general-invalid-css-class"), control.data("validation-is-email-invalid-css-class-target-element-selector"), generalInvalidCssClassTargetElementSelector);
412        removeInvalidCssClass(control, control.data("validation-general-invalid-css-class"), control.data("validation-is-number-invalid-css-class-target-element-selector"), generalInvalidCssClassTargetElementSelector);
413        removeInvalidCssClass(control, control.data("validation-general-invalid-css-class"), control.data("validation-is-integer-invalid-css-class-target-element-selector"), generalInvalidCssClassTargetElementSelector);
414        removeInvalidCssClass(control, control.data("validation-general-invalid-css-class"), control.data("validation-is-non-negative-invalid-css-class-target-element-selector"), generalInvalidCssClassTargetElementSelector);
415        removeInvalidCssClass(control, control.data("validation-general-invalid-css-class"), control.data("validation-is-english-letters-and-numbers-only-invalid-css-class-target-element-selector"), generalInvalidCssClassTargetElementSelector);
416        removeInvalidCssClass(control, control.data("validation-general-invalid-css-class"), control.data("validation-is-url-invalid-css-class-target-element-selector"), generalInvalidCssClassTargetElementSelector);
417
418        removeInvalidCssClass(control, //is-required
419                              control.data("validation-is-required-invalid-css-class"),
420                              control.data("validation-is-required-invalid-css-class-target-element-selector"),
421                              generalInvalidCssClassTargetElementSelector);
422
423        removeInvalidCssClass(control, //is-email
424                              control.data("validation-is-email-invalid-css-class"),
425                              control.data("validation-is-email-invalid-css-class-target-element-selector"),
426                              generalInvalidCssClassTargetElementSelector);
427
428        removeInvalidCssClass(control, //is-number
429                              control.data("validation-is-number-invalid-css-class"),
430                              control.data("validation-is-number-invalid-css-class-target-element-selector"),
431                              generalInvalidCssClassTargetElementSelector);
432
433        removeInvalidCssClass(control, //is-integer
434                              control.data("validation-is-integer-invalid-css-class"),
435                              control.data("validation-is-integer-invalid-css-class-target-element-selector"),
436                              generalInvalidCssClassTargetElementSelector);
437
438        removeInvalidCssClass(control, //is-non-negative
439                              control.data("validation-is-non-negative-invalid-css-class"),
440                              control.data("validation-is-non-negative-invalid-css-class-target-element-selector"),
441                              generalInvalidCssClassTargetElementSelector);
442
443        removeInvalidCssClass(control, //is-english-letters-and-numbers-only
444                              control.data("validation-is-english-letters-and-numbers-only-invalid-css-class"),
445                              control.data("validation-is-english-letters-and-numbers-only-invalid-css-class-target-element-selector"),
446                              generalInvalidCssClassTargetElementSelector);
447
448        removeInvalidCssClass(control, //is-url
449                              control.data("validation-is-url-invalid-css-class"),
450                              control.data("validation-is-url-invalid-css-class-target-element-selector"),
451                              generalInvalidCssClassTargetElementSelector);
452
453        function removeInvalidCssClass(control, invalidCssClass, invalidCssClassTargetElementSelector, generalInvalidCssClassTargetElementSelector) {
454            if (invalidCssClass != null && invalidCssClass != undefined && invalidCssClass != "") {
455                if (invalidCssClassTargetElementSelector != null && invalidCssClassTargetElementSelector != undefined && invalidCssClassTargetElementSelector != "")
456                    $(invalidCssClassTargetElementSelector).removeClass(invalidCssClass);
457                else if (generalInvalidCssClassTargetElementSelector != null)
458                    $(generalInvalidCssClassTargetElementSelector).removeClass(invalidCssClass);
459                else
460                    control.removeClass(invalidCssClass);
461            }
462        }
463
464        //execute valid client functions
465        executeValidClientFunction(control.data("validation-general-valid-client-function"), control, "");
466        executeValidClientFunction(control.data("validation-is-required-valid-client-function"), control, "isRequired");
467        executeValidClientFunction(control.data("validation-is-email-valid-client-function"), control, "isEmail");
468        executeValidClientFunction(control.data("validation-is-number-valid-client-function"), control, "isNumber");
469        executeValidClientFunction(control.data("validation-is-integer-valid-client-function"), control, "isInteger");
470        executeValidClientFunction(control.data("validation-is-non-negative-valid-client-function"), control, "isNonNegative");
471        executeValidClientFunction(control.data("validation-is-english-letters-and-numbers-only-valid-client-function"), control, "isEnglishLettersAndNumbersOnly");
472        executeValidClientFunction(control.data("validation-is-url-valid-client-function"), control, "isUrl");
473
474        function executeValidClientFunction(validClientFunction, sender, validReason) {
475            if (validClientFunction != null && validClientFunction != undefined && validClientFunction != "") {
476                if (typeof (window[validClientFunction]) == "function") //check that the function exists
477                    window[validClientFunction](sender, validReason);
478                else
479                    alert('error running function "' + validClientFunction + '", check that it exists and its scope');
480            }
481        }
482    } // end of "function clearControlErrorMessages(control)"
483});
484
485//validates the watermark
486function checkWatermark(sender, args) {
487    var tb = document.getElementById(sender.controltovalidate);
488
489    if (tb.value == tb.getAttribute("data-watermark"))
490        args.IsValid = false;
491    else
492        args.IsValid = true;
493}

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.