PageSourceSearch

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

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

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.