PageSourceSearch

https://hrtlesvos.com/wp-content/cache/wpfc-minified/jmt3ai45/9q5cc.js

js hrtlesvos.com collected 2026-10-08 08:55:50 UTC 21,515 bytes, 502 lines download raw bytes

1// source --> https://hrtlesvos.com/wp-content/plugins/translatepress-business/add-ons-pro/automatic-language-detection/assets/js/trp-language-cookie.js?ver=1.0.9 
2/**
3 * Sets proper language cookie
4 *
5 * Sends ajax request to get browser and IP language.
6 * Sets cookie with current language.
7 * Changes cookie when clicking a link pointed to another language.
8 *
9 */
10function TRP_IN_Determine_Language(){
11    var _this = this;
12    var trpCookie = null;
13    var trpHelper = null;
14
15    this.get_lang_from_url = function ( url ) {
16        // we remove http or https
17        // if the user links to a http link but the abs_home_url is https, we're serving the https one so we don't brake cookies if he doesn't have proper redirects
18        var lang = url.replace( /^(http|https):\/\//g, '');
19        var abs_home = trp_language_cookie_data[ 'abs_home' ].replace( /^(http|https):\/\//g, '');
20
21        // we have removed the home path from our URL. We're adding a / in case it's the homepage of one of the languages
22        // removing / from the front so it's easier for understanding explode()
23        lang = trpHelper.ltrim( trpHelper.trailingslashit( lang.replace(abs_home, '') ),'/' );
24
25        // We now have to see if the first part of the string is actually a language slug
26        var lang_array = lang.split("/");
27        if( lang_array.length < 2 ){
28            return trp_language_cookie_data['default_language'];
29        }
30        // The language code is the first non-empty item in this array depending on abs_home slashes
31        for ( var i = 0; i < lang_array.length; i++ ){
32            if ( lang_array[i] != undefined && lang_array[i] != '' ) {
33                lang = lang_array[i];
34                break;
35            }
36        }
37        // the lang slug != actual lang. So we need to do array_search so we don't end up with en instead of en_US
38        if( trpHelper.in_array( lang, trp_language_cookie_data['url_slugs']) ){
39            return trpHelper.array_search(lang, trp_language_cookie_data['url_slugs'] );
40        } else {
41            return trp_language_cookie_data['default_language'];
42        }
43
44    };
45
46    this.get_current_dom_language = function(){
47        var html_language_document = document.getElementById("tp-language");
48        var html_language;
49        if ( html_language_document ){
50            if ( jQuery('#tp-language').attr('data-tp-language') ){
51                html_language = jQuery( '#tp-language' ).attr( 'data-tp-language' );
52            }else if (jQuery('#tp-language').attr('lang') ){
53                html_language = jQuery( '#tp-language' ).attr( 'lang' );
54            }
55        } else {
56            html_language = jQuery('html').attr('lang');
57            html_language = html_language.split("-").join("_");
58        }
59
60        if ( !trpHelper.in_array( html_language, trp_language_cookie_data['publish_languages'] ) ){
61            html_language = "error_determining_language";
62        }
63
64        return html_language;
65    };
66
67
68    this.ajax_get_needed_language = function() {
69        jQuery.ajax({
70            url: trp_language_cookie_data['trp_ald_ajax_url'],
71            type: 'post',
72            dataType: 'json',
73            data: {
74                action: 'trp_ald_get_needed_language',
75                detection_method: trp_language_cookie_data['detection_method'],
76                popup_option: trp_language_cookie_data['popup_option'],
77                popup_textarea: trp_language_cookie_data['popup_textarea'],
78                popup_type: trp_language_cookie_data['popup_type'],
79                popup_textarea_change_button: trp_language_cookie_data['popup_textarea_change_button'],
80                popup_textarea_close_button: trp_language_cookie_data['popup_textarea_close_button'],
81                publish_languages: trp_language_cookie_data['publish_languages'],
82                iso_codes: trp_language_cookie_data['iso_codes'],
83                english_name: trp_language_cookie_data['english_name'],
84                default_language: trp_language_cookie_data['default_language']
85            },
86            success: function( response ) {
87                if ( response ) {
88                    _this.redirect_if_needed( response );
89                }else{
90                    _this.redirect_if_needed( _this.get_current_dom_language() );
91                }
92
93            },
94            error: function( errorThrown ){
95                // make current language the needed language
96                _this.redirect_if_needed( _this.get_current_dom_language() );
97            }
98        });
99    };
100
101    this.activate_popup = function( response, url_to_redirect ){
102
103        _this.make_ls_clickable();
104        _this.ls_make_default_language_preselected( response );
105
106        var text_popup = document.getElementById("trp_ald_popup_text");
107        var popup = document.getElementById("trp_ald_modal_container");
108        var close = document.getElementById("trp_ald_x_button");
109
110        var popup_change_button = document.getElementById("trp_ald_popup_change_language");
111        var popup_close_button_text = document.getElementById("trp_ald_x_button_textarea");
112        var close_popup = document.getElementById("trp_ald_x_button_and_textarea");
113
114        popup.style.display= 'block';
115
116        var no_text_popup_select_current_language = document.getElementById('trp_ald_popup_current_language');
117
118        var replace_suggested_language_text = trp_language_cookie_data['popup_textarea'].replace("{{suggested_language}}", trp_language_cookie_data['english_name'][response]);
119
120        text_popup.innerHTML = replace_suggested_language_text;
121
122        popup_change_button.innerHTML = trp_language_cookie_data['popup_textarea_change_button'];
123
124        popup_close_button_text.innerHTML = trp_language_cookie_data['popup_textarea_close_button'];
125
126        close.title = trp_language_cookie_data['popup_textarea_close_button'];
127        popup_close_button_text.title = trp_language_cookie_data['popup_textarea_close_button'];
128        
129        close_popup.onclick = function(){
130            popup.style.display = 'none';
131            trpCookie.setCookie( trp_language_cookie_data['cookie_name'], _this.get_current_dom_language(), trp_language_cookie_data['cookie_age'], trp_language_cookie_data['cookie_path'] );
132
133        }
134
135        _this.ls_select_language();
136
137        popup_change_button.onclick = function(){
138            var selected_language = no_text_popup_select_current_language.getAttribute('data-trp-ald-selected-language');
139            trpCookie.setCookie( trp_language_cookie_data['cookie_name'], selected_language, trp_language_cookie_data['cookie_age'], trp_language_cookie_data['cookie_path'] );
140
141
142        }
143
144    }
145
146    this.activate_hello_bar = function (response, url_to_redirect){
147
148        var no_text_popup = document.getElementById("trp_ald_no_text_popup_template");
149
150        var clone = no_text_popup.content.cloneNode(true);
151
152        var close_button = clone.getElementById('trp_close');
153        var no_text_popup_text = clone.getElementById('trp_ald_no_text_popup_text');
154
155        var button_change_language_no_text_popup = clone.getElementById('trp_ald_no_text_popup_change_language');
156
157        var no_text_popup_select_current_language = clone.getElementById('trp_ald_popup_current_language');
158        var no_text_popup_x_textarea = clone.getElementById('trp_ald_no_text_popup_x_button_textarea');
159        var no_text_popup_duplicate_x_button = clone.getElementById('trp_ald_no_text_popup_x_button');
160
161        var div = document.createElement('div');
162
163        var replace_suggested_language_text = trp_language_cookie_data['popup_textarea'].replace("{{suggested_language}}", trp_language_cookie_data['english_name'][response]);
164
165        no_text_popup_text.innerHTML = replace_suggested_language_text;
166
167        button_change_language_no_text_popup.innerHTML = trp_language_cookie_data['popup_textarea_change_button'];
168
169
170        button_change_language_no_text_popup.onclick = function() {
171            var selected_language = no_text_popup_select_current_language.getAttribute( 'data-trp-ald-selected-language' );
172            trpCookie.setCookie( trp_language_cookie_data[ 'cookie_name' ], selected_language, trp_language_cookie_data[ 'cookie_age' ], trp_language_cookie_data[ 'cookie_path' ] );
173        }
174
175        no_text_popup_x_textarea.innerHTML = trp_language_cookie_data['popup_textarea_close_button'];
176
177        no_text_popup_x_textarea.title = trp_language_cookie_data['popup_textarea_close_button'];
178        close_button.title = trp_language_cookie_data['popup_textarea_close_button'];
179        no_text_popup_duplicate_x_button.title = trp_language_cookie_data['popup_textarea_close_button'];
180
181        div.appendChild(clone);
182        //html.insertBefore(clone, html.firstChild);
183
184        document.body.insertAdjacentElement('afterbegin', div);
185        //document.body.appendChild(clone);
186
187        close_button.onclick = function (){
188            trpCookie.setCookie( trp_language_cookie_data['cookie_name'], _this.get_current_dom_language(), trp_language_cookie_data['cookie_age'], trp_language_cookie_data['cookie_path'] );
189            document.body.removeChild(div);
190        }
191
192        no_text_popup_duplicate_x_button.onclick = function (){
193            trpCookie.setCookie( trp_language_cookie_data['cookie_name'], _this.get_current_dom_language(), trp_language_cookie_data['cookie_age'], trp_language_cookie_data['cookie_path'] );
194            document.body.removeChild(div);
195        }
196
197        no_text_popup_x_textarea.onclick = function (){
198            trpCookie.setCookie( trp_language_cookie_data['cookie_name'], _this.get_current_dom_language(), trp_language_cookie_data['cookie_age'], trp_language_cookie_data['cookie_path'] );
199            document.body.removeChild(div);
200        }
201
202        _this.make_ls_clickable();
203        _this.ls_select_language();
204        _this.ls_make_default_language_preselected( response );
205
206    }
207
208    this.make_ls_clickable = function (){
209        jQuery('.trp_ald_ls_container .trp-ls-shortcode-current-language').click(function () {
210            jQuery( '.trp_ald_ls_container .trp-ls-shortcode-current-language' ).addClass('trp-ls-clicked');
211            jQuery( '.trp_ald_ls_container .trp-ls-shortcode-language' ).addClass('trp-ls-clicked');
212        });
213
214        jQuery('.trp_ald_ls_container .trp-ls-shortcode-language').click(function () {
215            jQuery( '.trp_ald_ls_container .trp-ls-shortcode-current-language' ).removeClass('trp-ls-clicked');
216            jQuery( '.trp_ald_ls_container .trp-ls-shortcode-language' ).removeClass('trp-ls-clicked');
217        });
218
219
220        jQuery(document).keyup(function(e) {
221            if (e.key === "Escape") {
222                jQuery( '.trp_ald_ls_container .trp-ls-shortcode-current-language' ).removeClass('trp-ls-clicked');
223                jQuery( '.trp_ald_ls_container .trp-ls-shortcode-language' ).removeClass('trp-ls-clicked');
224            }
225        });
226
227        jQuery(document).on("click", function(event){
228            if(!jQuery(event.target).closest(".trp_ald_ls_container .trp-ls-shortcode-current-language").length){
229                jQuery( '.trp_ald_ls_container .trp-ls-shortcode-current-language' ).removeClass('trp-ls-clicked');
230                jQuery( '.trp_ald_ls_container .trp-ls-shortcode-language' ).removeClass('trp-ls-clicked');
231            }
232        });
233    }
234
235    this.ls_select_language = function(){
236
237        // todo
238        var no_text_current_language = document.querySelector('.trp-ls-shortcode-current-language');
239        var no_text_popup_select_current_language = document.querySelector('.trp-ls-shortcode-current-language');
240        var popup_change_button = document.getElementById("trp_ald_popup_change_language");
241        var button_change_language_no_text_popup = document.getElementById('trp_ald_no_text_popup_change_language');
242        jQuery('.trp-ald-popup-select').click(function ( item ) {
243            no_text_current_language.innerHTML = item.target.innerHTML;
244            no_text_current_language.setAttribute('data-trp-ald-selected-language', item.target.getAttribute('data-trp-ald-selected-language'));
245            var selected_language = no_text_popup_select_current_language.getAttribute('data-trp-ald-selected-language');
246            _this.set_language_href(selected_language,popup_change_button,button_change_language_no_text_popup);
247        });
248    }
249
250    this.ls_make_default_language_preselected = function( response ){
251
252        var no_text_current_language = document.querySelector('[special-selector = "trp_ald_popup_current_language"]');
253        var all_languages = document.querySelectorAll('.trp_ald_ls_container .trp-ald-popup-select');
254        var popup_change_button = document.getElementById("trp_ald_popup_change_language");
255        var button_change_language_no_text_popup = document.getElementById('trp_ald_no_text_popup_change_language');
256        for ( var i = 0; i< all_languages.length; i++){
257            if (all_languages[i].id === response){
258                no_text_current_language.innerHTML = all_languages[i].innerHTML;
259                no_text_current_language.setAttribute('data-trp-ald-selected-language', response);
260                no_text_current_language.setAttribute('id', response);
261                var selected_language = no_text_current_language.getAttribute('data-trp-ald-selected-language');
262                _this.set_language_href(selected_language, popup_change_button, button_change_language_no_text_popup);
263                break;
264            }
265        }
266    }
267
268    this.set_language_href = function ( selected_language, popup_change_button, button_change_language_no_text_popup ){
269        if( popup_change_button !== null ){
270            popup_change_button.href = _this.get_url_for_lang(selected_language);
271        }
272        if( button_change_language_no_text_popup !== null ){
273            button_change_language_no_text_popup.href = _this.get_url_for_lang(selected_language);
274        }
275    }
276
277    this.get_url_for_lang = function( language ){
278
279        for( i in trp_language_cookie_data['language_urls'] ){
280            if( i === language ) {
281                return trp_language_cookie_data['language_urls'][i];
282            }
283        }
284        return false;
285    };
286
287    this.is_valid_url = function ( url ) {
288        if ( typeof url === 'undefined' || url === '' ){
289            return false;
290        }
291        var starting_characters = ['#','?', 'javascript'];
292        for (var i = 0; i < starting_characters.length; i++ ){
293            if ( url.substring(0, starting_characters[i].length) === starting_characters[i]){
294                return false;
295            }
296        }
297        return true;
298    };
299
300    this.replace_underscore_with_dash = function (var_replace){
301        var_replace = var_replace.toLowerCase();
302        var_replace = var_replace.split("_").join("-");
303
304        return var_replace;
305    }
306
307    this.is_same_language_code = function (var1, var2){
308        var1 = _this.replace_underscore_with_dash(var1);
309        var2 = _this.replace_underscore_with_dash(var2);
310
311        if( var1 == var2 || var1 == "error_determining_language" || var2 == "error_determining_language" ){
312            return true;
313        }
314        return false;
315    }
316
317    this.is_login_url = function( url ){
318        if( url.includes( "wp-login.php" )){
319            return true;
320        }
321        return false;
322    }
323
324    this.add_event_handlers = function(){
325        jQuery('body').on('click', 'a', function(e) {
326
327            var clicked_url = jQuery(this).attr("href");
328            if ( _this.is_valid_url( clicked_url ) && !_this.is_login_url( clicked_url )) {
329                var clicked_language = _this.get_lang_from_url(clicked_url);
330                var trp_current_language = trpCookie.getCookie(trp_language_cookie_data['cookie_name']);
331
332                if (!(_this.is_same_language_code(trp_current_language, clicked_language))) {
333                    trpCookie.setCookie(trp_language_cookie_data['cookie_name'], clicked_language, trp_language_cookie_data['cookie_age'], trp_language_cookie_data['cookie_path']);
334                }
335            }
336        });
337    };
338
339    this.redirect_if_needed = function( needed_language ){
340        trpCookie.setCookie( trp_language_cookie_data['cookie_name'], needed_language, trp_language_cookie_data['cookie_age'], trp_language_cookie_data['cookie_path'] );
341        _this.add_event_handlers();
342
343        if (!(_this.is_same_language_code(_this.get_current_dom_language(), needed_language))){
344            url_to_redirect = _this.get_url_for_lang( needed_language );
345
346            if(url_to_redirect != 'undefined' && url_to_redirect!= false) {
347                // redirect to needed language
348                if(trp_language_cookie_data['popup_type'] == 'normal_popup' && trp_language_cookie_data['popup_option'] == 'popup'){
349                    _this.activate_popup( needed_language, url_to_redirect );
350                }else{
351                    if(trp_language_cookie_data['popup_type'] == 'hello_bar' && trp_language_cookie_data['popup_option'] == 'popup'){
352                        _this.activate_hello_bar(needed_language, url_to_redirect);
353                    }else {
354                        window.location.replace( url_to_redirect );
355                    }
356                }
357            }
358        }
359    };
360
361    this.initialize = function (){
362        trpCookie = new TRP_IN_Cookie();
363        trpHelper = new TRP_IN_Helper();
364        if ( ! trpCookie.areCookiesEnabled() ){
365            _this.add_event_handlers();
366            return;
367        }
368
369        var language_from_cookie = trpCookie.getCookie( trp_language_cookie_data['cookie_name'] );
370        if ( language_from_cookie && trpHelper.in_array( language_from_cookie, trp_language_cookie_data['publish_languages'] ) ) {
371            // if cookie is set, redirect if needed
372            _this.redirect_if_needed( language_from_cookie );
373        }else{
374            // if cookie is not set, send request to find out language and then redirect if needed
375            _this.ajax_get_needed_language();
376        }
377    };
378
379    _this.initialize();
380}
381
382/**
383 * String manipulation functions
384 */
385function TRP_IN_Helper(){
386
387    this.trailingslashit = function ( string ){
388        string = string.replace(/\/+$/,'');
389        string = string + '/';
390        return string;
391    };
392
393    this.ltrim = function ( string ) {
394        var trimmed = string.replace(/^\s+/g, '');
395        return trimmed;
396    };
397
398    this.in_array = function (needle, haystack) {
399        for(var i in haystack ) {
400            if(haystack[i] == needle) {
401                return true;
402            }
403        }
404        return false;
405    };
406
407    this.array_search = function(val, array) {
408        if(typeof(array) === 'array' || typeof(array) === 'object') {
409            var rekey;
410            for(var i in array) {
411                if(array[i] == val) {
412                    rekey = i;
413                    break;
414                }
415            }
416            return rekey;
417        }
418    };
419
420    /**
421     * Update url with query string.
422     *
423     */
424    this.update_query_string = function(key, value, url) {
425        if (!url) url = window.location.href;
426        var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"),
427            hash;
428
429        if (re.test(url)) {
430            if (typeof value !== 'undefined' && value !== null)
431                return url.replace(re, '$1' + key + "=" + value + '$2$3');
432            else {
433                hash = url.split('#');
434                url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
435                if (typeof hash[1] !== 'undefined' && hash[1] !== null)
436                    url += '#' + hash[1];
437                return url;
438            }
439        }
440        else {
441            if (typeof value !== 'undefined' && value !== null ) {
442                var separator = url.indexOf('?') !== -1 ? '&' : '?';
443                hash = url.split('#');
444                url = hash[0] + separator + key + '=' + value;
445                if (typeof hash[1] !== 'undefined' && hash[1] !== null)
446                    url += '#' + hash[1];
447                return url;
448            }
449            else
450                return url;
451        }
452    };
453}
454
455/**
456 * Manipulate cookie: set/get/erase
457 */
458function TRP_IN_Cookie() {
459    this.setCookie = function(cname,cvalue,exdays,cpath){
460        var d = new Date();
461        d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
462        var expires = "expires="+d.toUTCString();
463        document.cookie = cname + "=" + cvalue + ";" + expires + ";path=" + cpath + ";SameSite=Lax";
464    };
465
466    this.getCookie = function(cname) {
467        var name = cname + "=";
468        var ca = document.cookie.split(';');
469        for(var i = 0; i < ca.length; i++) {
470            var c = ca[i];
471            while (c.charAt(0) == ' ') {
472                c = c.substring(1);
473            }
474            if (c.indexOf(name) == 0) {
475                return c.substring(name.length, c.length);
476            }
477        }
478        return "";
479    };
480
481    this.eraseCookie = function(name) {
482        document.cookie = name+'=; Max-Age=-99999999;';
483    };
484
485    this.areCookiesEnabled = function(){
486        if (navigator.cookieEnabled) return true;
487
488        // set and read cookie
489        document.cookie = "cookietest=1";
490        var ret = document.cookie.indexOf("cookietest=") != -1;
491
492        // delete cookie
493        document.cookie = "cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT";
494
495        return ret;
496    }
497}
498
499
500jQuery( function() {
501    trpDetermineLanguage = new TRP_IN_Determine_Language();
502});

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.