PageSourceSearch

https://a-markets.org/wp-content/plugins/amarkets-partials/chat2desk/js/chat2desk.js?ver=403.1175

js a-markets.org collected 2026-10-07 16:39:08 UTC 8,263 bytes, 249 lines download raw bytes

1const CHAT_OPEN_CLASS = 'online-chat-open';
2
3if (!window.hasOwnProperty('chat2desk')) {
4    window.chat2desk = {};
5}
6
7function show_chat2desk() {
8    const chat2desk_ie_11_support = document.createElement('script');
9
10    window.chat2desk.is_started = true;
11    chat2desk_ie_11_support.type = 'text/javascript';
12    chat2desk_ie_11_support.src = 'https://livechat-v2.chat24.io/packs/ie-11-support.js';
13
14    document.body.appendChild(chat2desk_ie_11_support);
15
16    chat2desk_ie_11_support.onload = () => {
17        set_chat2desk_invisible();
18        init_chat2desk_base();
19    };
20}
21
22function set_chat2desk_invisible() {
23    const chatStyles = document.createElement('style');
24    chatStyles.id = 'chat2desk-visibility';
25    chatStyles.textContent = `
26        #chat24-root {
27            visibility: hidden;
28            opacity: 0;
29        }
30    `;
31
32    document.head.appendChild(chatStyles);
33}
34
35function init_chat2desk_base() {
36    window.chat24_token = get_chat24_token();
37    window.chat24_url = 'https://livechat-v2.chat24.io';
38    window.chat24_socket_url = 'wss://livechat-v2.chat24.io/widget_ws_new';
39    window.chat24_show_new_wysiwyg = 'true';
40    window.chat24_static_files_domain = 'https://storage.chat24.io/';
41    window.lang = 'en';
42    window.fetch(''.concat(window.chat24_url, '/packs/manifest.json?nocache=').concat(new Date().getTime())).then(function (res) {
43        return res.json();
44    })
45        .then(function (data) {
46            const chat24 = document.createElement('script');
47
48            chat24.type = 'text/javascript';
49            chat24.async = true;
50            chat24.src = ''.concat(window.chat24_url).concat(data['application.js']);
51
52            document.body.appendChild(chat24);
53        })
54        .then(function () {
55            document.addEventListener('initialize_widget', function (event) {
56                const chat24_el = document.querySelector('#chat24-root chat-24');
57
58                set_locale_classes(chat24_el);
59                apply_styles_chat2desk(chat24_el, set_chat2desk_visible);
60                set_chat_state(chat24_el);
61                add_custom_links(chat24_el);
62                set_start_button_tracking(chat24_el);
63            });
64            document.addEventListener('first_client_message', function () {
65                const chat24 = document.querySelector('#chat24-root chat-24');
66
67                chat24.sendClientInfo({
68                    customFields: {
69                        17: get_os(),
70                        777: window.location.href,
71                    }
72                });
73            });
74        });
75}
76
77function get_chat24_token() {
78    const me_domains = ['amtrading.vip', 'amarkets.trading'];
79
80    if (me_domains.includes(window.location.hostname)) {
81        return 'acff28d2e89f37a361d4fbfe8843be91';
82    }
83
84    return '5dc4e9aa6fcccf69bda6eeae2d7404eb';
85}
86
87function set_locale_classes(chat24_el) {
88    const chat_shadow_root = chat24_el.shadowRoot;
89    const chat_wrapper = chat_shadow_root.querySelector('.chat24-container');
90    const language = document.documentElement.lang.split('-')[0];
91
92    if (document.body.classList.contains('rtl')) {
93        chat_wrapper.classList.add('chat24-container--rtl');
94    }
95
96    if (language) {
97        chat_wrapper.classList.add(`chat24-container--${language}`);
98    }
99}
100
101function apply_styles_chat2desk(chat24_el, callback) {
102    const custom_css_link = document.getElementById('partial_chat2desk-css');
103    const chat_shadow_root = chat24_el.shadowRoot;
104    const link = document.createElement('link');
105
106    if (custom_css_link === null) {
107        return;
108    }
109
110    link.setAttribute('rel', 'stylesheet');
111    link.setAttribute('href', custom_css_link.getAttribute('href'));
112
113    chat_shadow_root.appendChild(link);
114    link.onload = callback;
115}
116
117function set_chat2desk_visible() {
118    const visibility_hide_rule = document.querySelector('#chat2desk-visibility');
119
120    const timeout_id = setTimeout(() => {
121        if (visibility_hide_rule) {
122            visibility_hide_rule.parentNode.removeChild(visibility_hide_rule);
123        }
124
125        clearTimeout(timeout_id);
126    }, 200);
127}
128
129function set_chat_state(chat24_el) {
130    const chat_shadow_root = chat24_el.shadowRoot;
131    const online_chat = chat_shadow_root.querySelector('.online-chat');
132    const storage_state = 'chat-to-desk-open-status';
133    const storage_values = {
134        open: 'open',
135        close: 'close',
136    };
137    const is_chat_open = localStorage.getItem(storage_state);
138
139    if (is_chat_open === storage_values.open) {
140        setTimeout(() => {
141            document.dispatchEvent(new CustomEvent('popups:open'));
142        }, 0);
143    }
144
145    const observer = new MutationObserver((mutations) => {
146        mutations.forEach((mutation) => {
147            if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
148                const was_collapsed = mutation.oldValue?.includes('online-chat--collapsed') ?? false;
149                const is_collapsed = mutation.target.classList.contains('online-chat--collapsed');
150                const status = is_collapsed ? storage_values.close : storage_values.open;
151
152                localStorage.setItem(storage_state, status);
153                toggle_chat_open_class(chat24_el, !is_collapsed);
154
155                if (!is_collapsed && was_collapsed) {
156                    window.send_gtm_event?.({
157                        eventCategory1: 'footer',
158                        eventAction: 'confirm',
159                        eventLabel: 'chat',
160                        eventLabel1: 'online-chat',
161                    });
162                }
163            }
164        });
165    });
166
167    observer.observe(online_chat, {
168        attributes: true,
169        attributeFilter: ['class'],
170        attributeOldValue: true,
171    });
172}
173
174function toggle_chat_open_class(chat24_el, is_chat_open) {
175    const chat_wrapper = chat24_el.shadowRoot.querySelector('.chat24-container');
176    if (!chat_wrapper) return;
177
178    document.body.classList.toggle(CHAT_OPEN_CLASS, is_chat_open);
179    chat_wrapper.classList.toggle(CHAT_OPEN_CLASS, is_chat_open);
180}
181
182function set_start_button_tracking(chat24_el) {
183    const chat_shadow_root = chat24_el.shadowRoot;
184    const start_btn = chat_shadow_root.querySelector('.startBtn__button');
185
186    if (!start_btn) return;
187
188    let is_open = false;
189
190    start_btn.addEventListener('click', () => {
191        is_open = !is_open;
192        window.send_gtm_event?.({
193            eventCategory1: 'footer',
194            eventAction: is_open ? 'open' : 'close',
195            eventLabel: 'chat',
196        });
197    });
198}
199
200function add_custom_links(chat24_el) {
201    const custom_links = [
202        {
203            name: 'faq',
204            href: __('https://www.amarkets.com/research-education/faq/', 'amarkets-partials'),
205        },
206        {
207            name: 'whatsapp',
208            href: 'https://wa.me/441213876156',
209        },
210    ];
211    const whatsapp_locales_map = ['ms', 'id', 'hi', 'ru', 'uz', 'ky', 'kk'];
212    const add_whatsapp = whatsapp_locales_map.includes(document.documentElement.lang);
213    const chat_shadow_root = chat24_el.shadowRoot;
214    const messengers = chat_shadow_root.querySelector('.messengers');
215
216    custom_links.forEach(link => {
217        if (link.name === 'whatsapp' && !add_whatsapp) return;
218
219        const link_html = `<a href="${link.href}" target="_blank" class="messenger messenger--custom messenger--${link.name} messenger--vertical"></a>`;
220        messengers.insertAdjacentHTML('afterbegin', link_html);
221
222        send_gtm_events_on_messenger_click(messengers.querySelector(`.messenger--${link.name}`), link.name);
223    });
224
225    send_gtm_events_on_messenger_click(messengers.querySelector('a[href*="t.me"]'), 'telegram');
226}
227
228function send_gtm_events_on_messenger_click(element, label) {
229    if (!element) return;
230
231    element.addEventListener('click', () => {
232        window.send_gtm_event?.({
233            eventCategory1: 'footer',
234            eventAction: 'confirm',
235            eventLabel: 'chat',
236            eventLabel1: label,
237        });
238    });
239}
240
241function get_os() {
242    const user_agent = navigator.userAgent;
243
244    if (/android|iPad|iPhone|iPod/i.test(user_agent) || (navigator.userAgent.includes('Mac') && 'ontouchend' in document)) {
245        return 'Web_mob';
246    }
247
248    return 'Web_pc';
249}

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.