PageSourceSearch

http://examen-rcb.ru/local/layout/js/jquery.maskedinput.js?154100796216386

js examen-rcb.ru collected 2026-10-08 09:18:49 UTC 16,386 bytes, 444 lines download raw bytes

1(function (factory) {
2    if (typeof define === 'function' && define.amd) {
3        // AMD. Register as an anonymous module.
4        define(['jquery'], factory);
5    } else if (typeof exports === 'object') {
6        // Node/CommonJS
7        factory(require('jquery'));
8    } else {
9        // Browser globals
10        factory(jQuery);
11    }
12}(function ($) {
13
14    var ua = navigator.userAgent,
15        iPhone = /iphone/i.test(ua),
16        chrome = /chrome/i.test(ua),
17        android = /android/i.test(ua),
18        caretTimeoutId;
19
20    $.mask = {
21        //Predefined character definitions
22        definitions: {
23            '9': "[0-9]",
24            'a': "[A-Za-z]",
25            '*': "[A-Za-z0-9]"
26        },
27        autoclear: true,
28        dataName: "rawMaskFn",
29        placeholder: '_'
30    };
31
32    $.fn.extend({
33        //Helper Function for Caret positioning
34        caret: function(begin, end) {
35            var range;
36
37            if (this.length === 0 || this.is(":hidden") || this.get(0) !== document.activeElement) {
38                return;
39            }
40
41            if (typeof begin == 'number') {
42                end = (typeof end === 'number') ? end : begin;
43                return this.each(function() {
44                    if (this.setSelectionRange) {
45                        this.setSelectionRange(begin, end);
46                    } else if (this.createTextRange) {
47                        range = this.createTextRange();
48                        range.collapse(true);
49                        range.moveEnd('character', end);
50                        range.moveStart('character', begin);
51                        range.select();
52                    }
53                });
54            } else {
55                if (this[0].setSelectionRange) {
56                    begin = this[0].selectionStart;
57                    end = this[0].selectionEnd;
58                } else if (document.selection && document.selection.createRange) {
59                    range = document.selection.createRange();
60                    begin = 0 - range.duplicate().moveStart('character', -100000);
61                    end = begin + range.text.length;
62                }
63                return { begin: begin, end: end };
64            }
65        },
66        unmask: function() {
67            return this.trigger("unmask");
68        },
69        mask: function(mask, settings) {
70            var input,
71                defs,
72                tests,
73                partialPosition,
74                firstNonMaskPos,
75                lastRequiredNonMaskPos,
76                len,
77                oldVal;
78
79            if (!mask && this.length > 0) {
80                input = $(this[0]);
81                var fn = input.data($.mask.dataName)
82                return fn?fn():undefined;
83            }
84
85            settings = $.extend({
86                autoclear: $.mask.autoclear,
87                placeholder: $.mask.placeholder, // Load default placeholder
88                completed: null
89            }, settings);
90
91
92            defs = $.mask.definitions;
93            tests = [];
94            partialPosition = len = mask.length;
95            firstNonMaskPos = null;
96
97            mask = String(mask);
98
99            $.each(mask.split(""), function(i, c) {
100                if (c == '?') {
101                    len--;
102                    partialPosition = i;
103                } else if (defs[c]) {
104                    tests.push(new RegExp(defs[c]));
105                    if (firstNonMaskPos === null) {
106                        firstNonMaskPos = tests.length - 1;
107                    }
108                    if(i < partialPosition){
109                        lastRequiredNonMaskPos = tests.length - 1;
110                    }
111                } else {
112                    tests.push(null);
113                }
114            });
115
116            return this.trigger("unmask").each(function() {
117                var input = $(this),
118                    buffer = $.map(
119                        mask.split(""),
120                        function(c, i) {
121                            if (c != '?') {
122                                return defs[c] ? getPlaceholder(i) : c;
123                            }
124                        }),
125                    defaultBuffer = buffer.join(''),
126                    focusText = input.val();
127
128                function tryFireCompleted(){
129                    if (!settings.completed) {
130                        return;
131                    }
132
133                    for (var i = firstNonMaskPos; i <= lastRequiredNonMaskPos; i++) {
134                        if (tests[i] && buffer[i] === getPlaceholder(i)) {
135                            return;
136                        }
137                    }
138                    settings.completed.call(input);
139                }
140
141                function getPlaceholder(i){
142                    if(i < settings.placeholder.length)
143                        return settings.placeholder.charAt(i);
144                    return settings.placeholder.charAt(0);
145                }
146
147                function seekNext(pos) {
148                    while (++pos < len && !tests[pos]);
149                    return pos;
150                }
151
152                function seekPrev(pos) {
153                    while (--pos >= 0 && !tests[pos]);
154                    return pos;
155                }
156
157                function shiftL(begin,end) {
158                    var i,
159                        j;
160
161                    if (begin<0) {
162                        return;
163                    }
164
165                    for (i = begin, j = seekNext(end); i < len; i++) {
166                        if (tests[i]) {
167                            if (j < len && tests[i].test(buffer[j])) {
168                                buffer[i] = buffer[j];
169                                buffer[j] = getPlaceholder(j);
170                            } else {
171                                break;
172                            }
173
174                            j = seekNext(j);
175                        }
176                    }
177                    writeBuffer();
178                    input.caret(Math.max(firstNonMaskPos, begin));
179                }
180
181                function shiftR(pos) {
182                    var i,
183                        c,
184                        j,
185                        t;
186
187                    for (i = pos, c = getPlaceholder(pos); i < len; i++) {
188                        if (tests[i]) {
189                            j = seekNext(i);
190                            t = buffer[i];
191                            buffer[i] = c;
192                            if (j < len && tests[j].test(t)) {
193                                c = t;
194                            } else {
195                                break;
196                            }
197                        }
198                    }
199                }
200
201                function androidInputEvent(e) {
202                    var curVal = input.val();
203                    var pos = input.caret();
204                    var proxy = function () {
205                            $.proxy($.fn.caret, input, pos.begin, pos.begin)();
206                        };
207
208                    if (oldVal && oldVal.length && oldVal.length > curVal.length ) {
209                        // a deletion or backspace happened
210                        var nextPos = checkVal(true);
211                        var curPos = pos.end;
212                        while (curPos > 0 && !tests[curPos-1]) {
213                            curPos--;
214                        }
215                        if (curPos === 0) {
216                            curPos = nextPos;
217                        }
218                        pos.begin = curPos;
219                        setTimeout(function() {
220                            proxy();
221                            tryFireCompleted();
222                        }, 0);
223                    } else {
224                        pos.begin = checkVal(true);
225                        setTimeout(function() {
226                            proxy();
227                            tryFireCompleted();
228                        }, 0);
229                    }               
230                }
231
232
233                function blurEvent(e) {
234                    checkVal();
235
236                    if (input.val() != focusText)
237                        input.change();
238                }
239
240                function keydownEvent(e) {
241                    if (input.prop("readonly")){
242                        return;
243                    }
244
245                    var k = e.which || e.keyCode,
246                        pos,
247                        begin,
248                        end;
249                        oldVal = input.val();
250                    //backspace, delete, and escape get special treatment
251                    if (k === 8 || k === 46 || (iPhone && k === 127)) {
252                        pos = input.caret();
253                        begin = pos.begin;
254                        end = pos.end;
255
256                        if (end - begin === 0) {
257                            begin=k!==46?seekPrev(begin):(end=seekNext(begin-1));
258                            end=k===46?seekNext(end):end;
259                        }
260                        clearBuffer(begin, end);
261                        shiftL(begin, end - 1);
262
263                        e.preventDefault();
264                    } else if( k === 13 ) { // enter
265                        blurEvent.call(this, e);
266                    } else if (k === 27) { // escape
267                        input.val(focusText);
268                        input.caret(0, checkVal());
269                        e.preventDefault();
270                    }
271                }
272
273                function keypressEvent(e) {
274                    if (input.prop("readonly")){
275                        return;
276                    }
277
278                    var k = e.which || e.keyCode,
279                        pos = input.caret(),
280                        p,
281                        c,
282                        next;
283                    if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {//Ignore
284                        return;
285                    } else if ( k && k !== 13 ) {
286                        if (pos.end - pos.begin !== 0){
287                            clearBuffer(pos.begin, pos.end);
288                            shiftL(pos.begin, pos.end-1);
289                        }
290
291                        p = seekNext(pos.begin - 1);
292                        if (p < len) {
293                            c = String.fromCharCode(k);
294                            if (tests[p].test(c)) {
295                                shiftR(p);
296
297                                buffer[p] = c;
298                                writeBuffer();
299                                next = seekNext(p);
300
301                                if(android){
302                                    //Path for CSP Violation on FireFox OS 1.1
303                                    var proxy = function() {
304                                        $.proxy($.fn.caret,input,next)();
305                                    };
306
307                                    setTimeout(proxy,0);
308                                }else{
309                                    input.caret(next);
310                                }
311                                if(pos.begin <= lastRequiredNonMaskPos){
312                                     tryFireCompleted();
313                                 }
314                            }
315                        }
316                        e.preventDefault();
317                    }
318                }
319
320                function clearBuffer(start, end) {
321                    var i;
322                    for (i = start; i < end && i < len; i++) {
323                        if (tests[i]) {
324                            buffer[i] = getPlaceholder(i);
325                        }
326                    }
327                }
328
329                function writeBuffer() { input.val(buffer.join('')); }
330
331                function checkVal(allow) {
332                    //try to place characters where they belong
333                    var test = input.val(),
334                        lastMatch = -1,
335                        i,
336                        c,
337                        pos;
338
339                    for (i = 0, pos = 0; i < len; i++) {
340                        if (tests[i]) {
341                            buffer[i] = getPlaceholder(i);
342                            while (pos++ < test.length) {
343                                c = test.charAt(pos - 1);
344                                if (tests[i].test(c)) {
345                                    buffer[i] = c;
346                                    lastMatch = i;
347                                    break;
348                                }
349                            }
350                            if (pos > test.length) {
351                                clearBuffer(i + 1, len);
352                                break;
353                            }
354                        } else {
355                            if (buffer[i] === test.charAt(pos)) {
356                                pos++;
357                            }
358                            if( i < partialPosition){
359                                lastMatch = i;
360                            }
361                        }
362                    }
363                    if (allow) {
364                        writeBuffer();
365                    } else if (lastMatch + 1 < partialPosition) {
366                        if (settings.autoclear || buffer.join('') === defaultBuffer) {
367                            // Invalid value. Remove it and replace it with the
368                            // mask, which is the default behavior.
369                            if(input.val()) input.val("");
370                            clearBuffer(0, len);
371                        } else {
372                            // Invalid value, but we opt to show the value to the
373                            // user and allow them to correct their mistake.
374                            writeBuffer();
375                        }
376                    } else {
377                        writeBuffer();
378                        input.val(input.val().substring(0, lastMatch + 1));
379                    }
380                    return (partialPosition ? i : firstNonMaskPos);
381                }
382
383                input.data($.mask.dataName,function(){
384                    return $.map(buffer, function(c, i) {
385                        return tests[i]&&c!=getPlaceholder(i) ? c : null;
386                    }).join('');
387                });
388
389
390                input
391                    .one("unmask", function() {
392                        input
393                            .off(".mask")
394                            .removeData($.mask.dataName);
395                    })
396                    .on("focus.mask", function() {
397                        if (input.prop("readonly")){
398                            return;
399                        }
400
401                        clearTimeout(caretTimeoutId);
402                        var pos;
403
404                        focusText = input.val();
405
406                        pos = checkVal();
407
408                        caretTimeoutId = setTimeout(function(){
409                            if(input.get(0) !== document.activeElement){
410                                return;
411                            }
412                            writeBuffer();
413                            if (pos == mask.replace("?","").length) {
414                                input.caret(0, pos);
415                            } else {
416                                input.caret(pos);
417                            }
418                        }, 10);
419                    })
420                    .on("blur.mask", blurEvent)
421                    .on("keydown.mask", keydownEvent)
422                    .on("keypress.mask", keypressEvent)
423                    .on("input.mask paste.mask", function() {
424                        if (input.prop("readonly")){
425                            return;
426                        }
427
428                        setTimeout(function() {
429                            var pos=checkVal(true);
430                            input.caret(pos);
431                            tryFireCompleted();
432                        }, 0);
433                    });
434                    if (chrome && android)
435                    {
436                        input
437                            .off('input.mask')
438                            .on('input.mask', androidInputEvent);
439                    }
440                    checkVal(); //Perform initial check for existing values
441            });
442        }
443    });
444}));

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.