PageSourceSearch

https://www.archisevilla.org/wp-content/plugins/wp-jquery-timelinr…?ver=bf390cf0d1b1900d092307c805279e1d

js archisevilla.org collected 2026-10-02 10:07:30 UTC 15,869 bytes, 284 lines download raw bytes

1/* ----------------------------------
2jQuery Timelinr 0.9.52
3tested with jQuery v1.6+
4
5Copyright 2011, CSSLab.cl + Broobe
6Free under the MIT license.
7http://www.opensource.org/licenses/mit-license.php
8
9instructions: http://www.csslab.cl/2011/08/18/jquery-timelinr/
10---------------------------------- */
11
12(function( $ ){	
13	$.fn.timelinr = function(options){
14		var settings = getSettings(options);
15		
16		var howManyDates = $(settings.containerDiv+' .dates li').length;
17		var howManyIssues = $(settings.containerDiv+' .issues li').length;
18		var currentDate = $(settings.containerDiv+' .dates').find('a.selected');
19		var currentIssue = $(settings.containerDiv+' .issues').find('li.selected');
20		var widthContainer = $(settings.containerDiv+' .timeline').width();
21		var heightContainer = $(settings.containerDiv+' .timeline').height();
22		var widthIssues = $(settings.containerDiv+' .issues').width();
23		var heightIssues = $(settings.containerDiv+' .issues').height();
24		var widthIssue = $(settings.containerDiv+' .issues li').width();
25		var heightIssue = $(settings.containerDiv+' .issues li').height();
26		var widthDates = $(settings.containerDiv+' .dates').width();
27		var heightDates = $(settings.containerDiv+' .dates').height();
28		var widthDate = $(settings.containerDiv+' .dates li').width();
29		var heightDate = $(settings.containerDiv+' .dates li').height();
30
31		// set positions!
32		if(settings.orientation == 'horizontal') {	
33			$(settings.containerDiv+' .issues').width(widthIssue*howManyIssues + 400);
34			$(settings.containerDiv+' .dates').width(widthDate*howManyDates*2).css('marginLeft',(widthContainer/2-widthDate/2));
35			var defaultPositionDates = -20;
36		} else if(settings.orientation == 'vertical') {
37			$(settings.containerDiv+' .issues').height(heightIssue*howManyIssues);
38			$(settings.containerDiv+' .dates').height(heightDate*howManyDates).css('marginTop',heightContainer/2-heightDate/2);
39			var defaultPositionDates = parseInt($(settings.containerDiv+' .dates').css('marginTop').substring(0,$(settings.containerDiv+' .dates').css('marginTop').indexOf('px')));
40		}
41		
42		$(settings.containerDiv+' .dates a').click(function(event){
43			event.preventDefault();
44			// first vars
45			var whichIssue = $(this).text();
46			var currentIndex = $(this).parent().prevAll().length;
47			var settings = getSettings(options);
48			
49			// moving the elements
50			if(settings.orientation == 'horizontal') {
51				$(settings.containerDiv+' .issues').animate({'marginLeft':-widthIssue*currentIndex},{queue:false, duration:settings.issuesSpeed});
52			} else if(settings.orientation == 'vertical') {
53				$(settings.containerDiv+' .issues').animate({'marginTop':-heightIssue*currentIndex},{queue:false, duration:settings.issuesSpeed});
54			}
55			$(settings.containerDiv+' .issues li').animate({'opacity':settings.issuesTransparency},{queue:false, duration:settings.issuesSpeed}).removeClass('selected').eq(currentIndex).addClass('selected').fadeTo(settings.issuesTransparencySpeed,1);
56			// prev/next buttons now disappears on first/last issue | bugfix from 0.9.51: lower than 1 issue hide the arrows
57			if(howManyDates == 1) {
58				$(settings.containerDiv+" .prev,"+settings.containerDiv+" .next").fadeOut('fast');
59			} else if(howManyDates == 2) {
60				if($(settings.containerDiv+' .issues li:first-child').hasClass('selected')) {
61					$(settings.containerDiv+" .prev").fadeOut('fast');
62				 	$(settings.containerDiv+" .next").fadeIn('fast');
63				} 
64				else if($('.issues li:last-child').hasClass('selected')) {
65					$(settings.containerDiv+" .next").fadeOut('fast');
66					$(settings.containerDiv+" .prev").fadeIn('fast');
67				}
68			} else {
69				if( $(settings.containerDiv+' .issues li:first-child').hasClass('selected') ) {
70					$(settings.containerDiv+" .prev").fadeOut('fast');
71				} 
72				else if( $(settings.containerDiv+' .issues li:last-child').hasClass('selected') ) {
73					$(settings.containerDiv+" .next").fadeOut('fast');
74				}
75				else {
76					$(settings.containerDiv+" .next"+','+settings.containerDiv+" .prev").fadeIn('slow');
77				}	
78			}
79			// now moving the dates
80			$(settings.containerDiv+' .dates a').removeClass('selected');
81			$(this).addClass('selected');
82			if(settings.orientation == 'horizontal') {
83				$(settings.containerDiv+' .dates').animate({'marginLeft':defaultPositionDates-(widthDate*currentIndex)},{queue:false, duration:settings.datesSpeed});
84			} else if(settings.orientation == 'vertical') {
85				$(settings.containerDiv+' .dates').animate({'marginTop':defaultPositionDates-(heightDate*currentIndex)},{queue:false, duration:settings.datesSpeed});
86			}
87		});
88
89		$(settings.containerDiv+" .next").click(function(event){
90			event.preventDefault();
91			var settings = getSettings(options);
92			
93			if(settings.orientation == 'horizontal') {
94				var currentPositionIssues = parseInt($(settings.containerDiv+' .issues').css('marginLeft').substring(0,$(settings.containerDiv+' .issues').css('marginLeft').indexOf('px')));
95				var currentIssueIndex = currentPositionIssues/widthIssue;
96				var currentPositionDates = parseInt($(settings.containerDiv+' .dates').css('marginLeft').substring(0,$(settings.containerDiv+' .dates').css('marginLeft').indexOf('px')));
97				var currentIssueDate = currentPositionDates-widthDate;
98				if(currentPositionIssues <= -(widthIssue*howManyIssues-(widthIssue))) {
99					$(settings.containerDiv+' .issues').stop();
100					$(settings.containerDiv+' .dates li:last-child a').click();
101				} else {
102					if (!$(settings.containerDiv+' .issues').is(':animated')) {
103						$(settings.containerDiv+' .issues').animate({'marginLeft':currentPositionIssues-widthIssue},{queue:false, duration:settings.issuesSpeed});
104						$(settings.containerDiv+' .issues li').animate({'opacity':settings.issuesTransparency},{queue:false, duration:settings.issuesSpeed});
105						$(settings.containerDiv+' .issues li.selected').removeClass('selected').next().fadeTo(settings.issuesTransparencySpeed, 1).addClass('selected');
106						$(settings.containerDiv+' .dates').animate({'marginLeft':currentIssueDate},{queue:false, duration:settings.datesSpeed});
107						$(settings.containerDiv+' .dates a.selected').removeClass('selected').parent().next().children().addClass('selected');
108					}
109				}
110			} else if(settings.orientation == 'vertical') {
111				var currentPositionIssues = parseInt($(settings.containerDiv+' .issues').css('marginTop').substring(0,$(settings.containerDiv+' .issues').css('marginTop').indexOf('px')));
112				var currentIssueIndex = currentPositionIssues/heightIssue;
113				var currentPositionDates = parseInt($(settings.containerDiv+' .dates').css('marginTop').substring(0,$(settings.containerDiv+' .dates').css('marginTop').indexOf('px')));
114				var currentIssueDate = currentPositionDates-heightDate;
115				if(currentPositionIssues <= -(heightIssue*howManyIssues-(heightIssue))) {
116					$(settings.containerDiv+' .issues').stop();
117					$(settings.containerDiv+' .dates li:last-child a').click();
118				} else {
119					if (!$(settings.containerDiv+' .issues').is(':animated')) {
120						$(settings.containerDiv+' .issues').animate({'marginTop':currentPositionIssues-heightIssue},{queue:false, duration:settings.issuesSpeed});
121						$(settings.containerDiv+' .issues li').animate({'opacity':settings.issuesTransparency},{queue:false, duration:settings.issuesSpeed});
122						$(settings.containerDiv+' .issues li.selected').removeClass('selected').next().fadeTo(settings.issuesTransparencySpeed, 1).addClass('selected');
123						$(settings.containerDiv+' .dates').animate({'marginTop':currentIssueDate},{queue:false, duration:settings.datesSpeed});
124						$(settings.containerDiv+' .dates a.selected').removeClass('selected').parent().next().children().addClass('selected');
125					}
126				}
127			}
128			// prev/next buttons now disappears on first/last issue | bugfix from 0.9.51: lower than 1 issue hide the arrows
129			if(howManyDates == 1) {
130				$(settings.containerDiv+" .prev,"+settings.containerDiv+" .next").fadeOut('fast');
131			} else if(howManyDates == 2) {
132				if($(settings.containerDiv+' .issues li:first-child').hasClass('selected')) {
133					$(settings.containerDiv+" .prev").fadeOut('fast');
134				 	$(settings.containerDiv+" .next").fadeIn('fast');
135				} 
136				else if($(settings.containerDiv+' .issues li:last-child').hasClass('selected')) {
137					$(settings.containerDiv+" .next").fadeOut('fast');
138					$(settings.containerDiv+" .prev").fadeIn('fast');
139				}
140			} else {
141				if( $(settings.containerDiv+' .issues li:first-child').hasClass('selected') ) {
142					$(settings.containerDiv+" .prev").fadeOut('fast');
143				} 
144				else if( $(settings.containerDiv+' .issues li:last-child').hasClass('selected') ) {
145					$(settings.containerDiv+" .next").fadeOut('fast');
146				}
147				else {
148					$(settings.containerDiv+" .next"+','+settings.containerDiv+" .prev").fadeIn('slow');
149				}	
150			}
151		});
152
153		$(settings.containerDiv+" .prev").click(function(event){
154			event.preventDefault();
155			var settings = getSettings(options);
156			
157			if(settings.orientation == 'horizontal') {
158				var currentPositionIssues = parseInt($(settings.containerDiv+' .issues').css('marginLeft').substring(0,$(settings.containerDiv+' .issues').css('marginLeft').indexOf('px')));
159				var currentIssueIndex = currentPositionIssues/widthIssue;
160				var currentPositionDates = parseInt($(settings.containerDiv+' .dates').css('marginLeft').substring(0,$(settings.containerDiv+' .dates').css('marginLeft').indexOf('px')));
161				var currentIssueDate = currentPositionDates+widthDate;
162				if(currentPositionIssues >= 0) {
163					$(settings.containerDiv+' .issues').stop();
164					$(settings.containerDiv+' .dates li:first-child a').click();
165				} else {
166					if (!$(settings.containerDiv+' .issues').is(':animated')) {
167						$(settings.containerDiv+' .issues').animate({'marginLeft':currentPositionIssues+widthIssue},{queue:false, duration:settings.issuesSpeed});
168						$(settings.containerDiv+' .issues li').animate({'opacity':settings.issuesTransparency},{queue:false, duration:settings.issuesSpeed});
169						$(settings.containerDiv+' .issues li.selected').removeClass('selected').prev().fadeTo(settings.issuesTransparencySpeed, 1).addClass('selected');
170						$(settings.containerDiv+' .dates').animate({'marginLeft':currentIssueDate},{queue:false, duration:settings.datesSpeed});
171						$(settings.containerDiv+' .dates a.selected').removeClass('selected').parent().prev().children().addClass('selected');
172					}
173				}
174			} else if(settings.orientation == 'vertical') {
175				var currentPositionIssues = parseInt($(settings.containerDiv+' .issues').css('marginTop').substring(0,$(settings.containerDiv+' .issues').css('marginTop').indexOf('px')));
176				var currentIssueIndex = currentPositionIssues/heightIssue;
177				var currentPositionDates = parseInt($(settings.containerDiv+' .dates').css('marginTop').substring(0,$(settings.containerDiv+' .dates').css('marginTop').indexOf('px')));
178				var currentIssueDate = currentPositionDates+heightDate;
179				if(currentPositionIssues >= 0) {
180					$(settings.containerDiv+' .issues').stop();
181					$(settings.containerDiv+' .dates li:first-child a').click();
182				} else {
183					if (!$(settings.containerDiv+' .issues').is(':animated')) {
184						$(settings.containerDiv+' .issues').animate({'marginTop':currentPositionIssues+heightIssue},{queue:false, duration:settings.issuesSpeed});
185						$(settings.containerDiv+' .issues li').animate({'opacity':settings.issuesTransparency},{queue:false, duration:settings.issuesSpeed});
186						$(settings.containerDiv+' .issues li.selected').removeClass('selected').prev().fadeTo(options["issuesTransparencySpeed"], 1).addClass('selected');
187						$(settings.containerDiv+' .dates').animate({'marginTop':currentIssueDate},{queue:false, duration:settings.datesSpeed},{queue:false, duration:settings.issuesSpeed});
188						$(settings.containerDiv+' .dates a.selected').removeClass('selected').parent().prev().children().addClass('selected');
189					}
190				}
191			}
192			// prev/next buttons now disappears on first/last issue | bugfix from 0.9.51: lower than 1 issue hide the arrows
193			if(howManyDates == 1) {
194				$(settings.containerDiv+" .prev,"+settings.containerDiv+" .next").fadeOut('fast');
195			} else if(howManyDates == 2) {
196				if($(settings.containerDiv+' .issues li:first-child').hasClass('selected')) {
197					$(settings.containerDiv+" .prev").fadeOut('fast');
198				 	$(settings.containerDiv+" .next").fadeIn('fast');
199				} 
200				else if($(settings.containerDiv+' .issues li:last-child').hasClass('selected')) {
201					$(settings.containerDiv+" .next").fadeOut('fast');
202					$(settings.containerDiv+" .prev").fadeIn('fast');
203				}
204			} else {
205				if( $(settings.containerDiv+' .issues li:first-child').hasClass('selected') ) {
206					$(settings.containerDiv+" .prev").fadeOut('fast');
207				} 
208				else if( $(settings.containerDiv+' .issues li:last-child').hasClass('selected') ) {
209					$(settings.containerDiv+" .next").fadeOut('fast');
210				}
211				else {
212					$(settings.containerDiv+" .next,"+settings.containerDiv+" .prev").fadeIn('slow');
213				}	
214			}
215		});
216		// keyboard navigation, added since 0.9.1
217		if(options["arrowKeys"]=='true') {
218			if(settings.orientation=='horizontal') {
219				$(document).keydown(function(event){
220					if (event.keyCode == 39) { 
221				       $(settings.containerDiv+" .next").click();
222				    }
223					if (event.keyCode == 37) { 
224				       $(settings.containerDiv+" .prev").click();
225				    }
226				});
227			} else if(settings.orientation=='vertical') {
228				$(document).keydown(function(event){
229					if (event.keyCode == 40) { 
230				       $(settings.containerDiv+" .next").click();
231				    }
232					if (event.keyCode == 38) { 
233				       $(settings.containerDiv+" .prev").click();
234				    }
235				});
236			}
237		}
238		// default position startAt, added since 0.9.3
239		$(settings.containerDiv+' .dates li').eq(settings.startAt-1).find('a').trigger('click');
240		// autoPlay, added since 0.9.4
241		if(settings.autoPlay == 'true') { 
242			setInterval('autoPlay("'+settings.containerDiv+'","'+settings.autoPlayDirection+'")', settings.autoPlayPause);
243		}
244	};
245	
246	// getSettings, added since 1.0
247	function getSettings(options){
248		settings = jQuery.extend({
249			containerDiv: 				'',					// value: any HTML tag or #id, default empty
250			orientation: 				'horizontal',		// value: horizontal | vertical, default to horizontal	
251			datesSpeed: 				'normal',			// value: integer between 100 and 1000 (recommended) or 'slow', 'normal' or 'fast'; default to normal
252			issuesSpeed: 				'fast',				// value: integer between 100 and 1000 (recommended) or 'slow', 'normal' or 'fast'; default to fast
253			issuesTransparency: 		0.2,				// value: integer between 0 and 1 (recommended), default to 0.2
254			issuesTransparencySpeed: 	500,				// value: integer between 100 and 1000 (recommended), default to 500 (normal)
255			arrowKeys: 					'true',				// value: true | false, default to true
256			startAt: 					1,					// value: integer, default to 1 (first)
257			autoPlay: 					'false',			// value: true | false, default to false
258			autoPlayDirection: 			'forward',			// value: forward | backward, default to forward
259			autoPlayPause: 				2000				// value: integer (1000 = 1 seg), default to 2000 (2segs)
260		}, options);
261		
262		(settings.containerDiv != "") ? settings.containerDiv = "."+options["containerDiv"] : settings.containerDiv = "";
263		
264		return settings;
265	}
266})( jQuery );
267
268// autoPlay, added since 0.9.4
269function autoPlay(containerDiv, autoPlayDirection){
270	var currentDate = jQuery(containerDiv+' .dates').find('a.selected');
271	if(autoPlayDirection == 'forward') {
272		if(currentDate.parent().is('li:last-child')) {
273			jQuery('.dates li:first-child').find('a').trigger('click');
274		} else {
275			currentDate.parent().next().find('a').trigger('click');
276		}
277	} else if(autoPlayDirection == 'backward') {
278		if(currentDate.parent().is('li:first-child')) {
279			jQuery('.dates li:last-child').find('a').trigger('click');
280		} else {
281			currentDate.parent().prev().find('a').trigger('click');
282		}
283	}
284}

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.