PageSourceSearch

https://www.bplus.co.th/assets/js/custom.js?v=24/9/2569%2021:27:51

js bplus.co.th collected 2026-09-24 14:28:00 UTC 12,238 bytes, 369 lines download raw bytes

1document.addEventListener('DOMContentLoaded', function () {
2    const linkCall = document.querySelector('.fm-call');
3
4    // ตรวจสอบว่าเป็นอุปกรณ์มือถือหรือไม่
5    const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
6
7    if (!isMobile) {
8        // หากเป็น PC ให้เปลี่ยน tooltip เป็นข้อความเบอร์โทร
9        // owner 2026-09-25: keep the tel: link on PC too - a click dials through the computer's phone app
10        linkCall.setAttribute('title', '092-345-3681');
11        const tooltipTrigger = new bootstrap.Tooltip(linkCall);
12    }
13
14    //if (getCookie('PolicyAccept') == '1') {
15    //    $('#modal-policy-accept').modal('show');
16    //}
17});
18
19function Set_Toast(param, type) {
20
21    if (param.action == 'modal') {
22        var modalToast = new bootstrap.Modal(document.getElementById('modalToast'), {
23        });
24
25        document.querySelector('#lblModalToast').innerText = GetCookieUtf8(param.body);
26
27        document.querySelector('#lblModalToast').className = '';
28        document.querySelector('#btnCloasToast').className = 'btn rounded-pill btn-login mb-2'; 
29
30        if (param.type === 'danger') {
31            document.querySelector('#lblModalToast').classList.add('text-red');
32            document.querySelector('#btnCloasToast').classList.add('btn-red');
33        }
34        else if (param.type === 'warning') {
35            document.querySelector('#lblModalToast').classList.add('text-yellow');
36            document.querySelector('#btnCloasToast').classList.add('btn-yellow');
37        }
38        else {
39            document.querySelector('#lblModalToast').classList.add('text-green');
40            document.querySelector('#btnCloasToast').classList.add('btn-green');
41        }
42        
43        modalToast.show();
44        
45    }
46    else {
47        // ID
48        const toastLive = document.querySelector('#liveToast');
49
50        toastLive.classList = 'toast';
51
52        // Auto Hide
53        const toast = new bootstrap.Toast(toastLive, {
54            autohide: param.autohide
55        });
56
57        /*    let iconToast = '';*/
58
59        // Position
60        switch (param.position) {
61            case 'TopLeft': document.querySelector('#divPosition').classList.add('top-0', 'start-0'); break;
62            case 'TopCenter': document.querySelector('#divPosition').classList.add('top-0', 'start-50', 'translate-middle-x'); break;
63            case 'TopRight': document.querySelector('#divPosition').classList.add('top-0', 'end-0'); break;
64            case 'MiddleLeft': document.querySelector('#divPosition').classList.add('top-50', 'start-0', 'translate-middle-y'); break;
65            case 'MiddleCenter': document.querySelector('#divPosition').classList.add('top-50', 'start-50', 'translate-middle'); break;
66            case 'MiddleRight': document.querySelector('#divPosition').classList.add('top-50', 'end-0', 'translate-middle-y'); break;
67            case 'BottomLeft': document.querySelector('#divPosition').classList.add('bottom-0', 'start-0'); break;
68            case 'BottomCenter': document.querySelector('#divPosition').classList.add('bottom-0', 'start-50', 'translate-middle-x'); break;
69            case 'BottomRight': document.querySelector('#divPosition').classList.add('bottom-0', 'end-0'); break;
70        }
71
72        if (type == 'alert') {
73            if (param.type === 'danger') {
74                document.querySelector('#liveToast').classList.add('liv-toast-alert-danger');
75            }
76        }
77        else {
78            if (param.type === 'danger') {
79                document.querySelector('#liveToast').classList.add('bg-toast-danger');
80                document.querySelector('#btn-toast-close').classList.add('text-toast-danger');
81                //iconToast = '<i class="icon-toast uil uil-times-circle"></i>'; 
82            }
83            else if (param.type === 'warning') {
84                document.querySelector('#liveToast').classList.add('bg-toast-warning');
85                document.querySelector('#btn-toast-close').classList.add('text-toast-warning');
86                //iconToast = '<i class="icon-toast uil uil-exclamation-triangle"></i>';
87            }
88            else {
89                document.querySelector('#liveToast').classList.add('bg-toast-success');
90                document.querySelector('#btn-toast-close').classList.add('text-toast-success');
91                /*            iconToast = '<i class="icon-toast uil uil-check-circle"></i>'; */
92            }
93        }
94
95        let dataBody = GetCookieUtf8(param.body);
96
97        //// Icon
98        //document.querySelector('#divToastIcon').innerHTML = iconToast;
99
100        // Body
101        document.querySelector('#divToastBody').innerHTML = dataBody;
102
103        toast.show();
104    }
105}
106
107function GetCookieUtf8(paramData) {
108    let dataBody = paramData;
109    try {
110
111        dataBody = decodeBase64ToUTF8(dataBody);
112    } catch (e) {
113
114        dataBody = encodeUTF8ToBase64(dataBody);
115        dataBody = decodeBase64ToUTF8(dataBody);
116    }
117
118    return dataBody;
119}
120
121function encodeUTF8ToBase64(utf8String) {
122    // Convert UTF-8 string to URI component
123    var uriComponent = unescape(encodeURIComponent(utf8String));
124
125    // Encode URI component to base64
126    var base64String = btoa(uriComponent);
127
128    return base64String;
129}
130
131function decodeBase64ToUTF8(base64String) {
132    // Decode base64 string
133    var decodedString = atob(base64String);
134
135    // Convert decoded string to UTF-8
136    var utf8String = decodeURIComponent(escape(decodedString));
137
138    return utf8String;
139}
140
141function OverlayShow(paramId, paramText) {
142
143    if (document.querySelectorAll('#' + paramId + '-panel-overlay').length === 0) {
144
145        var newNode = document.createElement('div');
146
147        newNode.classList.add('panel-overlay');
148        newNode.setAttribute('id', paramId + '-panel-overlay');
149        newNode.innerHTML = '<div class="panel-overlay-content">\
150                                        <div class="spinner-loader">\
151                                            <div class="dot1"></div>\
152                                            <div class="dot2"></div>\
153                                        </div>\
154                                        <h4 class="spinner-loader-text">' + paramText + '</h4>\
155                                    </div>';
156
157        document.querySelector('#' + paramId).after(newNode);
158    }
159}
160
161function ShowLoader(paramId, paramType) {
162
163    if (document.querySelectorAll('#' + paramId + '-panel-overlay').length === 0) {
164
165        var newNode = document.createElement('div');
166
167        if (paramType == 'modal') {
168            newNode.classList.add('page-loader-custom-modal');
169        }
170        else {
171            newNode.classList.add('page-loader-custom');
172        }
173        newNode.setAttribute('id', paramId + '-page-loader');
174        document.querySelector('#' + paramId).after(newNode);
175    }
176}
177
178function OverlayHide(paramId) {
179        if (document.querySelectorAll('#' + paramId + '-panel-overlay').length > 0) {
180
181            document.querySelectorAll('#' + paramId + '-panel-overlay').forEach(
182                event => {
183                    event.remove();
184                }
185            );
186        }
187}
188
189function HideLoader(paramId) {
190
191    if (document.querySelectorAll('#' + paramId + '-page-loader').length > 0) {
192
193        document.querySelectorAll('#' + paramId + '-page-loader').forEach(
194            event => {
195                event.remove();
196            }
197        );
198    }
199}
200
201function SetformatNumber(input) {
202
203    var paramType = input.getAttribute('data-type');
204
205    var input_val = input.value;
206
207    if (input_val === "") { return; }
208
209    var original_len = input_val.length;
210
211    var caret_pos = input.selectionStart;
212
213    if (paramType == 'currency') {
214
215        if (input_val.indexOf(".") >= 0) {
216            var decimal_pos = input_val.indexOf(".");
217
218            var left_side = input_val.substring(0, decimal_pos);
219            var right_side = input_val.substring(decimal_pos);
220
221            left_side = formatNumber(left_side);
222
223            right_side = formatNumber(right_side);
224
225            right_side = right_side.substring(0, 2);
226
227            input_val = left_side + "." + right_side;
228        }
229        else {
230            input_val = formatNumber(input_val);
231            input_val = input_val;
232        }
233    }
234    else if (paramType == 'floatNumOnly') {
235
236        if (input_val.indexOf(".") >= 0) {
237
238            var decimal_pos = input_val.indexOf(".");
239
240            var left_side = input_val.substring(0, decimal_pos);
241            var right_side = input_val.substring(decimal_pos);
242
243            left_side = formatNumberOnly(left_side);
244
245            right_side = formatNumberOnly(right_side);
246
247            input_val = left_side + "." + right_side;
248        }
249        else {
250            input_val = formatNumberOnly(input_val);
251            input_val = input_val;
252        }
253    }
254    else if (paramType == 'numberOnly') {
255        input_val = formatNumberOnly(input_val);
256        input_val = input_val;
257    }
258    else {
259        input_val = formatNumber(input_val);
260        input_val = input_val;
261    }
262
263    input.value = input_val;
264
265    var updated_len = input_val.length;
266
267    caret_pos = updated_len - original_len + caret_pos;
268
269    input.setSelectionRange(caret_pos, caret_pos);
270}
271
272function formatNumber(n) {
273    return n.replace(/\D/g, "").replace(/\B(?=(\d{3})+(?!\d))/g, ",")
274}
275
276function formatNumberOnly(n) {
277    return n.replace(/\D/g, "")
278}
279
280function Validate_Focus() {
281    var idFocus = '';
282    try {
283        document.querySelectorAll('.invalid-feedback').forEach(
284            event => {
285
286                if (window.getComputedStyle(event).display === 'block') {
287                    idFocus = '#' + event.getAttribute('data-for');
288                    throw BreakError;
289                }
290            }
291        );
292    } catch (e) {
293
294    }
295
296    if (idFocus != '' && document.querySelector(idFocus) !== null) {
297        document.querySelector(idFocus).focus();
298    }
299}
300
301function Get_Toast() {
302    if (getCookie("ToastData") != null && getCookie("ToastData") != '') {
303        var ToastData = JSON.parse(getCookie("ToastData"));
304
305        Set_Toast(ToastData);
306        deleteCookie("ToastData");
307    }
308}
309
310function setCookie(cname, cvalue, exdays) {
311    if (cname == 'ToastData' && cvalue != '') {
312
313        let dataObj = JSON.parse(cvalue);
314
315        // Encode UTF-8 string to Latin-1
316        var latin1String = unescape(encodeURIComponent(dataObj.body));
317
318        // Encode Latin-1 string to base64
319        dataObj.body = btoa(latin1String);
320
321        cvalue = JSON.stringify(dataObj);
322    }
323
324    var d = new Date();
325    d.setTime(d.getTime() + ((exdays) * 24 * 60 * 60 * 1000));
326    var expires = "expires=" + d.toUTCString();
327    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
328}
329
330function getCookie(cname) {
331    var name = cname + "=";
332    var decodedCookie = decodeURIComponent(document.cookie);
333    var ca = decodedCookie.split(';');
334    for (var i = 0; i < ca.length; i++) {
335        var c = ca[i];
336        while (c.charAt(0) == ' ') {
337            c = c.substring(1);
338        }
339        if (c.indexOf(name) == 0) {
340            return c.substring(name.length, c.length);
341        }
342    }
343    return "";
344}
345
346function deleteCookie(name) {
347    setCookie(name, "", -1);
348}
349
350function numberWithCommas(number) {
351    var parts = number.toString().split(".");
352    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
353    return parts.join(".");
354}
355
356function dateFormat(value, row, index) {
357    if (moment(value).isValid()) {
358
359        dataDay = moment(value).format('DD');
360        dataMonth = moment(value).format('MM');
361        dataYear = parseInt(moment(value).format('YYYY')) + 543;
362
363        return dataDay + '/' + dataMonth + '/' + dataYear;
364    }
365    else {
366
367        return '';
368    }
369}

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.