PageSourceSearch

https://www.mollywood21.com/js/jquery-stories.js

js mollywood21.com collected 2026-09-26 06:08:15 UTC 3,613 bytes, 185 lines download raw bytes

1var slideImages = [],
2    selectorBtns = [],
3    progBars = [],
4    numSlides,
5    current = 0, target = 1,
6    onDemand = false, //slide change on user demand/click
7    tl, //timeline
8    emptyProgBarsTimer;
9
10
11window.addEventListener("load", initialise);
12
13function initialise()
14{	
15	getSlides();
16	createSelectorBtns();
17	createProgBarTimeline();
18	current = 0;
19	target = 1;
20		
21  /* 
22  Most browsers now support element.classList.add()
23  & element.classList.remove()
24  
25  check browser support for your project needs:
26  http://caniuse.com/#search=classlist
27  */
28	selectorBtns[current].classList.add('selected-btn');
29	updateProgBars();
30}
31
32
33function getSlides()
34{
35	if(document.getElementsByClassName)
36	{
37		slideImages = document.getElementsByClassName("slide");
38	}
39	else //IE8
40	{
41		slideImages = document.querySelectorAll(".slide");
42	}
43  
44  numSlides = slideImages.length;
45}
46
47
48function createSelectorBtns()
49{
50	var btnsWrapper = document.getElementById('btns-wrapper');
51  
52	for(var i=0; i<numSlides; i++)
53	{
54		var selectorID = "selector"+i;
55		var progBarID = "prog-bar"+i;
56   
57    var btn = document.createElement("button");
58		btn.classList.add('selector-btn');
59		btn.id = selectorID;
60		
61		if(i==numSlides-1)
62		{
63			//no prog-bar for last btn
64			btnsWrapper.appendChild(btn);
65		}
66		else
67		{	
68			var progBar = document.createElement("div");
69			progBar.classList.add('prog-bar');
70			
71			var progBarSpan = document.createElement("span");
72			progBarSpan.id = progBarID;
73			progBarSpan.style.width = '0';
74			
75      btnsWrapper.appendChild(btn);
76			btnsWrapper.appendChild(progBar);
77			progBar.appendChild(progBarSpan);
78      progBars[i] = progBarSpan;
79		}
80    
81    selectorBtns[i] = btn;
82		selectorBtns[i].addEventListener('click', goToSlide);
83		selectorBtns[i].slideIndex = i;
84	}
85}
86
87
88function createProgBarTimeline()
89{
90	tl = new TimelineMax();
91	for(var i=0; i<numSlides-1; i++)
92	{
93		var label = "index"+i;
94		tl.to(progBars[i], 5, {width:"100%", ease:Linear.easeNone}, label);
95	}
96	//add a label at the end for easy reference (tween to label)
97	var lastLabel = "index"+(numSlides-1);
98	tl.addLabel(lastLabel);
99}
100
101/*==END of initialising==*/
102
103
104
105/*===Timers & Updates==*/
106
107function updateProgBars()
108{	
109	if(target==0 && !onDemand)
110	{
111		//empty ALL after 5 sec
112		emptyProgBarsTimer = setTimeout(emptyAllProgBars, 5000);
113	}
114	else if(target!=numSlides)
115	{
116		var targetLabel = "index"+target;
117		tl.tweenTo(targetLabel, {onComplete: changeSlide});
118	}
119}
120
121
122function updateIndex()
123{
124	selectorBtns[current].classList.remove('selected-btn');
125	current = target;
126  
127	if(current == numSlides-1)
128	{
129		target=0;
130	}
131	else
132	{
133		target += 1;
134	}
135	
136	selectorBtns[current].classList.add('selected-btn');
137	onDemand = false;
138	
139	updateProgBars();
140}
141
142
143function changeSlide()
144{
145	tl.timeScale(1); //reset speed
146	fadeIn(slideImages[target]);
147	fadeOut(slideImages[current]);
148	updateIndex();
149}
150
151
152function goToSlide(e)
153{
154	if(current!=e.target.slideIndex)
155	{
156		onDemand = true;
157		clearTimeout(emptyProgBarsTimer);
158		
159		target = e.target.slideIndex;
160		var targetLabel = "index"+(target);
161		
162		tl.timeScale(20);
163		tl.tweenTo(targetLabel, {onComplete:changeSlide});
164	}
165}
166
167
168function fadeOut(e)
169{
170	e.classList.remove('fade-in');
171	e.classList.add('fade-out');
172}
173
174function fadeIn(e) 
175{
176	e.classList.remove('fade-out');
177	e.classList.add('fade-in');
178}
179
180function emptyAllProgBars()
181{
182	var targetLabel = "index"+0;
183	tl.timeScale(20);
184	tl.tweenTo(targetLabel, {onComplete:changeSlide});
185}

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.