PageSourceSearch

https://www.tablotv.com/wp-content/uploads/ac_assets/uc_material_accordion/post_accordion.js?ver=2.0.3

js tablotv.com collected 2026-09-24 18:52:43 UTC 5,167 bytes, 224 lines download raw bytes

1
2function UCPostAccordion(objAccordion){
3	
4  var g_activeClass;
5  var g_dataLinkNum, g_accItem, g_scrollOffset;
6  
7  /**
8   * console log some string
9   */
10  function trace(str){
11	  console.log(str);
12  }
13  
14  //scroll func
15  function scrollToTop(){
16	
17    var panel = jQuery(this).closest(".uc_ac_box");
18    
19    var panelTop = panel.offset().top;
20    
21    var scrollTop = panelTop + g_scrollOffset;
22    
23    jQuery('html, body').animate({
24      scrollTop: scrollTop
25    }, 400);
26    
27  }
28  
29  function onItemClick(){
30    
31    var objCaption = jQuery(this);
32    var objContent = objCaption.next();
33    var objItem = objCaption.parent();
34    
35    var isActive = objItem.hasClass(g_activeClass);
36    
37    if(isActive == true){              
38      objItem.removeClass(g_activeClass);
39      objContent.slideUp();        	            	
40      return(true);
41    }
42    
43    var objOpened = objAccordion.find("."+g_activeClass);
44    objOpened.removeClass(g_activeClass);
45    objOpened.find(".uc_content").slideUp();
46    
47    objItem.addClass(g_activeClass);
48    
49    var dataScroll = objAccordion.data('scroll');
50    
51	var animationDuration = 400;
52	
53	var isScroll = false;
54		
55	switch(dataScroll){
56		case "desktop":
57			if(window.matchMedia("(min-width: 1024px)").matches)
58				isScroll = true;
59		break;
60		case "mobile":
61			if(window.matchMedia("(max-width: 1024px)").matches)
62				isScroll = true;
63		break;
64		case "desktop+mobile":
65				isScroll = true;
66		break;
67	}
68	
69	if(isScroll == true)
70		objContent.slideDown(animationDuration, scrollToTop);
71	else
72      objContent.slideDown();
73	
74	
75    return false;
76  }
77  
78  function linkToSlideScroll(){    
79    jQuery('html, body').animate({
80      scrollTop: g_accItem.offset().top + g_scrollOffset
81    }, 400);
82  }
83  
84  /*
85  * check if element is in viewport
86  */
87  function isElementInViewport(objElement) {
88    
89    var elementTop = objElement.offset().top;
90    var elementBottom = elementTop + objElement.outerHeight();
91    
92    var viewportTop = jQuery(window).scrollTop();
93    var viewportBottom = viewportTop + jQuery(window).height();
94    
95    var isInViwport = elementBottom > viewportTop && elementTop < viewportBottom;
96    
97    return(isInViwport);
98  } 
99  
100  /*
101  * on trigger link click
102  */
103  function onLinkClick(e){
104    
105    var objLink = jQuery(this);
106    
107    var dataAccName = objAccordion.data('name');
108    var dataLinkName = objLink.data('name');
109    g_dataLinkNum = objLink.data('num');
110    g_accItem = objAccordion.find('.uc_ac_box .uc_trigger').eq(g_dataLinkNum - 1);
111    var accItemNumber = objAccordion.find('.uc_ac_box').length;
112    
113    if(dataLinkName != dataAccName)
114    return(false);
115    
116    if(dataLinkName == undefined || g_dataLinkNum == '' || g_dataLinkNum > accItemNumber)
117    return(false);
118    
119    var accItemContent = g_accItem.next();
120    var accItemParent = g_accItem.parent();
121    var isItemParentActive = accItemParent.hasClass("uc-item-active");
122    
123    e.preventDefault();
124    
125    if(isItemParentActive == true && isElementInViewport(accItemParent) == false){
126      
127      linkToSlideScroll();
128      
129    }else if(isItemParentActive == false && isElementInViewport(accItemParent) == false){
130      
131      onItemClick();	      
132      accItemContent.slideDown(linkToSlideScroll);
133      accItemParent.addClass("uc-item-active");
134      
135    }else if(isItemParentActive == false && isElementInViewport(accItemParent) == true){
136      
137      onItemClick();	      
138      accItemContent.slideDown();
139      accItemParent.addClass("uc-item-active");
140    }
141  }
142
143
144
145  /**
146   * on expand all item clik
147   */
148function onExpandAllClick(e) {
149  e.preventDefault();
150
151  var objAllItems = objAccordion.find(".uc_ac_box");
152
153  var anyAccordionClosed = objAllItems.filter(":not(." + g_activeClass + ")").length > 0;
154
155  objAllItems.each(function () {
156    var objItem = jQuery(this);
157    var objItemContent = objItem.find("> .uc_content");
158
159    if (anyAccordionClosed) {
160      // If any accordion is closed, open all
161      objItem.addClass(g_activeClass);
162      if (objItemContent) objItemContent.css('display', 'block');
163    } else {
164      // If all accordions are open, close all
165      objItem.removeClass(g_activeClass);
166      if (objItemContent) objItemContent.hide();
167    }
168  });
169}
170
171
172  
173  /**
174  * init open links
175  */
176  function initLinks(){
177	
178    
179	var objLinks = jQuery('.ue-link-goto-item').not(".uc-link-inited");
180	
181    if(objLinks.length == 0){
182      return(false);
183    }
184
185	var elementName = objAccordion.data("name");
186
187	jQuery.each(objLinks, function(index, linkElement){
188		
189		var objLink = jQuery(linkElement);
190		
191		var name = objLink.data("name");
192		
193		if(name != elementName)
194			return(true);
195		
196		objLink.addClass("uc-link-inited");
197		
198		objLink.on("click", onLinkClick);
199		
200	});
201	
202	
203  }
204  
205  
206  function runPostAccordion(){
207    //init globals
208    	
209    g_activeClass = "uc-item-active";
210	
211    g_scrollOffset = objAccordion.data('offset');
212     
213	initLinks();
214
215    //init events
216    
217	objAccordion.on("click", ".uc_trigger", onItemClick);
218    objAccordion.on("ucclick", ".uc_trigger", onItemClick);
219    jQuery(".ue-post-accordion-expand-all").on("click", onExpandAllClick);
220  }
221
222  runPostAccordion();
223  
224}

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.