PageSourceSearch

https://getthetreatment.com/wp-content/uploads/ac_assets/uc_content_accordion/content_accordion.js?ver=2.0.20

js getthetreatment.com collected 2026-10-04 10:26:14 UTC 7,236 bytes, 289 lines download raw bytes

1
2function UCContentAccordion(objAccordion){
3  
4  var g_activeClass;
5  var g_dataLinkNum, g_accItem, g_scrollOffset;
6
7  //scroll func
8  function scrollToTop(){
9    var panel = jQuery(this).closest(".uc_ac_box");
10    
11    jQuery('html, body').animate({
12      scrollTop: panel.offset().top + g_scrollOffset
13    }, 400);
14  }
15  
16  /**
17  * set hash
18  */
19  function setHash(objTab){
20    
21    var isHashSet = objAccordion.data("set-hash");
22    
23    if(isHashSet == false)
24    return(false);
25    
26    var objTabDataId = objTab.parent().attr('id');
27    
28    window.location.hash = objTabDataId;    
29    
30  }
31  
32  function onItemClick(){
33    
34    var objCaption = jQuery(this);
35    var objContent = objCaption.next();
36    var objItem = objCaption.parent();
37    
38    setHash(objCaption);
39    
40    var isActive = objItem.hasClass(g_activeClass);
41    var dataCloseothers = objAccordion.data("closeothers");
42    
43    if(dataCloseothers == true){
44
45      if(isActive == true){    
46        //remove active class from clicked
47        objItem.removeClass(g_activeClass);
48        objContent.slideUp();    
49        return(false);
50      }
51       
52      var objItems = objItem.siblings();
53
54      objItems.each(function(){
55
56        var objTab = jQuery(this);
57        var isTabActive = objTab.hasClass(g_activeClass);
58     
59        //remove active class from all other tabs
60        //use carefully, not to touch inner accordion if such exists
61        if(isTabActive == true){
62          objTab.removeClass(g_activeClass);
63          objTab.find(" > .uc_content").slideUp();        
64        }
65      });      
66      
67      
68    }
69   
70    objItem.addClass(g_activeClass);
71    
72    var dataScroll = objAccordion.data('scroll');
73    
74    if (dataScroll == "desktop"){
75      if(window.matchMedia("(min-width: 1024px)").matches){
76        objContent.slideDown(scrollToTop);
77      }else{
78        objContent.slideDown();
79      }
80    }
81    
82    if (dataScroll == "mobile"){
83      if(window.matchMedia("(max-width: 1024px)").matches){
84        objContent.slideDown(scrollToTop);
85      }else{
86        objContent.slideDown();
87      }
88    }
89    
90    if (dataScroll == "desktop+mobile"){
91      objContent.slideDown(scrollToTop);
92    }
93    
94    if (dataScroll == "off"){
95      objContent.slideDown();
96    }
97    
98    return false;
99  }
100  
101  
102  function linkToSlideScroll(){ 
103    
104    jQuery('html, body').animate({
105      scrollTop: g_accItem.offset().top + g_scrollOffset
106    }, 400);
107  }
108  
109  /*
110  * check if element is in viewport
111  */
112  function isElementInViewport(objElement) {
113    
114    var elementTop = objElement.offset().top;
115    var elementBottom = elementTop + objElement.outerHeight();
116    
117    var viewportTop = jQuery(window).scrollTop();
118    var viewportBottom = viewportTop + jQuery(window).height();
119    
120    var isInViwport = elementBottom > viewportTop && elementTop < viewportBottom;
121    
122    return(isInViwport);
123  } 
124  
125  /*
126  * on trigger link click
127  */
128  function onLinkClick(e){
129    
130    var objLink = jQuery(this);
131    
132    var dataAccName = objAccordion.data('name');
133    var dataLinkName = objLink.data('name');
134    g_dataLinkNum = objLink.data('num');
135    g_accItem = objAccordion.find('.uc_ac_box .uc_trigger').eq(g_dataLinkNum - 1);
136    var accItemNumber = objAccordion.find('.uc_ac_box').length;
137    
138    
139    if(dataLinkName != dataAccName)
140    return(false);
141    
142    if(dataLinkName == undefined || g_dataLinkNum == '' || g_dataLinkNum > accItemNumber)
143    return(false);
144    
145    var accItemContent = g_accItem.next();
146    var accItemParent = g_accItem.parent();
147    var isItemParentActive = accItemParent.hasClass(g_activeClass);
148    
149    e.preventDefault();
150    
151    if(isItemParentActive == true){
152
153      if(isElementInViewport(objAccordion) == false)
154      linkToSlideScroll();
155
156      accItemContent.slideUp();
157      accItemParent.removeClass(g_activeClass);
158      
159    }else if(isItemParentActive == false && isElementInViewport(objAccordion) == false){
160      
161      onItemClick();	      
162      accItemContent.slideDown(linkToSlideScroll);
163      accItemParent.addClass(g_activeClass);
164      
165    }else if(isItemParentActive == false && isElementInViewport(objAccordion) == true){
166      
167      onItemClick();	      
168      accItemContent.slideDown();
169      accItemParent.addClass(g_activeClass);
170    }
171    
172    
173  }
174  
175  /**
176  * init open links
177  */
178  function initLinks(){
179    
180    var objLinks = jQuery('.ue-link-goto-item').not(".uc-link-inited");
181    
182    if(objLinks.length == 0){
183      return(false);
184    }
185    
186    var elementName = objAccordion.data("name");
187    
188    jQuery.each(objLinks, function(index, linkElement){
189      
190      var objLink = jQuery(linkElement);      
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  function runPostAccordion(){
206    //init globals
207    
208    g_activeClass = "uc-item-active";    
209    g_scrollOffset = objAccordion.data('offset');
210    
211    initLinks();
212    
213    //init events    
214    objAccordion.on("click", ".uc_trigger", onItemClick);
215    objAccordion.on("ucclick", ".uc_trigger", onItemClick);
216    
217    //init hash
218    if(!window.location.hash)
219    return(false);
220        
221    //find hashed tab object
222    var objHashedTabs = jQuery('[id=' + window.location.hash + ']');
223
224    objHashedTabs.each(function(){
225
226      var objHashedTab = jQuery(this);
227
228      //find main widget wrapper of the hashed tab
229      var objHashedTabWrapper = objHashedTab.parents('.uc_material_accordion'); 
230
231      //find if main widget wrapper is inside another accordion tab
232      var objWrapperParent = objHashedTabWrapper.parents('.uc_ac_box');
233
234      //if not than trigger click on hashed tab only and move to another hashed tab object
235      //do nothing with inner accordion on this stage (if its exists)
236      if(!objWrapperParent.length){
237          
238        setTimeout(function(){
239
240          //find if tab is active
241          var isActive = objHashedTab.hasClass(g_activeClass);
242
243          if(isActive == true)
244          return(true);
245
246          objHashedTab.find(' > .uc_trigger').trigger('click');
247
248        },200);
249
250        return(true);
251      }
252      
253      //if wrapper is inside another accordion tab
254      setTimeout(function(){
255
256        //if tab is active then skip and go to another one
257        var isActive = objHashedTab.hasClass('uc-item-active');
258        
259        if(isActive == true)
260        return(true);
261
262        objHashedTab.find(' > .uc_trigger').trigger('click');
263       
264        //open parent accordion tab it wasn't open already
265        var isParentTabActive = objWrapperParent.hasClass('uc-item-active');
266
267        if(isParentTabActive == true)
268        return(true);
269
270        var objParentAccordionTab = objWrapperParent.find(' > .uc_trigger');
271        var accItemContent = objParentAccordionTab.next();
272        var accItemParent = objParentAccordionTab.parent();          
273
274        accItemContent.slideDown();
275        accItemParent.addClass("uc-item-active");
276   
277      },300);
278
279      
280    });
281
282	objAccordion.addClass('uc-inited');
283    
284  }
285  
286  if(objAccordion.hasClass('uc-inited') == false)
287  runPostAccordion();
288  
289}

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.