PageSourceSearch

https://tenex.io/tenex-home/js/script.js

js tenex.io collected 2026-10-01 23:46:11 UTC 10,645 bytes, 323 lines download raw bytes

1$('[data-target="#tryForFreeModal"]').on("click", function(event) {
2  console.log('demo');
3  event.preventDefault();
4  self.location = 'https://resources.tenex.io/schedule-tenex-demo';
5  return false;
6});
7$(document).ready(function () {
8
9  $(".language-switch").on("change", function() {
10		self.location = '/'+$(this).val();
11	});
12
13          $(".testimonial-slider").owlCarousel({
14    items:1,
15    margin:30,
16})
17    // Add smooth scrolling to all links
18    $("a#home_page, #platform_page, #solutions_page, #who_we_help_page, #about_us_page").on("click", function (event) {
19        // Make sure this.hash has a value before overriding default behavior
20        if (this.hash !== "") {
21            // Prevent default anchor click behavior
22            event.preventDefault();
23            // Store hash
24            var hash = this.hash;
25            // Using jQuery's animate() method to add smooth page scroll
26            // The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area
27            $("html, body").animate({
28                    scrollTop: $(hash).offset().top
29                },
30                800,
31                function () {
32                    // Add hash (#) to URL when done scrolling (default click behavior)
33                    window.location.hash = hash;
34                }
35            );
36        } // End if
37    });
38
39    if ($(" #testimonials").length > 0) {
40        $(" #testimonials").slick({
41            autoplay: true,
42            autoplaySpeed: 2000,
43            slide: ".testimonial-card",
44            // adaptiveHeight: true,
45            // centerMode: true,
46            variableWidth: true,
47            centerPadding: '160px 500px',
48            dots: false,
49            infinite: true,
50            slidesToShow: $(window).width() <= 500 ? 1 : 3,
51            slidesToScroll: 1,
52            rows: 1,
53            arrows: true,
54            cssEase: 'ease-out',
55
56            appendArrows: $(window).width() <= 500 ? ".slick-arrows-xs" : ".slick-arrows-lg",
57            prevArrow: ' <button class="btn btn-link btn-scroll-prev" id="btnPREV"><i class="fa fa-lg fa-arrow-left"aria-hidden="true"></i></button>',
58            nextArrow: '<button class="btn btn-link btn-scroll-next" id="btnNEXT"><i class="fa fa-lg fa-arrow-right"aria-hidden="true"></i></button>'
59        });
60    }
61
62    //if ($(" .testimonials").length > 0) {
63    $(" .testimonials").slick({
64        //            autoplay: true,
65        //            autoplaySpeed: 2000,
66        //            infinite: true,
67        arrows: false,
68        dots: true
69    });
70    //}
71
72    $('.custom-select').selectpicker();
73
74  $(".partner-slider-section").owlCarousel({
75    loop:true,
76    margin:10,
77    nav:true,
78      dots: false,
79      autoplay:true,
80autoplayTimeout:3000,
81autoplayHoverPause:true,
82      navText: ["<i class='icon-button-next-2'></i>","<i class='icon-button-next'></i>"],
83    responsive:{
84        0:{
85            items:1
86        },
87        600:{
88            items:3
89        },
90        1000:{
91            items:5
92        }
93    }
94});
95
96
97      $(".partner-slider-section-mobile").owlCarousel({
98    loop:true,
99    margin:10,
100    nav:false,
101      dots: true,
102          autoplay:true,
103autoplayTimeout:3000,
104autoplayHoverPause:true,
105    responsive:{
106        0:{
107            items:1
108        },
109        600:{
110            items:3
111        },
112        1000:{
113            items:5
114        }
115    }
116});
117
118
119});
120
121
122
123// It gets all elements with animated-text class
124const allElements = document.querySelectorAll('.animated-text');
125
126// It checks if there is at least one element
127if (allElements.length > 0) {
128
129    //It runs the script for each found element
130    allElements.forEach((element) => {
131
132        const txtElement = element,
133            wordsList = txtElement.getAttribute('data-words'),
134            words = wordsList.split(', '); // It makes an array of words from data attribute
135
136        let wordsCount = 0;
137
138        entry();
139
140        // Initial function
141        function entry() {
142            if (wordsCount < words.length) { // It runs the code for each word
143                let word = words[wordsCount],
144                    txtArr = word.split(''), // It makes an array of letters in the word
145                    count = 0;
146
147                txtElement.textContent = ''; // It removes the previous text from the element
148
149                // For each letter in the array
150                txtArr.forEach((letter) => {
151                    // It replaces the empty space for the "non-break-space" HTML...
152                    // ... This is needed to separate the words properly
153                    let _letter = letter === ' ' ? '&nbsp;' : letter;
154
155                    // It wraps every letter with a "span" and puts all they back to the element
156                    txtElement.innerHTML += `<span>${_letter}</span>`
157                });
158
159                let spans = txtElement.childNodes;
160
161                // It sets the interval between each letter showing
162                const letterInterval = setInterval(activeLetter, 100);
163
164                function activeLetter() {
165                    spans[count].classList.add('active');
166                    count++;
167
168                    if (count === spans.length) {
169                        clearInterval(letterInterval);
170
171                        // It waits 4 seconds to start erasing the word
172                        setTimeout(() => {
173                            eraseText()
174                        }, 2500000);
175                    }
176                }
177
178                function eraseText() {
179                    // It sets the interval between each letter hiding
180                    let removeInterval = setInterval(removeLetter, 60);
181                    count--;
182
183                    function removeLetter() {
184                        spans[count].classList.remove('active');
185                        count--;
186
187                        if (count === -1) {
188                            clearInterval(removeInterval);
189                            wordsCount++;
190
191                            // After removing the last letter, call the initial function again
192                            entry();
193                        }
194                    }
195                }
196
197            } else { // If the code reaches the last word
198                // It resets the words counter...
199                wordsCount = 0;
200                // ...and calls the initial function again.
201                entry();
202            }
203        }
204    });
205}
206$(document).ready(function () {
207    var owl = $(".owl_1");
208    const isArabic = $(".owl_1").hasClass("arabiccontent");
209
210    owl.owlCarousel({
211        loop: true, // Enable loop to make it auto-play in a loop
212        margin: 2,
213        responsiveClass: true,
214        autoplay: true, // Enable autoplay
215        autoplayTimeout: 3000, // Set autoplay interval to 3 seconds
216        autoplayHoverPause: true, // Pause autoplay on hover
217        slideSpeed: 400,
218        paginationSpeed: 400,
219        rtl: isArabic, // Set the rtl option based on the language
220        responsive: {
221            0: {
222                items: 3,
223                nav: true,
224                loop: true,
225            },
226            600: {
227                items: 7,
228                nav: true,
229                loop: true,
230            },
231            1000: {
232                items: 9,
233                nav: true,
234                loop: true,
235            },
236        },
237    });
238
239    // Add a hover event listener to pause and play the carousel on hover
240    $(".tab-content").hover(
241        function () {
242            owl.trigger("stop.owl.autoplay"); // Pause the carousel on hover
243        },
244        function () {
245            owl.trigger("play.owl.autoplay"); // Resume autoplay when not hovering
246        }
247    );
248
249    // Add a custom event listener to trigger a click event on the active anchor tag
250    owl.on("changed.owl.carousel", function (event) {
251        const activeIndex = event.item.index;
252        const anchorTag = $(".owl_1 li").eq(activeIndex).find("a");
253
254        // Trigger a click event on the active anchor tag
255        anchorTag.click();
256    });
257});
258$(document).ready(function () {
259    var li = $(".owl-item li");
260    $(".owl-item li").click(function () {
261        li.removeClass("active");
262    });
263});
264
265$(function () {
266    var $nav = $(".navbar.fixed-top");
267    var $mobileHeaderLogo = $nav.find(".navbar-brand .mobile-header-logo");
268    var $navbarTogglerIcon = $nav.find(".navbar-toggler.collapsed i");
269    var whitePages = ["/why-tenex", "/solutions", "/platform"];
270    var isWhitePage = whitePages.includes(window.location.pathname);
271    var isScrolled = false;
272
273    if (isWhitePage) {
274        $mobileHeaderLogo.attr("src", "/Tenex_v2/images/tenex-logo.png");
275        $navbarTogglerIcon.css("color", "#000000");
276    }
277
278    $(document).scroll(function () {
279        var scrollTop = $(this).scrollTop();
280
281        if (!isScrolled && scrollTop > $nav.height()) {
282            $nav.addClass('scrolled');
283            isScrolled = true;
284        } else if (isScrolled && scrollTop <= $nav.height()) {
285            $nav.removeClass('scrolled');
286            isScrolled = false;
287        }
288
289        if (isWhitePage) {
290            if (isScrolled) {
291                $mobileHeaderLogo.attr("src", "/Tenex_v2/images/mobile-header-logo.png");
292                $navbarTogglerIcon.css("color", "#fff");
293            } else {
294                $mobileHeaderLogo.attr("src", "/Tenex_v2/images/tenex-logo.png");
295                $navbarTogglerIcon.css("color", "#000000");
296            }
297        }
298    });
299});
300// Product nav toggle
301$(document).ready(function() {
302    var $dropdownMenu = $("#custom-product .dropdown-menu");
303  
304    $(".new-nav").on("click", ".nav-item", function (e) {
305        // Check if the clicked item is the custom product item
306        if ($(this).is("#custom-product")) {
307            $dropdownMenu.toggleClass("show");
308        } else {
309            $dropdownMenu.removeClass("show");
310        }
311    });
312  
313    // Prevent clicks inside the dropdown menu from affecting the parent nav-item
314    $dropdownMenu.on("click", function(e) {
315        e.stopPropagation();
316    });
317  
318    $(document).on("click", ".navbar-toggler", function () {
319        if (!$(this).hasClass("collapsed")) {
320            $("#custom-product").find(".dropdown-menu").removeClass("show");
321        }
322    })
323  });

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.