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.