PageSourceSearch

https://salons.nl/wp-content/plugins/listingpro-plugin/assets/js/submit-listing.js?ver=7.1.3

js salons.nl collected 2026-10-08 21:43:32 UTC 27,757 bytes, 535 lines download raw bytes

1var widgetsubmit;
2
3
4/**
5 * detect IE
6 * returns version of IE or false, if browser is not Internet Explorer
7 */
8function detectIE() {
9    var ua = window.navigator.userAgent;
10
11    var msie = ua.indexOf('MSIE ');
12    if (msie > 0) {
13        // IE 10 or older => return version number
14        return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
15    }
16
17    var trident = ua.indexOf('Trident/');
18    if (trident > 0) {
19        // IE 11 => return version number
20        var rv = ua.indexOf('rv:');
21        return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
22    }
23
24    var edge = ua.indexOf('Edge/');
25    if (edge > 0) {
26        // Edge (IE 12+) => return version number
27        return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
28    }
29
30    // other browser
31    return false;
32}
33
34function recaptchaCallbackk() {
35    if (jQuery('#recaptcha-securet').length) {
36        var sitekey = jQuery('#recaptcha-securet').data('sitekey');
37        widgetsubmit = grecaptcha.render(document.getElementById('recaptcha-securet'), {
38            'sitekey': sitekey
39        })
40    }
41}
42window.onload = recaptchaCallbackk;
43jQuery(document).on('submit', '#lp-submit-form', function(e) {
44
45    jQuery('.error_box').hide('');
46    jQuery('.error_box').html('');
47    jQuery('.error_box').text('');
48    jQuery('.username-invalid-error').html('');
49    jQuery('.username-invalid-error').text('');
50    var $this = jQuery(this);
51    jQuery('span.email-exist-error').remove();
52    jQuery('input').removeClass('error-msg');
53    jQuery('textarea').removeClass('error-msg');
54
55    var checkforgallery = false;
56    if (jQuery('.jFiler-input-dragDrop .jFiler-input-inner .filediv input').hasClass('lp-required-field')) {
57        checkforgallery = true;
58    }
59    if (checkforgallery){
60        if (jQuery('div.filediv').length > 1) {
61            jQuery('.jFiler-input-dragDrop').css('border-color', '#C8CBCE');
62            jQuery('.jFiler-input-dragDrop .jFiler-input-inner .filediv input').removeClass('error-msg');
63        }else {
64            jQuery('.jFiler-input-dragDrop').css('border-color', '#eb5439');
65            jQuery('.jFiler-input-dragDrop .jFiler-input-inner .filediv input').addClass('error-msg');
66        }
67    }
68
69    var checkforfimage = false;
70    if (jQuery('#lp-featuredimage').hasClass('lp-required-field')) {
71        checkforfimage = true;
72    }
73    if (checkforfimage){
74        if( document.getElementById("lp-featuredimage").files.length != 0 ){
75            jQuery('.featured-img-label').css('border-color', '#C8CBCE');
76            jQuery('#lp-featuredimage').removeClass('error-msg');
77        }else {
78            jQuery('.featured-img-label').css('border-color', '#eb5439');
79            jQuery('#lp-featuredimage').addClass('error-msg');
80        }
81    }
82
83    var checkforblogo = false;
84    if (jQuery('#business_logo').hasClass('lp-required-field')) {
85        checkforblogo = true;
86    }
87    if (checkforblogo){
88        if( document.getElementById("business_logo").files.length != 0 ){
89            jQuery('.b-logo-img-label').css('border-color', '#C8CBCE');
90            jQuery('#business_logo').removeClass('error-msg');
91        }else {
92            jQuery('.b-logo-img-label').css('border-color', '#eb5439');
93            jQuery('#business_logo').addClass('error-msg');
94        }
95    }
96
97    if (jQuery('#citiess').hasClass('lp-required-field')) {
98        if (jQuery('.lp-selected-locs .lpsinglelocselected').length>0) {
99            jQuery('#citiess').removeClass('lp-required-field');
100        }
101    }
102    if (jQuery('#inputAddresss,#inputAddress').hasClass('lp-required-field')) {
103        if (jQuery('#inputAddresss').val()!=''){
104            jQuery('#inputAddress').removeClass('lp-required-field');
105            if(!jQuery('#inputAddresss').hasClass('lp-required-field')){
106                jQuery('#inputAddresss').addClass('lp-required-field');
107            }
108        }
109        else if(jQuery('#inputAddress').val()!=''){
110            jQuery('#inputAddresss').removeClass('lp-required-field');
111            if(!jQuery('#inputAddress').hasClass('lp-required-field')){
112                jQuery('#inputAddress').addClass('lp-required-field');
113            }
114        }
115    }
116
117    var is_valid_form = true;
118    $this.find('input.lp-required-field, select.lp-required-field, textarea.lp-required-field').each(function() {
119        var tag_name = jQuery(this).prop("tagName").toLowerCase();
120        var field_val = jQuery(this).val();
121
122        if ((jQuery(this).attr('id') == 'inputUsername') || (jQuery(this).attr('id') == 'inputUserpass') || (jQuery(this).attr('id') == 'inputEmail') || (jQuery(this).attr('id') == 'customUname')) {
123            if (jQuery('#already-account').is(':checked')) {
124                if (jQuery('input#inputUsername').val() == '' || jQuery('input#inputUserpass').val() == '') {
125                    jQuery('input#inputUsername').addClass('error-msg');
126                    jQuery('input#inputUserpass').addClass('error-msg');
127                    is_valid_form = false;
128                }else {
129                    jQuery('input#inputEmail').removeClass('error-msg');
130                }
131            }else {
132                if (jQuery('input#inputEmail').val() == '') {
133                    jQuery('input#inputEmail').addClass('error-msg');
134                    is_valid_form = false;
135                }else {
136                    jQuery('input#inputEmail').removeClass('error-msg');
137                }
138                if (jQuery('input#customUname').length > 0) {
139                    if (jQuery('input#customUname').val() == '') {
140                        jQuery('input#customUname').addClass('error-msg');
141                        is_valid_form = false;
142                    } else {
143                        jQuery('input#customUname').removeClass('error-msg');
144                    }
145                }
146            }
147        } else {
148            if (field_val == '') {
149                if (tag_name === 'select') {
150                    jQuery(this).next().addClass('error-msg');
151                } else if (jQuery(this).hasClass('wp-editor-area')) {
152                    jQuery(this).closest(".wp-editor-container").addClass('error-msg');
153                } else {
154                    jQuery(this).addClass('error-msg');
155                }
156                is_valid_form = false;
157            } else {
158                if (tag_name === 'select') {
159                    jQuery(this).next().removeClass('error-msg');
160                } else if (jQuery(this).hasClass('wp-editor-area')) {
161                    jQuery(this).closest(".wp-editor-container").removeClass('error-msg');
162                } else {
163                    jQuery(this).removeClass('error-msg');
164                }
165            }
166        }
167    });
168
169    var checksocial = false;
170    if (jQuery('.required-social-media').length > 0) {
171        checksocial = true;
172    }
173    if (checksocial) {
174        if (jQuery('.style2-social-list-section .social-row').length > 0) {
175            jQuery('#get_media_url').removeClass('error');
176            jQuery('#get_media_url').removeClass('error-msg');
177            jQuery('#select2-get_media-container').removeClass('error');
178            jQuery('#select2-get_media-container').removeClass('error-msg');
179            if( is_valid_form === true ) {
180                is_valid_form = true;
181            }
182        }else {
183            jQuery('#get_media_url').addClass('error');
184            jQuery('#get_media_url').addClass('error-msg');
185            jQuery('#select2-get_media-container').addClass('error');
186            jQuery('#select2-get_media-container').addClass('error-msg');
187            if( is_valid_form === true ) {
188                is_valid_form = false;
189            }
190        }
191    }
192
193    if( is_valid_form === true ){
194
195        $this.find('.preview-section .fa-angle-right').removeClass('fa-angle-right');
196        $this.find('.preview-section .fa').addClass('fa-spinner fa-spin');
197        jQuery('.bottomofbutton.lpsubmitloading').addClass('fa-spinner fa-spin');
198        jQuery('.loaderoneditbutton.lpsubmitloading').addClass('fa-spinner fa-spin');
199
200        isCaptcha = jQuery(this).data('lp-recaptcha');
201        siteKey = jQuery(this).data('lp-recaptcha-sitekey');
202        token = '';
203
204        var fd = new FormData(this);
205
206        $maxAlloedSize = parseInt(jQuery('#lp-submit-form').data('imgsize'));
207        $totalAlloedImgs = parseInt(jQuery('#lp-submit-form').data('imgcount'));
208
209        if(detectIE() == false){
210
211            var $fullbrowserdet = navigator.sayswho;
212            var $browserArray = $fullbrowserdet.split(" ");// outputs: `Chrome 62`
213            if($browserArray[0]=="Safari"){
214                if($browserArray[1] >= 12){
215                    fd.delete('listingfiles[]');
216                    fd.delete('lp-featuredimage[]');
217                    fd.delete('business_logo[]');
218                }
219
220            }else{
221
222                fd.delete('listingfiles[]');
223                fd.delete('lp-featuredimage[]');
224                fd.delete('business_logo[]');
225
226            }
227
228
229        }
230
231        $totalfilesize = 0;
232        var lpcount = 0;
233        var lpcountsize = 0;
234        $totalfilesize = jQuery('.lplistgallery').attr('data-savedgallweight');
235        $selectedImagesCount = jQuery('.lplistgallery').attr('data-savedgallerysize');
236        if (jQuery("input[name='listingfiles[]']").length){
237            jQuery.each(jQuery("input[name='listingfiles[]']"), function(k, files) {
238                jQuery.each(jQuery("input[name='listingfiles[]']")[k].files, function(i, file) {
239                    if(file.size > 1 || file.fileSize > 1) {
240                        fd.append('listingfiles[' + lpcount + ']', file);
241                        lpcount++;
242                    }
243                });
244            });
245        }
246
247        $AlloedSize = true;
248        $Alloedimgcount = true;
249        if(!isNaN($totalfilesize)){
250            if($totalfilesize > $maxAlloedSize){
251                msgf = jQuery('#lp-submit-form').data('sizenotice');
252                var resError = {response : 'fail', msg : msgf};
253                listing_ajax_response_notice(resError);
254                $this.find('.preview-section').addClass('fa-angle-right');
255                jQuery('.lpsubmitloading').addClass('fa-angle-right');
256                $this.find('.preview-section .fa').removeClass('fa-spinner fa-spin');
257                jQuery('.bottomofbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
258                jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
259                $AlloedSize = false;
260                return false;
261            }
262        }
263        if($selectedImagesCount > $totalAlloedImgs){
264            msgf = jQuery('#lp-submit-form').data('countnotice');
265            var resError = {response : 'fail', msg : msgf};
266            listing_ajax_response_notice(resError);
267            jQuery('.lpsubmitloading').addClass('fa-angle-right');
268            $this.find('.preview-section').addClass('fa-angle-right');
269            $this.find('.preview-section .fa').removeClass('fa-spinner fa-spin');
270            jQuery('.bottomofbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
271            jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
272            $Alloedimgcount = false;
273        }else{
274
275
276
277            if (jQuery("input[name='business_logo[]']").length){
278                fd.append('business_logo[]', jQuery("input[name='business_logo[]']")[0].files[0]);
279            }
280
281            if (jQuery("input[name='lp-featuredimage[]']").length){
282                fd.append('lp-featuredimage[]', jQuery("input[name='lp-featuredimage[]']")[0].files[0]);
283            }
284            jQuery("#listingsubmitBTN").prop('disabled', !0);
285            fd.append('action', 'listingpro_submit_listing_ajax');
286            if (jQuery('#already-account').is(':checked')) {
287                fd.append('processLogin', 'yes')
288            } else {
289                fd.append('processLogin', 'no')
290            }
291            var postContent = tinymce.editors.inputDescription.getContent();
292            if (postContent != '' || postContent != null || postContent != !1) {
293                fd.append('postContent', postContent)
294            } else {
295                fd.append('postContent', '')
296            }
297            if($Alloedimgcount == true){
298                fd.append('imageCount', lpcount)
299            }
300            if ( (isCaptcha == '' || isCaptcha === null) || (siteKey == '' || siteKey === null) ) {
301                jQuery.ajax({
302                    type: 'POST',
303                    url: ajax_listingpro_submit_object.ajaxurl,
304                    data: fd,
305                    contentType: !1,
306                    processData: !1,
307                    success: function(res) {
308
309                        var resp = jQuery.parseJSON(res);
310                        listing_ajax_response_notice(resp);
311                        if (resp.response === "fail") {
312                            jQuery("#listingsubmitBTN").prop('disabled', !1);
313                            jQuery.each(resp.status, function(k, v) {
314                                if (k === "postTitle") {
315                                    jQuery("input:text[name='postTitle']").addClass('error-msg')
316                                } else if (k === "gAddress") {
317                                    jQuery("input:text[name='gAddress']").addClass('error-msg')
318                                } else if (k === "category") {
319                                    jQuery("#inputCategory_chosen").find('a.chosen-single').addClass('error-msg');
320                                    jQuery("#inputCategory").next('.select2-container').find('.selection').find('.select2-selection--single').addClass('error-msg');
321                                    jQuery("#inputCategory").next('.select2-container').find('.selection').find('.select2-selection--multiple').addClass('error-msg')
322                                } else if (k === "location") {
323                                    jQuery("#inputCity_chosen").find('a.chosen-single').addClass('error-msg');
324                                    jQuery("#inputCity").next('.select2-container').find('.selection').find('.select2-selection--single').addClass('error-msg');
325                                    jQuery("#inputCity").next('.select2-container').find('.selection').find('.select2-selection--multiple').addClass('error-msg')
326                                } else if (k === "postContent") {
327                                    jQuery("textarea[name='postContent']").addClass('error-msg');
328                                    jQuery("#lp-submit-form .wp-editor-container").addClass('error-msg')
329                                } else if (k === "email") {
330                                    jQuery("input#inputEmail").addClass('error-msg')
331                                } else if (k === "inputUsername") {
332                                    jQuery("input#inputUsername").addClass('error-msg')
333                                } else if (k === "inputUserpass") {
334                                    jQuery("input#inputUserpass").addClass('error-msg')
335                                }
336                            });
337                            var errorrmsg = jQuery("input[name='errorrmsg']").val();
338                            $this.find('.preview-section .fa-spinner').removeClass('fa-spinner fa-spin');
339                            $this.find('.preview-section .fa').addClass('fa-times');
340                            $this.find('.preview-section').find('.error_box').text(errorrmsg).show();
341                            jQuery('.bottomofbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
342                            jQuery('.bottomofbutton.lpsubmitloading').addClass('fa-times');
343                            jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
344                            jQuery('.loaderoneditbutton.lpsubmitloading').addClass('fa-times');
345                        } else if (resp.response === "failure") {
346                            if (jQuery('#already-account').is(':checked')) {
347                                jQuery('.lp-submit-have-account').append(resp.status)
348                            } else {
349                                jQuery("input#inputEmail").after(resp.status);
350                                jQuery("div#inputEmail").after(resp.status)
351                            }
352                            $this.find('.preview-section .fa-spinner').removeClass('fa-spinner fa-spin');
353                            $this.find('.preview-section .fa').addClass('fa-angle-right');
354                            jQuery("#listingsubmitBTN").prop('disabled', !1);
355                            jQuery('.bottomofbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
356                            jQuery('.bottomofbutton.lpsubmitloading').addClass('fa-times');
357                            jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
358                            jQuery('.loaderoneditbutton.lpsubmitloading').addClass('fa-times');
359                        } else if (resp.response === "success") {
360                            $this.find('.preview-section .fa-spinner').removeClass('fa-times');
361                            $this.find('.preview-section .fa-spinner').removeClass('fa-spinner fa-spin');
362                            $this.find('.preview-section .fa').addClass('fa-check');
363                            jQuery('.bottomofbutton.lpsubmitloading').removeClass('fa-times');
364                            jQuery('.bottomofbutton.lpsubmitloading').addClass('fa-check');
365                            jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
366                            jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-angle-right');
367                            jQuery('.loaderoneditbutton.lpsubmitloading').addClass('fa-check');
368                            var redURL = resp.status;
369
370                            function redirectPageNow() {
371                                window.location.href = redURL
372                            }
373                            setTimeout(redirectPageNow, 1000)
374                        }
375                    },
376                    error: function(request, error) {
377
378                        $this.find('.preview-section .fa-spinner').removeClass('fa-times');
379                        $this.find('.preview-section .fa-spinner').removeClass('fa-spinner fa-spin');
380                        $this.find('.preview-section .fa').addClass('fa-times');
381                        alert(error)
382                    }
383                });
384
385
386            }else{
387                //for recaptcha
388                grecaptcha.ready(function() {
389                    grecaptcha.execute(siteKey, {action: 'lp_submitlisting'}).then(function(token) {
390                        fd.append('recaptha-action', 'lp_submitlisting');
391                        fd.append('token', token);
392
393
394                        jQuery.ajax({
395                            type: 'POST',
396                            url: ajax_listingpro_submit_object.ajaxurl,
397                            data: fd,
398                            contentType: !1,
399                            processData: !1,
400                            success: function(res) {
401
402                                var resp = jQuery.parseJSON(res);
403                                listing_ajax_response_notice(resp);
404                                if (resp.response === "fail") {
405                                    jQuery("#listingsubmitBTN").prop('disabled', !1);
406                                    jQuery.each(resp.status, function(k, v) {
407                                        if (k === "postTitle") {
408                                            jQuery("input:text[name='postTitle']").addClass('error-msg')
409                                        } else if (k === "gAddress") {
410                                            jQuery("input:text[name='gAddress']").addClass('error-msg')
411                                        } else if (k === "category") {
412                                            jQuery("#inputCategory_chosen").find('a.chosen-single').addClass('error-msg');
413                                            jQuery("#inputCategory").next('.select2-container').find('.selection').find('.select2-selection--single').addClass('error-msg');
414                                            jQuery("#inputCategory").next('.select2-container').find('.selection').find('.select2-selection--multiple').addClass('error-msg')
415                                        } else if (k === "location") {
416                                            jQuery("#inputCity_chosen").find('a.chosen-single').addClass('error-msg');
417                                            jQuery("#inputCity").next('.select2-container').find('.selection').find('.select2-selection--single').addClass('error-msg');
418                                            jQuery("#inputCity").next('.select2-container').find('.selection').find('.select2-selection--multiple').addClass('error-msg')
419                                        } else if (k === "postContent") {
420                                            jQuery("textarea[name='postContent']").addClass('error-msg');
421                                            jQuery("#lp-submit-form .
421wp-editor-container").addClass('error-msg')
422                                        } else if (k === "email") {
423                                            jQuery("input#inputEmail").addClass('error-msg')
424                                        } else if (k === "inputUsername") {
425                                            jQuery("input#inputUsername").addClass('error-msg')
426                                        } else if (k === "inputUserpass") {
427                                            jQuery("input#inputUserpass").addClass('error-msg')
428                                        }
429                                    });
430                                    var errorrmsg = jQuery("input[name='errorrmsg']").val();
431                                    $this.find('.preview-section .fa-spinner').removeClass('fa-spinner fa-spin');
432                                    $this.find('.preview-section .fa').addClass('fa-times');
433                                    $this.find('.preview-section').find('.error_box').text(errorrmsg).show();
434                                    jQuery('.bottomofbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
435                                    jQuery('.bottomofbutton.lpsubmitloading').addClass('fa-times');
436                                    jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
437                                    jQuery('.loaderoneditbutton.lpsubmitloading').addClass('fa-times');
438                                } else if (resp.response === "failure") {
439                                    if (jQuery('#already-account').is(':checked')) {
440                                        jQuery('.lp-submit-have-account').append(resp.status)
441                                    } else {
442                                        jQuery("input#inputEmail").after(resp.status);
443                                        jQuery("div#inputEmail").after(resp.status)
444                                    }
445                                    $this.find('.preview-section .fa-spinner').removeClass('fa-spinner fa-spin');
446                                    $this.find('.preview-section .fa').addClass('fa-angle-right');
447                                    jQuery("#listingsubmitBTN").prop('disabled', !1);
448                                    jQuery('.bottomofbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
449                                    jQuery('.bottomofbutton.lpsubmitloading').addClass('fa-times');
450                                    jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
451                                    jQuery('.loaderoneditbutton.lpsubmitloading').addClass('fa-times');
452                                } else if (resp.response === "success") {
453                                    $this.find('.preview-section .fa-spinner').removeClass('fa-times');
454                                    $this.find('.preview-section .fa-spinner').removeClass('fa-spinner fa-spin');
455                                    $this.find('.preview-section .fa').addClass('fa-check');
456                                    jQuery('.bottomofbutton.lpsubmitloading').removeClass('fa-times');
457                                    jQuery('.bottomofbutton.lpsubmitloading').addClass('fa-check');
458                                    jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-spinner fa-spin');
459                                    jQuery('.loaderoneditbutton.lpsubmitloading').removeClass('fa-angle-right');
460                                    jQuery('.loaderoneditbutton.lpsubmitloading').addClass('fa-check');
461                                    var redURL = resp.status;
462
463                                    function redirectPageNow() {
464                                        window.location.href = redURL
465                                    }
466                                    setTimeout(redirectPageNow, 1000)
467                                }
468                            },
469                            error: function(request, error) {
470                                if (!jQuery('#recaptcha-securet').length === 0) {
471                                    lp_reset_grecaptcha()
472                                }
473                                $this.find('.preview-section .fa-spinner').removeClass('fa-times');
474                                $this.find('.preview-section .fa-spinner').removeClass('fa-spinner fa-spin');
475                                $this.find('.preview-section .fa').addClass('fa-times');
476                                alert(error)
477                            }
478                        });
479
480
481                    });
482                })
483
484
485            }
486        }
487    }else{
488        var error_msg = 'Sorry! There is problem in your submission';
489        if(jQuery('.lp-notifaction-error').length > 0){
490            error_msg = jQuery('.lp-notifaction-error').data('error-msg');
491        }
492        var resp = {
493            response: 'fail',
494            msg: error_msg
495        };
496        listing_ajax_response_notice(resp);
497        return false;
498    }
499    e.preventDefault()
500});
501
502
503
504function listing_ajax_response_notice(res){
505    if( res.response == 'success' ){
506        jQuery('.lp-notifaction-area').find('h4').text(res.msg);
507        jQuery('.lp-notifaction-area').removeClass('lp-notifaction-error').addClass('lp-notifaction-success');
508        jQuery('.lp-notifaction-area').addClass('active-wrap');
509
510    }
511    if ( res.response == 'fail' || res.response == 'failure' ){
512        jQuery('.lp-notifaction-area').find('h4').text(res.msg);
513        jQuery('.lp-notifaction-area').removeClass('lp-notifaction-success').addClass('lp-notifaction-error');
514        jQuery('.lp-notifaction-area').addClass('active-wrap');
515    }
516}
517
518//check browser code
519
520navigator.sayswho= (function(){
521    var ua= navigator.userAgent, tem,
522        M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
523    if(/trident/i.test(M[1])){
524        tem=  /\brv[ :]+(\d+)/g.exec(ua) || [];
525        return 'IE '+(tem[1] || '');
526    }
527    if(M[1]=== 'Chrome'){
528        tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
529        if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
530    }
531    M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
532    if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
533    return M.join(' ');
534})();
535

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.