PageSourceSearch

https://www.eldinamo.cl/_templates/desktop/includes/js/functionalities.js?v=1.0.12

js eldinamo.cl collected 2026-09-24 18:20:12 UTC 49,506 bytes, 1,559 lines download raw bytes

1var path_files    = global_domain+"/_files";
2var path_jsons    = global_domain+"/_files/jsons";
3var path_epg_signals = path_jsons+"/signals";
4var selected_signal_number = null;
5var selected_signal_interval = null;
6var currentURL = window.location.href;
7
8let limitComent = 5;
9let actualPost = 0;
10
11var custom_postfix = [
12    {
13        cat        : "tierra-brava",
14        postfix    : "_reality",
15        ads_tags : [
16            "Top",
17            "Middle",
18            "Lateral"
19        ]
20    },
21    // {
22    //     cat        : "yo-soy",
23    //     postfix    : "_reality",
24    //     ads_tags   : [
25    //         "Top",
26    //         "Middle",
27    //         "Lateral"
28    //     ]
29    // }
30];
31
32// Función para obtener el elemento según la categoría en la URL
33function get_custom_postfix() {
34    // Iterar sobre el arreglo de custom_postfix
35    for (var i = 0; i < custom_postfix.length; i++) {
36        var elemento = custom_postfix[i];
37        // Verificar si la categoría está presente en la URL
38        if(currentURL.indexOf('/'+elemento.cat+'/') !== -1){
39            return elemento;
40        }
41    }
42    return null; // Devolver null si no se encuentra ningún elemento
43}
44
45var custom_tags_data = get_custom_postfix();
46
47
48var cargarPublicidad = function( show = true ) {
49
50    if(global_section === "single"){
51        if(post_noAds === '1'){
52            return;
53        }
54    }
55    
56    if (!$(".rtb_slot")[0]) return false;
57    var window_width = $(window).width();
58    if (typeof googletag == 'undefined') return false;
59
60    if(global_section != 'single'){
61        var header_ad = $('#header_ads');
62        if(header_ad.hasClass( "loaded" )){
63            header_ad.removeClass("loaded");
64            header_ad.html("");
65        }
66    }
67
68    var ITTads = $('#bottom_itt');
69    if(ITTads.hasClass( "loaded" ) && show ){
70        // Obtiene todos los slots cargados
71        var slots = googletag.pubads().getSlots();
72
73        // Busca el slot que tiene el ID 'web-ed-itt-universal'
74        var adSlot = slots.find(slot => slot.getSlotElementId() === 'web-ed-itt-universal');
75
76        if (adSlot) {
77            googletag.destroySlots([adSlot]);
78        }
79
80        ITTads.removeClass("loaded");
81        ITTads.html("");
82    }
83
84    googletag.cmd.push(function() {
85
86        if(global_section === "single"){
87            add_middle_post_content_rtb_slot();
88        }
89
90        $(".rtb_slot:not(.loaded,.only-focus)").each(function() {
91            $(this).addClass("loaded");
92
93            var slot = $(this).data("slot");
94
95            // obtener el skeleton hermano
96            var skeleton = $(this).prev(".ad-skeleton");
97
98            if (skeleton.length) {
99                var slotId = $(this).data("adunit").replace(/\W+/g, "_"); // limpia caracteres raros
100                var skeletonId = "adSkeleton_" + slotId;
101                skeleton.attr("id", skeletonId);
102
103                // guardar el id también en el slot para luego relacionarlo
104                $(this).data("skeletonId", skeletonId);
105            }
106            
107            if(custom_tags_data){
108                custom_tags_data.ads_tags.forEach(function(elemento) {
109                    if (slot.indexOf('/'+elemento) !== -1) {
110                        slot = slot + custom_tags_data.postfix;
111                        return;
112                    }
113                });
114            }
115        
116            ocultar_publicidad_tmp = false;
117
118            if (ocultar_publicidad_tmp == true) {
119                var $parent = $(this).closest('.the-banner');
120                if ($parent) {
121                    $parent.css({
122                        'display': 'none',
123                    });
124                }
125                else{
126                    $(this).css({
127                        'display': 'none',
128                    });
129                }
130                return; //EQUIVALENTE A CONTINUE
131            }
132
133            var is_only_define = false;
134
135            //REVISAMOS SI SOLO SE DECLARA
136            if ($(this).hasClass('rtb_slot_only_define')) {
137                is_only_define = true;
138            }
139
140            var id = $(this).data("adunit");
141            var dimensions = $(this).data("dimensions");
142            var min_width = null;
143            var valid = true;
144            var slot_ads;
145            if (typeof $(this).data("min-width") != 'undefined' && $(this).data("min-width") != '') {
146                min_width = parseInt($(this).data("min-width"));
147            }
148
149            if(typeof id == 'undefined' && is_only_define!=true){
150                return false;
151            }
152
153            // SI LA PANTALLA ES MENOR/IGUAL AL ANCHO MINIMO ESTABLECIDO, SETEAMOS EN FALSE
154            if (min_width != null && window_width <= min_width) {
155                valid = false;
156            }
157
158            // SI EL ID YA ESTA EN EL SITIO
159            if (document.getElementById(id) != null) {
160                valid = false;
161            }          
162
163            if (valid == true) {
164                // Create a div for the slot
165                var slotDiv = document.createElement('div');
166                slotDiv.id = id; // Id must be the same as slotName
167                if(!is_only_define){
168                    $(this).html(slotDiv);
169                }
170
171                var oop = $(this).data("oop");
172                if(typeof oop !== 'undefined' && oop==true){
173                    if(is_only_define){
174                        var format = $(this).data("format");
175                        if(typeof format !== 'undefined' && (newFormat = Function("return " + format)()) !== undefined){
176                            try {
177                                slot_ads = googletag.defineOutOfPageSlot(slot,newFormat);
178                            }
179                            catch {
180                                return;
181                            }
182                            
183                        }
184                    }
185                    else{
186                        slot_ads = googletag.defineOutOfPageSlot(slot,id);
187                    }
188                }
189                else{
190                    slot_ads = googletag.defineSlot(slot, dimensions, id);
191                }
192
193
194                var section = $(this).data("section");
195
196                if(typeof section !== 'undefined'){
197                    slot_ads.setTargeting('Seccion',section);
198                }
199
200                var tipo = $(this).data("tipo");
201
202                if(typeof tipo !== 'undefined'){
203                    slot_ads.setTargeting('Tipo',tipo);
204                }
205
206                // var sizeMapping = $(this).data("sizemapping");
207
208                // if(typeof sizeMapping !== 'undefined' && window[sizeMapping] !== undefined){
209                //     slot_ads.defineSizeMapping(window[sizeMapping]);
210                // }
211
212                let site_mapping = generateSizeMapping(dimensions);
213                slot_ads.defineSizeMapping(site_mapping);
214
215                var refresh = $(this).data("refresh");
216
217                if(typeof refresh !== 'undefined' && refresh==true){
218                    slot_ads.setTargeting(REFRESH_KEY,REFRESH_VALUE);
219                }
220
221                //SI ES NOTA, AGREGAMOS EL ID,CATEGORIAS Y TAGS A LA SECMENTACION
222                if(typeof global_post_id !== 'undefined' && global_post_id !=''){
223
224                    // //CATEGORIES
225                    // var categories_targeting_slugs = [];
226                    // global_post_categories.forEach(function(value,index){
227                    //     categories_targeting_slugs.push(value.slug);
228                    // });
229                    // slot_ads.setTargeting('categories',categories_targeting_slugs);
230
231                    // //TAGS
232                    // var tags_targeting_slugs = [];
233                    // global_post_tags.forEach(function(value,index){
234                    //     tags_targeting_slugs.push(value.slug);
235                    // });
236                    // slot_ads.setTargeting('tags',tags_targeting_slugs);
237
238                    //ID
239                    slot_ads.setTargeting('Nota',global_post_id);
240
241                }
242
243                //slot_ads.setTargeting('device',global_device );
244
245                slot_ads.addService(googletag.pubads());
246                
247                googletag.pubads().enableSingleRequest();
248                googletag.pubads().collapseEmptyDivs(true, true);
249                googletag.pubads().setCentering(true);
250                googletag.pubads().enableLazyLoad({
251                    fetchMarginPercent: 0,
252                    renderMarginPercent: 0,
253                });
254
255                googletag.enableServices();
256
257                // Escucha el evento para saber si el anuncio se cargó y mostrar el ITT
258                googletag.pubads().addEventListener('slotRenderEnded', function(event) {
259                    // Verifica si el anuncio corresponde al ID que necesitas
260                    if (event.slot.getSlotElementId() === 'web-ed-itt-universal') {
261                        if (!event.isEmpty) {
262                            showModal();
263                        }
264                    }
265
266                    if (event.slot.getSlotElementId() === 'web-ed-sticky') {
267                        if (!event.isEmpty) {
268                            showSticky();
269                        }
270                    }
271
272                    var slotElement = $(".rtb_slot[data-slot='" + event.slot.getAdUnitPath() + "']");
273
274                    if (slotElement.length && event.slot.getSlotElementId() !== 'web-ed-itt-universal' && event.slot.getSlotElementId() !== 'web-ed-sticky') {
275                        var skeletonId = slotElement.data("skeletonId");
276                        var skeleton = document.getElementById(skeletonId);
277                        
278                        if (skeleton) {
279                            skeleton.classList.add("hidden");
280                        }
281                    }
282                });
283
284                if(!is_only_define){
285                    //console.log(slot);
286                    googletag.display(id);
287                    // googletag.cmd.push(function() {
288                    //     googletag.display(id);
289                    // });
290                }
291
292            }
293        });
294    });
295
296}
297
298function generateSizeMapping(slotSizes){
299
300    var sizeMappingBuilder = googletag.sizeMapping();
301
302    let largeScreenSizes   = [[960,250],[960,180],[160,600],[970,90],[970,250],[960,90],[300,250],[300,600],[120,600],[728,90],[1,1]];
303    let mediumScreenSizes  = [[160,600],[300,250],[120,600],[728,90],[1,1]];
304    let smallScreenSizes   = [[300,250],[320,100],[300,100],[320,50],[300,50],[1,1]];
305    let zeroCrossZeroSizes = [[300,250],[320,100],[300,100],[320,50],[300,50],[1,1]];
306
307    let findedLargeScreenSizes = slotSizes.filter(elem1 => {
308        return largeScreenSizes.some(elem2 => elem2[0] === elem1[0] && elem2[1] === elem1[1]);
309    });
310
311    if (findedLargeScreenSizes.length > 0) {
312        sizeMappingBuilder.addSize([992, 0], findedLargeScreenSizes);
313    }
314
315    let findedMediumScreenSizes = slotSizes.filter(elem1 => {
316        return mediumScreenSizes.some(elem2 => elem2[0] === elem1[0] && elem2[1] === elem1[1]);
317    });
318
319    if (findedMediumScreenSizes.length > 0) {
320        sizeMappingBuilder.addSize([768, 0], findedMediumScreenSizes);
321    }
322
323    let findedSmallScreenSizes = slotSizes.filter(elem1 => {
324        return smallScreenSizes.some(elem2 => elem2[0] === elem1[0] && elem2[1] === elem1[1]);
325    });
326
327    if (findedSmallScreenSizes.length > 0) {
328        sizeMappingBuilder.addSize([320, 0], findedSmallScreenSizes);
329    }
330
331    let findedZeroCrossZeroSizes = slotSizes.filter(elem1 => {
332        return zeroCrossZeroSizes.some(elem2 => elem2[0] === elem1[0] && elem2[1] === elem1[1]);
333    });
334
335    if (findedZeroCrossZeroSizes.length > 0) {
336        sizeMappingBuilder.addSize([0, 0], findedZeroCrossZeroSizes);
337    }
338
339    return sizeMappingBuilder.build();
340
341}
342
343Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) {
344
345    switch (operator) {
346        case '==':
347            return (v1 == v2) ? options.fn(this) : options.inverse(this);
348        case '===':
349            return (v1 === v2) ? options.fn(this) : options.inverse(this);
350        case '!=':
351            return (v1 != v2) ? options.fn(this) : options.inverse(this);
352        case '!==':
353            return (v1 !== v2) ? options.fn(this) : options.inverse(this);
354        case '<':
355            return (v1 < v2) ? options.fn(this) : options.inverse(this);
356        case '<=':
357            return (v1 <= v2) ? options.fn(this) : options.inverse(this);
358        case '>':
359            return (v1 > v2) ? options.fn(this) : options.inverse(this);
360        case '>=':
361            return (v1 >= v2) ? options.fn(this) : options.inverse(this);
362        case '&&':
363            return (v1 && v2) ? options.fn(this) : options.inverse(this);
364        case '||':
365            return (v1 || v2) ? options.fn(this) : options.inverse(this);
366        default:
367            return options.inverse(this);
368    }
369});
370
371var load_home_programacion_signal = function(n_signal){
372
373    var  dom_wrap_programacion = document.querySelector('#programacion_today');
374
375    if(!dom_wrap_programacion){
376        return;
377    }
378
379    if(typeof n_signal == "undefined"){
380        n_signal = 0;
381
382        var default_button = document.querySelector('.js_signal_button[data-position="0"]');
383
384        let data_signal = default_button.dataset.signal;
385            
386        data_signal = JSON.parse(atob(data_signal));
387
388        if(data_signal.has_epg!=true){
389            selected_signal_number = null;
390            return;
391        }
392
393    }
394
395    var json_epg = path_epg_signals+"/data_signal_"+n_signal+".json";
396
397    
398
399    $.ajax({
400        url: json_epg,
401        type: 'GET',
402        cache: false, // Deshabilita la caché
403        success: function(data) {
404            print_programacion_signal(data);
405            selected_signal_number = n_signal;
406            set_home_programacion_signal_interval();
407        },
408        error: function(xhr, status, error) {
409            // La función error se ejecutará en caso de error
410            console.error('Error al obtener epg:', status, error);
411        }
412    });
413
414}
415
416var load_page_programacion_signal = function(n_signal){
417
418    var default_button = document.querySelector('.js_page_programacion_signal_button[data-position="0"]');
419
420    if(!default_button){
421        return;
422    }
423
424    if(typeof n_signal == "undefined"){
425        n_signal = 0;
426
427        let data_signal = default_button.dataset.signal;
428            
429        data_signal = JSON.parse(atob(data_signal));
430
431        if(data_signal.has_epg!=true){
432            selected_signal_number = null;
433            return;
434        }
435
436    }
437
438    var json_epg = path_epg_signals+"/data_signal_"+n_signal+".json";
439
440    $.ajax({
441        url: json_epg,
442        type: 'GET',
443        cache: false, // Deshabilita la caché
444        success: function(data) {
445            print_page_programacion_signal_programacion(data);
446            selected_signal_number = n_signal;
447            set_page_programacion_signal_interval();
448        },
449        error: function(xhr, status, error) {
450            // La función error se ejecutará en caso de error
451            console.error('Error al obtener epg:', status, error);
452        }
453    });
454
455}
456
457var print_page_programacion_signal_programacion = function(data){
458    var today_key   = data.current_day_num;
459    var data_today  = data.data_by_days_and_dm;
460
461    var today_button = document.querySelector('.js_button_day[data-position="'+today_key+'"]');
462
463    var any_is_actived = document.querySelector('.js_button_day.is-actived');
464
465    if (!today_button.classList.contains('is-actived') && !any_is_actived) {
466        today_button.classList.add('is-actived');
467    }
468
469    var today_tab = document.querySelector('.js_programacion_by_day[data-position="'+today_key+'"]');
470
471    if (!today_tab.classList.contains('is-actived') && !any_is_actived) {
472        today_tab.classList.add('is-actived');
473    }
474
475    var source      = document.getElementById("page_programacion_data_by_day_template");
476    var template    = Handlebars.compile(source.innerHTML);
477
478    Object.keys(data_today).forEach(function(key) {
479        var data_day = data_today[key];
480
481        var html = template({
482            data_am : data_day.am,
483            data_pm : data_day.pm
484        });
485
486        var  dom_wrap_programacion_by_day = document.querySelector('.js_programacion_by_day[data-position="'+key+'"]');
487
488        dom_wrap_programacion_by_day.innerHTML = html;
489
490    });
491
492
493    
494}
495
496var print_programacion_signal = function(data){
497    var  dom_wrap_programacion = document.querySelector('#programacion_today');
498
499    if(dom_wrap_programacion){
500        var source      = document.getElementById("home_programacion_template");
501    
502        var template    = Handlebars.compile(source.innerHTML);
503
504        var today_key   = data.current_day_num;
505        var data_today  = data.data_by_days[today_key];
506
507        var now_index = data_today.findIndex(elemento => elemento.is_now === true);
508
509        now_index = now_index !== -1 ? now_index : 0;
510    
511        var html = template({
512            programacion : data_today
513        });
514    
515        dom_wrap_programacion.innerHTML = html;
516
517        const $el = document.querySelector('.js-main-hero-section-carousel');
518
519        new Swiper($el, {
520            // Modules: [Navigation],
521            slidesPerView: 'auto',
522            spaceBetween: 8,
523            initialSlide: now_index,
524            navigation: {
525                nextEl: ".main-hero-section-carousel__button--next",
526                prevEl: ".main-hero-section-carousel__button--prev",
527            },
528        });
529
530    }
531}
532
533var change_page_programacion_signals = function(){
534
535    var buttons = document.querySelectorAll('.js_page_programacion_signal_button');
536
537    var active_class = "main-hero-section-menu__mark";
538
539    buttons.forEach(function(button) {
540        button.addEventListener('click', function(event) {
541            event.preventDefault();
542
543            let button = event.currentTarget;
544            let button_position = button.dataset.position;
545
546            buttons.forEach(function(elemento) {
547                elemento.classList.remove(active_class);
548            });
549
550            button.classList.add(active_class);
551
552            load_page_programacion_signal(button_position);
553
554        });
555    });
556
557}
558
559// var change_home_signals = function(){
560//     var buttons = document.querySelectorAll('.js_signal_button');
561
562//     var active_class = "main-hero-section-menu__mark";
563
564//     buttons.forEach(function(button) {
565//         button.addEventListener('click', function(event) {
566//             event.preventDefault();
567            
568//             let button = event.currentTarget;
569//             let  dom_iframe = document.querySelector('.js_home_iframe_signal');
570
571//             buttons.forEach(function(elemento) {
572//                 elemento.classList.remove(active_class);
573//             });
574
575//             button.classList.add(active_class);
576
577//             //VALIDAR QUE SEA UNA SEÑAL DISTINTA
578
579//             let button_position = button.dataset.position;
580//             let iframe_position = dom_iframe.dataset.position;
581
582//             if(button_position==iframe_position){
583//                 return;
584//             }
585            
586//             //SETEAMOS LA SEÑAL
587
588//             let data_signal = button.dataset.signal;
589            
590//             data_signal = JSON.parse(atob(data_signal));
591
592//             dom_iframe.outerHTML = data_signal.iframe;
593
594
595//             if(data_signal.has_epg==true){
596//                 selected_signal_number = button_position;
597//                 load_home_programacion_signal(button_position);
598//             }
599//             else{
600//                 selected_signal_number = null;
601//                 clean_home_programacion_signal();
602//             }
603
604
605            
606//         });
607//     });
608// }
609
610
611
612// CAMBIA SEÑAL DE AGRICULTURA-TV
613var change_home_signals = function() {
614    var buttons = document.querySelectorAll('.js_signal_button');
615
616    buttons.forEach(function(button) {
617        button.addEventListener('click', function(event) {
618            event.preventDefault();
619
620            // Quitar la clase 'is-actived' de todos los elementos con la clase 'js_signal_button'
621            buttons.forEach(function(btn) {
622                btn.classList.remove('is-actived');
623            });
624
625            // Agregar la clase 'is-actived' al elemento que dispara el evento 'click'
626            event.target.classList.add('is-actived');
627
628            // Obtener el valor del atributo data-signal del elemento que disparó el evento 'click'
629            let signal = event.target.getAttribute('data-signal');
630
631            // Buscar el elemento con la clase 'js_home_iframe_signal'
632            let dom_iframe = document.querySelector('.js_home_iframe_signal');
633
634            // Eliminar todos los elementos hijos del elemento 'js_home_iframe_signal'
635            while (dom_iframe.firstChild) {
636                dom_iframe.removeChild(dom_iframe.firstChild);
637            }
638
639            // Crear un nuevo elemento para insertar el contenido del archivo HTML
640            let newContent = document.createElement('div');
641
642            // Cargar el contenido del archivo HTML usando fetch
643            fetch(global_domain+'/_templates/desktop/sections/generated/signals/'+signal+'.html').then(response => response.text()).then(data => {
644                // Insertar el contenido HTML en el nuevo elemento
645                newContent.innerHTML = data;
646
647                // Buscar y eliminar el elemento con la clase 'main-media-box__header'
648                let headerToRemove = newContent.querySelector('.main-media-box__header');
649                if (headerToRemove) {
650                    headerToRemove.remove();
651                }
652
653                // Insertar el contenido modificado en el elemento 'js_home_iframe_signal'
654                dom_iframe.appendChild(newContent);
655            }).catch(error => {
656                console.error('Error al cargar el archivo HTML:', error);
657            });
658        });
659    });
660};
661
662var clean_home_programacion_signal= function(){
663    var  dom_wrap_programacion = document.querySelector('#programacion_today');
664
665    if(dom_wrap_programacion){
666        dom_wrap_programacion.innerHTML = '';
667    }
668
669    set_home_programacion_signal_interval();
670}
671
672var show_post_tags = function(){
673
674    var tags_data_divs = document.querySelectorAll('.js_post_tags');
675    var source = document.getElementById("tags_posts_template");
676
677    tags_data_divs.forEach(function(tag_div) {
678
679        var template = Handlebars.compile(source.innerHTML);
680        var post_tags_str = tag_div.dataset.tags;
681
682        if (!post_tags_str.length) {
683            return;
684        }
685
686        // Convertimos de string a array de objetos
687        var post_tags = JSON.parse(post_tags_str);
688
689        // Ordenamos para que el tag con primary: true quede primero
690        post_tags.sort((a, b) => {
691            return (b.primary === true) - (a.primary === true);
692        });
693
694        // Ahora sí, renderizamos el template con los tags ordenados
695        var html = template({
696            post_tags: post_tags
697        });
698
699        tag_div.outerHTML = html;
700    });
701};
702
703var show_post_tags_video = function(){
704
705    var tags_data_divs = document.querySelectorAll('.js_post_video_tags');
706
707    var source      = document.getElementById("tags_posts_videos_template");
708
709    tags_data_divs.forEach(function(tag_div) {
710
711        var template    = Handlebars.compile(source.innerHTML);
712
713        var post_tags = tag_div.dataset.tags;
714
715        if(!post_tags.length){
716            return;
717        }
718
719        var html = template({
720            post_tags       : JSON.parse(post_tags)
721        });
722        
723        tag_div.outerHTML = html;
724
725    });
726}
727
728var show_post_categories = function(){
729
730    var categories_data_divs = document.querySelectorAll('.js_post_categories');
731
732    var source      = document.getElementById("categories_posts_template");
733
734    categories_data_divs.forEach(function(categories) {
735
736        var template    = Handlebars.compile(source.innerHTML);
737
738        var post_categories = categories.dataset.categories;
739
740        if(!post_categories.length){
741            return;
742        }
743
744        var categories_tmp = JSON.parse(post_categories);
745
746        categories_tmp.forEach(function(value, index) {
747            let pre_slug     = index > 0 ? categories_tmp[index-1].slug : '';
748            let current_slug = pre_slug + value.slug;
749            
750            unique_parts = [...new Set(current_slug.split('/'))];
751
752            let new_slug = unique_parts.join('/');
753
754            categories_tmp[index].slug = new_slug;
755
756        });
757
758        var html = template({
759            categories       : categories_tmp
760        });
761        
762        categories.outerHTML = html;
763
764    });
765}
766
767var show_inline_content_lee_tambien = function(){
768
769    var lee_tmbn_data_divs = document.querySelectorAll('.js_te_puede_interesar');
770
771    var source      = document.getElementById("js_inline_content_lee_tambien_template");
772
773    lee_tmbn_data_divs.forEach(function(lee_tmbn_div) {
774
775        var template    = Handlebars.compile(source.innerHTML);
776
777        var posts       = lee_tmbn_div.dataset.posts;
778
779        // posts = JSON.parse(atob(posts));
780
781        if(typeof global_last_posts === 'undefined' || !global_last_posts){
782            return;
783        }
784        
785        posts = global_last_posts
786
787        if(!posts.length){
788            return;
789        }
790
791        var html = template({
792            posts : posts
793        });
794
795        if(html != ''){
796            var skeleton = document.getElementById('skeleton_notas_relacionadas');
797            skeleton.classList.add("hidden");
798        }
799        
800        lee_tmbn_div.outerHTML = html;
801
802    });
803}
804
805// NOTA - TE PUEDE INTERASAR
806var show_posts_te_puede_interesar = function(){
807
808    var new_div = document.querySelectorAll('.main-related-card');
809    var resultados = [];
810    
811    new_div.forEach(function(mas_noticia) {
812        // Obtener el 'href' de la primera etiqueta <a>
813        var primerEnlace = mas_noticia.querySelector('a');
814        var hrefPrimerEnlace = primerEnlace ? primerEnlace.getAttribute('href') : null;
815        
816        // Obtener el 'src' de la etiqueta <img>
817        var imagen = mas_noticia.querySelector('img');
818        var srcImagen = imagen ? imagen.getAttribute('src') : null;
819        
820        // Obtener el innerHTML de la segunda etiqueta <a>
821        var segundoEnlace = mas_noticia.querySelector('.main-related-card__title a');
822        var innerHTMLSegundoEnlace = segundoEnlace ? segundoEnlace.innerHTML : null;
823    
824        // Crear un objeto con los resultados
825        var datos = {
826            post_link: hrefPrimerEnlace,
827            imagen_post: srcImagen,
828            post_title: innerHTMLSegundoEnlace
829        };
830    
831        // Agregar el objeto al array de resultados
832        resultados.push(datos);
833    });
834    
835    // Convertir el array de resultados a formato JSON
836    var resultadosJson = JSON.stringify(resultados, null, 2);
837
838
839    // Seleccionar todos los elementos con la clase '.js-content-post'
840    var elementos = document.querySelectorAll('.js-content-post');
841    var contador = 0;
842
843    // Iterar sobre cada elemento encontrado que tiene la clase '.js-content-post'
844    elementos.forEach(function(elemento) {
845        // Obtener todos los hijos del elemento
846        var hijos = elemento.children;
847        var inicio = 0;
848
849        // Iterar sobre los hijos del elemento
850        for (var i = 0; i < hijos.length; i++) {
851            // Verificar si el hijo es una etiqueta 'FIGURE'
852            if (hijos[i].tagName === 'FIGURE' && hijos[i].classList.contains('main-related-card')) {
853                contador += 1;
854            }
855
856            // Si el hijo no es una etiqueta 'FIGURE' y el contador es mayor que 0
857            if (hijos[i].tagName !== 'FIGURE' && contador > 0) {
858                // Actualizar el valor de 'contador' para considerar la vuelta anterior.
859                contador = contador + inicio;
860
861                // Insertar un clon del template antes del hijo actual
862                elemento.insertBefore(template(inicio, contador).cloneNode(true), hijos[i]);
863
864                // Eliminar las figuras que están detrás del hijo actual
865                eliminarFigurasDetras(hijos[i]);
866
867                // Actualizar el valor de 'inicio' y 'contador'
868                inicio = contador;
869                contador = 0;
870            }
871        }
872    });
873        
874    function template(inicio, contador){
875
876    var source = document.getElementById("js_te_puede_interesar_template");
877
878    var template    = Handlebars.compile(source.innerHTML);
879
880    var tempContainer = document.createElement('div');
881
882    var posts       = JSON.parse(resultadosJson);
883
884        posts       = posts.slice(inicio, contador);
885
886        if(!posts.length){
887            return;
888        }
889
890        var html = template({
891            posts : posts
892        });
893
894        tempContainer.innerHTML = html;
895
896        return tempContainer.firstElementChild;
897
898    }
899
900    // Función para eliminar los elementos <figure> que están detrás de un elemento específico
901    function eliminarFigurasDetras(elemento) {
902        var anterior = elemento.previousElementSibling;
903        while (anterior) {
904            if (anterior.tagName === 'FIGURE') {
905                var paraEliminar = anterior;
906                anterior = anterior.previousElementSibling;
907                paraEliminar.remove();
908            } else {
909                break;
910            }
911        }
912    }
913
914}
915
916var show_posts_te_puede_interesar_video = function(){
917
918    var te_puede_interesar_divs = document.querySelectorAll('.js_te_puede_interesar_video');
919
920    var source      = document.getElementById("js_te_puede_interesar_video_template");
921
922    te_puede_interesar_divs.forEach(function(te_puede_interesar_div) {
923
924        var template    = Handlebars.compile(source.innerHTML);
925
926        var posts       = te_puede_interesar_div.dataset.posts;
927
928        posts = posts ? JSON.parse(posts) : posts;
929
930        if(!posts.length){
931            return;
932        }
933
934        posts = posts.slice(0, 4);
935
936        var html = template({
937            posts : posts
938        });
939        
940        te_puede_interesar_div.outerHTML = html;
941
942    });
943}
944
945var set_home_programacion_signal_interval = function(){
946
947    if(selected_signal_interval || selected_signal_number==null){
948        clearInterval(selected_signal_interval);
949    }
950
951    if(selected_signal_number!=null){
952        selected_signal_interval = setInterval(function(){
953            load_home_programacion_signal(selected_signal_number);
954        },60 * 1000);
955    }
956
957
958}
959
960var set_page_programacion_signal_interval = function(){
961
962    if(selected_signal_interval || selected_signal_number==null){
963        clearInterval(selected_signal_interval);
964    }
965
966    if(selected_signal_number!=null){
967        selected_signal_interval = setInterval(function(){
968            load_page_programacion_signal(selected_signal_number);
969        },60 * 1000);
970    }
971
972
973}
974
975var __add_middle_post_content_rtb_slot = function(){
976
977    //Se optienen todos los elemento que tienen la clase '.the-single__text' ya que aqui se carga el contenido de la nota.
978    var elementos = document.querySelectorAll('.the-article__body');
979
980    //Se crea el div para los box de publicidad y se añaden sus atributos
981    var adsDiv = document.createElement('div');
982    adsDiv.setAttribute('class', 'rtb_slot');
983    adsDiv.setAttribute('data-dimensions', '[[728, 90], [300, 250], [336, 280]]');
984    adsDiv.setAttribute('data-section', 'single_page');
985    // adsDiv.setAttribute('style', 'width: 300px; height: 250px; background-color: #58D68D;');
986
987    //Se decraran variables de iteracion.
988    var box = 0;
989    var contador = 0;
990
991    //Inicia la iteracion sobre cada elemento encontrado que tiene la clase '.the-single__text'
992    elementos.forEach(function(elemento) {
993
994        //Se verifica si el elemento ya fue procesado viendo si tiene la clase '.ads_content_succes'.
995        if(!elemento.classList.contains("ads_content_succes")){
996
997            //Se agrega la clase '.ads_content_succes' al elemento para que no sea considerado en la proxima vuelta.
998            elemento.classList.add("ads_content_succes");
999
1000            var id_post = elemento.querySelector('.post_id_by_ads').value;
1001
1002            //Se optienen todos los hijos del elemento.
1003            var hijos = elemento.children;
1004
1005            // Obtener todos los elementos <p> dentro del div
1006            // var parrafos = elemento.getElementsByTagName('p');
1007            var parrafos = Array.from(hijos).filter(function(hijo) { return hijo.tagName === 'P'; });
1008            
1009            //Se calcula un proporcional de cada cuantos parrafos de muestra un anuncio
1010            //Esto porque solo hay 3 box_ad disponibles porque un box1 se utiliza en el lateral.
1011            var p_proporcional = Math.floor(parrafos.length / 4);
1012
1013            //Inicia iteracion sobre los hijos del elemento.
1014            for (var i = 0; i < hijos.length; i++) {
1015
1016                //Se verifica si el elemento es una etiqueta 'P'.
1017                if(hijos[i].tagName == 'P'){
1018
1019                    //Se aumenta el contados para saber cuando agregar la publicidad.
1020                    contador += 1;
1021
1022                    //Se verifica si el contador para determinar si agrega la publicidad
1023                    if(contador == p_proporcional){
1024
1025                        box += 1;
1026
1027                        if(box == 3){
1028
1029                            //Se agregas los atributos faltaste para la publicidad
1030                            adsDiv.setAttribute('data-slot', '/2901631/TEADS-INREAD');
1031                            adsDiv.setAttribute('data-adunit', 'teads-inread_'+id_post);
1032                            adsDiv.setAttribute('data-dimensions', '[1, 1]');
1033
1034                            //Se inserta la publicidad despues del parrafo indicado.
1035                            elemento.insertBefore(adsDiv.cloneNode(true), hijos[i + 1]);
1036
1037                            contador = 0;
1038
1039                        }
1040
1041                        if(box <= 4 && box != 3){
1042
1043                            if(box == 4){ box -= 1; }
1044
1045                            //Se agregas los atributos faltaste para la publicidad
1046                            adsDiv.setAttribute('data-slot', '/2901631/WEB-ED-CONTENIDO-'+box);
1047                            adsDiv.setAttribute('data-adunit', 'web-ed-contend-'+box+'_ad_'+id_post);
1048
1049                            //Se inserta la publicidad despues del parrafo indicado.
1050                            elemento.insertBefore(adsDiv.cloneNode(true), hijos[i + 1]);
1051                            contador = 0;
1052
1053                            if (box == 1) {
1054                                var adsDivTeads = document.createElement('div');
1055                                adsDivTeads.setAttribute('id', 'v109683');
1056                                elemento.insertBefore(adsDivTeads.cloneNode(true), hijos[i + 1]);
1057                            }
1058
1059                        }
1060
1061                    }
1062                }
1063            }
1064
1065        }
1066            
1067    });
1068
1069}
1070
1071var add_middle_post_content_rtb_slot = function () {
1072
1073    // Se obtienen todos los contenedores del contenido
1074    var elementos = document.querySelectorAll('.the-article__body');
1075
1076    elementos.forEach(function (elemento) {
1077
1078        if (elemento.classList.contains("ads_content_succes")) {
1079            return;
1080        }
1081
1082        elemento.classList.add("ads_content_succes");
1083
1084        var id_post = elemento.querySelector('.post_id_by_ads').value;
1085
1086        // Se congela la colección de hijos
1087        var hijos = Array.from(elemento.children);
1088
1089        var inicio = 0;
1090
1091        var contador = 0;
1092
1093        var box = 1;
1094
1095        var slots = 5;
1096
1097        var primerAside = elemento.querySelector('aside');
1098
1099        if (primerAside) {
1100
1101            slots = 4;
1102
1103            inicio = hijos.indexOf(primerAside) + 1;
1104
1105            var adsDivTeads = document.createElement('div');
1106            adsDivTeads.id = 'v109683';
1107
1108            primerAside.insertAdjacentElement('afterend', adsDivTeads);
1109
1110            var adsDiv = document.createElement('div');
1111            adsDiv.className = 'rtb_slot';
1112            adsDiv.dataset.dimensions = '[[728, 90], [300, 250], [336, 280]]';
1113            adsDiv.dataset.section = 'single_page';
1114            adsDiv.dataset.slot = '/2901631/WEB-ED-CONTENIDO-1';
1115            adsDiv.dataset.adunit = 'web-ed-contend-1_ad_' + id_post;
1116
1117            adsDivTeads.insertAdjacentElement('afterend', adsDiv);
1118
1119        }
1120
1121        var hijosContenido = hijos.slice(inicio);
1122
1123        var parrafos = hijosContenido.filter(function(el){
1124            return el.tagName === 'P';
1125        });
1126
1127        var p_proporcional = Math.floor(parrafos.length / slots);
1128
1129        // console.log(parrafos);
1130
1131        parrafos.forEach(function (p) {
1132
1133            contador++;
1134
1135            if (contador < p_proporcional) {
1136                return;
1137            }
1138
1139            contador = 0; 
1140
1141            box++;
1142
1143            if (box == 3) {
1144
1145                var adsTeads = document.createElement('div');
1146                adsTeads.className = 'rtb_slot';
1147                adsTeads.dataset.slot = '/2901631/TEADS-INREAD';
1148                adsTeads.dataset.adunit = 'teads-inread_' + id_post;
1149                adsTeads.dataset.dimensions = '[1,1]';
1150                adsTeads.dataset.section = 'single_page';
1151
1152                p.insertAdjacentElement('afterend', adsTeads);
1153               
1154                return;
1155            }
1156
1157            if (box <= slots && box != 3) {
1158
1159                var numeroBox = box;
1160
1161                if (numeroBox == 4) {
1162                    numeroBox = 3;
1163                }
1164
1165                var adsDiv = document.createElement('div');
1166                adsDiv.className = 'rtb_slot';
1167                adsDiv.dataset.dimensions = '[[728, 90], [300, 250], [336, 280]]';
1168                adsDiv.dataset.section = 'single_page';
1169                adsDiv.dataset.slot = '/2901631/WEB-ED-CONTENIDO-' + numeroBox;
1170                adsDiv.dataset.adunit = 'web-ed-contend-' + numeroBox + '_ad_' + id_post;
1171
1172                p.insertAdjacentElement('afterend', adsDiv);
1173                
1174
1175                // Si no había aside, mantenemos el comportamiento anterior
1176                if (numeroBox == 1 && !primerAside) {
1177
1178                    var adsDivTeads = document.createElement('div');
1179                    adsDivTeads.id = 'v109683';
1180
1181                    p.insertAdjacentElement('afterend', adsDivTeads);
1182                }
1183            }
1184
1185        });
1186
1187    });
1188    
1189    
1190}
1191
1192var resize_wrap_size_container_ads = function(){
1193
1194    const $container = document.querySelector('.def-wrapper');
1195    const $bannerWrappers = document.querySelectorAll('.js-banner-wrapper');
1196
1197    const updateWrapper = () => {
1198        if (!$container || !$bannerWrappers) return;
1199
1200        const resizeObserver = new ResizeObserver((entries) => {
1201        for (const entry of entries) {
1202            const { contentRect } = entry;
1203            const { width } = contentRect;
1204
1205            $bannerWrappers.forEach($item => {
1206            $item.style.width = `${width}px`;
1207            });
1208        }
1209        });
1210
1211        resizeObserver.observe($container);
1212    }
1213
1214    updateWrapper();
1215
1216}
1217
1218// PAGE - BROCHURE PROGRAMAS
1219var show_page_brochure_programa = function(){
1220
1221    var brochure_programas_divs = document.querySelectorAll('.js_brochure_programas');
1222
1223    var source      = document.getElementById("js_brochure_programas_template");
1224
1225    brochure_programas_divs.forEach(function(brochure_programas) {
1226
1227        var template    = Handlebars.compile(source.innerHTML);
1228
1229        var posts       = brochure_programas.dataset.posts;
1230
1231        posts = JSON.parse(posts);
1232
1233        if(!posts.length){
1234            return;
1235        }
1236
1237        var html = template({
1238            posts : posts
1239        });
1240        
1241        brochure_programas.outerHTML = html;
1242
1243    });
1244    
1245}
1246
1247var audio_width = function(){
1248    var audio = document.querySelector('audio');
1249
1250    if(audio){
1251        audio.setAttribute('style', 'width: 100%');
1252    }
1253}
1254
1255var page_servel = function() {
1256
1257    var url = ['/page/frecuencias/', '/page/tarifas-servel/', '/page/contacto/'];
1258    
1259    // Verifica si global_post_segment_url está en el array
1260    if (typeof global_post_segment_url !== 'undefined' && url.includes(global_post_segment_url)) {
1261        var tabla = document.querySelector('.tablepress');
1262        if (tabla) {
1263            var enlace = tabla.querySelector('a');
1264            if (enlace) {
1265                enlace.remove(); // Remueve el enlace si existe
1266            }
1267        }
1268    }
1269};
1270
1271var send_post_count_new = function(post_id, date){
1272    // Datos que queremos enviar al servidor
1273    const data = {
1274        publish_date: new Date(date).toISOString(), // Cambié 'date' a 'publish_date'
1275    };
1276
1277    var url = "https://mongo_php.test/api.php?id=" + post_id;
1278
1279    // Hacemos la solicitud POST
1280    fetch(url, {
1281        method: "POST", // Método HTTP
1282        headers: {
1283            "Content-Type": "application/json", // Tipo de contenido que enviamos
1284        },
1285        body: JSON.stringify(data), // Convierte el objeto `data` a JSON
1286    })
1287    .then(response => {
1288        if (!response.ok) {
1289            throw new Error("Error en la solicitud: " + response.statusText); // Incluye el texto de estado
1290        }
1291        return response.json(); // Parseamos la respuesta como JSON
1292    })
1293    .then(result => {
1294        console.log("Respuesta del servidor:", result); // Manipulamos la respuesta
1295    })
1296    .catch(error => {
1297        console.error("Error:", error); // Captura errores en la solicitud
1298    });
1299}
1300
1301var send_post_count = function(post_id, date){
1302
1303    if(typeof post_id=='undefined') return false;
1304    if(typeof global_url_ajax=='undefined') return false;
1305    if(global_url_ajax=='') return false;
1306
1307    // const data = {
1308    //     publish_date: new Date(date).toISOString(), // Cambié 'date' a 'publish_date'
1309    // };
1310
1311    $.ajax({
1312        url: global_url_ajax,
1313        dataType: "json",
1314        type: 'POST',
1315        // data: {action: "count_post" , post: post_id, body: JSON.stringify(data)},
1316        data: {action: "count_post" , post: post_id, body: date},
1317        cache: false,
1318        // contentType: false,
1319        // processData: false,
1320        success: function(data){
1321            // console.log(data);
1322            return;
1323        },
1324        error: function(){
1325            console.error("Ocurrio un error procesando los datos. ");
1326        }
1327    });
1328}
1329
1330
1331var submitComment = async function(postId, authorName, authorEmail, commentContent){
1332
1333    // const endpoint = `https://backend.agricultura.test/wp-json/wp/v2/comments`;
1334    const dataComent = {
1335      action: "comment_post",
1336      post: postId,
1337      author_name: authorName.value,
1338      author_email: authorEmail.value,
1339      content: commentContent.value,
1340    };
1341
1342    $.ajax({
1343        url: global_url_ajax,
1344        dataType: "json",
1345        type: 'POST',
1346        data: dataComent,
1347        cache: false,
1348        success: function(data){
1349
1350            const container2 = document.querySelector(".getComments-"+postId);
1351
1352            const commentHTML = `
1353                        <div class="comment-item">
1354                            <div class="comment-author">${authorName.value}</div>
1355                            <div class="comment-date">${new Date().toLocaleDateString()}</div>
1356                            <div class="comment-content">${commentContent.value}</div>
1357                        </div>
1358                    `;
1359
1360            container2.insertAdjacentHTML("afterbegin", commentHTML);
1361            // container2.innerHTML += commentHTML;
1362
1363            authorName.value = '';
1364            authorEmail.value = '';
1365            commentContent.value = '';
1366
1367            const container = document.querySelector(".commentMesseg-"+postId);
1368            container.style.display='block';
1369            container.classList.add('comment-msg-success');
1370            msg = `Tu comentario fue enviado con exito`;
1371            container.innerHTML += msg;
1372            setTimeout(() => {
1373                container.classList.remove('comment-msg-success');
1374                container.style.display='none';
1375                container.innerHTML = ""; // Limpiar contenedor
1376            }, 3000)
1377            console.log(data);
1378        },
1379        error: function(){
1380            console.error("Ocurrio un error procesando los datos. ");
1381        }
1382    });
1383
1384}
1385
1386var getComment = async function(postId, limitP = 5){
1387
1388    if(postId != actualPost || actualPost == 0){
1389        limitComent = 5;
1390        actualPost = postId;
1391    }
1392
1393    const dataComent = {
1394        action: "comment_get",
1395        post: postId,
1396        limit: limitP,
1397    };
1398
1399    $.ajax({
1400        url: global_url_ajax, // URL del servidor PHP
1401        dataType: "json", // Esperamos una respuesta JSON
1402        type: "POST",
1403        data: dataComent,
1404        cache: false,
1405        success: function (response) {
1406            const container = document.querySelector(".getComments-"+postId);
1407
1408            if (!container) {
1409                console.error(`No se encontró el contenedor para el postId: ${postId}`);
1410                return;
1411            }
1412
1413            // Verificar si la respuesta es exitosa
1414            if (!response.success) {
1415                console.error("Error en la respuesta del servidor:", response);
1416                container.innerHTML = '<div style="text-align: center;">Error al cargar comentarios.</div>';
1417                return;
1418            }
1419
1420            // Obtener los comentarios
1421            const comments = response.data;
1422
1423            // Si hay comentarios, construirlos dinámicamente
1424            if (Array.isArray(comments) && comments.length > 0) {
1425                container.innerHTML = ""; // Limpiar contenedor
1426                comments.forEach(comment => {
1427                    const commentHTML = `
1428                        <div class="comment-item">
1429                            <div class="comment-author">${comment.author_name}</div>
1430                            <div class="comment-date">${new Date(parseInt(comment.date.$date.$numberLong)).toLocaleDateString()}</div>
1431                            <div class="comment-content">${comment.content}</div>
1432                        </div>
1433                    `;
1434                    container.innerHTML += commentHTML;
1435                });
1436
1437                button = `<button type="none" class="form-button" style="align-self: auto;" onclick="masComentarios(${postId})">Ver mas commentarios</button>`;
1438
1439                container.innerHTML += button;
1440
1441            } else {
1442                container.innerHTML = '<div class="comment-item" style="text-align: center;">No hay comentarios para este post.</div>';
1443            }
1444        },
1445        error: function (xhr, status, error) {
1446            console.error("Error en la solicitud AJAX:", status, error);
1447        }
1448    });
1449};
1450
1451var masComentarios = async function(postId){
1452
1453    if(postId != actualPost || actualPost == 0){
1454        limitComent = 5;
1455        actualPost = postId;
1456    }
1457
1458    limitComent += 5;
1459    
1460    getComment(postId, limitComent);
1461}
1462
1463
1464function reemplazarComillasEnCitas() {
1465  // Seleccionar todos los elementos con la clase "bloque-tc-cita-destacada"
1466  const elementosCita = document.querySelectorAll('.bloque-tc-cita-destacada');
1467  
1468  // Iterar sobre cada elemento encontrado
1469  elementosCita.forEach(elemento => {
1470    // Buscar todos los elementos span con clase "cita" dentro del bloque
1471    const citas = elemento.querySelectorAll('span.cita');
1472    
1473    citas.forEach(cita => {
1474      // Reemplazar todas las ocurrencias de u0022 por comillas dobles
1475      cita.innerHTML = cita.innerHTML.replace(/u0022/g, '"');
1476    });
1477  });
1478}
1479  
1480
1481var reloadForSPA = function(show = true) {
1482
1483    resize_wrap_size_container_ads();
1484
1485    load_home_programacion_signal();
1486    change_home_signals();
1487
1488    load_page_programacion_signal();
1489    change_page_programacion_signals();
1490
1491    show_inline_content_lee_tambien();
1492    show_post_tags();
1493    show_post_tags_video();
1494    show_post_categories();
1495    show_posts_te_puede_interesar();
1496    show_posts_te_puede_interesar_video();
1497    // add_middle_post_content_rtb_slot();
1498
1499    show_page_brochure_programa();
1500    audio_width();
1501    page_servel();
1502
1503    if(show){
1504        cargarPublicidad();
1505    }
1506
1507    // if(global_section === "single"){
1508    //     send_post_count(global_post_id, datePublished);
1509    // }
1510
1511};
1512
1513
1514document.addEventListener("DOMContentLoaded", function(event) {
1515
1516    resize_wrap_size_container_ads();
1517
1518    load_home_programacion_signal();
1519    change_home_signals();
1520
1521    load_page_programacion_signal();
1522    change_page_programacion_signals();
1523
1524    show_inline_content_lee_tambien();
1525    show_post_tags();
1526    show_post_tags_video();
1527    show_post_categories();
1528    show_posts_te_puede_interesar();
1529    show_posts_te_puede_interesar_video();
1530    add_middle_post_content_rtb_slot();
1531
1532    reemplazarComillasEnCitas();
1533
1534    show_page_brochure_programa();
1535    audio_width();
1536    page_servel();
1537
1538    // if(global_section === "single"){
1539    //     send_post_count(global_post_id, datePublished);
1540    // }
1541
1542    //OCUTAMOS ADS COMENTADOS
1543    document.querySelectorAll('._rtb_slot').forEach(function(element) {
1544        $this = $(element);
1545        var $parent = $this.closest('.u-the-banner');
1546        if ($parent) {
1547            $parent.css({
1548                'display': 'none',
1549            });
1550        }
1551        else{
1552            $this.css({
1553                'display': 'none',
1554            });
1555        }
1556    });
1557
1558    cargarPublicidad();
1559});

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.