PageSourceSearch

https://kaumudi.com/epaper/assets/js/custom.js?v=P

js kaumudi.com collected 2026-10-02 21:56:50 UTC 45,023 bytes, 849 lines download raw bytes

1/*
2Date: 18-05-2018
3*/
4var KAUMUDI = KAUMUDI || {};
5$(document).ready(function () {
6    KAUMUDI.EPAPER.init();
7});
8KAUMUDI.EPAPER = (function () {
9    /***************
10    *Private Region*
11    ****************/
12    var web_url = '', areaimg_url = '', hostAddress = window.location.origin;
13    function alertSignIn() {
14        if ((typeof is_newstrack !== 'undefined' && is_newstrack) || (typeof reqProduct !== 'undefined' && reqProduct !== '')) {
15            return false;
16        }
17        window.location.href = window.location.origin + '/epaper/';
18    }
19    function onDateSelect(date) {
20        var formatDte = moment(date, "DD/MM/YYYY").format("MMMM DD, YYYY");
21        $("#epDateDialog").dialog("close");
22        $(".audio-btn").addClass('hide');
23        $(".video-btn").addClass('hide');
24        $("#audio-wrap").find('audio')[0].pause();
25        $("#audio-wrap").removeClass('sactive');
26        $("#ep_dte_text").text(formatDte);
27        $("#ep_dte_text").attr("data-dte", moment(date, "DD/MM/YYYY").format("DD-MM-YYYY"));
28        var formData = new FormData();
29        formData.append("prdt_code", $("#ep_prdt").attr("data-pdt"));
30        formData.append("ep_date", formatDte);
31        if (reqEdtn) {
32            formData.append("edition", reqEdtn);
33        }
34        KAUMUDI.utils.showLoader();
35        function successCallBack(data) {
36            $("#no-edition").addClass('hide');
37            $("#epEditionDialog").html(data.editions);
38            if (data.editions_list && data.editions_list[0]) {
39                if (!reqEdtn) {
40                    $("#ep_edition_text").text(data.editions_list[0]["name"]);
41                    $("#ep_edition").attr("data-edt", data.editions_list[0]["code"]);
42                    $("#ep_edition").find('.dropdown-menu').html(data.edts_html);
43                } else {
44                    $("#ep_edition").find('.dropdown-menu').html(data.edts_html);
45                    if ($('#ep_edition').attr("data-edt") != reqEdtn) {
46                        $("li[data-edt='" + reqEdtn + "']").click();
47                    }
48                }
49                setAudioURL()
50            } else {
51                $("#ep_edition_text").text("No Editions");
52                $("#ep_edition").find('.dropdown-menu').html("<li>No Editions Exists</li>");
53                $("#no-edition").removeClass('hide');
54                $("#ep_audio_button").attr("href", "#");
55            }
56            setPagesImgs(data);
57        }
58        function errorStatus(textStatus, errorThrown) {
59            KAUMUDI.utils.hideLoader();
60        }
61        KAUMUDI.utils.sendAjaxPost('EpaperController/GetEditionsPages' + (reqEdtn || (typeof is_newstrack !== 'undefined' && is_newstrack) ? "?pr=1" : ""), formData, 'json', successCallBack, errorStatus);
62    }
63    function setWebNews(newsId, scrollNews) {
64        web_url = '';
65        $(".audio-btn").addClass('hide');
66        $(".video-btn").addClass('hide');
67        $("#audio-wrap").removeClass('sactive');
68        $("#audio-wrap").find('audio')[0].pause();
69        var formData = new FormData();
70        formData.append("news_id", newsId);
71        function successCallBack(data) {
72            web_url = data.web_url;
73            $("[data-network]").attr("data-url", web_url ? encodeURI(web_url + '&s_im=' + areaimg_url) : encodeURI(areaimg_url));
74            $("[data-network]").attr("data-image", encodeURI(hostAddress + areaimg_url));
75            var hasNewstrackAccess = (typeof reqEdtn !== 'undefined' && reqEdtn !== '') || (typeof is_newstrack !== 'undefined' && is_newstrack);
76            if (hasNewstrackAccess) {
77                if (web_url && web_url.indexOf('newstrack.live') === -1) {
78                    web_url = "https://newstrack.live/Epaper/EpaperPreview?g_url=" + web_url + "&g_nt=1";
79                }
80            }
81            $("#web_link").attr("data-url", web_url);
82            if (data.title) {
83                $("#no-web-news").addClass('hide');
84                $("#news_head").text(data.title);
85                $("#news_pub").html(data.published_on);
86                $("#news_desc").html(data.news_desc);
87                $(".nws_con").show();
88                if (data.audio_path) {
89                    $("#audio-wrap").find('audio').attr("src", data.audio_path);
90                    $(".audio-btn").removeClass('hide');
91                } else {
92                    $(".audio-btn").addClass('hide');
93                }
94                if (data.video_id) {
95                    $(".video-btn").attr("data-vid", data.video_id);
96                    $(".video-btn").removeClass('hide');
97                } else {
98                    $(".video-btn").addClass('hide');
99                }
100            } else {
101                setNoWebNews();
102            }
103        }
104        function errorStatus(textStatus, errorThrown) {
105            KAUMUDI.utils.hideLoader();
106        }
107        KAUMUDI.utils.sendAjaxPost('EpaperController/GetWebNews' + (reqEdtn || (typeof is_newstrack !== 'undefined' && is_newstrack) ? "?pr=1" : ""), formData, 'json', successCallBack, errorStatus);
108    }
109    function setSelectedAreaImg(coords, shape, scrollNews) {
110        var pageImg = $("#epaper_img").find('#epaper_pge_img').attr('src');
111        var coordinates = coords ? coords.replace(/,/g, "_") : "0";
112        var imgPathPieces = pageImg ? pageImg.split("/") : [];
113        if (imgPathPieces) {
114            imgPathPieces[imgPathPieces.length - 1] = "images/" + shape + "_" + coordinates + '.jpg';
115            areaimg_url = imgPathPieces.join("/");
116            if (!shape) {
117                KAUMUDI.EPAPER.setNoAreaImg();
118            } else {
119                $("#img_view").html('<img src="' + areaimg_url + '" onerror="KAUMUDI.EPAPER.setNoAreaImg()"/>');
120                $("[data-network]").attr("data-url", web_url ? encodeURI(web_url + '&s_im=' + encodeURI(areaimg_url)) : encodeURI(areaimg_url));
121                $("[data-network]").attr("data-image", encodeURI(hostAddress + areaimg_url));
122            }
123        }
124        $("#img_view").removeClass('hide');
125        $("#text_view").addClass('hide');
126        $("#img_view_btn").addClass('hide');
127        $("#txt_view_btn").removeClass('hide');
128        if (scrollNews) {
129            var logoTop = $("#ep_prdt").attr("data-pdt") == 'FSH' ? 190 : 148;
130            $('html, body').animate({
131                scrollTop: ($("#sel_disp").offset().top - logoTop)
132            }, 1500);
133        }
134    }
135    function setAvailableDateEdtPage(prdt, sp_id) {
136        $(".audio-btn").addClass('hide');
137        $("#audio-wrap").removeClass('sactive');
138        $("#audio-wrap").find('audio')[0].pause();
139        var formData = new FormData();
140        formData.append("prdt", prdt);
141        formData.append("sp_id", sp_id); //special page id
142        KAUMUDI.utils.showLoader();
143        function successCallBack(data) {
144            $("#no-edition").addClass('hide');
145            $("#ep_dte_text").text(data.ep_date ? moment(data.ep_date["day"] + "/" + data.ep_date["month"] + "/" + data.ep_date["year"], "DD/MM/YYYY").format("MMMM DD, YYYY") : moment().format("MMMM DD, YYYY"));
146            if (data.editions_list && data.editions_list[0]) {
147                $("#ep_edition_text").text(data.editions_list[0]["name"]);
148                $("#ep_edition").attr("data-edt", data.editions_list[0]["code"]);
149                $("#ep_edition").find('.dropdown-menu').html(data.edts_html);
150            } else {
151                $("#ep_edition_text").text("No Editions");
152                $("#ep_edition").find('.dropdown-menu').html("<li>No Editions Exists</li>");
153                $("#no-edition").removeClass('hide');
154            }
155            setPagesImgs(data);
156        }
157        function errorStatus(textStatus, errorThrown) {
158            KAUMUDI.utils.hideLoader();
159        }
160        KAUMUDI.utils.sendAjaxPost('EpaperController/GetAvailableEdition' + (reqEdtn || (typeof is_newstrack !== 'undefined' && is_newstrack) ? "?pr=1" : ""), formData, 'json', successCallBack, errorStatus);
161    }
162    function setPages() {
163        $(".audio-btn").addClass('hide');
164        $("#audio-wrap").removeClass('sactive');
165        $("#audio-wrap").find('audio')[0].pause();
166        var formData = new FormData();
167        formData.append("prdt_code", $("#ep_prdt").attr("data-pdt"));
168        formData.append("ep_date", $("#ep_dte_text").text());
169        formData.append("edition", $("#ep_edition").attr("data-edt"));
170        KAUMUDI.utils.showLoader();
171        function successCallBack(data) {
172            $("#no-edition").addClass('hide');
173            setPagesImgs(data);
174        }
175        function errorStatus(textStatus, errorThrown) {
176            KAUMUDI.utils.hideLoader();
177        }
178        KAUMUDI.utils.sendAjaxPost('EpaperController/GetEditionsPages' + (reqEdtn || (typeof is_newstrack !== 'undefined' && is_newstrack) ? "?pr=1" : ""), formData, 'json', successCallBack, errorStatus);
179    }
180    function setMapImgHtml(page) {
181        $(".audio-btn").addClass('hide');
182        $("#audio-wrap").removeClass('sactive');
183        $("#audio-wrap").find('audio')[0].pause();
184        var formData = new FormData();
185        formData.append("prdt_code", $("#ep_prdt").attr("data-pdt"));
186        formData.append("ep_date", $("#ep_dte_text").text());
187        formData.append("edition", $("#ep_edition").attr("data-edt") || "EPR");
188        formData.append("page", page);
189        KAUMUDI.utils.showLoader();
190        function successCallBack(mapimg_html) {
191            $("#no-edition").addClass('hide');
192            $("#epaper_img").html(mapimg_html);
193            setRelHeightCoords();
194            $('#epaper_pge_img').maphilight();
195            setNewsListHtml();
196            var actCoords = $('area:first').attr("actcoords");
197            setSelectedAreaImg(actCoords ? actCoords : $('area:first').attr("coords"), $('area:first').attr("shape"), false);
198            setWebNews($('area:first').attr("newsid"), false);
199            setMetaPageTitle();
200            setGAPageViews(); // Google Analytics
201        }
202        function errorStatus(textStatus, errorThrown) {
203            KAUMUDI.utils.hideLoader();
204        }
205        KAUMUDI.utils.sendAjaxPost('EpaperController/GetImageMapHtml', formData, 'html', successCallBack, errorStatus);
206    }
207    function setNoWebNews() {
208        $(".audio-btn").addClass('hide');
209        $("#audio-wrap").removeClass('sactive');
210        $("#audio-wrap").find('audio')[0].pause();
211        $("#news_head").text("");
212        $("#news_desc").html("");
213        $("#news_pub").html("");
214        $(".nws_con").hide();
215        $("#no-web-news").removeClass('hide');
216    }
217    function setPagesImgs(data) {
218
219        if (data.pages_list && data.pages_list[0]) {
220            var pageName = data.pages_list[0].split("_");
221            $("#ep_page_text").text(parseInt(pageName[0]) + ' ' + pageName[1]);
222            $("#ep_page").attr("data-page", data.pages_list[0]);
223            $("#ep_page").find('.dropdown-menu').html(data.pges_html);
224            $(".pges-box").html(data.pges_thumb_html);
225            $(".pge-title").text($("#ep_edition_text").text());
226            $("#epaper_img").html(data.mapimg_html);
227            setRelHeightCoords();
228            setNewsListHtml();
229            setMetaPageTitle();
230            setGAPageViews();
231        } else {
232            $("#ep_page_text").text("No Pages");
233            $("#ep_page").find('.dropdown-menu').html("<li>No Pages Exists</li>");
234            $("#no-edition").removeClass('hide');
235            KAUMUDI.utils.hideLoader();
236        }
237        $('#epaper_pge_img').maphilight();
238        var actCoords = $('area:first').attr("actcoords");
239        setSelectedAreaImg(actCoords ? actCoords : $('area:first').attr("coords"), $('area:first').attr("shape"), false);
240        setWebNews($('area:first').attr("newsid"), false);
241        setAudioURL();
242    }
243    function getImgHtml() {
244        $(".epaper_view").css({ "overflow-x": "visible", "overflow-y": "visible" });
245        html2canvas([document.getElementById('news_cont')], {
246            onrendered: function (canvas) {
247                document.body.appendChild(canvas);
248                var ctx = canvas.getContext("2d");
249                ctx.fillStyle = "#FFF";
250                ctx.fill();
251                var data = canvas.toDataURL('image/png');
252                $(".epaper_view").attr("style", "overflow-x:hidden;overflow-y:auto;");
253                var a = document.createElement('a');
254                // toDataURL defaults to png, so we need to request a jpeg, then convert for file download.
255                a.href = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
256                a.download = 'keralakaumudi.jpg';
257                a.click();
258                canvas.remove();
259            }
260        });
261    }
262
263    function setNewsListHtml() {
264        var formData = new FormData(),
265            newsIds = [];
266        $(".nws-title").text($("#ep_page_text").text());
267        $("#epaper_img").find("area").each(function () {
268            newsIds.push($(this).attr('newsid'));
269        });
270        formData.append("news_ids", JSON.stringify(newsIds));
271        KAUMUDI.utils.showLoader();
272        function successCallBack(news_html) {
273            KAUMUDI.utils.hideLoader();
274            $('.nws-box').html(news_html);
275            if (news_html) {
276                $("#pg_view").css({ "width": "50%" });
277                $(".pges-list-box").css({ "border-left": "none" });
278                $("#nws_list_view").css({ "display": "block" });
279            } else {
280                $("#pg_view").css({ "width": "75%" });
281                $("#nws_list_view").css({ "display": "none" });
282                $(".pges-list-box").css({ "border-left": "1px solid #dedcdc" });
283            }
284            setAudioURL()
285        }
286        function errorStatus(textStatus, errorThrown) {
287            KAUMUDI.utils.hideLoader();
288        }
289        KAUMUDI.utils.sendAjaxPost('EpaperController/GetNewsListHtml', formData, 'html', successCallBack, errorStatus);
290    }
291    function cropImage(image_target, left, top, width, height) {
292        var crop_canvas;
293        crop_canvas = document.createElement('canvas');
294        crop_canvas.width = width;
295        crop_canvas.height = height + 200;
296        var crop_canvas_ctx = crop_canvas.getContext('2d');
297        crop_canvas_ctx.rect(0, height, width, height + 200);
298        crop_canvas_ctx.fillStyle = "#f1f1f1";
299        crop_canvas_ctx.fill();
300        crop_canvas_ctx.drawImage(image_target, left, top, width, height, 0, 0, width, height);
301        $('body').append('<img src="' + crop_canvas.toDataURL("image/jpeg") + '"/>');
302    }
303    function setCalendarDaysActive() {
304        var month = parseInt($("#datepicker").find('[data-handler="selectMonth"]').val()) + 1,
305            year = parseInt($("#datepicker").find('[data-handler="selectYear"]').val()),
306            day = 0;
307        var formData = new FormData();
308        formData.append("prdt_code", $("#ep_prdt").attr("data-pdt"));
309        formData.append("prdt_yr", year);
310        formData.append("prdt_mnth", month);
311        KAUMUDI.utils.showLoader();
312        function successCallBack(days) {
313            $("#datepicker").find('.ui-datepicker-calendar tbody td[data-handler="selectDay"]').each(function () {
314                day = parseInt($(this).find('.ui-state-default').text());
315                if (days.indexOf(day) === -1) {
316                    $(this).css({ "pointer-events": "none" });
317                    $(this).find('.ui-state-default').css({ "background": "#d6d6d6" });
318                }
319            });
320            KAUMUDI.utils.hideLoader();
321        }
322        function errorStatus(textStatus, errorThrown) {
323            KAUMUDI.utils.hideLoader();
324        }
325        KAUMUDI.utils.sendAjaxPost('EpaperController/GetActiveDateList' + (reqEdtn ? "?pr=1" : ""), formData, 'json', successCallBack, errorStatus);
326        $('body').find('.ui-datepicker-month,.ui-datepicker-year').change(function () {
327            setCalendarDaysActive();
328        });
329        $('body').find('.ui-datepicker-prev,.ui-datepicker-next').click(function () {
330            setCalendarDaysActive();
331        });
332    }
333    function recalcCoords() {
334        var imgSize = $("#epaper_img").find('#epaper_pge_img')[0];
335        var maskWidth = 580;
336        var scale = maskWidth / imgSize.naturalWidth,
337            widthRatio = imgSize.width / maskWidth,
338            heightRatio = imgSize.height / (imgSize.naturalHeight * scale);
339        if (imgSize.width == 580) return;
340        $("#epaper_img").find('area').each(function () {
341            var area = $(this),
342                shape = area.attr('shape').toLowerCase().substr(0, 4);
343            var i, coords = area.attr('coords').split(',');
344            if (shape == 'circ') {
345                var x1 = parseInt(coords[0]),
346                    x2 = x1 + parseInt(coords[2]),
347                    newRad = Math.round(x2 * widthRatio - x1 * widthRatio);
348                coords[0] = Math.round(x1 * widthRatio);
349                coords[1] = Math.round(coords[1] * heightRatio);
350                coords[2] = newRad;
351            } else {
352                for (i = 0; i < coords.length; i++) {
353                    coords[i] = i % 2 == 0 ? parseInt(parseInt(coords[i]) * widthRatio) : parseInt(parseInt(coords[i]) * heightRatio);
354                }
355            }
356            var actCoords = area.attr('actcoords');
357            area.attr('actcoords', actCoords ? actCoords : area.attr('coords'));
358            area.attr('coords', coords.join(','));
359        });
360        KAUMUDI.utils.hideLoader();
361
362    }
363    function setRelHeightCoords() {
364        $("#epaper_img").find('#epaper_pge_img').one("load", function () {
365            $(".pges-box").css({ "height": $("#epaper_img").find('#epaper_pge_img').height() + 'px' });
366            $(".nws-box").css({ "height": $("#epaper_img").find('#epaper_pge_img').height() + 'px' });
367            recalcCoords();
368        }).each(function () {
369            if (this.complete) {
370                $(this).trigger('load');
371            }
372        });
373    }
374    function setGAPageViews() {
375        var epPrdt = $("#ep_prdt").attr("data-pdt"),
376            epDate = moment($("#ep_dte_text").text(), "MMMM DD,YYYY").format("DD-MMMM-YYYY"),
377            epEdition = $("#ep_edition").attr("data-edt"),
378            epPage = $("#ep_page").attr("data-page");
379        ga('set', 'page', '/epaper/article/' + epPrdt + '/' + epDate + '/' + epEdition + '/' + epPage);
380        ga('send', 'pageview', {
381            'page': '/epaper/article/' + epPrdt + '/' + epDate + '/' + epEdition + '/' + epPage,
382            'title': document.title
383        });
384    }
385    function setMetaPageTitle() {
386        var epPage = $("#ep_page").attr("data-page").split("_"),
387            epPrdtNameSmall = $("#ep_prdt_text").text().toLowerCase(),
388            epPrdtName = epPrdtNameSmall.charAt(0).toUpperCase() + epPrdtNameSmall.slice(1),
389            epDate = moment($("#ep_dte_text").text(), "MMMM DD,YYYY").format("DD-MMM-YYYY").toUpperCase(),
390            epEdition = $("#ep_edition").attr("data-edt").toUpperCase(),
391            pageTitle = 'Kerala Kaumudi' + (epPrdtName == 'Flash' ? (' ' + epPrdtName) : (' ' + epPrdtName)) + ' Epaper | ' + epDate + ' ' + epEdition + ' ' + (epPage[0] + ' ' + epPage[1]) + ' :: Epaper';
392        document.title = pageTitle;
393        $("meta[property='og\\:title']").attr("content", pageTitle);
394    }
395
396    function setAudioURL() {
397        var base_url = window.location.origin;
398        var prdt = $("#ep_prdt").attr("data-pdt");
399        if (prdt == 'CLNDR' || prdt == 'FSH' || prdt == 'WKLY' || prdt == 'SPCL') {
400            $("#ep_audio").hide();
401        } else {
402            $("#ep_audio").show();
403            var date = moment($("#ep_dte_text").text(), "MMMM DD, YYYY").format("DD-MM-YYYY");
404            var edtn = $("#ep_edition").attr("data-edt");
405            $("#ep_audio_button").attr("href", base_url + "/news/audio.php?dt=" + date + "&p=" + prdt + "&e=" + edtn);
406        }
407    }
408
409    /**************
410    *Public Region*
411    ***************/
412    return {
413        init: function () {
414            setGAPageViews(); // Google analytics page views
415            var width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
416            if (window.location.href.indexOf('article') !== -1 && window.location.href.indexOf('articles-view') === -1 && width < 970) {
417                window.location = window.location.href.replace('article', 'articles-view');
418            }
419            var logoWidth = $(".logo-sec").find('img:visible').width();
420            $(".logo-title").css({ "margin-left": (((($(".logo-sec").width() - logoWidth) / 2) + logoWidth) - 93) + 'px', "display": "inline-block" });
421            var loggedIn = KAUMUDI.utils.getCookie("KKSTAYLOGIN");
422            if (page == 'EPAPER-PLANS') {
423                $(".toolbar_button").on('click', '#user_info', function () {
424                    $(this).closest('li').find('.account-box').attr("style", "display:block");
425                });
426                $("#signin-btn").click(function () {
427                    $('body').addClass('modal-open');
428                    $('body').append('<div class="modal-backdrop fade in"></div>');
429                    $('#loginModal').addClass('in');
430                    $('#loginModal').css({ "display": "block" });
431                });
432            } else if (page == 'EPAPER-ARTICLE') {
433                $("#epDateDialog").dialog({
434                    autoOpen: false,
435                    width: "auto",
436                    modal: true,
437                    title: "Pick Date",
438                    draggable: false,
439                    resizable: false,
440                    minHeight: 120,
441                    fluid: true,
442                    close: function (event, ui) {
443                    }
444                });
445                $("#datepicker").datepicker({
446                    autoSize: true,
447                    changeMonth: true,
448                    changeYear: true,
449                    defaultDate: new Date(),
450                    dateFormat: 'dd/mm/yy',
451                    onSelect: function (dateText, inst) {
452                        onDateSelect(dateText);
453                    },
454                });
455                //on page ready recal coords & find html
456                setRelHeightCoords();
457                setNewsListHtml();
458
459                //read specials
460                $(document).on('click', '.read-specials', function (e) {
461                    var id = $(this).attr("data-id");
462                    $("#SpecialsModalBody").html("");
463                    $('.spcl-bg-black').hide();
464                    $('#SpecialsModal').removeClass('show-modal')
465                    $('#ep_dte,#ep_edition,#ep_page,#ep_audio,#ep_video').hide();
466
467                    //reset logo
468                    $("#kk_flash_logo").hide();
469                    $("#kk_logo").fadeIn(1000);
470                    $(".logo-box").css({ "width": "40%" });
471                    $("#ep_prdt").attr("data-pdt", 'SPCL');
472                    $("#ep_prdt_text").text('Specials');
473
474                    setAvailableDateEdtPage('SPCL', id);
475                });
476
477                //events
478                $("#ep_prdt,#ep_edition,#ep_page").click(function () {
479                    loggedIn = KAUMUDI.utils.getCookie("KKSTAYLOGIN");
480                    if (!loggedIn && !reqProduct && !(typeof is_newstrack !== 'undefined' && is_newstrack)) {
481                        alertSignIn();
482                        return false;
483                    }
484                    $("#ep_prdt,#ep_edition,#ep_page").find('.dropdown-menu').css({ "display": "none" });
485                    $(this).find('.dropdown-menu').css({ "display": "block" });
486                });
487                $("#ep_prdt").on('click', '.dropdown-menu li', function (e) {
488                    if ($(this).attr("data-pdt") == 'SPCL') {
489                        //Special page
490                        KAUMUDI.utils.showLoader();
491                        $("#SpecialsModalBody").html('<div style="width: 100%;text-align: center;"><img src="/epaper/assets/images/loader.gif"></div>');
492                        $('#SpecialsModal').addClass('show-modal')
493                        $('.spcl-bg-black').show();
494                        $("#ep_prdt .dropdown-menu").attr("style", "display:none");
495                        if (googletag && googletag.pubads) googletag.pubads().refresh();
496                        var formData = new FormData();
497                        KAUMUDI.utils.sendAjaxPost('EpaperController/GetSpecialsList', formData, 'html',
498                            function (data) {
499                                KAUMUDI.utils.hideLoader();
500                                $("#SpecialsModalBody").html(data);
501                            },
502                            function (textStatus, errorThrown) {
503                                KAUMUDI.utils.hideLoader();
504                            });
505                    } else {
506                        //all other products
507                        $('#ep_dte,#ep_edition,#ep_page,#ep_audio,#ep_video').show();
508                        if (googletag && googletag.pubads) googletag.pubads().refresh();
509                        if ($("#ep_prdt").attr("data-pdt") != $(this).attr("data-pdt")) {
510                            $("#ep_prdt").attr("data-pdt", $(this).attr("data-pdt"));
511                            $("#ep_prdt_text").text($(this).text());
512                            setAvailableDateEdtPage($(this).attr("data-pdt"), '');
513                            if ($(this).attr("data-pdt") == 'FSH') {
514                                $("#kk_logo").hide();
515                                $("#kk_flash_logo").fadeIn(1000);
516                                $(".logo-box").css({ "width": "18%" });
517                            } else {
518                                $("#kk_flash_logo").hide();
519                                $("#kk_logo").fadeIn(1000);
520                                $(".logo-box").css({ "width": "40%" });
521                            }
522                            var logoWidth = $(".logo-sec").find('img:visible').width();
523                            $(".logo-title").css({ "margin-left": (((($(".logo-sec").width() - logoWidth) / 2) + logoWidth) - 93) + 'px' });
524                            $("#main-container").css({ "margin-top": ($(".fixed-header").height() + 10) + 'px' });
525                        }
526                        $("#ep_prdt .dropdown-menu").attr("style", "display:none");
527                        e.stopPropagation();
528                        loggedIn = KAUMUDI.utils.getCookie("KKSTAYLOGIN");
529                        if (!loggedIn && reqProduct && !(typeof is_newstrack !== 'undefined' && is_newstrack)) {
530                            alertSignIn();
531                            return false;
532                        }
533                    }
534                });
535                $("#ep_edition").on('click', '.dropdown-menu li', function (e) {
536                    if (googletag && googletag.pubads) googletag.pubads().refresh();
537                    $("#ep_edition").attr("data-edt", $(this).attr("data-edt"));
538                    $("#ep_edition_text").text($(this).text());
539                    $("#ep_edition .dropdown-menu").attr("style", "display:none");
540                    setPages();
541                    e.stopPropagation();
542                });
543                $("#ep_page").on('click', '.dropdown-menu li', function (e) {
544                    // if ($(this).attr("data-page").substring(0,2) != '01') {
545                    if ($(this).index() > 0) {
546                        loggedIn = KAUMUDI.utils.getCookie("KKSTAYLOGIN");
547                        var hasNewstrackAccess = (typeof is_newstrack !== 'undefined' && is_newstrack) || (typeof reqProduct !== 'undefined' && reqProduct !== '');
548                        if (loggedIn || hasNewstrackAccess) {
549                            if (!hasNewstrackAccess && sub_start != '') {
550                                is_paid = false;
551                                ep_dt = document.getElementById('epaper_pge_img').src.split('/');
552                                if (ep_dt[5] == 'DLY') {
553                                    eDate = new Date(ep_dt[6] + '/' + ep_dt[7] + '/' + ep_dt[8]);
554                                    today = new Date();
555                                    cDate = new Date(`${today.getFullYear()}/${String(today.getMonth() + 1).padStart(2, '0')}/${String(today.getDate()).padStart(2, '0')}`);
556                                    for (let sr of sub_rec) {
557                                        from = new Date(sr.date_from);
558                                        to = new Date(sr.date_to);
559                                        if ((eDate >= from && eDate <= to) || (cDate >= from && cDate <= to)) {
560                                            if (ep_dt[9] == 'EPR') {
561                                                if ([0, 1, 3, 4, 7].includes(sr.plan_id)) {
562                                                    is_paid = true;
563                                                    break;
564                                                }
565                                            } else {
566                                                if ([0, 2, 5, 6, 7].includes(sr.plan_id)) {
567                                                    is_paid = true;
568                                                    break;
569                                                }
570                                            }
571                                        }
572                                    }
573                                    if (!is_paid) {
574                                        const targetDate = new Date(sub_start);
575                                        const today = new Date();
576                                        targetDate.setHours(0, 0, 0, 0);
577                                        today.setHours(0, 0, 0, 0);
578                                        const diffTime = targetDate - today;
579                                        const diffDays = Math.round(diffTime / 86400000);
580                                        document.querySelector('[data-modal="sub-plans"]').click();
581                                        if (diffDays < 0) return false;
582                                    }
583                                }
584                            }
585                        } else {
586                            alertSignIn();
587                            return false;
588                        }
589                    }
590                    if (googletag && googletag.pubads) googletag.pubads().refresh();
591                    $("#ep_page").attr("data-page", $(this).attr("data-page"));
592                    $("#ep_page").attr("data-curindex", $(this).attr("data-curindex"));
593                    $("#ep_page_text").text($(this).text());
594                    $("#ep_page .dropdown-menu").attr("style", "display:none");
595                    setMapImgHtml($(this).attr("data-page"));
596                    e.stopPropagation();
597                });
598                $("#ep_publications").click(function () {
599                    $(this).find('.dropdown-menu').css({ "display": "block" });
600                });
601                // Function to check device token for single device login enforcement
602                function checkDeviceToken() {
603                    if (typeof is_newstrack !== 'undefined' && is_newstrack) return;
604                    if (!logged_in_user) return;
605
606                    // Admin email (you)
607                    // var isAdmin = (logged_in_user === "[email protected]");
608
609                    // Choose correct folder
610                    // var folder = isAdmin
611                    //     ? "/apps/epaper/login_limit/"
612                    //     : "/apps/epaper/device_token/";
613
614                    // Add cache-busting parameter
615                    // var url = folder + logged_in_user + ".txt?t=" + new Date().getTime();
616                    var url = "/apps/epaper/login_limit/" + logged_in_user + ".txt?t=" + new Date().getTime();
617
618                    $.ajax({
619                        url: url,
620                        cache: false,
621                        dataType: 'json'
622                    }).then(function (serverData) {
623                        var client_token = (KAUMUDI.utils.getCookie("DEVICETOKEN") || "").trim();
624
625                        // if (isAdmin) {
626                        // Handle JSON token array
627                        if (Array.isArray(serverData)) {
628                            if (!serverData.includes(client_token)) {
629                                console.log("Token mismatch ? user logged out (admin multiple login exceeded)");
630                                KAUMUDI.AUTH.userLogout('#logout_btn', '/epaper/');
631                            }
632                        } else {
633                            console.log("Invalid JSON token format for admin user");
634                        }
635                        // } else {
636                        //     // Handle plain text token
637                        //     var server_token = (serverData || "").toString().trim();
638                        //     if (client_token && server_token && client_token !== server_token) {
639                        //         console.log("Token mismatch � user logged out (new login detected)");
640                        //         KAUMUDI.AUTH.userLogout('#logout_btn', '/epaper/');
641                        //     }
642                        // }
643                    }).catch(function (error) {
644                        console.log("Device token check failed:", error);
645                    });
646                }
647
648                // Check device token on page load
649                checkDeviceToken();
650
651                // Check device token periodically every 10 seconds
652                setInterval(checkDeviceToken, 10000);
653
654                $('body').click(function (e) {
655                    // Check device token on user interaction
656                    if ($(this).index() > 0) {
657                        checkDeviceToken();
658                    }
659                    var container = $("#ep_prdt,#ep_edition,#ep_page,#user_info,.account-box,#ep_publications");
660                    if (!container.is(e.target) && container.has(e.target).length === 0) {
661                        $("#ep_prdt .dropdown-menu,#ep_edition .dropdown-menu,#ep_page .dropdown-menu,#ep_page .dropdown-menu,.account-box,#ep_publications .dropdown-menu").attr("style", "display:none");
662                    }
663                });
664                $("#ep_dte").click(function () {
665                    loggedIn = KAUMUDI.utils.getCookie("KKSTAYLOGIN");
666                    if (!loggedIn && !(typeof is_newstrack !== 'undefined' && is_newstrack)) {
667                        alertSignIn();
668                        return false;
669                    }
670                    if (googletag && googletag.pubads) googletag.pubads().refresh();
671                    $("#epDateDialog").dialog("open");
672                    setCalendarDaysActive();
673                });
674                $("#epaper_img").on('click', 'area', function () {
675                    if (googletag && googletag.pubads) googletag.pubads().refresh();
676                    var newsId = $(this).attr("newsid");
677                    var actCoords = $(this).attr("actcoords");
678                    setSelectedAreaImg(actCoords ? actCoords : $(this).attr("coords"), $(this).attr("shape"), true);
679                    setWebNews(newsId, true);
680                });
681                //set default news on page loads on first area
682                var actCoords = $('area:first').attr("actcoords");
683                setSelectedAreaImg(actCoords ? actCoords : $('area:first').attr("coords"), $('area:first').attr("shape"), false);
684                setWebNews($('area:first').attr("newsid"), false);
685
686                $("#get_img").click(function () {
687                    var imgPath = $("#epaper_img").find('img').attr("src");
688                    var imgPathPieces = imgPath ? imgPath.split("/") : [];
689                    if (imgPathPieces) {
690                        imgPathPieces[imgPathPieces.length - 1] = "image_hd.jpg";
691                    }
692                    var myImage = new Image();
693                    myImage.src = imgPathPieces.join("/");
694                    var x = document.createElement("IMG");
695                    x.setAttribute("src", imgPathPieces.join("/"));
696                    cropImage(x, 90 * (3280 / 580), 260 * (4894 / 865), (502 * (3280 / 580)) - (90 * (3280 / 580)), (644 * (4894 / 865)) - (260 * (4894 / 865)));
697                });
698                $("#ep_full_view").click(function () {
699                    loggedIn = KAUMUDI.utils.getCookie("KKSTAYLOGIN");
700                    if (!loggedIn && !(typeof is_newstrack !== 'undefined' && is_newstrack)) {
701                        alertSignIn();
702                        return false;
703                    }
704                    var imgPath = $("#epaper_img").find('img').attr("src");
705                    var imgPathPieces = imgPath ? imgPath.split("/") : [];
706                    if (imgPathPieces) {
707                        imgPathPieces[imgPathPieces.length - 1] = "image_hd.jpg";
708                    }
709                    window.open(baseUrlEP + 'page-view?u=' + window.btoa(imgPathPieces.join("/")), "_blank");
710                });
711                $("#web_link").click(function () {
712                    window.open($(this).attr("data-url"), "_blank");
713                });
714                //Trigger Audio
715                $("#trigger-audio").click(function () {
716                    $("#audio-wrap").toggleClass("sactive");
717                });
718                $("#img_view_btn").click(function () {
719                    $("#img_view").removeClass('hide');
720                    $("#text_view").addClass('hide');
721                    $("#img_view_btn").addClass('hide');
722                    $("#txt_view_btn").removeClass('hide');
723                    $("[data-network]").attr("data-url", web_url ? encodeURI(web_url + '&s_im=' + encodeURI(areaimg_url)) : encodeURI(areaimg_url));
724                    $("[data-network]").attr("data-image", encodeURI(hostAddress + areaimg_url));
725                });
726                $("#txt_view_btn").click(function () {
727                    $("#img_view").addClass('hide');
728                    $("#text_view").removeClass('hide');
729                    $("#img_view_btn").removeClass('hide');
730                    $("#txt_view_btn").addClass('hide');
731                    $("[data-network]").attr("data-url", web_url ? encodeURI(web_url + '&s_im=' + encodeURI(areaimg_url)) : encodeURI(areaimg_url));
732                    $("[data-network]").attr("data-image", encodeURI(hostAddress + areaimg_url));
733                });
734                $(".pges-list-box").on('click', '.pge_list', function () {
735                    var $this = $(this);
736                    if ($('#ep_prdt').attr('data-pdt') == 'SPCL') {
737                        $('#ep_prdt').attr('data-pdt', $this.attr('data-spclprod'));
738                        $('#ep_edition').attr('data-edt', $this.attr('data-spcledtn'));
739                        $('#ep_dte_text').text($this.attr('data-spcldte'));
740                        $("#ep_page").find('.dropdown-menu li[data-page="' + $(this).attr("data-page") + '"]').click();
741                        //Reset after click for next click
742                        setTimeout(function () { $('#ep_prdt').attr('data-pdt', 'SPCL'); $("#ep_audio").hide(); }, 1000);
743                    } else {
744                        $("#ep_page").find('.dropdown-menu li[data-page="' + $(this).attr("data-page") + '"]').click();
745                    }
746                });
747                $(".nws-box").on('click', '.nws-item', function () {
748                    $("#epaper_img").find('area[newsid="' + $(this).attr("data-newsid") + '"]').click();
749                });
750                $(".nws-box").on('mouseover', '.nws-item', function () {
751                    $("#epaper_img").find('area[newsid="' + $(this).attr("data-newsid") + '"]').mouseover();
752                });
753                $(".nws-box").on('mouseout', '.nws-item', function () {
754                    $("#epaper_img").find('area[newsid="' + $(this).attr("data-newsid") + '"]').mouseout();
755                });
756                $(".toolbar_button").on('click', '#user_info', function () {
757                    $(this).closest('li').find('.account-box').attr("style", "display:block");
758                });
759                $("#signin-btn").click(function () {
760                    $('body').addClass('modal-open');
761                    $('body').append('<div class="modal-backdrop fade in"></div>');
762                    $('#loginModal').addClass('in');
763                    $('#loginModal').css({ "display": "block" });
764                });
765                $('[data-toggle="tab"]').click(function () {
766                    $(".tab-pane").removeClass('active');
767                    $($(this).attr('href')).addClass('active');
768                    $("#tabs").find('li').removeClass('active');
769                    $(this).closest('li').addClass('active');
770                });
771                $(".toggle-font-size").click(function () {
772                    var $this = $(this),
773                        $target = $("#news_desc"),
774                        action = $this.attr("data-action"),
775                        currentSize = parseInt($target.css('font-size')),
776                        lineHeight = parseInt($target.css('line-height'));
777                    if (action == 'plus') {
778                        if (currentSize <= 30) {
779                            $target.css('font-size', currentSize + parseInt(1) + "px");
780                            $target.css('line-height', lineHeight + parseInt(1) + "px");
781                        }
782                    } else {
783                        if (currentSize > 16) {
784                            $target.css('font-size', currentSize - parseInt(1) + "px");
785                            $target.css('line-height', lineHeight - parseInt(1) + "px");
786                        }
787                    }
788                });
789                $(".cal_pge").click(function () {
790                    var thumb_img_path = $(this).find('img').attr('src');
791                    var act_img_path = thumb_img_path.replace('thumbs', 'imgs');
792                    $("#epaper_img").html('<img src="' + act_img_path + '"  width="100%">');
793                });
794                if (window.location.href.indexOf('/calendar/') > 0) {
795                    loggedIn = KAUMUDI.utils.getCookie("KKSTAYLOGIN");
796                    if (!loggedIn && !(typeof is_newstrack !== 'undefined' && is_newstrack)) {
797                        alertSignIn();
798                        return false;
799                    }
800                }
801
802                //Play Video
803                $("#video_view_btn").click(function () {
804                    var video = $(this).attr("data-vid");
805                    if (video) {
806                        $('body').addClass('modal-open');
807                        $('#modal').addClass('in');
808                        $('body').append('<div class="modal-backdrop fade in"></div>');
809                        $('#modal').css({ "display": "block" });
810                        $("#info-body").html('<iframe width="100%" height="450" src="https://www.youtube.com/embed/' + video + '?autoplay=1&rel=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>');
811                        $("#info-body").show();
812                    }
813                });
814
815                if (reqProduct && reqDate && reqEdtn) {
816                    setTimeout(function () {
817                        //NT Dynamic Click
818                        if ($('#ep_prdt').attr("data-pdt") != reqProduct) {
819                            $("li[data-pdt='" + reqProduct + "']").click();
820                        }
821                        onDateSelect(reqDate);
822                    }, 500);
823                } else if (reqProduct) {
824                    if ($('#ep_prdt').attr("data-pdt") != reqProduct) {
825                        KAUMUDI.utils.showLoader();
826                        setTimeout(function () {
827                            $("li[data-pdt='" + reqProduct + "']").click();
828                            KAUMUDI.utils.hideLoader();
829                        }, 500);
830                    }
831                }
832
833                if (typeof home_cal_link !== 'undefined' && home_cal_link !== null) {
834                  setTimeout(function () {
835                    $("li[data-pdt='" + home_cal_link.hcl_product + "']").click();
836                    onDateSelect(home_cal_link.hcl_date);
837                    setTimeout(function () {
838                      $('#ep_dte_text').text('January 01, ' + home_cal_link.hcl_date.slice(-4));
839                    }, 500);
840                  }, 500);
841                }
842            }
843        },
844        setNoAreaImg: function () {
845            $("#img_view").html('<div id="no-web-news" class="hide"><p>Sorry, No clipping found for this selection.</p></div>');
846            $("[data-network]").attr("data-url", encodeURI(web_url));
847        }
848    }
849})();

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.