PageSourceSearch

https://swvasun.com/lib/bl2.js

js swvasun.com collected 2026-09-29 05:14:51 UTC 97,007 bytes, 2,317 lines download raw bytes

1/* convert <url>example.com</url> to clickable link */
2document.addEventListener('readystatechange', event => {
3    if (event.target.readyState === "complete") {
4        const regex = /(http|https):\/\//;
5        document.querySelectorAll("url").forEach(u => {
6            const linkText = u.innerText.trim();
7            let link = u.innerText.trim();
8            if (!regex.test(link)) {
9                link = "//" + link
10            }
11            u.outerHTML = `<a href="${link}" target="_blank">${linkText}</a>`;
12        });
13    }
14});
15
16
17
18
19// Function to load the PDF.js library dynamically
20function loadPdfJs(callback) {
21    if (!window.pdfjsLib) {
22        var script = document.createElement('script');
23        script.src = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.7.570/pdf.min.js';
24        script.onload = callback;
25        document.head.appendChild(script);
26    } else {
27        callback();
28    }
29}
30
31// Function to render the PDF in a specific container
32function renderPdf(url, container) {
33    loadPdfJs(function () {
34        var pdfjsLib = window['pdfjs-dist/build/pdf'];
35        pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.7.570/pdf.worker.min.js';
36
37        var loadingTask = pdfjsLib.getDocument(url);
38        loadingTask.promise.then(function (pdf) {
39            //console.log('PDF loaded');
40
41            container.innerHTML = ''; // Clear any previous content
42
43            // Default parent width
44            var parent_width = "300px";
45
46            // Check for the .hpe-article-detail element and set its width
47            var articleDetailElement = document.querySelector(".hpe-article-detail");
48            if (articleDetailElement) {
49                parent_width = articleDetailElement.offsetWidth + "px";
50            }
51
52            // Check for the container and its data-width attribute
53            var pdf_width = parent_width;
54            var dataWidth = container.getAttribute('size')?.trim();
55            if (dataWidth && dataWidth !== 'full') {
56                pdf_width = dataWidth + 'px';
57            }
58
59            // Add styles dynamically
60            var style = document.createElement('style');
61            style.textContent = `
62                        div[pdf] {
63                            width: ${pdf_width};
64                            border: 1px solid #ccc;
65                            margin-bottom: 10px;
66                        }
67                        .page {
68                            display: block;
69                            margin: 0 auto 20px auto;
70                        }
71                        @media (max-width:992px) {
72                            div[pdf] {
73                                width: ${parent_width};
74                            }
75                        }
76                    `;
77            container.appendChild(style);
78
79            for (var pageNum = 1; pageNum <= pdf.numPages; pageNum++) {
80                (function (pageNum) {
81                    pdf.getPage(pageNum).then(function (page) {
82                        var viewport = page.getViewport({ scale: 1 });
83                        var scale = container.clientWidth / viewport.width;
84                        viewport = page.getViewport({ scale: scale });
85
86                        var canvas = document.createElement('canvas');
87                        canvas.className = 'page';
88                        var context = canvas.getContext('2d');
89                        canvas.height = viewport.height;
90                        canvas.width = viewport.width;
91
92                        container.appendChild(canvas);
93
94                        var renderContext = {
95                            canvasContext: context,
96                            viewport: viewport
97                        };
98                        page.render(renderContext).promise.then(function () {
99                            //console.log('Page rendered');
100                        });
101                    });
102                })(pageNum); // Immediately-invoked function expression (IIFE) to capture pageNum
103            }
104        }, function (reason) {
105            console.error(reason);
106        });
107    });
108}
109
110// Manually trigger the onload event for the pdf-viewer divs
111document.addEventListener('readystatechange', event => {
112    if (event.target.readyState === "interactive") {
113        var pdfContainers = document.querySelectorAll("div[pdf]");
114        pdfContainers.forEach(function (container) {
115            var url = container.getAttribute('pdf');
116            if (url) {
117                renderPdf(url, container);
118            }
119        });
120    }
121});
122
123
124
125/* peeler ad */
126function writeObjects(small_path, big_path, small_width, small_height, big_width, big_height, link, direction, new_window) {
127
128    /* add peeler ad element */
129    document.body.insertAdjacentHTML(`beforeend`, `<!-- Peeler Ad Start --><peeler></peeler><!-- Peeler Ad End -->`);
130  
131    /* hide peeler ad after specific height */
132    const scroll_hide = 'Yes';
133    const scroll_position = 200;
134  
135    /* get site url */
136    let site = location.href.match(/:\/\/(.[^/]+)/)[1];
137    let folder = "";
138    const url = window.location.href;
139    if (url.split("/").length == 5) { // Folder Sites
140      folder = "/" + url.split("/")[3];
141    }
142    site = `https://${site}${folder}/`;
143  
144    /* get small image */
145    let small = small_path;
146    let small_parts = small.split('/');
147    small = small_parts[small_parts.length - 1];
148    const small_image = site + small;
149  
150    /* get big image */
151    let big = big_path;
152    let big_parts = big.split('/');
153    big = big_parts[big_parts.length - 1];
154    const big_image = site + big;
155  
156    /* link */
157    let link_code = '';
158    if (link.trim() != '') {
159      if (!link.startsWith('http://') && !link.startsWith('https://')) {
160        link = '//' + link;
161      }
162      if (new_window == 'new') {
163        link_code = `onclick="window.open('${link}');"`;
164      } else {
165        link_code = `onclick="window.open('${link}', '_self');"`;
166      }
167      document.querySelector('peeler').insertAdjacentHTML(`beforeend`, `<style>.peeler_position {cursor:pointer;}</style>`);
168    }
169  
170    /* add common css */
171    document.querySelector('peeler').insertAdjacentHTML(`beforeend`, `<style>#peeler-top-left,#peeler-top-right{position:fixed;top:0;z-index:999999}#peeler-top-left .back-img,#peeler-top-left img,#peeler-top-right .back-img,#peeler-top-right img{width:100px;height:100px;position:absolute;top:0}#peeler-top-left .peel-ad-small,#peeler-top-right .peel-ad-small{z-index:99;transition-delay:0.2s!important}#peeler-top-left .back-img,#peeler-top-right .back-img{overflow:hidden;z-index:101;box-shadow:0 0 10px rgba(0,0,0,.5)}#peeler-top-left .back-img,#peeler-top-left .peel-ad-big,#peeler-top-left .peel-ad-small,#peeler-top-right .back-img,#peeler-top-right .peel-ad-big,#peeler-top-right .peel-ad-small{transition:.2s ease-in-out}#peeler-top-left:hover .back-img,#peeler-top-left:hover .peel-ad-big,#peeler-top-right:hover .back-img,#peeler-top-right:hover .peel-ad-big{width:600px;height:600px;transition:.3s ease-in-out}#peeler-top-left:hover .peel-ad-small,#peeler-top-right:hover .peel-ad-small{opacity:0}#peeler-top-left:hover .peel-ad-big,#peeler-top-right:hover .peel-ad-big{z-index:100}#peeler-top-left:hover .back-img,#peeler-top-right:hover .back-img{top:-12px;width:600px;height:613px}</style>`);
172  
173    /* only for desktop */
174    if (window.screen.width > 992) {
175      /* if direction is Top-Right */
176      if (direction == 'rt') {
177        document.querySelector('peeler').insertAdjacentHTML(`beforeend`, `      
178        <div id="peeler-top-right" class="peeler_top_right peeler_position" ${link_code}>
179          <div class="back-img peeler_top_right"></div>
180          <img class="peel-ad-small peeler_top_right" src="${small_image}">
181          <img class="peel-ad-big peeler_top_right" src="${big_image}">
182        </div>
183        <style>#peeler-top-right { right: 0; float: right; & .back-img, & img { right: 0; } & .back-img { background: linear-gradient(-2.35998rad, transparent 45%, rgba(0, 0, 0, .2) 50%, #aaa 50%, #bbb 56%, #ccc 62%, #f3f3f3 80%, #fff 100%);}}</style>`);
184      } else {
185        document.querySelector('peeler').insertAdjacentHTML(`beforeend`, `
186        <div id="peeler-top-left" class="peeler_top_left" ${link_code}>
187          <div class="back-img peeler_top_left"></div>
188          <img class="peel-ad-small peeler_top_left" src="${small_image}">
189          <img class="peel-ad-big peeler_top_left" src="${big_image}">
190        </div>
191        <style>#peeler-top-left {left: 0;float:left; & .back-img, & img {left: 0;} & .back-img {background: linear-gradient(2.35998rad, transparent 45%, rgba(0, 0, 0, .2) 50%, #aaa 50%, #bbb 56%, #ccc 62%, #f3f3f3 80%, #fff 100%);}}</style>`);}
192  
193      /* hide peeler ad after provided height in 'scroll_position' */
194      document.addEventListener("DOMContentLoaded", function () {
195        if (direction != '') {
196          var script = document.createElement('script');
197          script.textContent = `
198          window.addEventListener("scroll", function(event) {
199              if (this.scrollY > ${scroll_position}) {
200                if(document.querySelector("#peeler-top-right")) {
201                  document.querySelector("#peeler-top-right").style.display = "none";
202                }
203                if(document.querySelector("#peeler-top-left")) {
204                  document.querySelector("#peeler-top-left").style.display = "none";
205                }                
206              } else {
207                if(document.querySelector("#peeler-top-right")) {
208                  document.querySelector("#peeler-top-right").style.display = "block";
209                }
210                if(document.querySelector("#peeler-top-left")) {
211                  document.querySelector("#peeler-top-left").style.display = "block";
212                }
213  
214              }
215          }, false);`;
216          if (scroll_hide == 'Yes') {
217            document.querySelector('peeler').appendChild(script);
218          }
219        }
220      });
221    }
222  }
223
224  
225
226  function Tooltip() {
227    var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
228    var tooltipList = tooltipTriggerList.map(function(tooltipTriggerEl) {
229        return new bootstrap.Tooltip(tooltipTriggerEl)
230    });
231}
232
233
234function ReadSubmenu() {
235    let qrStr = location.href;
236    if (qrStr.indexOf('&site') != -1) {
237        qrStr = qrStr.split('&site').shift();
238    }
239    if (qrStr.indexOf("/index.html") != -1) {
240        return SParameters();
241    }
242    const isFrontPage = qrStr.indexOf('.htm', 0);
243    if (isFrontPage == -1) {
244        return SParameters();
245    } else {
246        let sPos, ePos, smenu;
247        sPos = qrStr.indexOf('/index', 0);
248        if (qrStr.indexOf('?lb=') != -1) {
249            sPos = qrStr.indexOf('=index', 0);
250        }
251        if (sPos != -1) {
252            ePos = qrStr.lastIndexOf('.', qrStr.length);
253            smenu = qrStr.substring(sPos + 6, ePos);
254            if (smenu == SParameters()) {
255                return SParameters();
256            }
257            if (qrStr.indexOf('smenu') != -1) {
258                const url = new URL(qrStr);
259                const smenup = url.searchParams.get("smenu");
260                return smenup;
261            } else {
262                return smenu;
263            }
264        } else {
265            sPos = qrStr.lastIndexOf('-', qrStr.length);
266            if (sPos != -1) {
267                ePos = qrStr.lastIndexOf('.', qrStr.length);
268                smenu = qrStr.substring(sPos + 1, ePos);
269                if (smenu == SParameters()) {
270                    sPos = qrStr.lastIndexOf('-p', qrStr.length);
271                    if (sPos == -1) {
272                        return 'home';
273                    }
274                } else {
275                    return smenu;
276                }
277            }
278        }
279    }
280}
281
282
283
284
285function getVIP(myObj) {
286    document.write("<input type=\"hidden\" id=\"vip\" name=\"vip\" value=\"" + myObj.ip + "\">");
287}
288
289
290/* get AppServer */
291let sites = ["bulletlink.one", "bulletlink.net"];
292
293function shuffleArray(array) {
294  for (let i = array.length - 1; i > 0; i--) {
295    const j = Math.floor(Math.random() * (i + 1));
296    [array[i], array[j]] = [array[j], array[i]];
297  }
298  return array;
299}
300async function checkStatus(domain) {
301  try {
302    const response = await fetch(domain + 'app_server.php', {
303      method: 'HEAD',
304      headers: {
305        'Access-Control-Request-Headers': 'content-type', // Add any additional headers if needed
306      }
307    });
308    return response.ok;
309  } catch (error) {
310    return false;
311  }
312}
313async function findAvailableServer(sites) {
314  for (const site of sites) {
315    const url = 'https://' + site + '/';
316    const isAvailable = await checkStatus(url);
317    if (isAvailable) {
318      return url;
319    }
320  }
321  return '';
322}
323/* Check if the "AppServer" cookie exists */
324const cookies = document.cookie.split(';');
325let appServerCookie = null;
326for (const cookie of cookies) {
327  const [cookieName, cookieValue] = cookie.trim().split('=');
328  if (cookieName === 'AppServer') {
329    appServerCookie = cookieValue;
330    break;
331  }
332}
333if (appServerCookie == null) {
334  sites = shuffleArray(sites);
335  findAvailableServer(sites).then(appServer => document.cookie = "AppServer=" + appServer);
336}
337
338
339function ShowHTag(HTag) { document.getElementById(HTag).style.visibility = "visible"; }
340
341function HideHTag(HTag) { document.getElementById(HTag).style.visibility = "hidden"; }
342
343
344function setIframeHeight2(iframe) {
345    if (iframe) {
346        var iframeWin = iframe.contentWindow || iframe.contentDocument.parentWindow;
347        if (iframeWin.document.body) {
348            iframe.height = iframeWin.document.documentElement.scrollHeight || iframeWin.document.body.scrollHeight;
349        }
350    }
351};
352
353
354
355function GetTimeAgo(sDate, adjusttime, Article_Timestamp, format, TimezoneOffset) {
356
357    var startDate = new Date(sDate);
358    startDate = dateFormat(startDate, 'mm/dd/yyyy h:MM:ss TT');
359    startDate = new Date(startDate);
360
361    var endDate = new Date();
362    endDate = dateFormat(endDate, 'mm/dd/yyyy h:MM:ss TT');
363    endDate = new Date(endDate);
364
365    if (adjusttime > 0) adjusttime = -adjusttime;
366    else adjusttime = Math.abs(adjusttime);
367
368    diff = new Date();
369    diff.setTime(Math.abs((endDate.getTime() - ((TimezoneOffset + adjusttime - endDate.getTimezoneOffset()) * 60000)) - startDate.getTime()));
370    timediff = diff.getTime();
371
372    diff_pos_neg = new Date();
373    diff_pos_neg.setTime((endDate.getTime() - ((TimezoneOffset + adjusttime - endDate.getTimezoneOffset()) * 60000)) - startDate.getTime());
374    diff_check = diff_pos_neg.getTime();
375
376    var cnt = 0;
377    var str = '';
378
379    days = Math.floor(timediff / (1000 * 60 * 60 * 24));
380    timediff -= days * (1000 * 60 * 60 * 24);
381
382    hours = Math.floor(timediff / (1000 * 60 * 60));
383    timediff -= hours * (1000 * 60 * 60);
384
385    mins = Math.floor(timediff / (1000 * 60));
386    timediff -= mins * (1000 * 60);
387
388    secs = Math.floor(timediff / 1000);
389    timediff -= secs * 1000;
390
391    // Rounding
392    if (days > 0) cnt = cnt + 1;
393    if (hours > 0 && cnt < 2) {
394        cnt = cnt + 1;
395        if (cnt == 2 && hours >= 12) days = days + 1;
396        else if (cnt == 2 && hours < 12) hours = 0;
397    }
398    if (mins > 0 && cnt < 2) {
399        cnt = cnt + 1;
400        if (cnt == 2 && mins >= 30) hours = hours + 1;
401        else if (cnt == 2 && mins < 30) mins = 0;
402    }
403    if (secs > 0 && cnt < 2) {
404        cnt = cnt + 1;
405        if (cnt == 2 && secs >= 30) mins = mins + 1;
406        else if (cnt == 2 && secs < 30) secs = 0;
407    }
408
409    //------------------------------------
410
411    if (diff_check > -5000) {
412        if (days > 0 && days < 2) str = document.write(days + ' day ago');
413        else if (days > 1 && days <= Article_Timestamp) str = document.write(days + ' days ago');
414        else if (days > Article_Timestamp) return GetDate(sDate, format);
415        else if (hours > 0 && hours < 2) str = document.write(hours + ' hour ago');
416        else if (hours > 1) str = document.write(hours + ' hours ago');
417        else if (mins > 0 && mins < 2) str = document.write(mins + ' min ago');
418        else if (mins > 1) str = document.write(mins + ' mins ago');
419        else if (secs > 0 && secs < 2) str = document.write(secs + ' sec ago');
420        else if (secs > 1) str = document.write(secs + ' secs ago');
421        else return GetDate(sDate, format);
422
423    } else {
424        return GetDate(sDate, format);
425    }
426    return str;
427}
428
429
430
431function GetSandwichMenu() { Tipped.create('.smenu1', { ajax: true, closeButton: false, showOn: 'click', skin: 'yellow', fixed: true, target: 'mouse', maxWidth: $(window).width() - 30 }); }
432
433
434function LimitCharacters(txtMsg, indicator, indicator2, limitword) {
435    stringmemo = txtMsg.value;
436    stringmemo2 = stringmemo.replace(/\s\s+/g, ' '); // replace multiple whitespaces whit single space
437    chars = txtMsg.value.length;
438    word = stringmemo2.split(/\s/);
439    wordcount = word.length;
440    maxChar = txtMsg.maxLength;
441    limitword2 = limitword.replace("W", "");
442
443
444    if (limitword.toLowerCase().indexOf("w") >= 0) {
445        if (wordcount > limitword2) {
446
447            rgxwords = new RegExp('([^ ]*[ ]{0,1}){1,' + limitword2 + '}', 'g'); // regexp for specified number of spaces
448            stringmemo3 = stringmemo2.match(rgxwords)[0]; // get the substring with "limitword2" number of words
449
450            alert("Maximum word limit exceeded.!");
451            stringmemo3 = stringmemo3.replace(/\s?$/, '');
452            txtMsg.value = stringmemo3;
453            word = stringmemo3.split(/\s/);
454            wordcount = word.length;
455            chars = stringmemo3.value.length;
456        }
457
458        if (txtMsg.value.length < 1) {
459            document.getElementById(indicator).innerHTML = chars + " characters &nbsp; | &nbsp;";
460            document.getElementById(indicator2).innerHTML = chars + " words";
461        } else {
462            document.getElementById(indicator).innerHTML = chars + " characters &nbsp; | &nbsp;";
463            document.getElementById(indicator2).innerHTML = wordcount + " of " + limitword2 + " words";
464        }
465
466    } else {
467
468        if (txtMsg.value.length < 1) {
469            document.getElementById(indicator).innerHTML = chars + " of " + maxChar + " characters &nbsp; | &nbsp;";
470            document.getElementById(indicator2).innerHTML = chars + " words";
471        } else {
472            document.getElementById(indicator).innerHTML = chars + " of " + maxChar + " characters &nbsp; | &nbsp;";
473            document.getElementById(indicator2).innerHTML = wordcount + " words";
474        }
475
476    }
477}
478
479
480
481function goBack() {
482    window.history.back()
483}
484
485function ArrayRemoveByKey(arrayName, key) {
486    var x;
487    var tmpArray = new Array();
488    for (x in arrayName) {
489        if (x != key) { tmpArray[x] = arrayName[x]; }
490    }
491    return tmpArray;
492}
493
494function ChangeBodyImage(styleName) {
495
496    //alert(document.getElementById('blbodymain'));
497    if (document.getElementById('blbodymain') != '') {
498
499        if (readCookie(styleName) != null && readCookie(styleName) != '') {
500            document.getElementById('blbodymain').style.backgroundImage = "url(/images/" + readCookie(styleName) + ")";
501        }
502    }
503}
504
505
506function GetTooltipSys1(width) {
507    if (width == null || width == '') { width = 500; }
508    Tipped.create('.s1', { ajax: false, closeButton: true, showOn: 'mouseover', skin: 'yellow', fixed: true, target: 'mouse', maxWidth: width });
509}
510
511
512function DisplayHighlight(divHighlight) {
513    var qrStr = location.href;
514    if (qrStr.indexOf("/index.html") != -1) { // Front Page New
515        document.getElementById(divHighlight).style.display = 'block';
516    }
517    var isFrontPage = qrStr.indexOf('.htm', 0);
518    if (isFrontPage == -1) { // Front Page
519        document.getElementById(divHighlight).style.display = 'block';
520    } else {
521        var sPos, ePos, smenu;
522        sPos = qrStr.indexOf('/index', 0);
523        if (sPos != -1) {
524            ePos = qrStr.lastIndexOf('.', qrStr.length);
525            smenu = qrStr.substring(sPos + 6, ePos);
526            if (smenu == SParameters()) {
527                document.getElementById(divHighlight).style.display = 'block';
528            }
529        } else {
530            sPos = qrStr.lastIndexOf('-', qrStr.length);
531            if (sPos != -1) {
532                ePos = qrStr.lastIndexOf('.', qrStr.length);
533                smenu = qrStr.substring(sPos + 1, ePos);
534                if (smenu == SParameters()) {
535                    sPos = qrStr.lastIndexOf('-p', qrStr.length);
536                    if (sPos == -1) {
537                        document.getElementById(divHighlight).style.display = 'block';
538                    }
539                }
540            }
541        }
542    }
543}
544
545
546function HideUnhideStickyAd(contentId) {
547    var content = document.getElementById(contentId);
548    if (content.style.display == 'none')
549        content.style.display = 'block';
550    else
551        content.style.display = 'none';
552}
553
554function CloseStickyAd(contentId) {
555    var myParameters = new Array();
556    myParameters = ReadSParameters(location.href);
557    var smenu = myParameters['smenu'];
558
559    var content = document.getElementById(contentId);
560    content.style.display = 'none';
561    var adCode;
562    if (contentId == 'stickyright')
563        adCode = 'R';
564    if (contentId == 'stickybottom')
565        adCode = 'B';
566    if (contentId == 'stickyleft')
567        adCode = 'L';
568    if (contentId == 'stickytop')
569        adCode = 'T';
570
571    createCookie("AdSticky" + adCode + smenu, "Yes");
572}
573
574
575function checkStickyAdCookie() {
576    var myParameters = new Array();
577    myParameters = ReadSParameters(location.href);
578    var smenu = myParameters['smenu'];
579    var isClosed;
580    isClosed = readCookie("AdStickyR" + smenu);
581    if (isClosed == "Yes")
582        CloseStickyAd("stickyright");
583    isClosed = readCookie("AdStickyB" + smenu);
584    if (isClosed == "Yes")
585        CloseStickyAd("stickybottom");
586    isClosed = readCookie("AdStickyL" + smenu);
587    if (isClosed == "Yes")
588        CloseStickyAd("stickyleft");
589    isClosed = readCookie("AdStickyT" + smenu);
590    if (isClosed == "Yes")
591        CloseStickyAd("stickytop");
592    if (document.getElementById('stickytopContent').children.length < 2) {
593        CloseStickyAd("stickytop");
594    }
595    if (document.getElementById('stickybottomContent').children.length < 2) {
596        CloseStickyAd("stickybottom");
597    }
598    if (document.getElementById('stickyleftContent').children.length < 2) {
599        CloseStickyAd("stickyleft");
600    }
601    if (document.getElementById('stickyrightContent').children.length < 2) {
602        CloseStickyAd("stickyright");
603    }
604}
605
606// To search value in array. Returns array with indexes.
607function ArraySearch(myArray, searchStr) {
608    var returnArray = false;
609    for (i = 0; i < myArray.length; i++) {
610        if (typeof(searchStr) == 'function') {
611            if (searchStr.test(myArray[i])) {
612                if (!returnArray) { returnArray = [] }
613                returnArray.push(i);
614            }
615        } else {
616            if (myArray[i] === searchStr) {
617                if (!returnArray) { returnArray = [] }
618                returnArray.push(i);
619            }
620        }
621    }
622    return returnArray;
623}
624
625// To find max value in array  
626function ArrayMax(myArray) {
627    var max = myArray[0];
628    var len = myArray.length;
629    //alert(len);
630    for (var i = 1; i < len; i++)
631        if (myArray[i] > max) max = myArray[i];
632    return max;
633}
634
635// To find min value in array  
636function ArrayMin(myArray) {
637    var min = myArray[0];
638    var len = myArray.length;
639    for (var i = 1; i < len; i++)
640        if (myArray[i] < min) min = myArray[i];
641    return min;
642}
643
644function GetTimeDifference(sDate) {
645
646    var startDate = new Date(sDate);
647    startDate = dateFormat(startDate, 'mm/dd/yyyy h:MM:ss TT');
648    startDate = new Date(startDate);
649
650    var endDate = new Date();
651    endDate = dateFormat(endDate, 'mm/dd/yyyy h:MM:ss TT');
652    endDate = new Date(endDate);
653
654    diff = new Date();
655    diff.setTime(Math.abs((endDate.getTime() + (endDate.getTimezoneOffset() * 60000)) - startDate.getTime()));
656    timediff = diff.getTime();
657
658    var cnt = 0;
659    var str = '';
660
661    //------------------------------------
662
663    //weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
664    //timediff -= weeks * (1000 * 60 * 60 * 24 * 7);
665
666    days = Math.floor(timediff / (1000 * 60 * 60 * 24));
667    timediff -= days * (1000 * 60 * 60 * 24);
668
669    hours = Math.floor(timediff / (1000 * 60 * 60));
670    timediff -= hours * (1000 * 60 * 60);
671
672    mins = Math.floor(timediff / (1000 * 60));
673    timediff -= mins * (1000 * 60);
674
675    secs = Math.floor(timediff / 1000);
676    timediff -= secs * 1000;
677
678    // Rounding
679    if (days > 0) cnt = cnt + 1;
680    if (hours > 0 && cnt < 2) {
681        cnt = cnt + 1;
682        if (cnt == 2 && hours >= 12) days = days + 1;
683        else if (cnt == 2 && hours < 12) hours = 0;
684    }
685    if (mins > 0 && cnt < 2) {
686        cnt = cnt + 1;
687        if (cnt == 2 && mins >= 30) hours = hours + 1;
688        else if (cnt == 2 && mins < 30) mins = 0;
689    }
690    if (secs > 0 && cnt < 2) {
691        cnt = cnt + 1;
692        if (cnt == 2 && secs >= 30) mins = mins + 1;
693        else if (cnt == 2 && secs < 30) secs = 0;
694    }
695
696    //------------------------------------
697
698    if (days > 0) str = days + ' days';
699    else if (hours > 0) str = hours + ' hours';
700    else if (mins > 0) str = mins + ' mins';
701    else if (secs > 0) str = secs + ' secs';
702    else str = '0 secs';
703
704    return str;
705}
706
707function ReadSParameters(str) {
708    var qrStr, spQrStr, isFrontPage, sPos, ePos;
709    var twindow, smenu, mad, a, sname, isIndex0;
710    var myParameters = new Array();
711    if (str == null) {
712        qrStr = location.href;
713
714        isPopUp = qrStr.indexOf('/AdGroupPopup.htm', 0);
715        if (isPopUp != -1) {
716            qrStr = parent.location.href;
717        }
718    } else {
719        qrStr = str
720    }
721
722    spQrStr = qrStr.substring(1);
723    isFrontPage = qrStr.indexOf('.htm', 0);
724    isIndex0 = qrStr.indexOf('/index0', 0);
725    smenu = getQueryVariable(spQrStr, 'smenu');
726
727
728
729    // Front Page
730    if (isFrontPage == -1) {
731        smenu = SParameters();
732        var myArray = new Array();
733        myArray = GetMenuParameters(smenu);
734        twindow = myArray['twindow'];
735        smenu = smenu;
736        mad = myArray['mad'];
737        a = myArray['a'];
738        sname = myArray['sname'];
739        //alert('*' + smenu + '*');
740
741    }
742
743    // Parameters stored in hostname.js
744    else if ((smenu == '' || smenu == null) && (isIndex0 == -1)) {
745        sPos = qrStr.indexOf('/index', 0);
746        if (sPos != -1) {
747            ePos = qrStr.lastIndexOf('.', qrStr.length);
748            smenu = qrStr.substring(sPos + 6, ePos);
749            //alert(qrStr + '*' + smenu);
750
751        } else {
752            sPos1 = qrStr.lastIndexOf('-', qrStr.length);
753            sPos2 = qrStr.lastIndexOf('.htm', qrStr.length);
754            if (sPos1 != -1 || sPos2 != -1) {
755                smenu = qrStr.substring(sPos1 + 1, sPos2);
756                //alert('*' + smenu + '*');
757            }
758        }
759        var myArray = new Array();
760        myArray = GetMenuParameters(smenu);
761        twindow = myArray['twindow'];
762        smenu = smenu;
763        mad = myArray['mad'];
764        a = myArray['a'];
765        sname = myArray['sname'];
766
767    }
768
769    // Parameters passed using Querystring
770    else {
771        twindow = getQueryVariable(spQrStr, 'twindow');
772        smenu = getQueryVariable(spQrStr, 'smenu');
773        mad = getQueryVariable(spQrStr, 'mad');
774        a = getQueryVariable(spQrStr, 'a');
775        sname = getQueryVariable(spQrStr, 'sname');
776    }
777
778    if (twindow == null) {
779        twindow = '';
780    }
781    if (smenu == null) {
782        smenu = '';
783    }
784    if (mad == null) {
785        mad = '';
786    }
787    if (a == null) {
788        a = '';
789    }
790    if (sname == null) {
791        sname = '';
792    }
793
794    myParameters['twindow'] = twindow;
795    myParameters['smenu'] = smenu;
796    myParameters['mad'] = mad;
797    myParameters['a'] = a;
798    myParameters['sname'] = sname;
799
800    return myParameters;
801}
802
803function OpenLoginPopup(ctl) {
804    var s = readCookie('loginStatus');
805    var url = window.location.href;
806    var siteUh = location.href.match(/:\/\/(.[^/]+)/)[1];
807    var siteU = location.href.match(/:\/\/(.[^/]+)/)[1];
808    if (readCookie('hpe_client_domain')) {
809        if (siteU != readCookie('hpe_client_domain').split('//').pop().split('/').shift()) {
810            siteU = readCookie('hpe_client_domain').split('//').pop().split('/').shift();
811        }
812    }
813    var lb_page = 'hpeditor.asp'; // LB page
814    var myParameters = new Array();
815    var qrStr;
816    if (ctl == null) {
817        qrStr = location.href;
818    } else {
819        qrStr = ctl.href;
820    }
821    myParameters = ReadSParameters(qrStr);
822    var a = myParameters['a'];
823
824    if (a == '1' && s != 'Yes') {
825        createCookie('curl', escape(qrStr));
826        if (readCookie('hpe_client_domain')) {
827            if (siteUh != readCookie('hpe_client_domain').split('//').pop().split('/').shift()) {
828                window.open('/' + lb_page + '?lb=index0.htm?twindow=Form&pform={{Login}}&smenu=0&sname=target_form2.asp&site=' + siteU, target = '_parent');
829                return false;
830            }
831        }
832        if (url.split("/").length == 5) { // Folder Sites
833            var folder = "/" + url.split("/")[3];
834            window.open(folder + "/index0.htm?pform={{Login}}&sname=target_form2.asp&site=" + siteU + folder, target = "_parent");
835            return false;
836        }
837        window.open('/index0.htm?pform={{Login}}&sname=target_form2.asp&site=' + siteU, target = '_parent');
838        return false;
839    } else {
840        return true;
841    }
842}
843
844function checkLoginStatus(isRestricted) {
845    if (readCookie('Style_s13251')) { // header background - old template
846        document.getElementById('tdHeader').style.backgroundImage = "url(/lib/images/" + readCookie('Style_s13251') + ")";
847    }
848    var url = location.href;
849    var qs = url.substring(url.indexOf('?'));
850
851    var myParameters = new Array();
852    myParameters = ReadSParameters();
853    var sname = myParameters['sname'];
854    var a = myParameters['a'];
855    var urlhttps = url.startsWith("https");
856    var urlarr = new URL(url);
857    var surl;
858    if (sname.length > 0) {
859        var uint = setInterval(function() {
860            if (readCookie('AppServer')) {
861                clearInterval(uint);
862                surl = readCookie('AppServer');
863                var sframe = "<iframe id=\"frame1\" style=\"border:none;\" width=\"100%\" src=\"" + surl + sname + qs + "\" onload=\"window.parent.parent.scrollTo(0,0);iFrameResize({log:true}, '#frame1');\"></iframe>"
864                document.getElementById("MainContent").innerHTML = sframe;
865            }
866        }, 10);
867
868    } else {
869        if (a == 1) {
870            var s = readCookie('loginStatus');
871            if (s != 'Yes') {
872                var divAccess1 = document.getElementById('divAccess');
873                if (divAccess1 != null) {
874                    document.getElementById('divAccess').style.display = 'none';
875                    OpenLoginPopup();
876                    document.getElementById('divMain').style.display = 'none';
877                }
878                return false;
879            } else {
880                var divMain1 = document.getElementById('divMain');
881                if (divMain1 != null) {
882                    document.getElementById('divMain').style.display = 'block';
883                }
884                return true;
885            }
886        } else {
887            var divMain = document.getElementById('divMain');
888            if (divMain != null) {
889                document.getElementById('divMain').style.display = 'block';
890            }
891            return true;
892        }
893    }
894}
895
896function jsAppend(js_file) {
897    js_script = document.createElement('script');
898    js_script.type = "text/javascript";
899    js_script.src = js_file;
900    document.getElementsByTagName('head')[0].appendChild(js_script);
901}
902
903function cssAppend(css_file) {
904    var fileref = document.createElement("link");
905    fileref.setAttribute("rel", "stylesheet");
906    fileref.setAttribute("type", "text/css");
907    fileref.setAttribute("href", css_file);
908    document.getElementsByTagName('head')[0].appendChild(fileref);
909}
910
911String.prototype.startsWith = function(str) {
912    return (this.indexOf(str) === 0);
913}
914
915function ReservedKeywordChecker(ctl) {
916    if (ctl.type == "text" || ctl.type == "textarea") {
917        var v1 = ctl.value.toLowerCase();
918        if (v1.startsWith('insert ') || v1.startsWith('insert%20') || v1.startsWith('update ') || v1.startsWith('update%20') || v1.startsWith('delete ') || v1.startsWith('delete%20') || v1.startsWith('truncate ') || v1.startsWith('truncate%20')) {
919            var msg = "You cannot start with this special word. Try again with different word.";
920            alert(msg, ctl);
921            ctl.focus();
922            return false;
923        }
924    }
925    return true;
926}
927
928function reloadiframe(id, theme, days) {
929    var win = window.frames[id];
930    if (win != null) {
931        window.frames[id].IframeChooseStyle(theme, days);
932    }
933}
934
935function GetDate(CurrentDate, format) {
936    if (CurrentDate == null) {
937        CurrentDate = new Date();
938    }
939    if (format == '') {
940        format = GetDateFormat();
941    }
942    if (format == 'No') {
943        document.write('');
944    }
945    if (format == 'Default') {
946        document.write(new Date());
947    }
948    if (format == 'Friday, Jul 15, 2009') {
949        document.write(dateFormat(CurrentDate, 'dddd, mmm dd, yyyy'));
950    }
951    if (format == 'Friday, Jul 15, 2009, 10:30 AM') {
952        document.write(dateFormat(CurrentDate, 'dddd, mmm dd, yyyy, h:MM TT'));
953    }
954    if (format == 'Friday, July 15, 2009') {
955        document.write(dateFormat(CurrentDate, 'dddd, mmmm dd, yyyy'));
956    }
957    if (format == 'Friday, July 15, 2009, 10:30 AM') {
958        document.write(dateFormat(CurrentDate, 'dddd, mmmm dd, yyyy, h:MM TT'));
959    }
960    if (format == 'Fri, Jul 15, 2009') {
961        document.write(dateFormat(CurrentDate, 'ddd, mmm dd, yyyy'));
962    }
963    if (format == 'Fri, Jul 15, 2009, 10:30 AM') {
964        document.write(dateFormat(CurrentDate, 'ddd, mmm dd, yyyy, h:MM TT'));
965    }
966    if (format == 'Fri, July 15, 2009') {
967        document.write(dateFormat(CurrentDate, 'ddd, mmmm dd, yyyy'));
968    }
969    if (format == 'Fri, July 15, 2009, 10:30 AM') {
970        document.write(dateFormat(CurrentDate, 'ddd, mmmm dd, yyyy, h:MM TT'));
971    }
972    if (format == 'Jul 15, 2009') {
973        document.write(dateFormat(CurrentDate, 'mmm dd, yyyy'));
974    }
975    if (format == 'Jul 15, 2009, 10:30 AM') {
976        document.write(dateFormat(CurrentDate, 'mmm dd, yyyy, h:MM TT'));
977    }
978    if (format == 'July 15, 2009') {
979        document.write(dateFormat(CurrentDate, 'mmmm dd, yyyy'));
980    }
981    if (format == 'July 15, 2009, 10:30 AM') {
982        document.write(dateFormat(CurrentDate, 'mmmm dd, yyyy, h:MM TT'));
983    }
984
985    //-----------
986
987    if (format == '07/15/09') {
988        document.write(dateFormat(CurrentDate, 'mm/dd/yy'));
989    }
990    if (format == '07/15/09 10:30 AM') {
991        document.write(dateFormat(CurrentDate, 'mm/dd/yy h:MM TT'));
992    }
993    if (format == '07/15/2009') {
994        document.write(dateFormat(CurrentDate, 'mm/dd/yyyy'));
995    }
996    if (format == '07/15/2009 10:30 AM') {
997        document.write(dateFormat(CurrentDate, 'mm/dd/yyyy h:MM TT'));
998    }
999
1000    if (format == '07.15.09') {
1001        document.write(dateFormat(CurrentDate, 'mm.dd.yy'));
1002    }
1003    if (format == '07.15.09 10:30 AM') {
1004        document.write(dateFormat(CurrentDate, 'mm.dd.yy h:MM TT'));
1005    }
1006    if (format == '07.15.2009') {
1007        document.write(dateFormat(CurrentDate, 'mm.dd.yyyy'));
1008    }
1009    if (format == '07.15.2009 10:30 AM') {
1010        document.write(dateFormat(CurrentDate, 'mm.dd.yyyy h:MM TT'));
1011    }
1012
1013    if (format == '07-15-09') {
1014        document.write(dateFormat(CurrentDate, 'mm-dd-yy'));
1015    }
1016    if (format == '07-15-09 10:30 AM') {
1017        document.write(dateFormat(CurrentDate, 'mm-dd-yy h:MM TT'));
1018    }
1019    if (format == '07-15-2009') {
1020        document.write(dateFormat(CurrentDate, 'mm-dd-yyyy'));
1021    }
1022    if (format == '07-15-2009 10:30 AM') {
1023        document.write(dateFormat(CurrentDate, 'mm-dd-yyyy h:MM TT'));
1024    }
1025
1026    //-----------------------------------------------------------------
1027
1028    if (format == 'Friday, 15 Jul, 2009') {
1029        document.write(dateFormat(CurrentDate, 'dddd, dd mmm, yyyy'));
1030    }
1031    if (format == 'Friday, 15 Jul, 2009, 10:30 AM') {
1032        document.write(dateFormat(CurrentDate, 'dddd, dd mmm, yyyy, h:MM TT'));
1033    }
1034    if (format == 'Friday, 15 July, 2009') {
1035        document.write(dateFormat(CurrentDate, 'dddd, dd mmmm, yyyy'));
1036    }
1037    if (format == 'Friday, 15 July, 2009, 10:30 AM') {
1038        document.write(dateFormat(CurrentDate, 'dddd, dd mmmm, yyyy, h:MM TT'));
1039    }
1040    if (format == 'Fri, 15 Jul, 2009') {
1041        document.write(dateFormat(CurrentDate, 'ddd, dd mmm, yyyy'));
1042    }
1043    if (format == 'Fri, 15 Jul, 2009, 10:30 AM') {
1044        document.write(dateFormat(CurrentDate, 'ddd, dd mmm, yyyy, h:MM TT'));
1045    }
1046    if (format == 'Fri, 15 July, 2009') {
1047        document.write(dateFormat(CurrentDate, 'ddd, dd mmmm, yyyy'));
1048    }
1049    if (format == 'Fri, 15 July, 2009, 10:30 AM') {
1050        document.write(dateFormat(CurrentDate, 'ddd, dd mmmm, yyyy, h:MM TT'));
1051    }
1052    if (format == '15 Jul, 2009') {
1053        document.write(dateFormat(CurrentDate, 'dd mmm, yyyy'));
1054    }
1055    if (format == '15 Jul, 2009, 10:30 AM') {
1056        document.write(dateFormat(CurrentDate, 'dd mmm, yyyy, h:MM TT'));
1057    }
1058    if (format == '15 July, 2009') {
1059        document.write(dateFormat(CurrentDate, 'dd mmmm, yyyy'));
1060    }
1061    if (format == '15 July, 2009, 10:30 AM') {
1062        document.write(dateFormat(CurrentDate, 'dd mmmm, yyyy, h:MM TT'));
1063    }
1064
1065    //-----------
1066
1067    if (format == '15/07/09') {
1068        document.write(dateFormat(CurrentDate, 'dd/mm/yy'));
1069    }
1070    if (format == '15/07/09 10:30 AM') {
1071        document.write(dateFormat(CurrentDate, 'dd/mm/yy h:MM TT'));
1072    }
1073    if (format == '15/07/2009') {
1074        document.write(dateFormat(CurrentDate, 'dd/mm/yyyy'));
1075    }
1076    if (format == '15/07/2009 10:30 AM') {
1077        document.write(dateFormat(CurrentDate, 'dd/mm/yyyy h:MM TT'));
1078    }
1079
1080    if (format == '15.07.09') {
1081        document.write(dateFormat(CurrentDate, 'dd.mm.yy'));
1082    }
1083    if (format == '15.07.09 10:30 AM') {
1084        document.write(dateFormat(CurrentDate, 'dd.mm.yy h:MM TT'));
1085    }
1086    if (format == '15.07.2009') {
1087        document.write(dateFormat(CurrentDate, 'dd.mm.yyyy'));
1088    }
1089    if (format == '15.07.2009 10:30 AM') {
1090        document.write(dateFormat(CurrentDate, 'dd.mm.yyyy h:MM TT'));
1091    }
1092
1093    if (format == '15-07-09') {
1094        document.write(dateFormat(CurrentDate, 'dd-mm-yy'));
1095    }
1096    if (format == '15-07-09 10:30 AM') {
1097        document.write(dateFormat(CurrentDate, 'dd-mm-yy h:MM TT'));
1098    }
1099    if (format == '15-07-2009') {
1100        document.write(dateFormat(CurrentDate, 'dd-mm-yyyy'));
1101    }
1102    if (format == '15-07-2009 10:30 AM') {
1103        document.write(dateFormat(CurrentDate, 'dd-mm-yyyy h:MM TT'));
1104    }
1105
1106}
1107
1108
1109var dateFormat = function() {
1110    var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
1111        timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
1112        timezoneClip = /[^-+\dA-Z]/g,
1113        pad = function(val, len) {
1114            val = String(val);
1115            len = len || 2;
1116            while (val.length < len) val = "0" + val;
1117            return val;
1118        };
1119
1120    // Regexes and supporting functions are cached through closure
1121    return function(date, mask, utc) {
1122        var dF = dateFormat;
1123
1124        // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
1125        if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
1126            mask = date;
1127            date = undefined;
1128        }
1129
1130        // Passing date through Date applies Date.parse, if necessary
1131        date = date ? new Date(date) : new Date;
1132        if (isNaN(date)) throw SyntaxError("invalid date");
1133
1134        mask = String(dF.masks[mask] || mask || dF.masks["default"]);
1135
1136        // Allow setting the utc argument via the mask
1137        if (mask.slice(0, 4) == "UTC:") {
1138            mask = mask.slice(4);
1139            utc = true;
1140        }
1141
1142        var _ = utc ? "getUTC" : "get",
1143            d = date[_ + "Date"](),
1144            D = date[_ + "Day"](),
1145            m = date[_ + "Month"](),
1146            y = date[_ + "FullYear"](),
1147            H = date[_ + "Hours"](),
1148            M = date[_ + "Minutes"](),
1149            s = date[_ + "Seconds"](),
1150            L = date[_ + "Milliseconds"](),
1151            o = utc ? 0 : date.getTimezoneOffset(),
1152            flags = {
1153                d: d,
1154                dd: pad(d),
1155                ddd: dF.i18n.dayNames[D],
1156                dddd: dF.i18n.dayNames[D + 7],
1157                m: m + 1,
1158                mm: pad(m + 1),
1159                mmm: dF.i18n.monthNames[m],
1160                mmmm: dF.i18n.monthNames[m + 12],
1161                yy: String(y).slice(2),
1162                yyyy: y,
1163                h: H % 12 || 12,
1164                hh: pad(H % 12 || 12),
1165                H: H,
1166                HH: pad(H),
1167                M: M,
1168                MM: pad(M),
1169                s: s,
1170                ss: pad(s),
1171                l: pad(L, 3),
1172                L: pad(L > 99 ? Math.round(L / 10) : L),
1173                t: H < 12 ? "a" : "p",
1174                tt: H < 12 ? "am" : "pm",
1175                T: H < 12 ? "A" : "P",
1176                TT: H < 12 ? "AM" : "PM",
1177                Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
1178                o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
1179                S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
1180            };
1181
1182        return mask.replace(token, function($0) {
1183            return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
1184        });
1185    };
1186}();
1187
1188// Some common format strings
1189dateFormat.masks = {
1190    "default": "ddd mmm dd yyyy HH:MM:ss",
1191    shortDate: "m/d/yy",
1192    mediumDate: "mmm d, yyyy",
1193    longDate: "mmmm d, yyyy",
1194    fullDate: "dddd, mmmm d, yyyy",
1195    shortTime: "h:MM TT",
1196    mediumTime: "h:MM:ss TT",
1197    longTime: "h:MM:ss TT Z",
1198    isoDate: "yyyy-mm-dd",
1199    isoTime: "HH:MM:ss",
1200    isoDateTime: "yyyy-mm-dd'T'HH:MM:ss",
1201    isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
1202};
1203
1204// Internationalization strings
1205dateFormat.i18n = {
1206    dayNames: [
1207        "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
1208        "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
1209    ],
1210    monthNames: [
1211        "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
1212        "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "
1212November", "December"
1213    ]
1214};
1215
1216// For convenience...
1217Date.prototype.format = function(mask, utc) {
1218    return dateFormat(this, mask, utc);
1219};
1220
1221//------------------------------------------------------------
1222
1223function ArraySortShuffleMerge(myAds) {
1224    var negAds = new Array();
1225    var zeroAds = new Array();
1226    var posiAds = new Array();
1227    var totalAds = new Array();
1228    var order_no;
1229
1230    for (var i in myAds) {
1231        order_no = i.substring(i.lastIndexOf("_") + 1, i.length);
1232        if (order_no < 0) {
1233            negAds[i] = myAds[i];
1234        } else if (order_no == 0) {
1235            zeroAds[i] = myAds[i];
1236        } else if (order_no > 0) {
1237            posiAds[i] = myAds[i];
1238        }
1239    }
1240
1241    zeroAds = ArrayShuffle(zeroAds);
1242
1243    for (var i in negAds) {
1244        totalAds[i] = negAds[i];
1245    }
1246    for (var i in zeroAds) {
1247        totalAds[i] = zeroAds[i];
1248    }
1249    for (var i in posiAds) {
1250        totalAds[i] = posiAds[i];
1251    }
1252    return totalAds;
1253}
1254
1255
1256///////////////////////////////////////////////////////////////////////////////////
1257
1258
1259function DoClickOnEnter(link, e) {
1260    var key;
1261
1262    if (window.event)
1263        key = window.event.keyCode; //IE
1264    else
1265        key = e.which; //firefox
1266
1267    if (key == 13) {
1268        var search = document.getElementById('SearchBox1').value;
1269        window.location.href = link + escape(search);
1270        //event.keyCode = 0
1271    }
1272}
1273
1274function HideControls(objName) {
1275    var arr = new Array();
1276    arr = document.getElementsByTagName('span');
1277    for (var i = 0; i < arr.length; i++) {
1278        if (arr[i].getAttribute('name') == objName) {
1279            arr[i].style.display = 'none';
1280        }
1281    }
1282    arr = document.getElementsByTagName('div');
1283    for (var i = 0; i < arr.length; i++) {
1284        if (arr[i].getAttribute('name') == objName) {
1285            arr[i].style.display = 'none';
1286        }
1287    }
1288}
1289
1290
1291function chkSearch(link, ctrl) {
1292    var search = document.getElementById('SearchBox1').value;
1293    ctrl.href = link + escape(search);
1294}
1295
1296
1297function alert(msg, ctl) {
1298    if (!document.getElementById('f_alert_button')) {
1299        document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", "<button id='f_alert_button' type='button' data-bs-toggle='modal' data-bs-target='#f_alert' style='display:none;'></button><div class='f_alert_box modal fade' id='f_alert' data-bs-backdrop='static' data-bs-keyboard='false' tabindex='-1' aria-labelledby='f_alertLabel' aria-hidden='true'><div class='modal-dialog modal-dialog-centered modal-dialog-scrollable'><div class='modal-content'><div class='modal-header' style='display:none'><button type='button' class='btn-close' data-bs-dismiss='modal' aria-label='Close'></button></div><div class='modal-body text-center' style='white-space: pre-wrap;'>" + msg + "</div><div class='modal-footer d-flex justify-content-center border-0'><button type='button' class='f_alert_close btn btn-dark py-2 px-4' data-bs-dismiss='modal'>OK</button></div></div></div><style>@media (min-width:576px){.modal-dialog{max-width:400px}}</style></div>");
1300        document.getElementById('f_alert_button').click();
1301        document.getElementsByClassName('f_alert_close')[0].addEventListener('click', function() {
1302            document.getElementById('f_alert_button').remove();
1303            document.getElementsByClassName('f_alert_box')[0].remove();
1304            if (ctl) {
1305                ctl.focus();
1306            }
1307        });
1308    }
1309}
1310
1311function confirm(msg, ctl) {
1312    if (!document.getElementById('f_confirm_button')) {
1313        document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", "<button id='f_confirm_button' type='button' data-bs-toggle='modal' data-bs-target='#f_confirm' style='display:none;'></button><div class='f_confirm_box modal fade' id='f_confirm' data-bs-backdrop='static' data-bs-keyboard='false' tabindex='-1' aria-labelledby='f_confirmLabel' aria-hidden='true'><div class='modal-dialog modal-dialog-centered modal-dialog-scrollable'><div class='modal-content'><div class='modal-header' style='display:none'><button type='button' class='btn-close' data-bs-dismiss='modal' aria-label='Close'></button></div><div class='modal-body text-center' style='white-space: pre-wrap;'>" + msg + "</div><div class='modal-footer d-flex justify-content-center border-0'><button type='button' class='f_confirm_yes btn btn-danger me-3 py-2 px-4' data-bs-dismiss='modal'>Confirm</button><button type='button' class='f_confirm_close btn btn-dark py-2 px-4' data-bs-dismiss='modal'>Cancel</button></div></div></div><style>@media (min-width:576px){.modal-dialog{max-width:400px}}</style></div>");
1314        document.getElementById('f_confirm_button').click();
1315        document.getElementsByClassName('f_confirm_close')[0].addEventListener('click', function() {
1316            document.getElementById('f_confirm_button').remove();
1317            document.getElementsByClassName('f_confirm_box')[0].remove();
1318        });
1319        document.getElementsByClassName('f_confirm_yes')[0].addEventListener('click', function() {
1320            document.getElementById('f_confirm_button').remove();
1321            document.getElementsByClassName('f_confirm_box')[0].remove();
1322            if (ctl) {
1323                window.location = ctl.href;
1324            }
1325        });
1326    }
1327    return false;
1328}
1329
1330function confirmdelete(msg, ctl) {
1331    if (!document.getElementById('f_confirm_delete_button')) {
1332        document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", "<button id='f_confirm_delete_button' type='button' data-bs-toggle='modal' data-bs-target='#f_confirm_delete' style='display:none;'></button><div class='f_confirm_delete_box modal fade' id='f_confirm_delete' data-bs-backdrop='static' data-bs-keyboard='false' tabindex='-1' aria-labelledby='f_confirm_deleteLabel' aria-hidden='true'>
1332<div class='modal-dialog modal-dialog-centered modal-dialog-scrollable'><div class='modal-content'><div class='modal-header' style='display:none'><button type='button' class='btn-close' data-bs-dismiss='modal' aria-label='Close'></button></div><div class='modal-body text-center' style='white-space: pre-wrap;'>" + msg + "</div><div class='modal-footer d-flex justify-content-center border-0'><button type='button' class='f_confirm_delete_yes btn btn-danger me-3 py-2 px-4' data-bs-dismiss='modal'>Delete</button><button type='button' class='f_confirm_delete_close btn btn-dark py-2 px-4' data-bs-dismiss='modal'>Cancel</button></div></div></div><style>@media (min-width:576px){.modal-dialog{max-width:400px}}</style></div>");
1333        document.getElementById('f_confirm_delete_button').click();
1334        document.getElementsByClassName('f_confirm_delete_close')[0].addEventListener('click', function() {
1335            document.getElementById('f_confirm_delete_button').remove();
1336            document.getElementsByClassName('f_confirm_delete_box')[0].remove();
1337        });
1338        document.getElementsByClassName('f_confirm_delete_yes')[0].addEventListener('click', function() {
1339            document.getElementById('f_confirm_delete_button').remove();
1340            document.getElementsByClassName('f_confirm_delete_box')[0].remove();
1341            if (ctl) {
1342                window.location = ctl.href;
1343            }
1344        });
1345    }
1346    return false;
1347}
1348
1349function confirmhide(msg, ctl) {
1350    if (!document.getElementById('f_confirm_hide_button')) {
1351        document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", "<button id='f_confirm_hide_button' type='button' data-bs-toggle='modal' data-bs-target='#f_confirm_hide' style='display:none;'></button><div class='f_confirm_hide_box modal fade' id='f_confirm_hide' data-bs-backdrop='static' data-bs-keyboard='false' tabindex='-1' aria-labelledby='f_confirm_hideLabel' aria-hidden='true'><div class='modal-dialog modal-dialog-centered modal-dialog-scrollable'><div class='modal-content'><div class='modal-header' style='display:none'><button type='button' class='btn-close' data-bs-dismiss='modal' aria-label='Close'></button></div><div class='modal-body text-center' style='white-space: pre-wrap;'>" + msg + "</div><div class='modal-footer d-flex justify-content-center border-0'><button type='button' class='f_confirm_hide_yes btn btn-danger me-3 py-2 px-4' data-bs-dismiss='modal'>Hide</button><button type='button' class='f_confirm_hide_close btn btn-dark py-2 px-4' data-bs-dismiss='modal'>Cancel</button></div></div></div><style>@media (min-width:576px){.modal-dialog{max-width:400px}}</style></div>");
1352        document.getElementById('f_confirm_hide_button').click();
1353        document.getElementsByClassName('f_confirm_hide_close')[0].addEventListener('click', function() {
1354            document.getElementById('f_confirm_hide_button').remove();
1355            document.getElementsByClassName('f_confirm_hide_box')[0].remove();
1356        });
1357        document.getElementsByClassName('f_confirm_hide_yes')[0].addEventListener('click', function() {
1358            document.getElementById('f_confirm_hide_button').remove();
1359            document.getElementsByClassName('f_confirm_hide_box')[0].remove();
1360            if (ctl) {
1361                window.location = ctl.href;
1362            }
1363        });
1364    }
1365    return false;
1366}
1367
1368function ChangeInputFocus(obj, evt, cname) {
1369    if (evt.type == "focus")
1370        obj.className = cname;
1371    else if (evt.type == "blur")
1372        obj.className = cname;
1373}
1374
1375
1376function getQueryVariable(query, variable) {
1377    query = query.replace('?', "&");
1378    var vars = query.split("&");
1379    for (var i = 0; i < vars.length; i++) {
1380        var pair = vars[i].split("=");
1381        if (pair[0] == variable) {
1382            return pair[1];
1383        }
1384    }
1385    return "";
1386}
1387
1388function ResizeIFrame(IFrameContent) {
1389    document.getElementById(IFrameContent).height = document.getElementById(IFrameContent).contentWindow.document.body.scrollHeight;
1390    document.getElementById(IFrameContent).width = document.getElementById(IFrameContent).contentWindow.document.body.scrollWidth;
1391    scroll(0, 0);
1392}
1393
1394
1395function UseIFrameAds(IFrameContent) {
1396    document.getElementById(IFrameContent).height = document.getElementById(IFrameContent).contentWindow.document.body.scrollHeight;
1397    document.getElementById(IFrameContent).width = document.getElementById(IFrameContent).contentWindow.document.body.scrollWidth;
1398}
1399
1400
1401function GotoParent(url) {
1402    if (self.parent.frames.length != 0) self.parent.location = url;
1403}
1404
1405function login() {
1406    url = location.href;
1407    var f = url.substring(0, url.indexOf('?'));
1408    if (f == "") { f = url; }
1409    f = f.substring(f.lastIndexOf('/') + 1);
1410    url = url.replace(f, "index0.htm")
1411    if (f.substring(0, 2).toLowerCase() == "ps" && readCookie("BLUserLoggedIn") == null) { document.location.href = url + "&sdetail=0"; }
1412}
1413
1414function createCookie(name, value, days) {
1415    if (days) {
1416        var date = new Date();
1417        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
1418        var expires = "; expires=" + date.toGMTString();
1419    } else var expires = "";
1420    document.cookie = name + "=" + value + expires + "; path=/";
1421}
1422
1423function readCookie(name) {
1424    var nameEQ = name + "=";
1425    var ca = document.cookie.split(';');
1426    for (var i = 0; i < ca.length; i++) {
1427        var c = ca[i];
1428        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
1429        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
1430    }
1431    return null;
1432}
1433
1434function eraseCookie(name) {
1435    createCookie(name, "", -1);
1436}
1437
1438function RunScript() {
1439
1440}
1441
1442function ChangeStyle_s13251(fName) {
1443    parent.document.getElementById('tdHeader').style.backgroundImage = "url(/lib/images/" + fName + ")";
1444    createCookie("Style_s13251", fName, 60);
1445}
1446
1447function PopupWindow(mypage, myname, w, h, scroll) {
1448    var win = null;
1449    LPos = (screen.width) ? (screen.width - w) / 2 : 0;
1450    TPos = (screen.height) ? (screen.height - h) / 2 : 0;
1451    settings = 'height=' + h + ',width=' + w + ',top=' + TPos + ',left=' + LPos + ',scrollbars=' + scroll + ',resizable';
1452    win = window.open(mypage, myname, settings);
1453
1454}
1455
1456function PopupWindow2(wName, w, h, scroll) {
1457    LPos = (screen.width) ? (screen.width - w) / 2 : 0;
1458    TPos = (screen.height) ? (screen.height - h) / 2 : 0;
1459    features = 'width=' + w + ',height=' + h + ',top=' + TPos + ',left=' + LPos + ',status=no,toolbar=no,location=no,menubar=no,titlebar=no,scrollbars=' + scroll + '';
1460    pop = window.open('', wName, features);
1461    if (pop.focus) { pop.focus(); }
1462    return true;
1463}
1464
1465function LoadDoc(dataSource, dtag, gtrack) {
1466
1467    var XMLHttpRequestObject = false;
1468
1469    if (window.XMLHttpRequest) {
1470        XMLHttpRequestObject = new XMLHttpRequest();
1471    } else if (window.ActiveXObject) {
1472        XMLHttpRequestObject = new
1473        ActiveXObject("Microsoft.XMLHTTP");
1474    }
1475
1476    if (XMLHttpRequestObject) {
1477        XMLHttpRequestObject.open("GET", dataSource);
1478        XMLHttpRequestObject.onreadystatechange = function() {
1479            if (XMLHttpRequestObject.readyState == 4 &&
1480                XMLHttpRequestObject.status == 200) {
1481                var v1 = document.getElementById(dtag);
1482                if (v1 != null)
1483                    v1.innerHTML = XMLHttpRequestObject.responseText;
1484                else {
1485                    v1 = parent.document.getElementById(dtag);
1486                    if (v1 != null)
1487                        v1.innerHTML = XMLHttpRequestObject.responseText;
1488                }
1489
1490            }
1491        }
1492
1493        XMLHttpRequestObject.send(null);
1494    }
1495}
1496
1497
1498function ValidateSize(file, limit) {
1499    var v = trim(file.value);
1500    if (v != '') {
1501        var FileSize = file.files[0].size / 1024 / 1024; // in MB
1502        var LimitSize = limit / 1024 / 1024;
1503        if (FileSize > LimitSize) {
1504            var msg = 'File size exceeded <b>' + LimitSize + ' MB</b> limit. Please upload smaller size.';
1505            alert(msg, this);
1506            this.focus();
1507            return false
1508        }
1509    }
1510    return true;
1511}
1512
1513function DuplicateChecker(myValue, t, c, kn, kv, fkn, fkv, it, cv) {
1514
1515    var XMLHttpRequestObject = false;
1516    if (location.protocol == "file:") {
1517        if (!XMLHttpRequestObject) try { XMLHttpRequestObject = new ActiveXObject("MSXML2.XMLHTTP"); } catch (e) { XMLHttpRequestObject = false; }
1518        if (!XMLHttpRequestObject) try { XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { XMLHttpRequestObject = false; }
1519    };
1520    if (!XMLHttpRequestObject) try { XMLHttpRequestObject = new XMLHttpRequest(); } catch (e) { XMLHttpRequestObject = false; }
1521    if (typeof ActiveXObject != "undefined") {
1522        if (!XMLHttpRequestObject) try { XMLHttpRequestObject = new ActiveXObject("MSXML2.XMLHTTP"); } catch (e) { XMLHttpRequestObject = false; }
1523        if (!XMLHttpRequestObject) try { XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { XMLHttpRequestObject = false; }
1524    }
1525
1526    if (XMLHttpRequestObject) {
1527        var url = "DuplicateChecker.asp?v=" + myValue + "&t=" + t + "&c=" + c + "&kn=" + kn + "&kv=" + kv + "&fkn=" + fkn + "&fkv=" + fkv + "&it=" + it + "&cv=" + cv;
1528        // return url;
1529        XMLHttpRequestObject.open("GET", url, false);
1530        XMLHttpRequestObject.send(null);
1531        return XMLHttpRequestObject.responseText;
1532    } else {
1533        alert("To use this feature, please upgrade to a current web browser");
1534    }
1535}
1536
1537
1538
1539function get_radio_value(frmId) {
1540    var rad_val;
1541    var frm;
1542    frm = document.getElementById(frmId);
1543    for (var i = 0; i < frm.choiceid.length; i++) {
1544        if (frm.choiceid[i].checked) {
1545            rad_val = frm.choiceid[i].value;
1546        }
1547    }
1548    return rad_val;
1549}
1550
1551
1552function get_checkbox_value(frmId) {
1553    var chk_val;
1554    var flag;
1555    var chk;
1556    var frm;
1557    frm = document.getElementById(frmId);
1558
1559    chk = frm.choiceid1;
1560    if (chk != null) {
1561        if (chk.checked) {
1562            flag = 1;
1563        } else {
1564            flag = '';
1565        }
1566    } else {
1567        flag = '';
1568    }
1569    chk_val = "choiceid1=" + flag;
1570
1571    chk = frm.choiceid2;
1572    if (chk != null) {
1573        if (chk.checked) {
1574            flag = 1;
1575        } else {
1576            flag = '';
1577        }
1578    } else {
1579        flag = '';
1580    }
1581    chk_val = chk_val + "&choiceid2=" + flag;
1582
1583    chk = frm.choiceid3;
1584    if (chk != null) {
1585        if (chk.checked) {
1586            flag = 1;
1587        } else {
1588            flag = '';
1589        }
1590    } else {
1591        flag = '';
1592    }
1593    chk_val = chk_val + "&choiceid3=" + flag;
1594
1595    chk = frm.choiceid4;
1596    if (chk != null) {
1597        if (chk.checked) {
1598            flag = 1;
1599        } else {
1600            flag = '';
1601        }
1602    } else {
1603        flag = '';
1604    }
1605    chk_val = chk_val + "&choiceid4=" + flag;
1606
1607    chk = frm.choiceid5;
1608    if (chk != null) {
1609        if (chk.checked) {
1610            flag = 1;
1611        } else {
1612            flag = '';
1613        }
1614    } else {
1615        flag = '';
1616    }
1617    chk_val = chk_val + "&choiceid5=" + flag;
1618
1619    chk = frm.choiceid6;
1620    if (chk != null) {
1621        if (chk.checked) {
1622            flag = 1;
1623        } else {
1624            flag = '';
1625        }
1626    } else {
1627        flag = '';
1628    }
1629    chk_val = chk_val + "&choiceid6=" + flag;
1630
1631    chk = frm.choiceid7;
1632    if (chk != null) {
1633        if (chk.checked) {
1634            flag = 1;
1635        } else {
1636            flag = '';
1637        }
1638    } else {
1639        flag = '';
1640    }
1641    chk_val = chk_val + "&choiceid7=" + flag;
1642    return chk_val;
1643}
1644
1645
1646
1647
1648
1649function keyRestrict(e, val, validType) {
1650
1651    var key = '',
1652        keychar = '';
1653    key = getKeyCode(e);
1654    if (key == null) return true;
1655    keychar = String.fromCharCode(key);
1656    keychar = keychar.toLowerCase();
1657
1658    var validchars;
1659    if (validType == "Number") {
1660        validchars = "0123456789";
1661    } else if (validType == "NumberNegative") {
1662        validchars = "-0123456789";
1663    } else if (validType == "Decimal") {
1664        validchars = "0123456789.";
1665    } else if (validType == "DecimalNegative") {
1666        validchars = "-0123456789.";
1667    } else if (validType == "cssNumber") {
1668        validchars = "0123456789%";
1669    } else if (validType == "Filename") {
1670        validchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-";
1671    } else if (validType == "Formname") {
1672        validchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_{}";
1673    } else if (validType == "ProductDiscount") {
1674        validchars = "0123456789.%";
1675    } else if (validType == "ServicePackageDiscount") {
1676        validchars = "0123456789.%F";
1677    } else if (validType == "Menu") {
1678        validchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_~!@$%^*()+={}[]<>|:. -";
1679    }
1680    validchars = validchars.toLowerCase();
1681
1682    if (validType == "NumberNegative") {
1683        if (keychar == "-") {
1684            if (val.indexOf(keychar) != -1)
1685                return false;
1686        }
1687        if (validchars.indexOf(keychar) != -1)
1688            return true;
1689    } else if (validType == "Decimal") {
1690        if (keychar == ".") {
1691            if (val.indexOf(keychar) != -1)
1692                return false;
1693        }
1694        if (validchars.indexOf(keychar) != -1)
1695            return true;
1696    } else if (validType == "DecimalNegative") {
1697        if (keychar == ".") {
1698            if (val.indexOf(keychar) != -1)
1699                return false;
1700        }
1701        if (keychar == "-") {
1702            if (val.indexOf(keychar) != -1)
1703                return false;
1704        }
1705        if (validchars.indexOf(keychar) != -1)
1706            return true;
1707    } else if (validType == "cssNumber") {
1708        if (keychar == "%") {
1709            if (val.indexOf(keychar) != -1)
1710                return false;
1711        }
1712        if (validchars.indexOf(keychar) != -1)
1713            return true;
1714    } else {
1715        if (validchars.indexOf(keychar) != -1)
1716            return true;
1717    }
1718
1719    if (key == null || key == 0 || key == 8 || key == 9 || key == 13 || key == 27)
1720        return true;
1721    return false;
1722}
1723
1724
1725
1726
1727
1728
1729function getKeyCode(e) {
1730    if (window.event)
1731        return window.event.keyCode;
1732    else if (e)
1733        return e.which;
1734    else
1735        return null;
1736}
1737
1738
1739
1740
1741
1742
1743
1744
1745function trim(s) {
1746    s = s.replace(/(^\s*)|(\s*$)/gi, "");
1747    //s = s.replace(/[ ]{2,}/gi, " ");
1748    s = s.replace(/\n /, "\n");
1749    return s;
1750}
1751
1752
1753function DecimalValidator(myKey, myControl) {
1754    var myValue = trim(myControl.value);
1755    var re5digit = /^[0-9]*(\.[0-9]+)?$/;
1756    if (myValue.search(re5digit) == -1) {
1757        var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;
1757is invalid.";
1758        alert(msg, myControl);
1759        myControl.focus();
1760        return false;
1761    }
1762    return true;
1763}
1764
1765
1766function RangeValidator(min, max, myKey, myControl) {
1767    var msg;
1768    var myValue = trim(myControl.value);
1769    if (myValue != "") {
1770        if (min && max) {
1771            if (!(myValue >= min && myValue <= max)) {
1772                msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;Enter value between " + min + " and " + max + ".";
1773                alert(msg, myControl);
1774                myControl.focus();
1775                return false;
1776            }
1777        } else if (min) {
1778            if (!(myValue >= min)) {
1779                msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;Enter value " + min + " or higher.";
1780                alert(msg, myControl);
1781                myControl.focus();
1782                return false;
1783            }
1784        } else if (max) {
1785            if (!(myValue <= max)) {
1786                msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;Enter value " + max + " or less.";
1787                alert(msg, myControl);
1788                myControl.focus();
1789                return false;
1790            }
1791        }
1792    }
1793    return true;
1794}
1795
1796function SelectHTMLtagValidator(caption, ctl) {
1797    if (ctl.type == 'text') {
1798        var v1 = ctl.value.toLowerCase();
1799        if (v1.indexOf('<html') > -1 || v1.indexOf('/html>') > -1 || v1.indexOf('<iframe') > -1 || v1.indexOf('<script') > -1 || v1.indexOf('<\/script>') > -1 || v1.indexOf('<div') > -1 || v1.indexOf('/div>') > -1 || v1.indexOf('<body') > -1 || v1.indexOf('/body>') > -1 || v1.indexOf('<p') > -1 || v1.indexOf('/p>') > -1 || v1.indexOf('<br') > -1 || v1.indexOf('/br>') > -1 || v1.indexOf('hr>') > -1 || v1.indexOf('<textarea') > -1 || v1.indexOf('<img') > -1 || v1.indexOf('<a') > -1 || v1.indexOf('<ul') > -1 || v1.indexOf('<li') > -1 || v1.indexOf('<table') > -1 || v1.indexOf('/table>') > -1 || v1.indexOf('<tr') > -1 || v1.indexOf('/tr>') > -1 || v1.indexOf('<td') > -1 || v1.indexOf('/td>') > -1 || v1.indexOf('<span') > -1 || v1.indexOf('<embed') > -1 || v1.indexOf('<object') > -1) {
1800            var msg = 'Some HTML tags are not allowed in <br><br><b>' + caption + '</b><br><br>';
1801            alert(msg, ctl);
1802            ctl.focus();
1803            return false;
1804        }
1805    }
1806    return true;
1807}
1808
1809
1810function EmptyValidator(myKey, myControl) {
1811    var myValue;
1812    if (myControl.type == "select-one")
1813        myValue = trim(myControl[myControl.selectedIndex].text);
1814    else //Text
1815        myValue = trim(myControl.value);
1816
1817    var myValueb = myValue.startsWith("-- ");
1818
1819    if (myValue == "" || myValueb == true) {
1820        var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;is required.";
1821        alert(msg, myControl);
1822        myControl.focus();
1823        return false;
1824    }
1825    return true;
1826}
1827
1828
1829function MenuValidator(myKey, myControl) {
1830    var myValue = trim(myControl.value);
1831    var re5digit = /^[a-zA-Z0-9_~!@$%^*()+={}\[\]|:'. -]+$/;
1832    if (myValue != "") {
1833        if (myValue.search(re5digit) == -1) {
1834            var msg = "<b>" + myKey + "</b> has invalid characters.\n\n Mouse over to light bulb for help.";
1835            alert(msg, myControl);
1836            myControl.focus();
1837            return false;
1838        }
1839    }
1840    return true;
1841}
1842
1843function EmailValidator(myKey, myControl) {
1844    var myValue = trim(myControl.value);
1845    var filter = /^.+@.+\..{2,7}$/
1846
1847    if (myValue != "") {
1848        if (!filter.test(myValue)) {
1849            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;
1849is invalid.";
1850            alert(msg, myControl);
1851            myControl.focus();
1852            return false;
1853        }
1854    }
1855    return true;
1856}
1857
1858
1859function EmailValidatorMultiple(myKey, myControl) {
1860    var myValueArray = trim(myControl.value);
1861    if (myValueArray != "") {
1862        myValueArray = myValueArray.split(",");
1863
1864        var i = 0;
1865        for (i = 0; i < myValueArray.length; i++) {
1866            var myValue = trim(myValueArray[i]);
1867            var filter = /^.+@.+\..{2,7}$/
1868
1869            if (!filter.test(myValue)) {
1870                var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;is invalid.";
1871                alert(msg, myControl);
1872                myControl.focus();
1873                return false;
1874            }
1875        }
1876
1877    }
1878    return true;
1879}
1880
1881
1882function PasswordValidator(myKey1, myControl1, myKey2, myControl2) {
1883    var myValue1 = trim(myControl1.value);
1884    var myValue2 = trim(myControl2.value);
1885
1886    if (myValue1 != myValue2) {
1887        var msg = "<b>" + myKey1 + "</b>&nbsp;&nbsp;&nbsp;and<b>" + myKey2 + "</b>&nbsp;&nbsp;&nbsp;must be same.";
1888        alert(msg, myControl);
1889        myControl1.focus();
1890        return false;
1891    }
1892    return true;
1893}
1894
1895function PasswordValidator2(PField) {
1896    var str = document.getElementById(PField).value;
1897    if (str.length < 6) {
1898        alert("Password must be 6 characters long.");
1899        return false;
1900    } else if (str.length > 25) {
1901        alert("Password must be less than 25 characters long.");
1902        return false;
1903    } else if (str.search(/\d/) == -1) {
1904        alert("Password must contain numeric letter.");
1905        return false;
1906    } else if (str.search(/[a-zA-Z]/) == -1) {
1907        alert("Password must contain alphabet letters.");
1908        return false;
1909    } else if (str.search(/[\!\@\#\$\%\^\&\*\(\)\_\+\.\,\:\[\]\{\}\<\>]/) == -1) {
1910        alert("Password must contain following special letters. <br><br> ! @ # $ % ^ & * ( ) _ + . , : [ ] { } < >");
1911        return false;
1912    }
1913    return true;
1914}
1915
1916
1917function FileValidator(myKey, myControl, fileType) {
1918    var myValue = trim(myControl.value);
1919    var reFile;
1920    if (fileType == 'All') {
1921        reFile = /^.+\.(([jJ][pP][eE]?[gG])|([jJ][fF][iI][fF])|([gG][iI][fF])|([iI][cC][oO])|([jJ][sS])|([pP][nN][gG])|([cC][sS][sS])|([wW][mM][vV])|([wW][mM][aA])|([pP][dD][fF])|([sS][wW][fF])|([wW][eE][bB][pP])|([mM][pP][3])|([mM][pP][4])|([rR][sS][sS])|([tT][xX][tT])|([mM][pP][gG])|([mM][pP][eE][gG])|([aA][vV][iI])|([wW][aA][vV])|([aA][iI][fF])|([aA][iI][fF][fF])|([mM][oO][vV])|([hH][tT][mM])|([hH][tT][mM][lL])|([fF][lL][aA])|([xX][mM][lL])|([jJ][sS][oO][nN]))$/;
1922    }
1923    if (fileType == 'Image') {
1924        reFile = /^.+\.(([jJ][pP][eE]?[gG])|([jJ][fF][iI][fF])|([gG][iI][fF])|([iI][cC][oO])|([pP][dD][fF])|([pP][nN][gG])|([fF][lL][aA])|([sS][wW][fF])|([wW][eE][bB][pP]))$/;
1925
1926    }
1927
1928    if (myValue != "") {
1929        if (myValue.search(reFile) == -1) {
1930            var msg;
1931            if (fileType == "All")
1932                msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;Invalid file type.";
1933            if (fileType == "Image")
1934                msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;Invalid file type. Valid files: gif, ico, wmv, wma, jpg, jpeg, flv, pdf, png, css, swf, mp3, mp4, rss, txt, mpg, mpeg, avi, wav, aif, aiff, mov, htm, html, fla, xml";
1935            alert(msg, myControl);
1936            myControl.focus();
1937            return false;
1938        }
1939    }
1940    return true;
1941}
1942
1943
1944function ColorCodeValidator(myKey, myControl) {
1945    var myValue = trim(myControl.value);
1946    var filter = /^\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
1947
1948    if (myValue != "") {
1949        if (!filter.test(myValue)) {
1950            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;Invalid color code.";
1951            alert(msg, myControl);
1952            myControl.focus();
1953            return false;
1954        }
1955    }
1956    return true;
1957}
1958
1959
1960
1961function NumberValidator(myKey, myControl) {
1962    var myValue = trim(myControl.value);
1963    var re5digit = /^[0-9]+$/;
1964    if (myValue != "") {
1965        if (myValue.search(re5digit) == -1) {
1966            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;
1966is invalid.";
1967            alert(msg, myControl);
1968            myControl.focus();
1969            return false;
1970        }
1971    }
1972    return true;
1973}
1974
1975function FilenameValidator(myKey, myControl) {
1976    var myValue = trim(myControl.value);
1977    var re5digit = /^[a-zA-Z0-9_-]+$/;
1978    if (myValue != "") {
1979        if (myValue.search(re5digit) == -1) {
1980            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;is invalid.";
1981            alert(msg, myControl);
1982            myControl.focus();
1983            return false;
1984        }
1985    }
1986    return true;
1987}
1988
1989
1990
1991function WebsiteValidator(myKey, myControl) {
1992    var myValue = trim(myControl.value.toLowerCase());
1993    var filter = /http(s)?:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{2}/;
1994
1995    if (myValue != "") {
1996        if (!filter.test(myValue)) {
1997            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;Invalid website URL. Valid URL example: http://cnn.com";
1998            alert(msg, myControl);
1999            myControl.focus();
2000            return false;
2001        }
2002    }
2003    return true;
2004}
2005
2006
2007function CSSNumberValidator(myKey, myControl) {
2008    var myValue = trim(myControl.value);
2009    var filter = /^([0-9])+%?$/
2010
2011    if (myValue != "") {
2012        if (!filter.test(myValue)) {
2013            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;Invalid value.";
2014            alert(msg, myControl);
2015            myControl.focus();
2016            return false;
2017        } else if (myValue.indexOf("%") != -1) {
2018            myValue = myValue.substring(0, myValue.length - 1);
2019            if (parseInt(myValue) > 100) {
2020                var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;% value should not be exceed 100.";
2021                alert(msg, myControl);
2022                myControl.focus();
2023                return false;
2024            }
2025        }
2026    }
2027    return true;
2028}
2029
2030
2031
2032function NumberNegativeValidator(myKey, myControl) {
2033    var myValue = trim(myControl.value);
2034    var re5digit = /^(-)?[0-9]+$/;
2035    if (myValue != "") {
2036        if (myValue.search(re5digit) == -1) {
2037            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;
2037is invalid.";
2038            alert(msg, myControl);
2039            myControl.focus();
2040            return false;
2041        }
2042    }
2043    return true;
2044}
2045
2046
2047
2048function DecimalNegativeValidator(myKey, myControl) {
2049    var myValue = trim(myControl.value);
2050    var re5digit = /^(-)?[0-9]*(\.[0-9]+)?$/;
2051    if (myValue.search(re5digit) == -1) {
2052        var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;is invalid.";
2053        alert(msg, myControl);
2054        myControl.focus();
2055        return false;
2056    }
2057    return true;
2058}
2059
2060
2061
2062function ProductDiscountValidator(myKey, myControl) {
2063    var myValue = trim(myControl.value);
2064    var re5digit = /^[0-9]*(\.[0-9]+)?(%)?$/;
2065    if (myValue != "") {
2066        if (myValue.search(re5digit) == -1) {
2067            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;is invalid.";
2068            alert(msg, myControl);
2069            myControl.focus();
2070            return false;
2071        } else if (myValue == '%') {
2072            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;is invalid.";
2073            alert(msg, myControl);
2074            myControl.focus();
2075            return false;
2076        }
2077
2078    }
2079    return true;
2080}
2081
2082
2083function ServicePackageDiscountValidator(myKey, myControl) {
2084    var myValue = trim(myControl.value.toLowerCase());
2085    var re5digit = /^[0-9]*(\.[0-9]+)?([f%])?$/;
2086    if (myValue != "") {
2087        if (myValue.search(re5digit) == -1) {
2088            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;
2088is invalid.";
2089            alert(msg, myControl);
2090            myControl.focus();
2091            return false;
2092        } else if (myValue == '%' || myValue == 'f') {
2093            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;is invalid.";
2094            alert(msg, myControl);
2095            myControl.focus();
2096            return false;
2097        }
2098
2099    }
2100    return true;
2101}
2102
2103
2104function FormnameValidator(myKey, myControl) {
2105    var myValue = trim(myControl.value);
2106    var re5digit1 = /^[a-zA-Z0-9_]+$/;
2107    var re5digit2 = /^{{[a-zA-Z0-9_]+}}$/;
2108    if (myValue != "") {
2109        if (myValue.search(re5digit1) == -1 && myValue.search(re5digit2) == -1) {
2110            var msg = "<b>" + myKey + "</b>&nbsp;&nbsp;&nbsp;is invalid.";
2111            alert(msg, myControl);
2112            myControl.focus();
2113            return false;
2114        }
2115    }
2116    return true;
2117}
2118
2119function ArrayShuffle(myAds) {
2120    var cnt = 0;
2121    var o = new Array();
2122    for (var i in myAds) {
2123        o[cnt] = myAds[i];
2124        cnt = cnt + 1;
2125    }
2126
2127    for (var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
2128
2129    cnt = 0;
2130    for (var i in myAds) {
2131        myAds[i] = o[cnt];
2132        cnt = cnt + 1;
2133    }
2134    return myAds;
2135}
2136
2137function OpenLoginPopupM(qrStr) {
2138    var s = readCookie('loginStatus');
2139    var pg = 'a';
2140    var url = window.location.href;
2141    var myParameters = new Array();
2142    myParameters = ReadSParameters(qrStr);
2143    var sg = 'sp';
2144    var a = myParameters['a'];
2145    var as = readCookie('AppServer');
2146    var st = window.location.hostname;
2147    if (url.split("/").length == 9) { // Folder Sites
2148        var st = st + "/" + url.split("/")[7];
2149    }
2150    var lg = '.' + pg + sg;
2151    if (a == '1' && s != 'Yes') {
2152        createCookie('curl', escape(qrStr));
2153        window.location = as + 'target_form2' + lg + '?pform={{Login}}&sname=target_form2' + lg + '&site=' + st;
2154        return false;
2155    } else {
2156        return true;
2157    }
2158}
2159
2160
2161function HtmlTagCounter(ctl) {
2162    var searchtext = ctl.value.toLowerCase();
2163    var opendiv = searchtext.match(new RegExp('<div'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2164    var closediv = searchtext.match(new RegExp('</div'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2165    var openp = searchtext.match(new RegExp('<p'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2166    var closep = searchtext.match(new RegExp('</p'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2167    var openspan = searchtext.match(new RegExp('<span'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2168    var closespan = searchtext.match(new RegExp('</span'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2169    var opentable = searchtext.match(new RegExp('<table'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2170    var closetable = searchtext.match(new RegExp('</table'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2171    var opentr = searchtext.match(new RegExp('<tr'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2172    var closetr = searchtext.match(new RegExp('</tr'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2173    var opentd = searchtext.match(new RegExp('<td'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2174    var closetd = searchtext.match(new RegExp('</td'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2175    var openli = searchtext.match(new RegExp('<li>'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2176    var closeli = searchtext.match(new RegExp('</li>'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2177    var openul = searchtext.match(new RegExp('<ul'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2178    var closeul = searchtext.match(new RegExp('</ul'.toString().replace(/(?=[.\\+*?[^\]$(){}\|])/g, "\\"), "ig"));
2179
2180    var msg1 = "";
2181    var msgdiv = "";
2182    var msgp = "";
2183    var msgspan = "";
2184    var msgtable = "";
2185    var msgtr = "";
2186    var msgtd = "";
2187    var msgli = "";
2188    var msgul = "";
2189
2190    if (!(openp)) { openp = ""; }
2191    if (!(closep)) { closep = ""; }
2192    if (!(opendiv)) { opendiv = ""; }
2193    if (!(closediv)) { closediv = ""; }
2194    if (!(openspan)) { openspan = ""; }
2195    if (!(closespan)) { closespan = ""; }
2196    if (!(opentable)) { opentable = ""; }
2197    if (!(closetable)) { closetable = ""; }
2198    if (!(opentr)) { opentr = ""; }
2199    if (!(closetr)) { closetr = ""; }
2200    if (!(opentd)) { opentd = ""; }
2201    if (!(closetd)) { closetd = ""; }
2202    if (!(openli)) { openli = ""; }
2203    if (!(closeli)) { closeli = ""; }
2204    if (!(openul)) { openul = ""; }
2205    if (!(closeul)) { closeul = ""; }
2206
2207    if (opendiv.length != closediv.length || openp.length != closep.length || openspan.length != closespan.length || opentable.length != closetable.length || opentr.length != closetr.length || opentd.length != closetd.length || openli.length != closeli.length || openul.length != closeul.length) {
2208
2209        if (opendiv.length != closediv.length) { msgdiv = 'Open &#60;DIV&#62; (' + opendiv.length + '), Closed &#60;/DIV&#62;(' + closediv.length + '). ' }
2210        if (openp.length != closep.length) { msgp = '\n Open &#60;P&#62; (' + openp.length + '), Closed &#60;/P&#62;(' + closep.length + ')' }
2211        if (openspan.length != closespan.length) { msgspan = '\n Open &#60;SPAN&#62; (' + openspan.length + '), Closed &#60;/SPAN&#62;(' + closespan.length + ')' }
2212        if (opentable.length != closetable.length) { msgtable = '\n Open &#60;TABLE&#62; (' + opentable.length + '), Closed &#60;/TABLE&#62;(' + closetable.length + ')' }
2213        if (opentr.length != closetr.length) { msgtr = '\n Open &#60;TR&#62; (' + opentr.length + '), Closed &#60;/TR&#62;(' + closetr.length + ')' }
2214        if (opentd.length != closetd.length) { msgtd = '\n Open &#60;TD&#62; (' + opentd.length + '), Closed &#60;/TD&#62;(' + closetd.length + ')' }
2215        if (openli.length != closeli.length) { msgli = '\n Open &#60;LI&#62; (' + openli.length + '), Closed &#60;/LI&#62;(' + closeli.length + ')' }
2216        if (openul.length != closeul.length) { msgul = '\n Open &#60;UL&#62; (' + openul.length + '), Closed &#60;/UL&#62;(' + closeul.length + ')' }
2217
2218        msg1 = 'See Missing HTML Tags: \n' + msgdiv + msgp + msgspan + msgtable + msgtr + msgtd + msgli + msgul;
2219        alert(msg1, ctl);
2220        ctl.focus();
2221        return false;
2222    }
2223
2224    //alert("No error");
2225    return true;
2226}
2227
2228
2229function OpenPopup(uniqueId, pageUrl, title, width, height, leftOffset, rightOffset, isCentered, isResizable, isScrollable) {
2230    document.body.style.position = 'static';
2231    var v1 = "width=" + width + "px,height=" + height + "px,left=" + leftOffset + "px,right=" + rightOffset + "px,center=" + isCentered + ",resize=" + isResizable + ",scrolling=" + isScrollable;
2232    calcPopup = dhtmlmodal.open(uniqueId, "iframe", pageUrl, title, v1)
2233    calcPopup.onclose = function() { return true }
2234}
2235
2236
2237function OpenPopup2(pageUrl, window_type, fwidth, fheight) {
2238    if (!document.getElementById('f_Popup2_button')) {
2239        var msg = '<iframe id="f-mfp-iframe" class="f-mfp-iframe" allowfullscreen="" src="' + pageUrl + '" frameborder="0"></iframe>';
2240        document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", "<button id='f_Popup2_button' type='button' data-bs-toggle='modal' data-bs-target='#f_Popup2' style='display:none;'></button><div class='f_Popup2_box modal fade' id='f_Popup2' data-bs-backdrop='static' data-bs-keyboard='false' tabindex='-1' aria-labelledby='f_Popup2Label' aria-hidden='true'><div class='modal-dialog modal-dialog-centered modal-dialog-scrollable mx-auto'><div class='modal-content'><button type='button' class='f_Popup2_close btn-close position-absolute' data-bs-dismiss='modal' aria-label='Close'><svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-x-lg' viewBox='0 0 16 16'>  <path d='M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'/></svg></button><div class='modal-body text-center' style='white-space: pre-wrap;'><p id='f_loader'><i class='fa fa-spinner fa-spin' aria-hidden='true'></i></p>" + msg + "</div></div></div><style>
2240.modal-dialog-scrollable .modal-content {max-height: none;overflow:visible;}.modal-body {padding:0;} .f_Popup2_close{right:-1rem;z-index:999;top:-1rem;background-color:#0d6efd;border-radius:50px;padding:.5rem;opacity:1;box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);background-image:none;color:#fff;display:flex;justify-content:center;align-items:center;font-weight:700;font-size:18px}.modal-dialog{display:flex;justify-content:center} .f_Popup2_close:hover{color:#fff;background-color: red;opacity:1} #f-mfp-iframe{width:100%;height:90vh} @media (min-width:992px) {.modal-content{width:auto;border-width:0;}#f-mfp-iframe{width:" + fwidth + "px;height:" + fheight + "px;}}#f_loader{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}#f_loader i{font-size:4rem;color:#0d6efd;opacity:0.8} @media (max-width:991px) {#f_Popup2 .modal-dialog {max-width: 85vw;}}</style></div>");
2241        document.getElementById('f-mfp-iframe').onload = function() {
2242            document.getElementById("f_loader").remove();
2243        };
2244        document.getElementById('f_Popup2_button').click();
2245        document.getElementsByClassName('f_Popup2_close')[0].addEventListener('click', function() {
2246            document.getElementById('f_Popup2_button').remove();
2247            document.getElementsByClassName('f_Popup2_box')[0].remove();
2248        });
2249    }
2250}
2251
2252
2253function OpenPopup3(pageUrl, window_type) {
2254    if (!document.getElementById('f_Popup3_button')) {
2255        if (pageUrl.indexOf('?pul=') != -1) {
2256            var aurl = pageUrl.split('?pul=').pop();
2257            aurl = (aurl.indexOf('http') == -1) ? 'http://' + aurl : aurl; // add http if not added
2258            pageUrl = pageUrl.split('?pul').shift();
2259            var msg = '<figure class="figure"><img id="f-mfp-img" class="mb-0" src="' + pageUrl + '" class="figure-img img-fluid" style="cursor:pointer" onclick="window.open(\'' + aurl + '\', \'_blank\')"></figure>';
2260        } else {
2261            var msg = '<figure class="figure"><img id="f-mfp-img" class="mb-0" src="' + pageUrl + '" class="figure-img img-fluid"></figure>';
2262        }
2263        document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", "<button id='f_Popup3_button' type='button' data-bs-toggle='modal' data-bs-target='#f_Popup3' style='display:none;'></button><div class='f_Popup3_box modal fade' id='f_Popup3' data-bs-backdrop='static' data-bs-keyboard='false' tabindex='-1' aria-labelledby='f_Popup3Label' aria-hidden='true'><div class='modal-dialog modal-dialog-centered modal-dialog-scrollable mx-auto'><div class='modal-content'><button type='button' class='f_Popup3_close btn-close position-absolute' data-bs-dismiss='modal' aria-label='Close'><svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-x-lg' viewBox='0 0 16 16'>  <path d='M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'/></svg></button><div class='modal-body text-center' style='white-space: pre-wrap;'>" + msg + "</div></div></div><style>
2263.modal-dialog-scrollable .modal-content {max-height: none;overflow:visible;}.modal-body {padding:0;} .f_Popup3_close{right:-1rem;z-index:999;top:-1rem;background-color:#0d6efd;border-radius:50px;padding:.5rem;opacity:1;box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);background-image:none;color:#fff;display:flex;justify-content:center;align-items:center;font-weight:700;font-size:18px}.f_Popup3_close:hover{color:#fff;background-color: red;opacity:1}.modal-dialog{display:flex;justify-content:center} .modal-content{width:auto;border-width:0} #f-mfp-img{max-height:90vh;max-width: 90vw;} @media (min-width:576px) {.modal-content{width:auto;}.modal-dialog{max-width:800px;}} .modal-content{background:0 0}}</style></div>");
2264        document.getElementById('f_Popup3_button').click();
2265        document.getElementsByClassName('f_Popup3_close')[0].addEventListener('click', function() {
2266            document.getElementById('f_Popup3_button').remove();
2267            document.getElementsByClassName('f_Popup3_box')[0].remove();
2268        });
2269    }
2270}
2271
2272function OpenPopup4(pageUrl, window_type, fwidth, fheight) {
2273    if (!document.getElementById('f_Popup4_button')) {
2274        var msg = '<iframe id="f-mfp-iframe" class="f-mfp-iframe" allowfullscreen="" src="' + pageUrl + '" frameborder="0"></iframe>';
2275        document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", "<button id='f_Popup4_button' type='button' data-bs-toggle='modal' data-bs-target='#f_Popup4' style='display:none;'></button><div class='f_Popup4_box modal fade' id='f_Popup4' data-bs-backdrop='static' data-bs-keyboard='false' tabindex='-1' aria-labelledby='f_Popup4Label' aria-hidden='true'><div class='modal-dialog modal-dialog-centered modal-dialog-scrollable mx-auto'><div class='modal-content'><button type='button' class='f_Popup4_close btn-close position-absolute' data-bs-dismiss='modal' aria-label='Close'><svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-x-lg' viewBox='0 0 16 16'>  <path d='M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'/></svg></button><div class='modal-body text-center' style='white-space: pre-wrap;'><p id='f_loader'><i class='fa fa-spinner fa-spin' aria-hidden='true'></i></p>" + msg + "</div></div></div><style>
2275.modal-dialog-scrollable .modal-content {max-height: none;overflow:visible;}.modal-body {padding:0;} .f_Popup4_close{right:-1rem;z-index:999;top:-1rem;background-color:#0d6efd;border-radius:50px;padding:.5rem;opacity:1;box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);background-image:none;color:#fff;display:flex;justify-content:center;align-items:center;font-weight:700;font-size:18px}.f_Popup4_close:hover{color:#fff;background-color: red;opacity:1} @media (min-width:992px) {#f_Popup4 .modal-dialog {max-width: 70vw;}} @media (max-width:991px) {#f_Popup4 .modal-dialog {max-width: 85vw;}} .f-mfp-iframe {width:100%;min-height:90vh;height:90vh;}#f_loader{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}#f_loader i{font-size:4rem;color:#0d6efd;opacity:0.8}</style></div>");
2276        document.getElementById('f-mfp-iframe').onload = function() {
2277            document.getElementById("f_loader").remove();
2278        };
2279        document.getElementById('f_Popup4_button').click();
2280        document.getElementsByClassName('f_Popup4_close')[0].addEventListener('click', function() {
2281            document.getElementById('f_Popup4_button').remove();
2282            document.getElementsByClassName('f_Popup4_box')[0].remove();
2283        });
2284    }
2285}
2286
2287
2288function OpenPopup5(pageUrl, window_type, fwidth, fheight) {
2289    if (!document.getElementById('f_Popup5_button')) {
2290        pageUrl = readCookie('AppServer') + pageUrl;
2291        var msg = '<iframe id="f-mfp-iframe" class="f-mfp-iframe" allowfullscreen="" src="' + pageUrl + '" frameborder="0"></iframe>';
2292        document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", "<button id='f_Popup5_button' type='button' data-bs-toggle='modal' data-bs-target='#f_Popup5' style='display:none;'></button><div class='f_Popup5_box modal fade' id='f_Popup5' data-bs-backdrop='static' data-bs-keyboard='false' tabindex='-1' aria-labelledby='f_Popup5Label' aria-hidden='true'><div class='modal-dialog modal-dialog-centered modal-dialog-scrollable mx-auto'><div class='modal-content'><button type='button' class='f_Popup5_close btn-close position-absolute' data-bs-dismiss='modal' aria-label='Close'><svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-x-lg' viewBox='0 0 16 16'>  <path d='M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'/></svg></button><div class='modal-body text-center' style='white-space: pre-wrap;'><p id='f_loader'><i class='fa fa-spinner fa-spin' aria-hidden='true'></i></p>" + msg + "</div></div></div><style>
2292.modal-dialog-scrollable .modal-content {max-height: none;overflow:visible;}.modal-body {padding:0;} .f_Popup5_close{right:-1rem;z-index:999;top:-1rem;background-color:#0d6efd;border-radius:50px;padding:.5rem;opacity:1;box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);background-image:none;color:#fff;display:flex;justify-content:center;align-items:center;font-weight:700;font-size:18px}.f_Popup5_close:hover{color:#fff;background-color: red;opacity:1} @media (min-width:992px) {#f_Popup5 .modal-dialog {max-width: 70vw;}}@media (max-width:991px) {#f_Popup5 .modal-dialog {max-width: 85vw;}} .f-mfp-iframe {width:100%;min-height:90vh;height:90vh;}#f_loader{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}#f_loader i{font-size:4rem;color:#0d6efd;opacity:0.8}</style></div>");
2293        document.getElementById('f-mfp-iframe').onload = function() {
2294            document.getElementById("f_loader").remove();
2295        };
2296        document.getElementById('f_Popup5_button').click();
2297        document.getElementsByClassName('f_Popup5_close')[0].addEventListener('click', function() {
2298            document.getElementById('f_Popup5_button').remove();
2299            document.getElementsByClassName('f_Popup5_box')[0].remove();
2300        });
2301    }
2302}
2303
2304function OpenYouTube(id) {
2305    if (!document.getElementById('f_YT_button')) {
2306        var msg = '<iframe id="f-mfp-iframe" class="f-mfp-iframe" allowfullscreen="" src="https://www.youtube.com/embed/' + id + '?autoplay=1" scrolling="no" frameborder="0"></iframe>';
2307        document.getElementsByTagName("body")[0].insertAdjacentHTML("beforeend", "<button id='f_YT_button' type='button' data-bs-toggle='modal' data-bs-target='#f_YT' style='display:none;'></button><div class='f_YT_box modal fade' id='f_YT' data-bs-backdrop='static' data-bs-keyboard='false' tabindex='-1' aria-labelledby='f_YTLabel' aria-hidden='true'><div class='modal-dialog modal-dialog-centered mx-auto'><div class='modal-content' id='YT_parent'><button type='button' class='f_YT_close btn-close position-absolute' data-bs-dismiss='modal' aria-label='Close'><svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='currentColor' class='bi bi-x-lg' viewBox='0 0 16 16'>  <path d='M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z'/></svg></button><div class='modal-body text-center' style='white-space: pre-wrap;'><p id='f_loader'><i class='fa fa-spinner fa-spin' aria-hidden='true'></i></p>" + msg + "</div></div></div><style>#YT_parent{width:70vw;height:39.43vw}.modal-dialog{max-width:none;display:flex;align-items:center;justify-content:center}
2307.modal-dialog-scrollable .modal-content {max-height: none;overflow:visible;}.modal-body {padding:0;} .f_YT_close{right:-1rem;z-index:999;top:-1rem;background-color:red;border-radius:50px;padding:.5rem;opacity:1;box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);background-image:none;color:#fff;display:flex;justify-content:center;align-items:center;font-weight:700;font-size:18px}.f_YT_close:hover{color:#fff;background-color: #333;opacity:1} .f-mfp-iframe {width:100%;height:100%;}#f_loader{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}#f_loader i{font-size:4rem;color:red;opacity:0.8}@media (max-width:576px){#YT_parent{width:85vw;height:48vw}}</style></div>");
2308        document.getElementById('f-mfp-iframe').onload = function() {
2309            document.getElementById("f_loader").remove();
2310        };
2311        document.getElementById('f_YT_button').click();
2312        document.getElementsByClassName('f_YT_close')[0].addEventListener('click', function() {
2313            document.getElementById('f_YT_button').remove();
2314            document.getElementsByClassName('f_YT_box')[0].remove();
2315        });
2316    }
2317}

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.