PageSourceSearch

https://webdata.au.edu.pk/AU_New_Assets/assets/js/main.js

js au.edu.pk collected 2026-10-02 11:06:25 UTC 6,125 bytes, 252 lines download raw bytes

1/**
2* Template Name: Selecao - v4.9.1
3* Template URL: https://bootstrapmade.com/selecao-bootstrap-template/
4* Author: BootstrapMade.com
5* License: https://bootstrapmade.com/license/
6*/
7(function() {
8  "use strict";
9
10  /**
11   * Easy selector helper function
12   */
13  const select = (el, all = false) => {
14    el = el.trim()
15    if (all) {
16      return [...document.querySelectorAll(el)]
17    } else {
18      return document.querySelector(el)
19    }
20  }
21
22  /**
23   * Easy event listener function
24   */
25  const on = (type, el, listener, all = false) => {
26    let selectEl = select(el, all)
27    if (selectEl) {
28      if (all) {
29        selectEl.forEach(e => e.addEventListener(type, listener))
30      } else {
31        selectEl.addEventListener(type, listener)
32      }
33    }
34  }
35
36  /**
37   * Easy on scroll event listener 
38   */
39  const onscroll = (el, listener) => {
40    el.addEventListener('scroll', listener)
41  }
42
43  /**
44   * Navbar links active state on scroll
45   */
46  let navbarlinks = select('#navbar .scrollto', true)
47  const navbarlinksActive = () => {
48    let position = window.scrollY + 200
49    navbarlinks.forEach(navbarlink => {
50      if (!navbarlink.hash) return
51      let section = select(navbarlink.hash)
52      if (!section) return
53      if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) {
54        navbarlink.classList.add('active')
55      } else {
56        navbarlink.classList.remove('active')
57      }
58    })
59  }
60  window.addEventListener('load', navbarlinksActive)
61  onscroll(document, navbarlinksActive)
62
63  /**
64   * Scrolls to an element with header offset
65   */
66  const scrollto = (el) => {
67    let header = select('#header')
68    let offset = header.offsetHeight
69
70    let elementPos = select(el).offsetTop
71    window.scrollTo({
72      top: elementPos - offset,
73      behavior: 'smooth'
74    })
75  }
76
77  /**
78   * Toggle .header-scrolled class to #header when page is scrolled
79   */
80  let selectHeader = select('#header')
81  if (selectHeader) {
82    const headerScrolled = () => {
83      if (window.scrollY > 100) {
84        selectHeader.classList.add('header-scrolled')
85      } else {
86        selectHeader.classList.remove('header-scrolled')
87      }
88    }
89    window.addEventListener('load', headerScrolled)
90    onscroll(document, headerScrolled)
91  }
92
93  /**
94   * Back to top button
95   */
96  let backtotop = select('.back-to-top')
97  if (backtotop) {
98    const toggleBacktotop = () => {
99      if (window.scrollY > 100) {
100        backtotop.classList.add('active')
101      } else {
102        backtotop.classList.remove('active')
103      }
104    }
105    window.addEventListener('load', toggleBacktotop)
106    onscroll(document, toggleBacktotop)
107  }
108
109  /**
110   * Mobile nav toggle
111   */
112  on('click', '.mobile-nav-toggle', function(e) {
113    select('#navbar').classList.toggle('navbar-mobile')
114    this.classList.toggle('bi-list')
115    this.classList.toggle('bi-x')
116  })
117
118  /**
119   * Mobile nav dropdowns activate
120   */
121  on('click', '.navbar .dropdown > a', function(e) {
122    if (select('#navbar').classList.contains('navbar-mobile')) {
123      e.preventDefault()
124      this.nextElementSibling.classList.toggle('dropdown-active')
125    }
126  }, true)
127
128  /**
129   * Scrool with ofset on links with a class name .scrollto
130   */
131  on('click', '.scrollto', function(e) {
132    if (select(this.hash)) {
133      e.preventDefault()
134
135      let navbar = select('#navbar')
136      if (navbar.classList.contains('navbar-mobile')) {
137        navbar.classList.remove('navbar-mobile')
138        let navbarToggle = select('.mobile-nav-toggle')
139        navbarToggle.classList.toggle('bi-list')
140        navbarToggle.classList.toggle('bi-x')
141      }
142      scrollto(this.hash)
143    }
144  }, true)
145
146  /**
147   * Scroll with ofset on page load with hash links in the url
148   */
149  window.addEventListener('load', () => {
150    if (window.location.hash) {
151      if (select(window.location.hash)) {
152        scrollto(window.location.hash)
153      }
154    }
155  });
156
157  /**
158   * Porfolio isotope and filter
159   */
160  window.addEventListener('load', () => {
161    let portfolioContainer = select('.portfolio-container');
162    if (portfolioContainer) {
163      let portfolioIsotope = new Isotope(portfolioContainer, {
164        itemSelector: '.portfolio-item',
165      });
166
167      let portfolioFilters = select('#portfolio-flters li', true);
168
169      on('click', '#portfolio-flters li', function(e) {
170        e.preventDefault();
171        portfolioFilters.forEach(function(el) {
172          el.classList.remove('filter-active');
173        });
174        this.classList.add('filter-active');
175
176        portfolioIsotope.arrange({
177          filter: this.getAttribute('data-filter')
178        });
179        portfolioIsotope.on('arrangeComplete', function() {
180          AOS.refresh()
181        });
182      }, true);
183    }
184
185  });
186
187  /**
188   * Initiate portfolio lightbox 
189   */
190  const portfolioLightbox = GLightbox({
191    selector: '.portfolio-lightbox'
192  });
193
194  /**
195   * Portfolio details slider
196   */
197  new Swiper('.portfolio-details-slider', {
198    speed: 400,
199    loop: true,
200    autoplay: {
201      delay: 5000,
202      disableOnInteraction: false
203    },
204    pagination: {
205      el: '.swiper-pagination',
206      type: 'bullets',
207      clickable: true
208    }
209  });
210
211  /**
212   * Testimonials slider
213   */
214  new Swiper('.testimonials-slider', {
215    speed: 600,
216    loop: true,
217    autoplay: {
218      delay: 5000,
219      disableOnInteraction: false
220    },
221    slidesPerView: 'auto',
222    pagination: {
223      el: '.swiper-pagination',
224      type: 'bullets',
225      clickable: true
226    },
227    breakpoints: {
228      320: {
229        slidesPerView: 1,
230        spaceBetween: 20
231      },
232
233      1200: {
234        slidesPerView: 3,
235        spaceBetween: 20
236      }
237    }
238  });
239
240  /**
241   * Animation on scroll
242   */
243  window.addEventListener('load', () => {
244    AOS.init({
245      duration: 1000,
246      easing: 'ease-in-out',
247      once: true,
248      mirror: false
249    })
250  });
251
252})()

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.