PageSourceSearch

https://www.naftemporiki.gr/wp-content/themes/naftemporiki/js/site.js?ver=1789746539

js naftemporiki.gr collected 2026-09-24 08:56:52 UTC 108,739 bytes, 3,319 lines download raw bytes

1var $ = jQuery.noConflict();
2
3var recentlyViews = document.getElementById("recentlyViews");
4if (recentlyViews) {
5  let symbols = getCookie('id_symbol');
6  $.get({
7    url: '/wp-json/naftemporiki/get-recently-views',
8    data: { "symbols": JSON.stringify(symbols) },
9    success: function (data) {
10      if (data) {
11        recentlyViews.innerHTML = data;
12      }
13    }
14  });
15}
16
17function containsObject(obj, list) {
18  var i;
19  for (i = 0; i < list.length; i++) {
20    if (JSON.stringify(list[i]) === JSON.stringify(obj)) {
21      return true;
22    }
23  }
24
25  return false;
26}
27
28var chEckIfSingle = document.querySelector('.single-symbol');
29
30function setCookie(name, value, days) {
31  var expires = "";
32  if (days) {
33    var date = new Date();
34    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
35    expires = "; expires=" + date.toUTCString();
36  }
37  document.cookie = name + "=" + (value || "") + expires + "; path=/";
38}
39
40function getCookie(name) {
41  let a = `; ${document.cookie}`.match(`;\\s*${name}=([^;]+)`);
42  return a ? JSON.parse(a[1]) : [];
43}
44
45if (chEckIfSingle) {
46  let arr = getCookie('id_symbol');
47  var id = chEckIfSingle.getAttribute('id');
48  var dataClass = chEckIfSingle.getAttribute('data-class')
49
50  var obj = {};
51  obj[id] = dataClass
52  var field = obj;
53
54  if (!containsObject(field, arr)) {
55    arr.push(field);
56  }
57  var test = [];
58  setCookie("id_symbol", JSON.stringify(arr), 5)
59}
60
61var taxMenu = document.querySelector('#tax-menu')
62
63if (taxMenu) {
64  taxMenu.addEventListener('click', function (e) {
65    e.preventDefault();
66    var myTaxDropdown = document.getElementById('myTaxDropdown');
67    if (myTaxDropdown) {
68      if (myTaxDropdown.classList.contains('show')) {
69        myTaxDropdown.classList.remove('show')
70      } else {
71        myTaxDropdown.classList.add('show')
72      }
73    }
74    if (this.classList.contains('open')) {
75      this.classList.remove('open')
76    } else {
77      this.classList.add('open')
78    }
79  })
80}
81
82var widtht, containerwidth, left, way = 1, timer1, flag = false, t = 5;
83
84function toggleL() {
85  way = 1;
86  left -= 250;
87}
88
89function toggleR() {
90  way = 0;
91  left += 250;
92}
93
94function tick() {
95  if (way) {
96    if (--left < -widtht) {
97      left = containerwidth;
98    }
99  } else {
100    if (++left > containerwidth) {
101      left = -widtht;
102    }
103  }
104
105  $(".ticker-list").css("margin-left", left + "px");
106  timer1 = setTimeout(tick, t);
107}
108
109jQuery(document).ready(function ($) {
110
111  var clickableCell = document.querySelectorAll('.clickable-cell tr');
112  clickableCell.forEach(cell => {
113    cell.addEventListener('click', function (e) {
114      var link = this.getAttribute('data-link');
115      var id = this.getAttribute('id');
116      window.location.href = link + '?id=' + id;
117    })
118  })
119
120  var realtimepage = document.getElementById('realtime-page');
121  if (realtimepage) {
122    document.addEventListener("keyup", function (event) {
123      if (event.code === 'Enter') {
124        GetSymbolInfo('realTimeCategory')
125      }
126    })
127
128    var popupRealTimeCard = document.querySelectorAll('.popupRealTimeCard[data-card]');
129    popupRealTimeCard.forEach(card => {
130      card.addEventListener('click', function (event) {
131        var key = this.getAttribute('data-card');
132        var detect = document.querySelector('.ticker-list [data-id = "' + key + '"]');
133        var sym = detect.querySelector('.stock-charts-label')
134        var symbolTickerPosition = detect.getBoundingClientRect().x
135        left = left - symbolTickerPosition + (containerwidth / 2)
136        sym.classList.add('ticker-highlight');
137        setTimeout(function () {
138          sym.classList.remove('ticker-highlight');
139        }, 1000);
140      })
141    })
142
143  }
144  var scrollTicker = document.querySelector('.scrollTicker')
145  if (scrollTicker) {
146    widtht = $('.ticker-list').width();
147    containerwidth = $('.bn-news').width();
148    left = containerwidth;
149
150    tick(t);
151
152    scrollTicker.addEventListener('mouseover', (event) => {
153      if (!flag) {
154        clearTimeout(timer1)
155        t = 25;
156        tick(t);
157        flag = true;
158      }
159    });
160
161    scrollTicker.addEventListener('mouseout', (event) => {
162      if (flag) {
163        clearTimeout(timer1)
164        t = 7
165        tick(t);
166        flag = false
167      }
168    });
169  }
170
171  var cleanfilters = document.querySelectorAll("#cleanfilters");
172
173  cleanfilters.forEach(filter => {
174
175    filter.addEventListener("click", (event) => {
176      const urlParams = new URLSearchParams(window.location.search);
177
178      const paramKeys = Array.from(urlParams.keys());
179      paramKeys.forEach(key => {
180        if (key !== 's') {
181          urlParams.delete(key);
182        }
183      });
184
185      // Get the clean query string
186      const cleanQueryString = urlParams.toString();
187      // Redirect or use the clean query string as needed
188      window.location.href = window.location.pathname + '?' + cleanQueryString;
189
190    })
191  })
192
193
194  $(".form-desk .filter-option").click(function () {
195    $(".auto-submit-form").submit();
196  })
197
198  $(".filters-mobile-content .filter-option").click(function () {
199    $(".auto-submit-form-mobile").submit();
200  })
201  // $.get({
202  //   url: 'https://services.naftemporiki.gr/finance/HistoryAreaChart.aspx',
203  //   data: {"symbol":"GD.ATH","width":"134","height":"110","showtitle":"0","showgrid":"0","period":"1m"},
204  //   success: function(data) {
205  //     console.log(data);
206  //   }
207  //   });
208
209  var iframesContent = document.querySelectorAll('.post-content iframe');
210
211  iframesContent.forEach(iframe => {
212    if (iframe) {
213      iframe.parentElement.classList.add('iframe-wrapper')
214    }
215  })
216
217  var tablesContent = document.querySelectorAll('.post-content table')
218  tablesContent.forEach(tables => {
219    if (tables) {
220      if (!tables.parentElement.classList.contains('post-content')) {
221        tables.parentElement.classList.add('table-responsive')
222      } else {
223        var parent = tables.parentNode;
224        var wrapper = document.createElement('div');
225        wrapper.setAttribute('class', 'table-responsive');
226        parent.replaceChild(wrapper, tables);
227        wrapper.appendChild(tables);
228      }
229    }
230  })
231
232  $('#newsTicker1').breakingNews();
233
234  if ($('statsXa')) {
235    statisticsTable = $('#statsXa').DataTable({
236      paging: false,
237      ordering: true,
238      info: false,
239      searching: true,
240      "iDisplayLength": 100,
241      "search": { regex: true },
242      "columnDefs": [
243        { "orderable": false, "targets": "noSort" }
244      ]
245    });
246  }
247
248
249  if ($('#ratesTables')) {
250    ratesTables = $('#ratesTables').DataTable({
251      paging: false,
252      ordering: true,
253      info: false,
254      searching: true,
255      "iDisplayLength": 100,
256      "search": { regex: true },
257      "columnDefs": [
258        { "orderable": false, "targets": "noSort" }
259      ]
260    });
261  }
262
263  if ($('#capXa')) {
264    capXaTable = $('#capXa').DataTable({
265      paging: false,
266      ordering: true,
267      info: false,
268      searching: true,
269      "iDisplayLength": 100,
270      "search": { regex: true },
271      "columnDefs": [
272        { "orderable": false, "targets": "noSort" }
273      ]
274    });
275  }
276
277  if ($('#metalsTable')) {
278    metalsTable = $('#metalsTable').DataTable({
279      paging: false,
280      ordering: true,
281      info: false,
282      searching: true,
283      "iDisplayLength": 100,
284      "search": { regex: true },
285      "columnDefs": [
286        { "orderable": false, "targets": "noSort" }
287      ]
288    });
289  }
290
291  if ($('#realmetalsTable')) {
292    metalsTable = $('#realmetalsTable').DataTable({
293      info: false,
294      ajax: {
295        url: "/wp-json/naftemporiki/get-realtime-metals",
296        data: {
297          "currency": "USD",
298          "functionName": "GetRealTimeExtendedMetalQuote",
299          "lng": "GR"
300        }
301      },
302      columns: [
303        {
304          data: 'Symbol',
305          render: function (data, type, row, meta) {
306            var html = '<a href="?id=' + data + row.Currency + '">' +
307              '<span class="d-block name text-bold">' + metal_name(row.Name) + '</span>' +
308              '</a>' +
309              '<small class="market d-block">' + data + row.Currency + '</span>'
310            return html;
311          }
312        },
313        {
314          data: 'PercentChange',
315          render: function (data, type, row, meta) {
316            var classColor;
317            change = parseFloat(row.Change).toFixed(2);
318            pchange = parseFloat(data).toFixed(2);
319            if (Number(pchange) < 0) {
320              classColor = 'text-danger'
321            } else if (Number(pchange) > 0) {
322              classColor = 'text-success';
323            }
324            var html = '<span class="value d-block text-bold ml-auto">' + convertFloatNumbers(row.Close) + '</span>' +
325              '<div class="d-flex justify-content-end">' +
326              '<small class="Change text-small d-block ' + classColor + ' " style="margin-right:5px;">' + convertFloatNumbers(change.toString()) + '</small>' +
327              '<small class="PercentChange text-small d-block ' + classColor + ' ">' + convertFloatNumbers(pchange.toString()) + ' %</small>' +
328              '</div>';
329            return html;
330          }
331        },
332
333        {
334          data: 'Time',
335          render: function (data, type, row, meta) {
336            var html = '<div class="d-flex justify-content-end"><span class="date" style="margin-right:5px;">' + ConvertDate(row.Date) + '</span>' +
337              '<span class="time">' + convertUTCtime(row.Date + " " + data) + '</span></div> ';
338            return html;
339          }
340        }
341      ],
342      processing: true,
343      serverSide: true,
344      "iDisplayLength": 10,
345      searching: true,
346      "columnDefs": [
347        { "orderable": false, "targets": "noSort" }
348      ]
349    });
350  }
351
352  function symbolType(instrument) {
353    var types = {
354      'DER': 'Παράγωγο',
355      'BND': 'Ομόλογο',
356      'EQ': 'Μετοχή',
357      'COMM': 'Εμπόριο',
358      'FIDX': 'Νόμισμα (Συνάλλαγμα)',
359      'MTF': 'Αμοιβαίο κεφάλαιο',
360    }
361
362    if (instrument in types) {
363      return types[instrument];
364    }
365
366    return instrument;
367
368  }
369
370  if ($('#inactiveTable')) {
371    inactiveTable = $('#inactiveTable').DataTable({
372      info: false,
373      order: [[2, 'desc']],
374      ajax: {
375        url: "/wp-json/naftemporiki/get-inactive-symbols",
376        data: {
377          "lng": "GR"
378        }
379      },
380      columns: [
381        {
382          data: 'instrCode',
383          render: function (data, type, row, meta) {
384            var html =
385              '<span class="d-block name text-bold">' + row.instrName + '</span>' +
386              '<small class="market d-block">' + data + '</small>';
387            return html;
388          }
389        },
390        {
391          data: 'instrumentSysName',
392          render: function (data, type, row, meta) {
393            var html = '<span class="type-symbol d-block ms-auto">' + symbolType(data) + '</span>';
394            return html;
395          }
396        },
397        {
398          data: 'tradeDate',
399          render: function (data, type, row, meta) {
400            var html = '<span class="updated-at ">' + ConvertDate(data) + '</span>';
401            return html;
402          }
403        }
404      ],
405      processing: true,
406      serverSide: true,
407      "iDisplayLength": 30,
408      searching: true,
409      "columnDefs": [
410        { "orderable": false, "targets": "noSort" }
411      ]
412    });
413  }
414
415  if ($('#newSymbolsTable')) {
416    newSymbolsTable = $('#newSymbolsTable').DataTable({
417      info: false,
418      order: [[2, 'desc']],
419      ajax: {
420        url: "/wp-json/naftemporiki/get-new-symbols",
421        data: {
422          "lng": "GR"
423        }
424      },
425      columns: [
426        {
427          data: 'instrCode',
428          render: function (data, type, row, meta) {
429            var html =
430              '<span class="d-block name text-bold">' + row.instrName + '</span>' +
431              '<small class="market d-block">' + data + '</small>';
432            return html;
433          }
434        },
435        {
436          data: 'instrumentSysName',
437          render: function (data, type, row, meta) {
438            var html = '<span class="type-symbol d-block ms-auto">' + symbolType(data) + '</span>';
439            return html;
440          }
441        },
442        {
443          data: 'added_at',
444          render: function (data, type, row, meta) {
445            var html = '<span class="updated-at ">' + ConvertDate(data) + '</span>';
446            return html;
447          }
448        }
449      ],
450      processing: true,
451      serverSide: true,
452      "iDisplayLength": 30,
453      searching: true,
454      "columnDefs": [
455        { "orderable": false, "targets": "noSort" }
456      ]
457    });
458  }
459
460  function metal_name(metal_symbol) {
461    var cur_name;
462    if (metal_symbol) {
463      switch (metal_symbol) {
464        case "Silver 1 Oz":
465          cur_name = 'Ασήμι';
466          break;
467        case "Gold 1 Oz":
468          cur_name = 'Χρυσός';
469          break;
470        case "Palladium 1 Oz 999":
471          cur_name = 'Παλλάδιο';
472          break;
473        case "Platinum 1 Oz 999":
474          cur_name = 'Πλατίνα';
475          break;
476      }
477    } else {
478      cur_name = 'Metal not found';
479    }
480    return cur_name;
481  }
482
483  if ($('#foreign')) {
484    foreignTable = $('#foreign').DataTable({
485      paging: false,
486      ordering: true,
487      info: false,
488      searching: true,
489      "iDisplayLength": 100,
490      "search": { regex: true },
491      "columnDefs": [
492        { "orderable": false, "targets": "noSort" }
493      ]
494    });
495  }
496
497  if ($('symbolsStatistcs')) {
498    statisticsTable = $('#symbolsStatistcs').DataTable({
499      pagingType: 'full_numbers',
500      ordering: true,
501      info: false,
502      searching: true,
503      "iDisplayLength": 10,
504      "search": { regex: true },
505      "columnDefs": [
506        { "orderable": false, "targets": "noSort" }
507      ]
508    });
509  }
510
511  if ($('forwardRates')) {
512    forwardRates = $('#forwardRates').DataTable({
513      paging: false,
514      ordering: true,
515      info: false,
516      searching: true,
517      "iDisplayLength": 100,
518      "search": { regex: true },
519      "columnDefs": [
520        { "orderable": false, "targets": "noSort" }
521      ]
522    });
523  }
524
525  if ($('#bonds')) {
526    bondsTable = $('#bonds').DataTable({
527      paging: false,
528      ordering: false,
529      info: false,
530      searching: true,
531      "iDisplayLength": 100,
532      "search": { regex: true },
533      "columnDefs": [
534        { "orderable": false, "targets": "noSort" }
535      ]
536    });
537  }
538
539  if ($('#stockrates')) {
540    ratesTable = $('#stockrates').DataTable({
541      paging: false,
542      ordering: false,
543      info: false,
544      searching: false,
545      "iDisplayLength": 100,
546      "search": { regex: true },
547      "columnDefs": [
548        { "orderable": false, "targets": "noSort" }
549      ]
550    });
551  }
552
553  if ($('#crossrates')) {
554    crossratesTable = $('#crossrates').DataTable({
555      paging: false,
556      ordering: false,
557      info: false,
558      searching: false,
559      "iDisplayLength": 100,
560      "search": { regex: true },
561      "columnDefs": [
562        { "orderable": false, "targets": "noSort" }
563      ]
564    });
565  }
566
567  if ($('#sector')) {
568    sectorTable = $('#sector').DataTable({
569      paging: false,
570      ordering: false,
571      info: false,
572      searching: true,
573      "columnDefs": [
574        { "orderable": false, "targets": "noSort" }
575      ]
576    });
577  }
578
579  if ($('#announcements')) {
580    announcements = $('#announcements').DataTable({
581      pagingType: 'full_numbers',
582      ordering: false,
583      info: false,
584      searching: true,
585      "iDisplayLength": 30,
586      "columnDefs": [
587        { "orderable": false, "targets": "noSort" }
588      ]
589    });
590  }
591
592  if ($('#deroptions')) {
593    deroptions = $('#deroptions').DataTable({
594      paging: false,
595      ordering: false,
596      info: false,
597      searching: true,
598      "columnDefs": [
599        { "orderable": false, "targets": "noSort" }
600      ]
601    });
602  }
603
604  if ($('#futures')) {
605    derCategor = $('#futures').DataTable({
606      paging: false,
607      ordering: false,
608      info: false,
609      searching: true,
610      "columnDefs": [
611        { "orderable": false, "targets": "noSort" }
612      ]
613
614    });
615  }
616
617  if ($('#stockfutures')) {
618    derCategorStock = $('#stockfutures').DataTable({
619      paging: false,
620      ordering: false,
621      info: false,
622      searching: true,
623      "columnDefs": [
624        { "orderable": false, "targets": "noSort" }
625      ]
626    });
627  }
628
629  if ($('#stockrepos')) {
630    stockRepos = $('#stockrepos').DataTable({
631      paging: false,
632      ordering: false,
633      info: false,
634      searching: true,
635      "columnDefs": [
636        { "orderable": false, "targets": "noSort" }
637      ]
638    });
639  }
640
641  if ($('#symbolHistoryAll')) {
642    symbolHistoryAll = $('#symbolHistoryAll').DataTable({
643      pagingType: 'full_numbers',
644      ordering: false,
645      info: false,
646      searching: true,
647      "iDisplayLength": 30,
648      dom: 'Bfrtip',
649      buttons: [
650        // {
651        //   extend: 'csv',
652        //   text: 'DOWNLOAD',
653        //   attr: { class: 'btn btn-outline-danger downloadbtn' },
654        //   charset: 'utf-8',
655        //   extension: '.csv',
656        //   filename: 'History',
657        //   bom: true
658        // },
659        {
660          extend: 'csv',
661          text: 'Λήψη αρχείου .xls',
662          attr: { class: 'btn  downloadbtn' },
663          charset: 'utf-8',
664          extension: '.csv',
665          filename: 'History',
666          bom: true
667        }
668      ],
669      "columnDefs": [
670        { "orderable": false, "targets": "noSort" }
671      ]
672    });
673  }
674
675  if ($('#symbolHistory')) {
676    symbolHistory = $('#symbolHistory').DataTable({
677      paging: true,
678      info: false,
679      ordering: false,
680      dom: 'Bfrtip',
681      "iDisplayLength": 10,
682      buttons: [
683        {
684          extend: 'csv',
685          text: 'DOWNLOAD',
686          attr: { class: 'btn btn-outline-danger downloadbtn' },
687          charset: 'utf-8',
688          extension: '.csv',
689          filename: 'History',
690          bom: true
691        }
692      ],
693    });
694  }
695
696  if ($('#symbolIntraday')) {
697    var symbolIntraday = $('#symbolIntraday').DataTable({
698      dom: 'Bfrtip',
699      buttons: [
700        {
701          extend: 'csv',
702          text: 'DOWNLOAD',
703          attr: { class: 'btn btn-outline-danger downloadbtn' },
704          charset: 'utf-8',
705          extension: '.csv',
706          filename: 'Intraday',
707          bom: true
708        }
709      ],
710      paging: false,
711      ordering: false,
712      info: false,
713      searching: false,
714      "iDisplayLength": 10,
715      "search": { regex: true },
716    });
717  }
718
719  if ($('#symbolsCurrent')) {
720    symbolsCurrent = $('#symbolsCurrent').DataTable({
721      paging: false,
722      ordering: false,
723      info: false,
724      searching: true,
725      "columnDefs": [
726        { "orderable": false, "targets": "noSort" }
727      ]
728    });
729  }
730
731  if ($('#packages')) {
732    var country = $('#packages').attr('data-country');
733    packagesTable = $('#packages').DataTable({
734      info: false,
735      order: [[1, 'desc']],
736      ajax: {
737        url: "/wp-json/naftemporiki/get-packages-table",
738        data: {
739          "market": country,
740          "lng": "GR"
741        }
742      },
743      columns: [
744        {
745          data: 'instrCode',
746          render: function (data, type, row, meta) {
747            var link;
748            var country = $('#packages').attr('data-country');
749            switch (country) {
750              case 'ATH':
751                link = "/chrimatistirio/symvola?id=" + row.instrSysName;
752                break;
753              case 'CYP':
754                link = "/kypros/symvola?id=" + row.instrSysName;
755                break;
756            }
757            var html = '<a href="' + link + '">' +
758              '<span class="d-block name text-bold">' + row.instrName + '</span>' +
759              '</a>' +
760              '<small class="symbol d-block">' + data + '</small>';
761            return html;
762          }
763        },
764        {
765          data: 'ptime',
766          render: function (data, type, row, meta) {
767            var time;
768            var d1 = new Date();
769            var d2 = new Date(row.pdate);
770            var today = d1.getDate() + '/' + d1.getMonth();
771            var currentDay = d2.getDate() + '/' + d2.getMonth();
772            if (today != currentDay) {
773              time = ConvertDate(row.pdate)
774            } else {
775              time = ConvertTime(data);
776            }
777            var html = '<span class="last-updated">' + time + '</span>';
778            return html;
779          }
780        },
781        {
782          data: 'pprice',
783          render: function (data, type, row, meta) {
784
785            var html = '<span class="pprice text-bold">' + convertFloatNumbers((parseFloat(data).toFixed(2)).toString()); + '</span>';
786            return html;
787          }
788        },
789        {
790          data: 'pvolume',
791          render: function (data, type, row, meta) {
792            var html = '<span class="pvolume text-normal">
792' + numberWithCommas(parseInt(data).toString()) + '</span>';
793            return html;
794          }
795        },
796        {
797          data: 'pvalue',
798          render: function (data, type, row, meta) {
799            var html = '<span class="pvalue text-normal">' + convertFloatNumbers((parseFloat(Number(row.pvolume) * Number(row.pprice)).toFixed(3)).toString()) + '</span>';
800            return html;
801          }
802        },
803        {
804          data: 'pricePrevClosePricePDeltaOTC',
805          render: function (data, type, row, meta) {
806            var html = '<span class="pricePrevClosePricePDeltaOTC text-normal">' + convertFloatNumbers((parseFloat(data).toFixed(3)).toString()) + '</span>';
807            return html;
808          }
809        },
810        {
811          data: 'pricePrevClosePricePDelta',
812          render: function (data, type, row, meta) {
813            var price, delta, pdelta;
814            if (parseFloat(row.price) != 0) {
815              price = convertFloatNumbers((parseFloat(row.price).toFixed(2)).toString());
816              pdelta = convertFloatNumbers((parseFloat(data).toFixed(2)).toString());
817            } else {
818              price = convertFloatNumbers((parseFloat(row.prevClosePrice).toFixed(2)).toString());
819              pdelta = convertFloatNumbers((parseFloat(row.prevClosePDelta).toFixed(2)).toString());
820            }
821
822            var classColor;
823            if (Number(pdelta) < 0) {
824              classColor = 'text-danger'
825            } else if (Number(pdelta) > 0) {
826              classColor = 'text-success';
827            }
828
829            var html = '<span class="value d-block text-bold ml-auto">' + price + '</span>' +
830              '<small class="pricePrevClosePricePDelta ' + classColor + '">' + pdelta + ' %</small>';
831            return html;
832          }
833        }
834      ],
835      processing: true,
836      serverSide: true,
837      "iDisplayLength": 10,
838      searching: true,
839      "columnDefs": [
840        { "orderable": false, "targets": "noSort" }
841      ]
842    });
843  }
844
845  if ($('#symbols')) {
846    var country = $('#symbols').attr('data-country');
847    var datatype = $('#symbols').attr('data-type');
848    var sid = $('.compositionTables').attr('data-sid')
849    var url, data;
850    switch (datatype) {
851      case 'stock_symbols':
852        url = "/wp-json/naftemporiki/get-stock-symbols-info-table";
853        data = {
854          "market": country,
855          "instrument": "EQ",
856          "lng": "GR"
857        }
858        break;
859      case 'composition':
860
861        url = "/wp-json/naftemporiki/get-indices-composition-symbols-table";
862        data = {
863          "idxSid": sid,
864          "lng": "GR"
865        }
866        break;
867      case 'sector':
868        var categorySysName = $('.sectorsTable').attr('data-sector')
869        url = "/wp-json/naftemporiki/get-categories-bonds-table";
870        data = {
871          "categorySysName": categorySysName,
872          "lng": "GR"
873        }
874        break;
875      case 'exchange_market':
876        var market = $('.marketTable').attr('data-market')
877        url = "/wp-json/naftemporiki/get-market-table";
878        data = {
879          "market": market,
880          "lng": "GR"
881        }
882        break;
883      case 'der':
884        var underlyingInstrumentCode = $('#symbols').attr('data-under')
885        url = "/wp-json/naftemporiki/get-underlying-symbols-table";
886        data = {
887          "underlyingInstrumentCode": underlyingInstrumentCode,
888          "lng": "GR"
889        }
890        break;
891      case 'eqder':
892        var instrCode = $('#symbols').attr('data-instrCode');
893        url = "/wp-json/naftemporiki/get-common-symbols-master";
894        data = {
895          "instrCode": instrCode,
896          "sid": sid,
897          "lng": "GR"
898        }
899        break;
900    }
901
902    oTable = $('#symbols').DataTable({
903      // paging: false,
904      // ordering: true,
905      info: false,
906      // searching: true,
907      ajax: {
908        url: url,
909        data: data
910      },
911      columns: [
912        {
913          data: 'instrCode',
914          render: function (data, type, row, meta) {
915            var link;
916            switch (country) {
917              case 'ATH':
918                link = "/chrimatistirio/symvola?id=" + row.instrSysName;
919                break;
920              case 'CYP':
921                link = "/kypros/symvola?id=" + row.instrSysName;
922                break;
923            }
924            if (datatype == 'der' || datatype == 'eqder') {
925              if (row.categorySysName == 'StockFuture.ADEX' || row.categorySysName == 'IndexFuture.ADEX') {
926                link = "/paragoga/futures/?id=" + row.instrSysName;
927              } else if (row.categorySysName == 'IndexOption.ADEX' || row.categorySysName == 'StockOption.ADEX') {
928                link = "/paragoga/options/?id=" + row.instrSysName;
929              } else if (row.categorySysName == 'StockRepo.ADEX') {
930                link = "/paragoga/repos-metochon/?id=" + row.instrSysName;
931              }
932            }
933            var html = '<a href="' + link + '">' +
934              '<span class="d-block name text-bold">' + row.instrName + '</span>' +
935              '</a>' +
936              '<small class="symbol d-block">' + data + '</small>';
937            return html;
938          }
939        },
940        {
941          data: 'pricePrevClosePricePDelta',
942          render: function (data, type, row, meta) {
943            var price, delta, pdelta;
944            if (parseFloat(row.price) != 0) {
945              price = parseFloat(row.price).toFixed(2);
946              delta = parseFloat(row.pricePrevClosePriceDelta).toFixed(2);
947              pdelta = parseFloat(data).toFixed(2);
948            } else {
949              price = parseFloat(row.prevClosePrice).toFixed(2);
950              delta = parseFloat(row.prevCloseDelta).toFixed(2);
951              pdelta = parseFloat(row.prevClosePDelta).toFixed(2);
952            }
953
954            var classColor;
955            if (Number(pdelta) < 0) {
956              classColor = 'text-danger'
957            } else if (Number(pdelta) > 0) {
958              classColor = 'text-success';
959            }
960
961            var html = '<span class="value d-block text-bold ml-auto">' + convertFloatNumbers(price.toString()) + '</span>' +
962              '<small class="pricePrevClosePriceDelta mr-5 ' + classColor + '">' + convertFloatNumbers(delta.toString()) + '</small>' +
963              '<small class="pricePrevClosePricePDelta ' + classColor + '">' + convertFloatNumbers(pdelta.toString()) + ' %</small>';
964            return html;
965          }
966        },
967        {
968          data: 'totalVolume',
969          render: function (data, type, row, meta) {
970            var html = '<span class="volume text-normal">' + numberWithCommas(parseInt(data).toString()) + '</span>';
971            return html;
972          }
973        },
974        {
975          data: 'openInterest',
976          render: function (data, type, row, meta) {
977            var html = '<span class="interest text-normal">' + numberWithCommas(parseInt(data).toString()) + '</span>';
978            return html;
979          }
980        },
981        {
982          data: 'bidPrice',
983          render: function (data, type, row, meta) {
984            var html;
985            if (parseInt(row.bidSize) != 0) {
986              html = '<div class="d-flex align-items-center justify-content-end">' +
987                '<span class="bidSize">' + numberWithCommas(parseInt(row.bidSize).toString()) + '</span>' +
988                '<span>x</span>' +
989                '<span class="bidPrice">' + convertFloatNumbers((parseFloat(data).toFixed(3)).toString()) + '</span>';
990            } else {
991              html = '<span>x</span>';
992            }
993            return html;
994          }
995        },
996        {
997          data: 'askPrice',
998          render: function (data, type, row, meta) {
999            var html;
1000            if (parseInt(row.askSize) != 0) {
1001              html = '<div class="d-flex align-items-center justify-content-end">' +
1002                '<span class="askSize">' + numberWithCommas(parseInt(row.askSize).toString()) + '</span>' +
1003                '<span>x</span>' +
1004                '<span class="askPrice">' + convertFloatNumbers((parseFloat(data).toFixed(3)).toString()) + '</span>'
1005            } else {
1006              html = '<span>x</span>';
1007
1008            }
1009
1010            return html;
1011          }
1012        },
1013        {
1014          data: 'time',
1015          render: function (data, type, row, meta) {
1016            var time;
1017            if (parseFloat(row.price) != 0) {
1018              time = ConvertTime(data);
1019            } else {
1020              time = ConvertDate(row.prevCloseDate)
1021            }
1022            var html = '<span class="last-updated">' + time + '</span>';
1023            return html;
1024          }
1025        }
1026      ],
1027      processing: true,
1028      serverSide: true,
1029      "iDisplayLength": 40,
1030      searching: true,
1031      "columnDefs": [
1032        { "orderable": false, "targets": "noSort" }
1033      ]
1034    });
1035  }
1036
1037  if ($('#mtfSymbols')) {
1038    var type = $('#mtfSymbols').attr('data-type');
1039    var info = $('#mtfSymbols').attr('data-info');
1040    switch (type) {
1041      case 'companies':
1042        url = "/wp-json/naftemporiki/get-mtf-company-symbols-table";
1043        data = {
1044          "company": info,
1045          "lng": "GR"
1046        }
1047        break;
1048      case 'categories':
1049        url = "/wp-json/naftemporiki/get-mtf-category-symbols-table";
1050        data = {
1051          "category": info,
1052          "lng": "GR"
1053        }
1054        break;
1055    }
1056    mtfTables = $('#mtfSymbols').DataTable({
1057      pagingType: 'full_numbers',
1058      info: false,
1059      // searching: true,
1060      ajax: {
1061        url: url,
1062        data: data
1063      },
1064      columns: [
1065        {
1066          data: 'instrName',
1067          render: function (data, type, row, meta) {
1068            var link = "/amoivaia?id=" + row.instrSysName;
1069            var html = '<a href="' + link + '">' +
1070              '<span class="d-block name text-bold">' + data + '</span>' +
1071              '</a>';
1072            return html;
1073          }
1074        },
1075        {
1076          data: 'currCode',
1077          render: function (data, type, row, meta) {
1078            var html = '<span class="currCode d-block text-bold">' + data + '</span>';
1079            return html;
1080          }
1081        },
1082        {
1083          data: 'prevClosePrice',
1084          render: function (data, type, row, meta) {
1085
1086            var html = '<span class="prevClosePrice text-bold">' + convertFloatNumbers((parseFloat(data).toFixed(2)).toString()) + '</span>';
1087            return html;
1088          }
1089        },
1090        {
1091          data: 'prevCloseDelta',
1092          render: function (data, type, row, meta) {
1093            var classColor = "";
1094            if (Number(row.prevClosePDelta) < 0) {
1095              classColor = 'text-danger'
1096            } else if (Number(row.prevClosePDelta) > 0) {
1097              classColor = 'text-success';
1098            }
1099            var html = '<span class="prevCloseDelta  ' + classColor + '">' + convertFloatNumbers((parseFloat(data).toFixed(2)).toString()) + '</span>';
1100            return html;
1101          }
1102        },
1103        {
1104          data: 'prevClosePDelta',
1105          render: function (data, type, row, meta) {
1106            var classColor = "";
1107            if (Number(data) < 0) {
1108              classColor = 'text-danger'
1109            } else if (Number(data) > 0) {
1110              classColor = 'text-success';
1111            }
1112            var html = '<span class="prevClosePDelta  ' + classColor + '">' + convertFloatNumbers((parseFloat(data).toFixed(2)).toString()) + '</span>';
1113            return html;
1114          }
1115        },
1116        {
1117          data: 'yearToDateReturn',
1118          render: function (data, type, row, meta) {
1119            var html = '<span class="yearToDateReturn ">' + data + '</span>';
1120            return html;
1121          }
1122        },
1123        {
1124          data: 'prevCloseDate',
1125          render: function (data, type, row, meta) {
1126            var html = '';
1127            if (data != '0000-00-00') {
1128              html = '<span class="prevCloseDate text-normal">' + ConvertDate(data) + '</span>';
1129            }
1130
1131            return html;
1132          }
1133
1134        }
1135      ],
1136      processing: true,
1137      serverSide: true,
1138      "iDisplayLength": 50,
1139      "lengthMenu": [[10, 25, 50, 100, -1], [10, 25, 50, 100, "Όλα"]],
1140      searching: true,
1141      "columnDefs": [
1142        { "orderable": false, "targets": "noSort" }
1143      ]
1144    });
1145  }
1146
1147  if ($('#listing')) {
1148    var market = $('#listing').attr('data-market');
1149    var instrument = $('#listing').attr('data-instrument');
1150    var table = $('#listing').DataTable({
1151      info: false,
1152      searching: false,
1153      "iDisplayLength": 20,
1154      ajax: {
1155        url: "/wp-json/naftemporiki/get-stats-table",
1156        data: {
1157          "market": market,
1158          "instrument": instrument,
1159          "lng": "GR"
1160        }
1161      },
1162      columns: [
1163        {
1164          data: 'instrCode',
1165          render: function (data, type, row, meta) {
1166            var link;
1167            switch (market) {
1168              case 'ATH':
1169                link = "/chrimatistirio/symvola?id=" + row.instrSysName;
1170                break;
1171              case 'ENAX':
1172                link = "/chrimatistirio/symvola?id=" + row.instrSysName;
1173                break;
1174              case 'CYP':
1175                link = "/kypros/symvola?id=" + row.instrSysName;
1176                break;
1177              case 'ADEX':
1178                if (row.categorySysName == 'StockFuture.ADEX' || row.categorySysName == 'IndexFuture.ADEX') {
1179                  link = "/paragoga/futures?id=" + row.instrSysName;
1180                } else if (row.categorySysName == 'IndexOption.ADEX' || row.categorySysName == 'StockOption.ADEX') {
1181                  link = "/paragoga/options?id=" + row.instrSysName;
1182                } else if (row.categorySysName == 'StockRepo.ADEX') {
1183                  link = "/paragoga/repos-metochon?id=" + row.instrSysName;
1184                }
1185                break;
1186            }
1187            var html = '<a href="' + link + '">' +
1188              '<span class="d-block name text-bold">' + row.instrName + '</span>' +
1189              ' </a>' +
1190              '<small class="symbol text-small d-block">' + data + '</small>';
1191            return html;
1192          }
1193        },
1194        {
1195          data: 'pricePrevClosePricePDelta',
1196          render: function (data, type, row, meta) {
1197            var classColor = "";
1198            if (Number(row.pricePrevClosePriceDelta) < 0) {
1199              classColor = 'text-danger'
1200            } else if (Number(row.pricePrevClosePriceDelta) > 0) {
1201              classColor = 'text-success';
1202            }
1203
1204            var html = '<span class="value d-block text-bold ml-auto">' + convertFloatNumbers((parseFloat(row.price).toFixed(2)).toString()) + '</span>' +
1205              '<small class="pricePrevClosePriceDelta mr-5 ' + classColor + '">' + convertFloatNumbers((parseFloat(row.pricePrevClosePriceDelta).toFixed(2)).toString()) + '</small>' +
1206              '<small class="pricePrevClosePricePDelta ' + classColor + '">' + convertFloatNumbers((parseFloat(data).toFixed(2)).toString()) + ' %</small>';
1207            return html;
1208          }
1209        },
1210        {
1211          data: 'totalVolume',
1212          render: function (data, type, row, meta) {
1213            var html = '<span class="volume text-normal">' + numberWithCommas(parseInt(data).toString()) + '</span>';
1214            return html;
1215          }
1216        },
1217        {
1218          data: 'totalTurnover',
1219          render: function (data, type, row, meta) {
1220            var html = '<span class="turnover text-normal">' + numberWithCommas(parseInt(data).toString()) + '</span>';
1221            return html;
1222          }
1223
1224        }
1225      ],
1226      processing: true,
1227      serverSide: true,
1228    });
1229  }
1230
1231  $('#ratesSearch').keyup(function () {
1232    ratesTables.search($(this).val()).draw();
1233  })
1234  $('#metalsSearch').keyup(function () {
1235    metalsTable.search($(this).val()).draw();
1236  })
1237  $('#inactiveSearch').keyup(function () {
1238    inactiveTable.search($(this).val()).draw();
1239  })
1240  $('#newSymbolsSearch').keyup(function () {
1241    newSymbolsTable.search($(this).val()).draw();
1242  })
1243
1244
1245  $('#capXaSearch').keyup(function () {
1246    capXaTable.search($(this).val()).draw();
1247  })
1248  $('#foreignSearch').keyup(function () {
1249    foreignTable.search($(this).val()).draw();
1250  })
1251  $('#mtfSymbolSearch').keyup(function () {
1252    mtfTables.search($(this).val()).draw();
1253  })
1254  $('#bondsSearch').keyup(function () {
1255    var whatsSelected = []
1256    if (!$(this).val()) {
1257
1258      bondsTable.column(0).search(whatsSelected.join('|'), true, false).draw();
1259    } else {
1260      var names = document.querySelectorAll('[data-name]')
1261      var data = $(this).val()
1262      names.forEach(name => {
1263        var d = name.getAttribute('data-name')
1264        var g = name.getAttribute('data-code')
1265        if (d.includes(data) || g.includes(data)) {
1266          var c = name.querySelector('.name')
1267          whatsSelected.push(c.innerHTML);
1268        }
1269      })
1270      bondsTable.column(0).search(whatsSelected.join('|'), true, false).draw();
1271    }
1272  })
1273  $('#stockreposSearch').keyup(function () {
1274    stockRepos.search($(this).val()).draw();
1275  })
1276  $('#stockfuturesSearch').keyup(function () {
1277    derCategorStock.search($(this).val()).draw();
1278  })
1279  $('#deroptions').keyup(function () {
1280    derCategor.search($(this).val()).draw();
1281  })
1282  $('#futuresSearch').keyup(function () {
1283    derCategor.search($(this).val()).draw();
1284  })
1285  $('#symbolSearch').keyup(function () {
1286    oTable.search($(this).val()).draw();
1287  })
1288  $('#packagesSearch').keyup(function () {
1289    packagesTable.search($(this).val()).draw();
1290  })
1291  $('#announcementsSearch').keyup(function () {
1292    announcements.search($(this).val()).draw();
1293  })
1294
1295  $('#sectorsSelectCountry').on('change', function () {
1296    if ($(this).val() == 'all') {
1297      sectorTable.search("").draw();
1298    } else {
1299      sectorTable.search($(this).val()).draw();
1300    }
1301  });
1302
1303
1304  $('#idxFselect').on('change', function () {
1305    derCategor.column(0).search("").draw();
1306
1307    if ($(this).val() != 'all') {
1308      var symbols = document.querySelectorAll(".symbolInfo[data-group='" + $(this).val() + "']");
1309      var whatsSelected = [];
1310      symbols.forEach(symbol => {
1311        var name = symbol.querySelector('.symbol');
1312        if (name) {
1313          name = name.innerHTML;
1314          whatsSelected.push(name);
1315        }
1316      })
1317      derCategor.column(0).search(whatsSelected.join('|'), true, false).draw();
1318    }
1319  });
1320
1321  $('#stockFselect').on('change', function () {
1322    derCategorStock.column(0).search("").draw();
1323    if ($(this).val() != 'all') {
1324      var symbols = document.querySelectorAll(".symbolInfo[data-group='" + $(this).val() + "']");
1325      var whatsSelected = [];
1326      symbols.forEach(symbol => {
1327        var name = symbol.querySelector('.symbol');
1328        if (name) {
1329          name = name.innerHTML;
1330          whatsSelected.push(name);
1331        }
1332      })
1333      derCategorStock.column(0).search(whatsSelected.join('|'), true, false).draw();
1334    }
1335  });
1336
1337  $('#sectorsSymbolsSelect').on('change', function () {
1338    var value = $(this).val();
1339    oTable.column(0).search("").draw();
1340    if (value != 'all') {
1341      var symbols = document.querySelectorAll(".symbolInfo[data-category='" + value + "']");
1342      var whatsSelected = [];
1343      symbols.forEach(symbol => {
1344        var name = symbol.querySelector('.categoryId');
1345        if (name) {
1346          name = name.innerHTML;
1347          whatsSelected.push(name);
1348        }
1349      })
1350      oTable.column(0).search(whatsSelected.join('|'), true, false).draw();
1351    }
1352  });
1353
1354  $('#sectorSearch').keyup(function () {
1355    sectorTable.search($(this).val()).draw();
1356  })
1357
1358
1359  // Mega Menu - hamburger toggle
1360  var stickyHeader = document.querySelector('.sticky-header')
1361  window.addEventListener('scroll', (e) => {
1362    if (stickyHeader) {
1363      if (window.scrollY > 0) {
1364        stickyHeader.classList.add('fixed-header')
1365      } else {
1366        stickyHeader.classList.remove('fixed-header')
1367      }
1368    }
1369  });
1370
1371  var root = document.getElementsByTagName('html')[0];
1372  $('.burger-menu').on('click', function (e) {
1373    e.preventDefault()
1374    var megaMenu = document.querySelector('.mega-menu');
1375    if (megaMenu) {
1376      if (megaMenu.classList.contains('active')) {
1377        megaMenu.classList.remove('active');
1378        root.classList.remove('is-noscroll');
1379      } else {
1380        megaMenu.classList.add('active');
1381        root.classList.add('is-noscroll');
1382      }
1383    }
1384
1385    if ($(this).hasClass('is-active')) {
1386      $(this).removeClass('is-active');
1387    } else {
1388      $(this).addClass('is-active');
1389    }
1390  });
1391
1392  if ($(".preview-template").hasClass("archive")) {
1393    $("body").removeClass("error404");
1394    $("title").html($(".cat-menu li.is-active a").text() + " - " + $(".filter.btn-dark").data("type"));
1395    $(".filter").on("click", function (e) {
1396      var url = window.location.href;
1397      var filter = "" + $(this).data("type");
1398      if (filter == "recently")
1399        url = (url.indexOf("popular") >= 0) ? url.replace("popular", filter) : url + filter;
1400      else
1401        url = (url.indexOf("recently") >= 0) ? url.replace("recently", filter) : url + filter;
1402      window.location.href = url;
1403    });
1404    $(".load-more").on("click", function (res) {
1405      var posts_ignore = [0];
1406      $(".preview-container .post_preview").each(function () {
1407        posts_ignore.push($(this).data("id"));
1408      });
1409      $.post(BWTTHEME_SETTINGS.ajax_url, {
1410        "action": "bwttheme_get_preview_posts",
1411        "filter": $(".filter.btn-dark").attr("data-type"),
1412        "category": $(".cat-menu li.is-active").attr("data-id"),
1413        "post_type": $(".preview-template").data("type"),
1414        "limit": 12,
1415        "ignore": posts_ignore,
1416        "id": 0
1417      }, function (res) {
1418        if (res.data.length <= 0) {
1419          $(".load-more").hide();
1420          return;
1421        }
1422        $(".preview-container").hide();
1423        for (var i = 0; i < res.data.length; i++) {
1424          var el = $(".preview-template>div").clone();
1425          var row = res.data[i];
1426          $(el).attr("data-id", row[0]);
1427          $(el).find(".category").html(row[1]);
1428          $(el).find(".title").html(row[2]);
1429          $(el).find(".source").html(row[3]);
1430          $(el).find(".image").attr("src", row[4]);
1431          $(el).find(".image").attr("title", row[2]);
1432          $(el).find(".image").attr("alt", row[2]);
1433          $(el).find(".image-link").attr("href", row[5]);
1434          $(el).find(".image-link").attr("title", row[2]);
1435          $(".preview-container").append($(el));
1436        }
1437        $(".preview-container").show();
1438      });
1439    });
1440  } else {
1441    $(".cat-menu li").on("click", function (e) {
1442      $(".cat-menu li").removeClass("is-active");
1443      $(this).addClass("is-active");
1444      $.post(BWTTHEME_SETTINGS.ajax_url, {
1445        "action": "bwttheme_get_preview_posts",
1446        "filter": $(".filter.is-active").attr("data-type"),
1447        "category": $(".cat-menu li.is-active").attr("data-id"),
1448        "limit": 12,
1449        "id": BWTTHEME_SETTINGS.post_id
1450      }, function (res) {
1451        $(".preview-container").html("").hide();
1452        for (var i = 0; i < res.data.length; i++) {
1453          var el = $(".preview-template>div").clone();
1454          var row = res.data[i];
1455          $(el).attr("data-id", row[0]);
1456          $(el).find(".category").html(row[1]);
1457          $(el).find(".title").html(row[2]);
1458          $(el).find(".source").html(row[3]);
1459          $(el).find(".image").attr("src", row[4]);
1460          $(el).find(".image").attr("title", row[2]);
1461          $(el).find(".image").attr("alt", row[2]);
1462          $(el).find(".image-link").attr("href", row[5]);
1463          $(el).find(".image-link").attr("title", row[2]);
1464          $(".preview-container").append($(el));
1465        }
1466        $(".preview-container").show();
1467      });
1468    });
1469
1470    $(".filter").on("click", function (e) {
1471      $(".filter").removeClass("is-active").removeClass("btn-dark").addClass("btn-outline-dark");
1472      $(this).addClass("is-active").removeClass("btn-outline-dark").addClass("btn-dark");
1473      $(".cat-menu li.is-active").trigger("click");
1474    });
1475
1476    $('.filter[data-type="popular"]').trigger("click");
1477  }
1478
1479  $(".news-row-quick").hover(function () {
1480    var args = {
1481      "padding": "1em",
1482      "position": "absolute",
1483      "border": "1px solid #000",
1484      "background-color": "#fff",
1485      "left": $(this).find(".news-header-quick").offset().left + $(this).find(".news-header-quick").width(),
1486      "top": "calc(" + $(this).find(".news-header-quick").offset().top + " - 1em)",
1487    };
1488    $(this).find(".news-content-quick").css(args).show();
1489  }, function () {
1490    $(".news-content-quick").hide();
1491  });
1492});
1493
1494var searchwrap = document.querySelector('.search-wrap')
1495var opensearch = document.querySelector('.open-search')
1496if (opensearch) {
1497  opensearch.addEventListener('click', function (e) {
1498    e.preventDefault();
1499    if (searchwrap.classList.contains('is-active')) {
1500      searchwrap.classList.remove('is-active');
1501    } else {
1502      searchwrap.classList.add('is-active');
1503    }
1504  })
1505}
1506
1507function ConvertTime(time) {
1508  if (time == "00:00:00.000") {
1509    return "00:00";
1510  }
1511  time = time.split('.')[0];
1512  const now = new Date("December 14, 2026 " + time);
1513  var minutes = now.getMinutes();
1514  if (minutes < 10) {
1515    minutes = '0' + minutes
1516  }
1517  const current = now.getHours() + ':' + minutes;
1518  return current;
1519}
1520
1521function convertUTCtime(date) {
1522  var d = new Date(date + ' UTC');
1523  var time = d.getHours() + ":" + d.getMinutes()
1524  return time;
1525}
1526
1527function ConvertDate(date) {
1528  var formattedDate = new Date(date);
1529  var d = formattedDate.getDate();
1530  var m = formattedDate.getMonth();
1531  m += 1;  // JavaScript months are 0-11
1532  var y = formattedDate.getFullYear();
1533  var fulldate = d + "/" + m + "/" + y
1534  return fulldate;
1535}
1536
1537/**  Finance Indices */
1538window.addEventListener('load', (event) => {
1539  GetSymbolInfo('symbolInfo');
1540  updateGDSymbol();
1541  getAllLondonFixing();
1542  getRates();
1543  getMetals();
1544  getForeign();
1545});
1546
1547setInterval(function () {
1548  getPackages();
1549}, 900000)
1550
1551setInterval(function () {
1552  getRates();
1553  getMetals();
1554  getForeign();
1555}, 900000)
1556
1557setInterval(function () {
1558  GetSymbolInfo('symbolInfo');
1559}, 900000)
1560
1561setInterval(function () {
1562  updateGDSymbol();
1563}, 30000)
1564
1565function getPackages() {
1566  var symbolsLocation = document.querySelectorAll('.package');
1567  var locationS = [];
1568  symbolsLocation.forEach(symbol => {
1569    locationS.push(symbol.getAttribute("id"));
1570  })
1571  locationS = locationS.filter((v, i, a) => a.indexOf(v) === i);
1572  var symbolsLoc = locationS.join(',');
1573  if (symbolsLocation.length) {
1574    $.get({
1575      url: '/wp-json/naftemporiki/get-packages-info',
1576      data: { "symbols": symbolsLoc, "lng": "GR" },
1577      success: function (s_data) {
1578        if (s_data && s_data.length) {
1579          s_data.forEach(data => {
1580            if (data) {
1581              var ids = '[id="' + data.instrSysName + '"]';
1582              var symbolIds = document.querySelectorAll(ids);
1583              symbolIds.forEach(symbolId => {
1584                if (symbolId) {
1585                  var pprice = symbolId.querySelector('.pprice');
1586                  var ptime = symbolId.querySelector('.ptime');
1587                  var pricePrevClosePricePDelta = symbolId.querySelector('.pricePrevClosePricePDelta')
1588                  var price = symbolId.querySelector('.price');
1589                  var pvolume = symbolId.querySelector('.pvolume')
1590                  var pvalue = symbolId.querySelector('.pvalue')
1591                  var pricePrevClosePricePDeltaOTC = symbolId.querySelector('.pricePrevClosePricePDeltaOTC')
1592                  var date = data.pdate;
1593                  if (pricePrevClosePricePDeltaOTC) {
1594                    pricePrevClosePricePDeltaOTC.innerHTML = data.pricePrevClosePricePDeltaOTC
1595                  }
1596                  if (pvalue) {
1597                    pvalue.innerHTML = Number(data.pvolume) * Number(data.pprice)
1598                  }
1599                  if (pvolume) {
1600                    pvolume.innerHTML = parseInt(data.pvolume)
1601                  }
1602                  if (price) {
1603                    price.innerHTML = data.price
1604                  }
1605                  if (pprice) {
1606                    pprice.innerHTML = data.pprice;
1607                  }
1608                  if (ptime) {
1609
1610                    if (date) {
1611                      if (ConvertDate(date) === ConvertDate(d)) {
1612                        ptime.innerHTML = ConvertTime(data.ptime)
1613                      } else {
1614                        ptime.innerHTML = ConvertDate(date);
1615                      }
1616                    } else {
1617                      ptime.innerHTML = ConvertTime(data.ptime)
1618                    }
1619                  }
1620                  if (pricePrevClosePricePDelta) {
1621                    if (Number(checkChange) < 0) {
1622                      pricePrevClosePricePDelta.classList.add('text-danger')
1623                      pricePrevClosePricePDelta.classList.remove('text-success')
1624                    } else if (Number(checkChange) > 0) {
1625                      pricePrevClosePricePDelta.classList.add('text-success');
1626                      pricePrevClosePricePDelta.classList.remove('text-danger')
1627                    } else {
1628                      pricePrevClosePricePDelta.classList.remove('text-danger')
1629                      pricePrevClosePricePDelta.classList.remove('text-success')
1630                    }
1631                    pricePrevClosePricePDelta.innerHTML = parseFloat(data.pricePrevClosePricePDelta).toFixed(2) + "%";
1632                  }
1633
1634                  fillAllSelectors(data, symbolId);
1635                }
1636              })
1637            }
1638          });
1639        }
1640      }
1641    });
1642  }
1643}
1644
1645
1646function getAllLondonFixing() {
1647
1648  var londonFix = document.querySelectorAll('.londonFix');
1649  var london = [];
1650  londonFix.forEach(symbol => {
1651    london.push(symbol.getAttribute("id"));
1652  })
1653  if (londonFix.length) {
1654    $.get({
1655      url: '/wp-json/naftemporiki/get-london-all-fixing',
1656      data: { "functionName": "GetLondonFixing" },
1657      success: function (s_data) {
1658        if (s_data && s_data.length) {
1659          s_data.forEach(data => {
1660            var ids = '[id="' + data.Symbol + data.Currency + '"]';
1661            var symbolIds = document.querySelectorAll(ids);
1662
1663            symbolIds.forEach(symbolId => {
1664              if (symbolId) {
1665                var time = symbolId.querySelector('.time');
1666                if (time) {
1667                  if (data.Time) {
1668                    time.innerHTML = convert12hTo24h(data.Date, data.Time);
1669                  }
1670                }
1671              }
1672            })
1673          })
1674        }
1675      }
1676    })
1677  }
1678}
1679
1680function convert12hTo24h(date, time) {
1681  var sHours = new Date(date + ' ' + time + ' ').getHours();
1682  var sMinutes = new Date(date + ' ' + time + ' ').getMinutes()
1683  if (sHours < 10) sHours = "0" + sHours;
1684  if (sMinutes < 10) sMinutes = "0" + sMinutes;
1685  return sHours + ":" + sMinutes
1686}
1687function tConvert(time) {
1688  // Check correct time format and split into components
1689  time = time.toString().match(/^([01]\d|2[0-3])(:)([0-5]\d)(:[0-5]\d)?$/) || [time];
1690
1691  if (time.length > 1) { // If time format correct
1692    time = time.slice(1);  // Remove full string match value
1693    time[5] = +time[0] < 12 ? 'AM' : 'PM'; // Set AM/PM
1694    time[0] = +time[0] % 12 || 12; // Adjust hours
1695  }
1696  return time[0]; // return adjusted time or original string
1697}
1698
1699
1700function getForeign() {
1701  var symbolsLocation = document.querySelectorAll('.foreignInfo');
1702  var locationS = [];
1703  symbolsLocation.forEach(symbol => {
1704    locationS.push(symbol.getAttribute("id"));
1705  })
1706  locationS = locationS.filter((v, i, a) => a.indexOf(v) === i);
1707  var symbolsLoc = locationS.join(',');
1708  if (symbolsLocation.length) {
1709    $.get({
1710      url: '/wp-json/naftemporiki/get-indices-values',
1711      data: { "identifier": symbolsLoc, "functionName": "GetDelayedIndicesValue" },
1712      success: function (s_data) {
1713        if (s_data && s_data.length) {
1714          s_data.forEach(data => {
1715            if (data) {
1716              var ids = '[id="' + data.Identifier + '"]';
1717              var symbolIds = document.querySelectorAll(ids);
1718              symbolIds.forEach(symbolId => {
1719
1720                if (symbolId) {
1721                  var symbolValue = symbolId.querySelector('.value');
1722                  var symbolChange = symbolId.querySelector('.change');
1723                  var ChangeFromPreviousClose = symbolId.querySelector('.ChangeFromPreviousClose')
1724                  var lastupdated = symbolId.querySelector('.last-updated')
1725                  var time = symbolId.querySelector('.time')
1726                  var pricePrevClosePriceDelta = symbolId.querySelector('.pricePrevClosePriceDelta')
1727                  var pricePrevClosePricePDelta = symbolId.querySelector('.pricePrevClosePricePDelta')
1728                  var open = symbolId.querySelector('.open');
1729                  var date = symbolId.querySelector('.date')
1730                  var prevClosePrice = symbolId.querySelector('.prevClosePrice')
1731                  if (data.Value) {
1732                    if (prevClosePrice) {
1733                      prevClosePrice.innerHTML = convertFloatNumbers(data.Value.PreviousClose)
1734                    }
1735                    if (date) {
1736                      date.innerHTML = data.Value.Date;
1737                    }
1738
1739                    if (open) {
1740                      open.innerHTML = data.Value.Open;
1741                    }
1742                    if (symbolValue) {
1743                      symbolValue.innerHTML = convertFloatNumbers(parseFloat(data.Value.Last).toString());
1744                    }
1745                    if (symbolChange) {
1746                      if (Number(data.Value.PercentChangeFromPreviousClose) < 0) {
1747                        symbolChange.classList.add('text-danger')
1748                        symbolChange.classList.remove('text-success')
1749                      } else if (Number(data.Value.PercentChangeFromPreviousClose) > 0) {
1750                        symbolChange.classList.add('text-success');
1751                        symbolChange.classList.remove('text-danger')
1752                      } else {
1753                        symbolChange.classList.remove('text-danger')
1754                        symbolChange.classList.remove('text-success')
1755                      }
1756                      symbolChange.innerHTML = convertFloatNumbers((parseFloat(data.Value.PercentChangeFromPreviousClose).toFixed(2)).toString()) + '%';
1757                    }
1758                    const d = new Date();
1759                    if (lastupdated) {
1760                      if (data.Value.Date) {
1761                        if (ConvertDate(data.Value.Date) === ConvertDate(d) && data.Value.Time) {
1762
1763                          lastupdated.innerHTML = convert12hTo24h(data.Value.Date, data.Value.Time);
1764                        } else {
1765                          lastupdated.innerHTML = ConvertDate(data.Value.Date);
1766                        }
1767                      } else if (data.Value.Time) {
1768                        lastupdated.innerHTML = convert12hTo24h(data.Value.Date, data.Value.Time);
1769                      }
1770                    }
1771
1772                    if (time) {
1773                      if (data.Value.Date) {
1774                        if (ConvertDate(data.Value.Date) === ConvertDate(d) && data.Value.Time) {
1775                          time.innerHTML = convert12hTo24h(data.Value.Date, data.Value.Time);
1776                        } else {
1777                          time.innerHTML = ConvertDate(data.Value.Date);
1778                        }
1779                      } else if (data.Value.Time) {
1780                        time.innerHTML = convert12hTo24h(data.Value.Date, data.Value.Time);
1781                      }
1782                    }
1783
1784                    if (ChangeFromPreviousClose) {
1785                      if (Number(data.Value.PercentChangeFromPreviousClose) < 0) {
1786                        ChangeFromPreviousClose.classList.add('text-danger')
1787                        ChangeFromPreviousClose.classList.remove('text-success')
1788                      } else if (Number(data.Value.PercentChangeFromPreviousClose) > 0) {
1789                        ChangeFromPreviousClose.classList.add('text-success');
1790                        ChangeFromPreviousClose.classList.remove('text-danger')
1791                      } else {
1792                        ChangeFromPreviousClose.classList.remove('text-danger')
1793                        ChangeFromPreviousClose.classList.remove('text-success')
1794                      }
1795                      ChangeFromPreviousClose.innerHTML = convertFloatNumbers((parseFloat(data.Value.ChangeFromPreviousClose).toFixed(2)).toString())
1796                    }
1797
1798                    if (pricePrevClosePricePDelta) {
1799                      if (Number(data.Value.PercentChangeFromPreviousClose) < 0) {
1800                        pricePrevClosePricePDelta.classList.add('text-danger')
1801                        pricePrevClosePricePDelta.classList.remove('text-success')
1802                      } else if (Number(data.Value.PercentChangeFromPreviousClose) > 0) {
1803                        pricePrevClosePricePDelta.classList.add('text-success');
1804                        pricePrevClosePricePDelta.classList.remove('text-danger')
1805                      } else {
1806                        pricePrevClosePricePDelta.classList.remove('text-danger')
1807                        pricePrevClosePricePDelta.classList.remove('text-success')
1808                      }
1809                      pricePrevClosePricePDelta.innerHTML = convertFloatNumbers((parseFloat(data.Value.PercentChangeFromPreviousClose).toFixed(2)).toString()) + '%';
1810
1811                    }
1812
1813                    if (pricePrevClosePriceDelta) {
1814                      if (Number(data.Value.PercentChangeFromPreviousClose) < 0) {
1815                        pricePrevClosePriceDelta.classList.add('text-danger')
1816                        pricePrevClosePriceDelta.classList.remove('text-success')
1817                      } else if (Number(data.Value.PercentChangeFromPreviousClose) > 0) {
1818                        pricePrevClosePriceDelta.classList.add('text-success');
1819                        pricePrevClosePriceDelta.classList.remove('text-danger')
1820                      } else {
1821                        pricePrevClosePriceDelta.classList.remove('text-danger')
1822                        pricePrevClosePriceDelta.classList.remove('text-success')
1823                      }
1824                      pricePrevClosePriceDelta.innerHTML = convertFloatNumbers(data.Value.ChangeFromPreviousClose);
1825                    }
1826                  }
1827                }
1828              })
1829            }
1830          });
1831        }
1832      }
1833    });
1834  }
1835}
1836
1837function getMetals() {
1838  var symbolsInfo = document.querySelectorAll('.metals');
1839  var infoarray = [];
1840  symbolsInfo.forEach(symbol => {
1841    infoarray.push(symbol.getAttribute("id"));
1842  })
1843  infoarray = infoarray.filter((v, i, a) => a.indexOf(v) === i);
1844
1845  if (infoarray.length) {
1846    infoarray.forEach(id => {
1847      $.get({
1848        url: '/wp-json/naftemporiki/get-metal-quotes-info',
1849        data: { "symbols": id.substring(0, 3), "currency": id.substring(3, 7), "functionName": "GetRealTimeExtendedMetalQuote" },
1850        success: function (s_data) {
1851          if (s_data && s_data.length) {
1852            s_data.forEach(data => {
1853              var ids = '[id="' + data.Symbol + data.Currency + '"]';
1854              var symbolIds = document.querySelectorAll(ids);
1855              symbolIds.forEach(symbolId => {
1856                if (symbolId) {
1857                  var symbolValue = symbolId.querySelector('.value');
1858                  var symbolChange = symbolId.querySelector('.change');
1859                  var bid = symbolId.querySelector('.bid')
1860                  var ask = symbolId.querySelector('.ask')
1861                  var date = symbolId.querySelector('.date')
1862
1863                  var pricePrevClosePriceDelta = symbolId.querySelector('.pricePrevClosePriceDelta')
1864                  var pricePrevClosePricePDelta = symbolId.querySelector('.pricePrevClosePricePDelta')
1865                  var time = symbolId.querySelector('.time');
1866                  var prevClosePrice = symbolId.querySelector('.prevClosePrice')
1867
1868                  if (symbolValue) {
1869                    symbolValue.innerHTML = convertFloatNumbers(data.Close);
1870                  }
1871                  if (symbolChange) {
1872                    if (Number(data.PercentChange) < 0) {
1873                      symbolChange.classList.add('text-danger')
1874                      symbolChange.classList.remove('text-success')
1875                    } else if (Number(data.PercentChange) > 0) {
1876                      symbolChange.classList.add('text-success');
1877                      symbolChange.classList.remove('text-danger')
1878                    } else {
1879                      symbolChange.classList.remove('text-danger')
1880                      symbolChange.classList.remove('text-success')
1881                    }
1882                    symbolChange.innerHTML = convertFloatNumbers((parseFloat(data.PercentChange).toFixed(2)).toString()) + '%';
1883                  }
1884
1885                  if (pricePrevClosePricePDelta) {
1886                    if (Number(data.PercentChange) < 0) {
1887                      pricePrevClosePricePDelta.classList.add('text-danger')
1888                      pricePrevClosePricePDelta.classList.remove('text-success')
1889                    } else if (Number(data.PercentChange) > 0) {
1890                      pricePrevClosePricePDelta.classList.add('text-success');
1891                      pricePrevClosePricePDelta.classList.remove('text-danger')
1892                    } else {
1893                      pricePrevClosePricePDelta.classList.remove('text-danger')
1894                      pricePrevClosePricePDelta.classList.remove('text-success')
1895                    }
1896                    pricePrevClosePricePDelta.innerHTML = convertFloatNumbers((parseFloat(data.PercentChange).toFixed(2)).toString()) + '%';
1897                  }
1898
1899                  if (pricePrevClosePriceDelta) {
1900                    if (Number(data.PercentChange) < 0) {
1901                      pricePrevClosePriceDelta.classList.add('text-danger')
1902                      pricePrevClosePriceDelta.classList.remove('text-success')
1903                    } else if (Number(data.PercentChange) > 0) {
1904                      pricePrevClosePriceDelta.classList.add('text-success');
1905                      pricePrevClosePriceDelta.classList.remove('text-danger')
1906                    } else {
1907                      pricePrevClosePriceDelta.classList.remove('text-danger')
1908                      pricePrevClosePriceDelta.classList.remove('text-success')
1909                    }
1910                    pricePrevClosePriceDelta.innerHTML = convertFloatNumbers((parseFloat(data.Change).toFixed(2)).toString());
1911                  }
1912                  const d = new Date();
1913                  if (time) {
1914                    if (data.Date) {
1915                      if (ConvertDate(data.Date) === ConvertDate(d) && data.Time) {
1916                        time.innerHTML = convert12hTo24h(data.Date, data.Time);
1917                      } else {
1918                        //time.innerHTML = ConvertDate(data.Date);
1919                        time.innerHTML = "";
1920                      }
1921                    } else if (data.Time) {
1922                      time.innerHTML = convert12hTo24h(data.Date, data.Time);
1923                    }
1924                  }
1925
1926                  if (ask) {
1927                    ask.innerHTML = convertFloatNumbers(data.Ask);
1928                  }
1929
1930                  if (bid) {
1931                    bid.innerHTML = convertFloatNumbers(data.Bid);
1932                  }
1933
1934                  if (prevClosePrice) {
1935                    prevClosePrice.innerHTML = convertFloatNumbers(data.PreviousClose);
1936                  }
1937
1938                  if (date) {
1939                    date.innerHTML = ConvertDate(data.Date);
1940                  }
1941                }
1942              })
1943            });
1944          }
1945        }
1946      });
1947    })
1948  }
1949}
1950
1951function getRates() {
1952  var symbolsInfo = document.querySelectorAll('.ratesInfo');
1953  var infoarray = [];
1954  symbolsInfo.forEach(symbol => {
1955    infoarray.push(symbol.getAttribute("id"));
1956  })
1957  infoarray = infoarray.filter((v, i, a) => a.indexOf(v) === i);
1958  var symbols = infoarray.join(',');
1959  if (infoarray.length) {
1960    $.get({
1961      url: '/wp-json/naftemporiki/get-rates2',
1962      data: { "symbols": symbols, "functionName": "Rates" },
1963      success: function (s_data) {
1964        if (s_data && s_data.length) {
1965          s_data.forEach(data => {
1966            var ids = '[id="' + data.Symbol + '"]';
1967            var symbolIds = document.querySelectorAll(ids);
1968            symbolIds.forEach(symbolId => {
1969              if (symbolId) {
1970                var symbol = data.Symbol;
1971                var askR = symbolId.querySelector('.ask');
1972                var aksC = symbolId.querySelector('.aksC');
1973                var forexSapn = symbolId.querySelector('.forex');
1974                var forexldSpan = symbolId.querySelector('.forexld');
1975                var BidC = symbolId.querySelector('.BidC');
1976                var forexBid = symbolId.querySelector('.forexBid');
1977                var forexldBid = symbolId.querySelector('.forexldBid');
1978                var spread = symbolId.querySelector('.spread');
1979                var mid = symbolId.querySelector('.mid');
1980                var bid = symbolId.querySelector('.bid');
1981                var time = symbolId.querySelector('.time');
1982                var value = symbolId.querySelector('.value');
1983                var lastupdated = symbolId.querySelector('.lastupdated');
1984
1985                var decimal = 4;
1986                var decimal1 = 5;
1987                if (symbol == "BTCUSD") {
1988                  decimal = 2;
1989                  decimal1 = 2;
1990                }
1991
1992                if (value) {
1993                  value.innerHTML = convertFloatNumbers((parseFloat(data.Mid).toFixed(2)).toString());
1994                }
1995
1996                if (aksC) {
1997                  var num = String(data.Ask)
1998                  var ask = parseFloat(data.Ask);
1999                  var forex = parseFloat(data.Ask);
2000                  var forexld = parseFloat(data.Ask);
2001                  if (parseFloat(data.Ask)) {
2002                    var val = num.replace('.', '');
2003                    var pos1 = num.indexOf('.');
2004                    if (pos1 != -1) {
2005                      if (data.QuoteCurrency != 'JPY' && data.Symbol != 'BTCUSD') {
2006                        ask = val.substring(0, pos1 + 2);
2007                        forex = val.substring(pos1 + 2, pos1 + 4);
2008                        forexld = val.substring(pos1 + 4, pos1 + 5);
2009
2010                        if (!forexld) {
2011                          if (pos1 + 4 > val.length) {
2012                            forexld = 0;
2013                          } else {
2014                            if (pos1 + 5 > val.length) {
2015                              forexld = 0;
2016                            } else {
2017                              forexld = val[pos1 + 5];
2018                            }
2019                          }
2020                        }
2021                      } else {
2022                        ask = val.substring(0, pos1);
2023                        forex = val.substring(pos1, pos1 + 2);
2024                        forexld = val.substring(pos1 + 2, pos1 + 3);
2025
2026                        if (!forexld) {
2027                          if (pos1 + 2 > val.length) {
2028                            forexld = 0;
2029                          } else {
2030                            if (pos1 + 3 > val.length) {
2031                              forexld = 0;
2032                            } else {
2033                              forexld = val[pos1 + 3];
2034                            }
2035                          }
2036                        }
2037                      }
2038                    } else {
2039                      ask = num;
2040                      forex = 0;
2041                      forexld = 0;
2042                    }
2043                    var pos = num.indexOf('.');
2044                    if (pos != -1) {
2045                      ask = [ask.slice(0, pos), '.', ask.slice(pos)].join('')
2046                    }
2047                  }
2048
2049                  aksC.innerHTML = ask;
2050                  forexSapn.innerHTML = forex;
2051                  forexldSpan.innerHTML = forexld;
2052                }
2053                if (BidC) {
2054                  var num = String(data.Bid)
2055                  var ask = parseFloat(data.Bid);
2056                  var forex = parseFloat(data.Bid);
2057                  var forexld = parseFloat(data.Bid);
2058                  if (parseFloat(data.Bid)) {
2059                    var val = num.replace('.', '');
2060                    var pos1 = num.indexOf('.');
2061                    if (pos1 != -1) {
2062                      if (data.QuoteCurrency != 'JPY' && data.Symbol != 'BTCUSD') {
2063                        ask = val.substring(0, pos1 + 2);
2064                        forex = val.substring(pos1 + 2, pos1 + 4);
2065                        forexld = val.substring(pos1 + 4, pos1 + 5);
2066                        if (!forexld) {
2067                          if (pos1 + 4 > val.length) {
2068                            forexld = 0;
2069                          } else {
2070                            if (pos1 + 5 > val.length) {
2071                              forexld = 0;
2072                            } else {
2073                              forexld = val[pos1 + 5];
2074                            }
2075                          }
2076                        }
2077                      } else {
2078                        ask = val.substring(0, pos1);
2079                        forex = val.substring(pos1, pos1 + 2);
2080                        forexld = val.substring(pos1 + 2, pos1 + 3);
2081                        if (!forexld) {
2082                          if (pos1 + 2 > val.length) {
2083                            forexld = 0;
2084                          } else {
2085                            if (pos1 + 3 > val.length) {
2086                              forexld = 0;
2087                            } else {
2088                              forexld = val[pos1 + 3];
2089                            }
2090                          }
2091                        }
2092                      }
2093                    } else {
2094                      ask = num;
2095                      forex = 0;
2096                      forexld = 0;
2097                    }
2098                    var pos = num.indexOf('.');
2099                    if (pos != -1) {
2100                      ask = [ask.slice(0, pos), '.', ask.slice(pos)].join('')
2101                    }
2102                  }
2103
2104                  BidC.innerHTML = ask;
2105                  forexBid.innerHTML = forex;
2106                  forexldBid.innerHTML = forexld;
2107                }
2108                if (spread) {
2109                  var spreadVar = parseFloat(data.Ask) - parseFloat(data.Bid)
2110                  spread.innerHTML = convertFloatNumbers((parseFloat(spreadVar).toFixed(3)).toString());
2111                }
2112                if (askR) {
2113                  askR.innerHTML = convertFloatNumbers((parseFloat(data.Ask).toFixed(decimal)).toString
2113());
2114                }
2115                if (mid) {
2116                  mid.innerHTML = convertFloatNumbers((parseFloat(data.Mid).toFixed(decimal1)).toString());
2117                }
2118                if (bid) {
2119                  bid.innerHTML = convertFloatNumbers((parseFloat(data.Bid).toFixed(decimal)).toString());
2120                }
2121                const d = new Date();
2122                let tmpTime = "";
2123                let tmpDate = "";
2124
2125                if (time) {
2126                  if (data.Date) {
2127                    if (ConvertDate(data.Date) === ConvertDate(d) && data.Time) {
2128                      tmpTime = convert12hTo24h(data.Date, data.Time);
2129                    } else {
2130                      //tmpTime = ConvertDate(data.Date);
2131                    }
2132                  } else if (data.Time) {
2133                    tmpTime = convert12hTo24h(data.Date, data.Time);
2134                  }
2135                  time.innerHTML = tmpTime;
2136                }
2137                if (lastupdated) {
2138                  if (data.Date) {
2139                    if (ConvertDate(data.Date) === ConvertDate(d) && data.Time) {
2140                      tmpDate = convert12hTo24h(data.Date, data.Time);
2141                    } else {
2142                      tmpDate = ConvertDate(data.Date);
2143                    }
2144                  } else if (data.Time) {
2145                    tmpDate = convert12hTo24h(data.Date, data.Time);
2146                  }
2147                  lastupdated.innerHTML = tmpDate;
2148                }
2149
2150              }
2151            })
2152          });
2153        }
2154      }
2155    });
2156  }
2157}
2158
2159function updateGDSymbol() {
2160  SymbolInfoUpdate('GD.ATH');
2161}
2162
2163function GetSymbolInfo(classname) {
2164  var symbolsInfo = document.querySelectorAll('.' + classname);
2165  var infoarray = [];
2166  symbolsInfo.forEach(symbol => {
2167    infoarray.push(symbol.getAttribute("id"));
2168  })
2169  infoarray = infoarray.filter((v, i, a) => a.indexOf(v) === i);
2170  var symbols = infoarray.join(',');
2171  if (symbolsInfo.length) {
2172    SymbolInfoUpdate(symbols);
2173  }
2174}
2175
2176function GetGDTurnover(symbolTurnover) {
2177  $.get({
2178    url: '/wp-json/naftemporiki/get-gd-turnover',
2179    data: {},
2180    success: function (data) {
2181      symbolTurnover.innerHTML = turnoverInMillions(data);
2182    }
2183  });
2184}
2185
2186function formatNumber(number) {
2187  // Split the number into integer and decimal parts
2188  let [integerPart, decimalPart] = number.toFixed(2).split('.');
2189
2190  // Format the integer part by adding periods as thousand separators
2191  integerPart = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, '.');
2192
2193  // Return the formatted number with the comma as the decimal separator
2194  return `${integerPart},${decimalPart}`;
2195}
2196
2197function SymbolInfoUpdate(symbols) {
2198  $.get({
2199    url: '/wp-json/naftemporiki/get-symbols-info-level',
2200    data: { "symbols": symbols, "lng": "GR" },
2201    success: function (s_data) {
2202      s_data.forEach(data => {
2203        var ids = '[id="' + data.instrSysName + '"]';
2204        var symbolIds = document.querySelectorAll(ids);
2205        symbolIds.forEach(symbolId => {
2206          if (symbolId) {
2207            var symbolValue = symbolId.querySelector('.value');
2208            var symbolupdate = symbolId.querySelector('.last-updated');
2209            var symbolChange = symbolId.querySelector('.change');
2210            var symbolTurnover = symbolId.querySelector('.turnover');
2211            var symbolpricePrevClosePriceDelta = symbolId.querySelector('.pricePrevClosePriceDelta');
2212            var pricePrevClosePricePDelta = symbolId.querySelector('.pricePrevClosePricePDelta')
2213            var volume = symbolId.querySelector('.volume');
2214            var interest = symbolId.querySelector('.interest');
2215            var bidSize = symbolId.querySelector('.bidSize');
2216            var bidPrice = symbolId.querySelector('.bidPrice');
2217            var askSize = symbolId.querySelector('.askSize');
2218            var askPrice = symbolId.querySelector('.askPrice');
2219            var capitalization = symbolId.querySelector('.capitalization');
2220            var time = symbolId.querySelector('.time');
2221            var tradeDate = symbolId.querySelector('.date')
2222            var prevClosePrice = symbolId.querySelector('.prevClosePrice');
2223            var pricePrevClosePricePDeltaOTC = symbolId.querySelector('.pricePrevClosePricePDeltaOTC')
2224            var totalTurnover = symbolId.querySelector('.totalTurnover')
2225            var totalpieces = symbolId.querySelector('.totalpieces')
2226
2227            fillAllSelectors(data, symbolId)
2228            if (totalpieces) {
2229              var num = parseFloat(data.volumeOTC) * parseFloat(data.priceOTC)
2230              if (num) {
2231                totalpieces.innerHTML = convertFloatNumbers((num.toFixed(2)).toString())
2232              } else {
2233                totalpieces.innerHTML = ""
2234              }
2235            }
2236            if (totalTurnover) {
2237              totalTurnover.innerHTML = convertFloatNumbers((parseFloat(data.totalTurnover).toFixed(2)).toString())
2238            }
2239
2240            var bg = symbolId.querySelectorAll('.bg');
2241
2242            if (pricePrevClosePricePDeltaOTC) {
2243              pricePrevClosePricePDeltaOTC.innerHTML = convertFloatNumbers(data.pricePrevClosePricePDeltaOTC)
2244            }
2245
2246            var checkChange, pricedelta, date;
2247
2248            if (symbolValue) {
2249              if (Number(data.price) != 0) {
2250                if (data.instrumentSysName == 'EQ' || data.instrumentSysName == 'MTF') {
2251                  symbolValue.innerHTML = convertFloatNumbers((parseFloat(data.price).toFixed(4)).toString());
2252                } else {
2253                  symbolValue.innerHTML = convertFloatNumbers((parseFloat(data.price).toFixed(2)).toString());
2254                }
2255                checkChange = data.pricePrevClosePricePDelta;
2256                pricedelta = data.pricePrevClosePriceDelta;
2257                date = data.tradeDate
2258              } else {
2259                if (data.instrumentSysName == 'EQ' || data.instrumentSysName == 'MTF') {
2260                  symbolValue.innerHTML = convertFloatNumbers((parseFloat(data.prevClosePrice).toFixed(4)).toString());
2261                } else {
2262                  symbolValue.innerHTML = convertFloatNumbers((parseFloat(data.prevClosePrice).toFixed(2)).toString());
2263                }
2264                checkChange = data.prevClosePDelta;
2265                pricedelta = data.prevCloseDelta;
2266                date = data.prevCloseDate
2267              }
2268
2269              if (symbolValue.classList.contains('arrow-up') || symbolValue.classList.contains('arrow-down')) {
2270                if (Number(checkChange) < 0) {
2271                  symbolValue.classList.add('arrow-down')
2272                  symbolValue.classList.remove('arrow-up')
2273                } else {
2274                  symbolValue.classList.remove('arrow-down')
2275                  symbolValue.classList.add('arrow-up')
2276                }
2277              }
2278            }
2279            const d = new Date();
2280            if (time) {
2281              if (date) {
2282                if (ConvertDate(date) === ConvertDate(d)) {
2283                  time.innerHTML = ConvertTime(data.time);
2284                } else {
2285                  time.innerHTML = ConvertDate(date);
2286                }
2287              } else {
2288                time.innerHTML = ConvertTime(data.time);
2289              }
2290            }
2291
2292            if (tradeDate) {
2293              tradeDate.innerHTML = ConvertDate(date);
2294            }
2295
2296            if (symbolupdate) {
2297              if (date) {
2298                if (ConvertDate(date) === ConvertDate(d)) {
2299                  symbolupdate.innerHTML = ConvertTime(data.time);
2300                } else {
2301                  //symbolupdate.innerHTML = ConvertDate(date);
2302                  symbolupdate.innerHTML = "";
2303                }
2304              } else {
2305                symbolupdate.innerHTML = ConvertTime(data.time);
2306              }
2307
2308            }
2309
2310            if (symbolChange) {
2311              bg.forEach(item => {
2312                var prev_value = (symbolChange.innerHTML).replace("%", "")
2313                var changeCheck = parseFloat(checkChange).toFixed(2);
2314                if (Number(prev_value) < Number(changeCheck)) {
2315                  item.style.backgroundColor = '#FFEDEF'
2316
2317                } else if (Number(prev_value) > Number(changeCheck)) {
2318                  item.style.backgroundColor = '#EDFFF1'
2319                } else {
2320                  // item.style.backgroundColor  = '#F3F4F5'
2321                }
2322
2323                setTimeout(function () {
2324                  item.style.backgroundColor = '';
2325                }, 1000);
2326              })
2327            }
2328
2329            if (symbolChange) {
2330              if (Number(checkChange) < 0) {
2331                symbolChange.classList.add('text-danger')
2332                symbolChange.classList.remove('text-success')
2333              } else if (Number(checkChange) > 0) {
2334                symbolChange.classList.add('text-success');
2335                symbolChange.classList.remove('text-danger')
2336              } else {
2337                symbolChange.classList.remove('text-danger')
2338                symbolChange.classList.remove('text-success')
2339              }
2340              symbolChange.innerHTML = convertFloatNumbers((parseFloat(checkChange).toFixed(2)).toString()) + '%';
2341            }
2342
2343            if (symbolTurnover) {
2344              symbolTurnover.innerHTML = turnoverInMillions(data.totalTurnover);
2345            }
2346
2347            if (symbolpricePrevClosePriceDelta) {
2348              if (Number(checkChange) < 0) {
2349                symbolpricePrevClosePriceDelta.classList.add('text-danger')
2350                symbolpricePrevClosePriceDelta.classList.remove('text-success')
2351              } else if (Number(checkChange) > 0) {
2352                symbolpricePrevClosePriceDelta.classList.add('text-success');
2353                symbolpricePrevClosePriceDelta.classList.remove('text-danger')
2354              } else {
2355                symbolpricePrevClosePriceDelta.classList.remove('text-danger')
2356                symbolpricePrevClosePriceDelta.classList.remove('text-success')
2357              }
2358              symbolpricePrevClosePriceDelta.innerHTML = convertFloatNumbers((parseFloat(pricedelta).toFixed(2)).toString());
2359            }
2360
2361            if (pricePrevClosePricePDelta) {
2362              if (Number(checkChange) < 0) {
2363                pricePrevClosePricePDelta.classList.add('text-danger')
2364                pricePrevClosePricePDelta.classList.remove('text-success')
2365              } else if (Number(checkChange) > 0) {
2366                pricePrevClosePricePDelta.classList.add('text-success');
2367                pricePrevClosePricePDelta.classList.remove('text-danger')
2368              } else {
2369                pricePrevClosePricePDelta.classList.remove('text-danger')
2370                pricePrevClosePricePDelta.classList.remove('text-success')
2371              }
2372              pricePrevClosePricePDelta.innerHTML = convertFloatNumbers((parseFloat(checkChange).toFixed(2)).toString()) + "%";
2373            }
2374
2375            if (volume) {
2376              volume.innerHTML = numberWithCommas(parseInt(data.totalVolume).toString())
2377            }
2378            if (interest) {
2379              if (Number(data.openInterest) <= 0 || !data.openInterest) {
2380                interest.innerHTML = " "
2381              } else {
2382                interest.innerHTML = numberWithCommas(parseInt(data.openInterest).toString())
2383              }
2384            }
2385
2386            if (bidSize) {
2387              if (Number(data.bidSize) != 0) {
2388                bidSize.innerHTML = numberWithCommas(parseInt(data.bidSize).toString())
2389              } else {
2390                bidSize.innerHTML = ''
2391              }
2392            }
2393
2394            if (bidPrice) {
2395              if (Number(data.bidPrice) != 0) {
2396                bidPrice.innerHTML = convertFloatNumbers((parseFloat(data.bidPrice).toFixed(3)).toString());
2397              } else {
2398                bidPrice.innerHTML = ""
2399              }
2400            }
2401
2402            if (askSize) {
2403              if (Number(data.askSize) != 0) {
2404                askSize.innerHTML = numberWithCommas(parseInt(data.askSize).toString())
2405              } else {
2406                askSize.innerHTML = ""
2407              }
2408            }
2409
2410            if (askPrice) {
2411              if (Number(data.askPrice) != 0) {
2412                askPrice.innerHTML = convertFloatNumbers((parseFloat(data.askPrice).toFixed(3)).toString());
2413              } else {
2414                askPrice.innerHTML = ""
2415              }
2416            }
2417
2418            if (capitalization) {
2419              capitalization.innerHTML = formatNumber(Number(data.capitalization));
2420            }
2421            if (prevClosePrice) {
2422              prevClosePrice.innerHTML = convertFloatNumbers((parseFloat(data.prevClosePrice).toFixed(2)).toString());
2423            }
2424
2425
2426          }
2427        })
2428      });
2429    }
2430  });
2431}
2432
2433function fillAllSelectors(data, symbolId) {
2434  // Automatically fill all ajaxPopulate selectors
2435  const ajaxPopulate = symbolId.querySelectorAll('.ajaxPopulate');
2436  [].forEach.call(ajaxPopulate, function (target) {
2437    let key = target.dataset.key;
2438    let type = target.dataset.type;
2439    if (data.hasOwnProperty(key)) {
2440      let val = data[key];
2441
2442      if (type === 'int') {
2443        val = parseInt(val);
2444        val = numberWithCommas(val.toString())
2445      }
2446      if (type === 'float') {
2447        val = parseFloat(val).toFixed(parseInt(target.dataset.digits));
2448        val = convertFloatNumbers(val.toString())
2449      }
2450      target.innerHTML = val;
2451    }
2452  });
2453}
2454
2455
2456function turnoverInMillions(num) {
2457  return convertFloatNumbers((Math.abs(Number(num)) / 1000000).toFixed(2));
2458}
2459
2460function convertFloatNumbers(num) {
2461  num = (num.toString()).replace('.', ',');
2462  let tmp, str = "";
2463  if (num.indexOf(',') > -1) {
2464    tmp = num.split(',')
2465    num = tmp[0].toString();
2466  }
2467  if (tmp) {
2468    str = ',' + tmp[1].toString()
2469  }
2470  return numberWithCommas(num) + str;
2471}
2472
2473function numberWithCommas(num) {
2474  return num.replace(/\B(?=(\d{3})+(?!\d))/g, '.');
2475}
2476
2477function DotWithCommas(num) {
2478  return num.replace(/\./g, ',');
2479}
2480
2481var boxperformance = document.querySelectorAll('.box-range')
2482
2483boxperformance.forEach(box => {
2484  var seperator = box.querySelector('.seperator')
2485  if (seperator) {
2486    var num = seperator.getAttribute('data-num');
2487    seperator.style.setProperty("--bar-length", num + '%')
2488  }
2489})
2490
2491var sectorRow = document.querySelectorAll('.sectorRow');
2492
2493sectorRow.forEach(sector => {
2494  sector.addEventListener('click', () => {
2495    var symTbale = document.querySelector('.sectorTable');
2496    var secors_list = document.querySelector('.secors-list');
2497    var sectorssymbollist = document.querySelector('.sectors-symbol-list')
2498    if (sectorssymbollist) {
2499      sectorssymbollist.classList.remove('d-none');
2500    }
2501    if (secors_list) {
2502      secors_list.classList.add('d-none');
2503    }
2504    if (symTbale) {
2505      symTbale.classList.add('d-none');
2506    }
2507    var singleTable = document.querySelector('.singleTable');
2508    if (singleTable) {
2509      singleTable.classList.remove('d-none');
2510    }
2511
2512    var value = sector.getAttribute('data-category')
2513    var symbols = document.querySelectorAll(".symbolInfo[data-category='" + value + "']");
2514    var whatsSelected = [];
2515    symbols.forEach(symbol => {
2516      var name = symbol.querySelector('.categoryId');
2517      if (name) {
2518        name = name.innerHTML;
2519        whatsSelected.push(name);
2520      }
2521    })
2522    oTable.column(0).search(whatsSelected.join('|'), true, false).draw();
2523    var select = document.querySelector('#sectorsSymbolsSelect');
2524    select.value = value
2525  })
2526})
2527var swiperOpinions = new Swiper(".slider-opinions", {
2528  // slidesPerView: 1,
2529  spaceBetween: 24,
2530  watchSlidesProgress: true,
2531  loop: true,
2532  rewind: true,
2533  navigation: {
2534    nextEl: ".swiper-button-next",
2535    prevEl: ".swiper-button-prev",
2536  },
2537  autoplay: {
2538    delay: 5000,
2539    disableOnInteraction: false
2540  },
2541  pagination: {
2542    el: ".swiper-pagination",
2543    clickable: true,
2544  },
2545  breakpoints: {
2546    // when window width is >= 480px
2547    575: {
2548      slidesPerView: 2,
2549    },
2550    767: {
2551      slidesPerView: 2,
2552    },
2553    // when window width is >= 640px
2554    991: {
2555      slidesPerView: 3,
2556    },
2557    // when window width is >= 640px
2558    1399: {
2559      slidesPerView: 4,
2560    }
2561  },
2562});
2563
2564// Initialize homepage slider when DOM is ready
2565var home_slideshow; // Define globally so it's accessible to click handlers
2566
2567document.addEventListener('DOMContentLoaded', function() {
2568  // Check if slider has videos
2569  var sliderElement = document.querySelector('.hero2');
2570  var hasVideo = sliderElement && sliderElement.getAttribute('data-has-video') === 'true';
2571
2572  // Configure autoplay based on video presence
2573  var autoplayConfig = hasVideo ? false : {
2574    delay: 5000,
2575    disableOnInteraction: false
2576  };
2577
2578  home_slideshow = new Swiper('.hero2', {
2579  // Optional parameters
2580  slidesPerView: 1,
2581  loop: true,
2582  spaceBetween: 0,
2583  effect: 'fade',
2584  autoplay: autoplayConfig,
2585  // Navigation arrows
2586  navigation: {
2587    nextEl: '.swiper-button-next.hero-next',
2588    prevEl: '.swiper-button-prev.hero-prev',
2589  },
2590  // Pagination
2591  pagination: {
2592    el: '.navigation',
2593    type: 'custom',
2594    renderCustom: function (swiper, current, total) {
2595      var $nav_data = [];
2596
2597      // slide data
2598      $.each(swiper.slides, function (index) {
2599        var $cat = $(this).find('.category');
2600        var $title = $(this).find('.title');
2601
2602        $nav_data[index + 1] = {
2603          category_html: $cat.length ? $cat.text() : '',
2604          title_html: $title.length ? $title.get(0).outerHTML : '',
2605        };
2606      });
2607      var elem = $nav_data.splice(1, 1)[0];
2608      $nav_data.splice(5, 0, elem)
2609      // navigation html
2610      var elements_html = '';
2611      for (let i = 1; i <= total; i++) {
2612        var $item_class = 'nav-item custom-nav-item';
2613
2614        if (current == i) {
2615          $item_class += ' active';
2616        }
2617
2618        elements_html +=
2619          '<div class="' + $item_class + '" data-slide-index="' + i + '">' +
2620          '<span class="category">' + $nav_data[i].category_html + '</span>' +
2621          $nav_data[i].title_html +
2622          '</div>';
2623      }
2624
2625      return elements_html;
2626    },
2627  },
2628
2629});
2630
2631  $(document.body).on('click', '.navigation .custom-nav-item', function (e) {
2632    e.preventDefault();
2633    var clicked = $(this);
2634    var target_slide = $(clicked).data('slide-index');
2635    if (!$(clicked).hasClass('active')) {
2636      home_slideshow.slideTo(target_slide);
2637    }
2638  });
2639});
2640
2641var mobileFilters = document.querySelector('.mobile-filters');
2642
2643if (mobileFilters) {
2644  mobileFilters.addEventListener('click', function (e) {
2645    e.preventDefault();
2646    var filterContent = document.querySelector('.filters-mobile-content');
2647    if (filterContent) {
2648      if (filterContent.classList.contains('open')) {
2649        filterContent.classList.remove('open');
2650      } else {
2651        filterContent.classList.add('open');
2652      }
2653    }
2654  })
2655}
2656
2657var der_categories = document.querySelectorAll('input[name="derivatives_category"]');
2658
2659der_categories.forEach(input => {
2660  if (input.checked) {
2661    var classname = input.getAttribute('id')
2662    var showTable = document.querySelectorAll('.' + classname);
2663    showTable.forEach(elem => {
2664      if (elem.classList.contains('d-none')) {
2665        elem.classList.remove('d-none')
2666      }
2667    })
2668  }
2669  input.addEventListener('change', function (e) {
2670    der_categories.forEach(input => {
2671      var classname = input.getAttribute('id')
2672      var showTable = document.querySelectorAll('.' + classname);
2673      showTable.forEach(elem => {
2674        if (!elem.classList.contains('d-none')) {
2675          elem.classList.add('d-none')
2676        }
2677      })
2678    })
2679    if (input.checked) {
2680      var classname = input.getAttribute('id')
2681      var showTable = document.querySelectorAll('.' + classname);
2682      showTable.forEach(elem => {
2683        if (elem.classList.contains('d-none')) {
2684          elem.classList.remove('d-none')
2685        }
2686      })
2687    }
2688  })
2689})
2690
2691var mtf_options = document.querySelectorAll('input[name="mtf_options"]');
2692
2693mtf_options.forEach(option => {
2694  option.addEventListener('change', function (e) {
2695    const urlParams = new URLSearchParams();
2696    urlParams.set('mtfType', this.value);
2697    window.location.search = urlParams;
2698  })
2699})
2700
2701var mtfSelect = document.querySelector('#mtfSelect')
2702
2703if (mtfSelect) {
2704  mtfSelect.addEventListener('change', function (e) {
2705    var type = this.getAttribute('data-type')
2706    const urlParams = new URLSearchParams(window.location.search);
2707    var val = '';
2708    if (this.value != 'all') {
2709      val = this.value
2710    }
2711    if (type == 'companies') {
2712      urlParams.set('company', val);
2713    } else if (type == 'categories') {
2714      urlParams.set('category', val);
2715    }
2716    window.location.search = urlParams;
2717  })
2718}
2719
2720
2721var dropdownStockCharts = document.getElementById('dropdownStockCharts')
2722var dropdownTopBar = document.querySelector('.dropdown-top-bar')
2723var scrollTicker = document.querySelector('.scrollTicker')
2724var topNav = document.getElementById('menu-top-menu')
2725if (dropdownStockCharts) {
2726  dropdownStockCharts.addEventListener('click', function (e) {
2727    if (dropdownStockCharts.classList.contains('expanded')) {
2728      dropdownStockCharts.classList.remove('expanded')
2729      if (dropdownTopBar) {
2730        dropdownTopBar.classList.add('collapsed')
2731      }
2732      if (topNav) {
2733        topNav.classList.add('d-none')
2734        if (scrollTicker) {
2735          scrollTicker.classList.remove("mobileTicker")
2736        }
2737      }
2738    } else {
2739      if (dropdownTopBar) {
2740        dropdownTopBar.classList.remove('collapsed')
2741      }
2742      if (topNav) {
2743        topNav.classList.remove('d-none')
2744        if (scrollTicker) {
2745          scrollTicker.classList.add("mobileTicker")
2746        }
2747        dropdownStockCharts.classList.add('expanded')
2748      }
2749    }
2750  })
2751}
2752
2753var photos_swiper = new Swiper('.photos-swiper', {
2754  slidesPerView: 1,
2755  autoplay: {
2756    delay: 3500,
2757  },
2758  pagination: {
2759    el: '#photos-pagination',
2760    type: 'bullets',
2761    clickable: true,
2762  },
2763  navigation: {
2764    nextEl: '#photos-next',
2765    prevEl: '#photos-prev',
2766  },
2767});
2768
2769var posts = new Swiper('.post-swiper2', {
2770  slidesPerView: 4,
2771  slidesPerGroup: 4,
2772  autoplay: {
2773    delay: 3500,
2774  },
2775  breakpoints: {
2776    320: {
2777      slidesPerView: 1,
2778      slidesPerGroup: 1,
2779      spaceBetween: 24
2780    },
2781    480: {
2782      slidesPerView: 2,
2783      slidesPerGroup: 2,
2784      spaceBetween: 24
2785    },
2786    992: {
2787      slidesPerView: 3,
2788      slidesPerGroup: 3,
2789      spaceBetween: 24
2790    },
2791    1200: {
2792      slidesPerView: 4,
2793      slidesPerGroup: 4,
2794      spaceBetween: 24
2795    }
2796  },
2797  pagination: {
2798    el: '#epiloges-pagination',
2799    type: 'bullets',
2800    clickable: true,
2801  },
2802});
2803
2804var jobs = new Swiper('.jobs', {
2805  //slideClass: 'slide',
2806  slidesPerView: 4,
2807  spaceBetween: 20,
2808  autoplay: {
2809    delay: 3500,
2810  },
2811  breakpoints: {
2812    // when window width is >= 320px
2813    320: {
2814      slidesPerView: 2,
2815    },
2816    // when window width is >= 480px
2817    768: {
2818      slidesPerView: 4,
2819    },
2820    1024: {
2821      slidesPerView: 6,
2822    },
2823    // when window width is >= 640px
2824    1200: {
2825      slidesPerView: 8,
2826    }
2827  },
2828  pagination: {
2829    el: '#jobs-pagination',
2830    type: 'bullets',
2831    clickable: true,
2832  },
2833});
2834
2835var categories = new Swiper('.categoriesSwiper', {
2836  //slideClass: 'slide',
2837  slidesPerView: 4,
2838  spaceBetween: 20,
2839  breakpoints: {
2840    // when window width is >= 320px
2841    320: {
2842      slidesPerView: 2,
2843    },
2844    // when window width is >= 480px
2845    768: {
2846      slidesPerView: 4,
2847    },
2848    1024: {
2849      slidesPerView: 6,
2850    },
2851    // when window width is >= 640px
2852    1200: {
2853      slidesPerView: 8,
2854    }
2855  },
2856  pagination: {
2857    el: '#categories-pagination',
2858    type: 'bullets',
2859    clickable: true,
2860  },
2861});
2862
2863var postStream = new Swiper('.postStream', {
2864  //slideClass: 'slide',
2865  slidesPerView: 4,
2866  spaceBetween: 24,
2867  breakpoints: {
2868    // when window width is >= 320px
2869    320: {
2870      slidesPerView: 1,
2871      spaceBetween: 15,
2872    },
2873    // when window width is >= 480px
2874    768: {
2875      slidesPerView: 2,
2876      spaceBetween: 20,
2877    },
2878    1024: {
2879      slidesPerView: 3,
2880      spaceBetween: 24,
2881    },
2882    // when window width is >= 640px
2883    1400: {
2884      slidesPerView: 4,
2885    }
2886  },
2887  navigation: {
2888    nextEl: '.swiper-button-next.post-stream',
2889    prevEl: '.swiper-button-prev.post-stream',
2890  },
2891
2892});
2893
2894addEventListener('load', (event) => {
2895
2896  function DailyPrice() {
2897
2898    var rangeBar = document.querySelector('.rangeBar')
2899    if (rangeBar) {
2900      var outer = rangeBar.querySelector('.outer')
2901      if (outer && rangeBar) {
2902        var width = outer.offsetWidth;
2903        var max = Number(rangeBar.getAttribute("data-hight"))
2904        var min = Number(rangeBar.getAttribute("data-low"))
2905        var price = Number(rangeBar.getAttribute("data-price"))
2906        var previousPrice = Number(rangeBar.getAttribute("data-previous"))
2907        var rangePointer = rangeBar.querySelector('.rangePointer');
2908        var inner = outer.querySelector('.inner');
2909
2910        var tmp = max - min;
2911        var lines
2912
2913        if (max) {
2914          if (tmp) {
2915            lines = width / tmp
2916          } else {
2917            lines = width / max
2918          }
2919        } else {
2920          lines = 0
2921        }
2922
2923        var rangePrice = width * (1 - (previousPrice / min))
2924        if (rangePrice < 0) {
2925          rangePrice = rangePrice * (-1)
2926        }
2927        var innerPrice = lines * (price - min)
2928
2929        if (rangePointer) {
2930          if (rangePrice > 372) {
2931            rangePrice = 372
2932          }
2933          rangePointer.style.paddingLeft = rangePrice + "%"
2934        }
2935        if (inner) {
2936          inner.style.width = innerPrice + "px"
2937        }
2938      }
2939    }
2940  }
2941
2942  function HistoryPrice() {
2943    var rangeBarHistory = document.querySelector('.rangeBarHistory')
2944
2945    if (rangeBarHistory) {
2946      var outerHistory = rangeBarHistory.querySelector('.outerHistory')
2947      if (outerHistory) {
2948        var widthHistory = outerHistory.offsetWidth;
2949        var maxHistory = Number(rangeBarHistory.getAttribute("data-hight"))
2950        var minHistory = Number(rangeBarHistory.getAttribute("data-low"))
2951        var priceHistory = Number(rangeBarHistory.getAttribute("data-price"))
2952        var previous = rangeBarHistory.getAttribute("data-previous")
2953        var tmp = maxHistory - minHistory;
2954        var lines
2955
2956        if (maxHistory) {
2957          if (tmp) {
2958            lines = widthHistory / tmp
2959          } else {
2960            lines = widthHistory / maxHistory
2961          }
2962        } else {
2963          lines = 0
2964        }
2965
2966        var rangePrice = widthHistory * (1 - ((priceHistory) / (minHistory)))
2967        if (rangePrice < 0) {
2968          rangePrice = rangePrice * (-1)
2969        }
2970        var innerPrice = lines * (priceHistory - minHistory)
2971
2972        var rangePointerHistory = rangeBarHistory.querySelector('.rangePointer');
2973        var innerHistoryHistory = outerHistory.querySelector('.innerHistory');
2974        if (rangePrice, rangePointerHistory) {
2975          if (rangePrice > maxHistory || rangePrice > 98) {
2976            rangePrice = 98
2977          }
2978
2979          rangePointerHistory.style.marginLeft = rangePrice + "%"
2980        }
2981        if (innerHistoryHistory) {
2982          innerHistoryHistory.style.width = innerPrice + "px"
2983        }
2984      }
2985    }
2986  }
2987
2988  var singleS = document.querySelector('.single-symbol')
2989  if (singleS) {
2990    HistoryPrice()
2991    DailyPrice()
2992  }
2993});
2994
2995var popularNews = document.querySelectorAll(".popular-posts [data-type]");
2996
2997popularNews.forEach(news => {
2998  news.addEventListener('click', function (e) {
2999    e.preventDefault();
3000    var elem = news.getAttribute('data-type')
3001    var tabs = document.querySelectorAll('.popular-posts .tab');
3002    news.classList.add('active')
3003    tabs.forEach(tab => {
3004      var id = tab.getAttribute('id');
3005      if (id == elem) {
3006        tab.classList.remove('d-none')
3007      } else {
3008        tab.classList.add('d-none')
3009        var type = document.querySelector(".popular-posts [data-type='" + id + "']");
3010        if (type) {
3011          type.classList.remove('active')
3012        }
3013      }
3014    })
3015  })
3016})
3017
3018var loginDropdowns = document.querySelectorAll('.loginDropdown');
3019
3020loginDropdowns.forEach(loginDropdown => {
3021  loginDropdown.addEventListener('click', function (e) {
3022    e.preventDefault();
3023    var logInBoxs = document.querySelectorAll('.logInBox');
3024    logInBoxs.forEach(logInBox => {
3025      if (logInBox.classList.contains('show')) {
3026        logInBox.classList.remove('show')
3027      } else {
3028        logInBox.classList.add('show')
3029      }
3030    })
3031  })
3032})
3033
3034var symbolType = document.querySelectorAll('[name="symbolType"]');
3035
3036symbolType.forEach(type => {
3037  type.addEventListener('change', function (e) {
3038    var types = document.querySelectorAll(".symbolinstrCode .fade")
3039    types.forEach(text => {
3040      if (text.getAttribute('data-type') == type.value) {
3041        text.classList.add('show')
3042      } else {
3043        text.classList.remove('show')
3044      }
3045    })
3046  })
3047})
3048
3049var popups = document.querySelectorAll('.popupRealTimeCard')
3050
3051popups.forEach(popup => {
3052  popup.addEventListener('click', function (e) {
3053    var id = this.querySelector('#myPopup')
3054    if (id) {
3055      if (id.classList.contains('show')) {
3056        id.classList.remove('show')
3057      } else {
3058        id.classList.add('show')
3059      }
3060    }
3061    popups.forEach(pop => {
3062      var ids = pop.querySelector('#myPopup');
3063      if (ids) {
3064        if (ids != id) {
3065          ids.classList.remove('show')
3066        }
3067      }
3068    })
3069  })
3070})
3071
3072var realTimeSectorsSelect = document.querySelector('.realTime #sectors');
3073var realTimeIndicesSelect = document.querySelector('.realTime #indices');
3074var realTimeDerivativesSelect = document.querySelector('.realTime #der');
3075
3076if (realTimeSectorsSelect) {
3077  realTimeSectorsSelect.addEventListener('change', function () {
3078    const urlParams = new URLSearchParams();
3079    urlParams.set('sector', this.value);
3080    window.location.search = urlParams;
3081  })
3082}
3083
3084if (realTimeIndicesSelect) {
3085  realTimeIndicesSelect.addEventListener('change', function () {
3086    const urlParams = new URLSearchParams();
3087    urlParams.set('indices', this.value);
3088    window.location.search = urlParams;
3089  })
3090}
3091
3092if (realTimeDerivativesSelect) {
3093  realTimeDerivativesSelect.addEventListener('change', function () {
3094    const urlParams = new URLSearchParams(window.location.search);
3095    urlParams.set('der', this.value);
3096    window.location.search = urlParams;
3097  })
3098}
3099
3100var sectorsSelect = document.querySelector('#sectorsSelect');
3101
3102if (sectorsSelect) {
3103  sectorsSelect.addEventListener('change', function () {
3104    const urlParams = new URLSearchParams();
3105    urlParams.set('sector', this.value);
3106    window.location.search = urlParams;
3107  })
3108}
3109
3110var indicesSelect = document.querySelector('#indicesSelect');
3111
3112if (indicesSelect) {
3113  indicesSelect.addEventListener('change', function () {
3114    const urlParams = new URLSearchParams();
3115    urlParams.set('indices', this.value);
3116    window.location.search = urlParams;
3117  })
3118}
3119
3120const searchBar = document.querySelector('#realtimesearch');
3121if (searchBar) {
3122  searchBar.addEventListener('keyup', function (e) {
3123    const term = e.target.value.toLocaleLowerCase();
3124    const symbols = document.querySelectorAll('.popupRealTimeCard .tableText.show');
3125    Array.from(symbols).forEach(function (text) {
3126      const title = text.textContent;
3127      if (title.toLowerCase().indexOf(term) != -1) {
3128        text.parentElement.parentElement.style.display = 'block';
3129      } else {
3130        text.parentElement.parentElement.style.display = 'none';
3131      }
3132    })
3133  })
3134}
3135
3136var symbol_category = document.querySelectorAll("[name='symbol_category']")
3137
3138symbol_category.forEach(cat => {
3139  cat.addEventListener('change', function (e) {
3140    var category = this.value
3141    var sections = document.querySelectorAll("[data-cat]");
3142    sections.forEach(section => {
3143      if (section.getAttribute("data-cat") == category) {
3144        section.classList.remove('d-none')
3145      } else {
3146        section.classList.add('d-none')
3147      }
3148    })
3149
3150  })
3151})
3152
3153var symbol_category_stats = document.querySelectorAll("[name='symbol_category_stats']")
3154
3155symbol_category_stats.forEach(cat => {
3156  cat.addEventListener('change', function (e) {
3157    const urlParams = new URLSearchParams();
3158    urlParams.set('stats', this.value);
3159    window.location.search = urlParams;
3160  })
3161})
3162
3163var indicesComposition = document.getElementById('indicesComposition');
3164
3165if (indicesComposition) {
3166  indicesComposition.addEventListener('change', function (e) {
3167    const urlParams = new URLSearchParams();
3168    urlParams.set('idx', this.value);
3169    window.location.search = urlParams;
3170  })
3171}
3172
3173var sectorSelect = document.getElementById('sectorSelect')
3174
3175if (sectorSelect) {
3176  sectorSelect.addEventListener('change', function (e) {
3177    const urlParams = new URLSearchParams();
3178    urlParams.set('sector', this.value);
3179    window.location.search = urlParams;
3180  })
3181}
3182
3183var locationCategory = document.querySelector('#locationCategory');
3184if (locationCategory) {
3185  locationCategory.addEventListener('change', function (e) {
3186    const urlParams = new URLSearchParams();
3187    urlParams.set('location', this.value);
3188    window.location.search = urlParams;
3189  })
3190}
3191
3192var symbol_type = document.querySelectorAll("[name='symbol_type']");
3193
3194symbol_type.forEach(type => {
3195  type.addEventListener('change', function (e) {
3196
3197    var category = this.value
3198    var sections = document.querySelectorAll("[data-rateType]");
3199    sections.forEach(section => {
3200      if (section.getAttribute("data-rateType") == category) {
3201        section.classList.remove('d-none')
3202      } else {
3203        section.classList.add('d-none')
3204      }
3205    })
3206  })
3207})
3208
3209const searchBarRates = document.querySelector('#symbolSearchTable');
3210if (searchBarRates) {
3211  searchBarRates.addEventListener('keyup', function (e) {
3212    const term = e.target.value.toLocaleLowerCase();
3213    const symbols = document.querySelectorAll('.ratesSearchSymbol .name');
3214    Array.from(symbols).forEach(function (text) {
3215      const title = text.textContent;
3216      if (title.toLowerCase().indexOf(term) != -1) {
3217        if (text.parentElement.parentElement.parentElement.previousElementSibling) {
3218          text.parentElement.parentElement.parentElement.style.display = 'flex';
3219        } else {
3220          text.parentElement.parentElement.parentElement.parentElement.style.display = 'block';
3221        }
3222      } else {
3223        if (text.parentElement.parentElement.parentElement.previousElementSibling) {
3224          text.parentElement.parentElement.parentElement.style.display = 'none';
3225        } else {
3226          text.parentElement.parentElement.parentElement.parentElement.style.display = 'none';
3227        }
3228      }
3229    })
3230  })
3231}
3232
3233var bannersBorders = document.querySelectorAll('.banners-border')
3234
3235if (bannersBorders.length) {
3236  bannersBorders[0].classList.remove('banners-border')
3237}
3238
3239var openSearchs = document.querySelectorAll('.open-search');
3240var closeSearchs = document.querySelectorAll('.search-container .close-icon');
3241var searchWrap = document.querySelectorAll('.search-wrap');
3242var searchContainer = document.querySelectorAll('.search-container')
3243openSearchs.forEach(openSearch => {
3244  openSearch.addEventListener('click', function (e) {
3245    e.preventDefault();
3246    searchContainer.forEach(cont => {
3247      cont.classList.add('open-form')
3248    })
3249    searchWrap.forEach(cont => {
3250      cont.classList.add('is-active')
3251    })
3252    this.classList.add('open');
3253  })
3254})
3255
3256closeSearchs.forEach(closeSearch => {
3257
3258  closeSearch.addEventListener('click', function (e) {
3259    searchWrap.forEach(cont => {
3260      cont.classList.remove('is-active')
3261    })
3262    openSearchs.forEach(openSearch => {
3263      openSearch.classList.remove('open');
3264    })
3265    searchContainer.forEach(cont => {
3266      cont.classList.remove('open-form')
3267    })
3268  })
3269})
3270
3271var mtfSearch = document.querySelector('#mtfSearch')
3272if (mtfSearch) {
3273  mtfSearch.addEventListener('keyup', function (e) {
3274    const term = e.target.value.toLocaleLowerCase();
3275    const symbols = document.querySelectorAll('.mtfList .name');
3276    Array.from(symbols).forEach(function (text) {
3277      const title = text.textContent;
3278      if (title.toLowerCase().indexOf(term) != -1) {
3279        text.parentElement.parentElement.style.display = 'flex';
3280      } else {
3281        text.parentElement.parentElement.style.display = 'none';
3282      }
3283    })
3284  })
3285}
3286
3287var hasChildren = document.getElementById('has-children')
3288
3289if (hasChildren) {
3290  hasChildren.addEventListener('click', function (e) {
3291    var bounds = this.getBoundingClientRect();
3292    var subMenu = hasChildren.querySelector('.sub-menu');
3293    if (subMenu) {
3294      subMenu.style.top = (bounds.top + 40) + 'px';
3295      subMenu.style.left = (bounds.left - subMenu.offsetWidth + 68) + 'px';
3296      subMenu.classList.add('open')
3297    }
3298  })
3299}
3300
3301document.body.addEventListener('click', function (e) {
3302  if (hasChildren) {
3303    if (!e.target.getAttribute('id') || e.target.getAttribute('id') != 'menu-link') {
3304      var subMenu = hasChildren.querySelector('.sub-menu');
3305      if (subMenu && subMenu.classList.contains('open')) {
3306        subMenu.classList.remove('open')
3307      }
3308    }
3309  }
3310});
3311
3312document.addEventListener("scroll", (event) => {
3313  if (hasChildren) {
3314    var subMenu = hasChildren.querySelector('.sub-menu');
3315    if (subMenu && subMenu.classList.contains('open')) {
3316      subMenu.classList.remove('open')
3317    }
3318  }
3319});

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.